diff --git a/.github/instructions/genaiscript.instructions.md b/.github/instructions/genaiscript.instructions.md new file mode 100644 index 0000000000..023cf966b8 --- /dev/null +++ b/.github/instructions/genaiscript.instructions.md @@ -0,0 +1,20 @@ +--- +applyTo: "**/*.genai.*" +description: "Instructions for working with GenAIScript files" +--- + +## GenAIScript Code Generation Instructions + +GenAIScript is a custom runtime for node.js. It provides a set of unique APIs and support the TypeScript syntax, ESM, await/async. + +- GenAIScript documentation: https://microsoft.github.io/genaiscript/llms-full.txt +- GenAIScript ambient type definitions: https://microsoft.github.io/genaiscript/genaiscript.d.ts + +## Guidance for Code Generation + +- you always generate TypeScript code using ESM modules for Node.JS. +- you prefer using APIs from GenAIScript `genaiscript.d.ts` rather than node.js. Do NOT use node.js imports. +- you keep the code simple, avoid exception handlers or error checking. +- you add `TODOs` where you are unsure so that the user can review them +- you use the global types in genaiscript.d.ts are already loaded in the global context, no need to import them. +- save generated code in the `./genaisrc` folder with `.genai.mts` extension diff --git a/.github/prompts/create-readme.prompt.md b/.github/prompts/create-readme.prompt.md new file mode 100644 index 0000000000..fbafc8572b --- /dev/null +++ b/.github/prompts/create-readme.prompt.md @@ -0,0 +1,16 @@ +## Role + +You're a senior expert software engineer with extensive experience in open source projects. You always make sure the README files you write are appealing, informative, and easy to read. + +## Task + +1. Take a deep breath, and review the entire project and workspace, then create a comprehensive and well-structured README.md file for the project. +2. Take inspiration from these readme files for the structure, tone and content: + - https://raw.githubusercontent.com/Azure-Samples/serverless-chat-langchainjs/refs/heads/main/README.md + - https://raw.githubusercontent.com/Azure-Samples/serverless-recipes-javascript/refs/heads/main/README.md + - https://raw.githubusercontent.com/sinedied/run-on-output/refs/heads/main/README.md + - https://raw.githubusercontent.com/sinedied/smoke/refs/heads/main/README.md +3. Do not overuse emojis, and keep the readme concice and to the point. +4. Do not include sections like "LICENSE", "CONTRIBUTING", "CHANGELOG", etc. There are dedicated files for those sections. +5. Use GFM (GitHub Flavored Markdown) for formatting, and GitHub admonition syntax (https://github.com/orgs/community/discussions/16925) where appropriate. +6. If there's already an existing README.md file, make sure its content is up-to-date and relevant. If it is not, update it accordingly, and do not hesitate to restructure it if needed. diff --git a/examples/action/genaisrc/genaiscript.d.ts b/examples/action/genaisrc/genaiscript.d.ts new file mode 100644 index 0000000000..b33363d367 --- /dev/null +++ b/examples/action/genaisrc/genaiscript.d.ts @@ -0,0 +1,5921 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * GenAIScript Ambient Type Definition File + * @version 2.3.10 + */ + type OptionsOrString = (string & {}) | TOptions; + + type ElementOrArray = T | T[]; + + interface PromptGenerationConsole { + log(...data: any[]): void; + warn(...data: any[]): void; + debug(...data: any[]): void; + error(...data: any[]): void; +} + + type DiagnosticSeverity = "error" | "warning" | "info"; + + interface Diagnostic { + filename: string; + range: CharRange; + severity: DiagnosticSeverity; + message: string; + /** + * suggested fix + */ + suggestion?: string; + /** + * error or warning code + */ + code?: string; +} + + type Awaitable = T | PromiseLike; + + interface SerializedError { + name?: string; + message?: string; + stack?: string; + cause?: unknown; + code?: string; + line?: number; + column?: number; +} + +/** + * A color and icon to associate with the script. + * @see https://actions-cool.github.io/github-action-branding/ + */ + interface PromptBranding { + /** + * Marketplace and web site branding + */ + branding?: { + /** + * The background color of the badge. + */ + color?: + | "white" + | "black" + | "yellow" + | "blue" + | "green" + | "orange" + | "red" + | "purple" + | "gray-dark"; + /** + * Name of the Feather icon to use. + * @see https://actions-cool.github.io/github-action-branding/ + */ + icon?: string; + }; +} + + interface PromptDefinition { + /** + * Based on file name. + */ + id: string; + + /** + * Something like "Summarize children", show in UI. + */ + title?: string; + + /** + * Longer description of the prompt. Shows in UI grayed-out. + */ + description?: string; + + /** + * Groups template in UI + */ + group?: string; + + /** + * List of tools defined in the script + */ + defTools?: { id: string; description: string; kind: "tool" | "agent" }[]; +} + + interface PromptLike extends PromptDefinition { + /** + * File where the prompt comes from (if any). + */ + filename?: string; + + /** + * The actual text of the prompt template. + * Only used for system prompts. + */ + text?: string; + + /** + * The text of the prompt JS source code. + */ + jsSource?: string; + + /** + * Resolved system ids + */ + resolvedSystem?: SystemPromptInstance[]; + + /** + * Inferred input schema for parameters + */ + inputSchema?: JSONSchemaObject; +} + + type SystemPromptId = OptionsOrString< + | "synthlang" + | "system" + | "system.agent_data" + | "system.agent_docs" + | "system.agent_fs" + | "system.agent_git" + | "system.agent_github" + | "system.agent_interpreter" + | "system.agent_mcp" + | "system.agent_planner" + | "system.agent_user_input" + | "system.agent_video" + | "system.agent_web" + | "system.agent_z3" + | "system.annotations" + | "system.assistant" + | "system.chain_of_draft" + | "system.changelog" + | "system.cooperation" + | "system.cpp" + | "system.diagrams" + | "system.diff" + | "system.do_not_explain" + | "system.english" + | "system.explanations" + | "system.fetch" + | "system.files" + | "system.files_schema" + | "system.fs_ask_file" + | "system.fs_data_query" + | "system.fs_diff_files" + | "system.fs_find_files" + | "system.fs_read_file" + | "system.git" + | "system.git_diff" + | "system.git_info" + | "system.github_actions" + | "system.github_files" + | "system.github_info" + | "system.github_issues" + | "system.github_pulls" + | "system.go" + | "system.java" + | "system.math" + | "system.mcp" + | "system.md_find_files" + | "system.md_frontmatter" + | "system.meta_prompt" + | "system.meta_schema" + | "system.node_info" + | "system.node_test" + | "system.output_ini" + | "system.output_json" + | "system.output_markdown" + | "system.output_plaintext" + | "system.output_yaml" + | "system.php" + | "system.planner" + | "system.python" + | "system.python_code_interpreter" + | "system.python_types" + | "system.retrieval_fuzz_search" + | "system.retrieval_vector_search" + | "system.retrieval_web_search" + | "system.ruby" + | "system.rust" + | "system.safety_canary_word" + | "system.safety_harmful_content" + | "system.safety_jailbreak" + | "system.safety_protected_material" + | "system.safety_ungrounded_content_summarization" + | "system.safety_validate_harmful_content" + | "system.schema" + | "system.tasks" + | "system.technical" + | "system.think" + | "system.today" + | "system.tool_calls" + | "system.tools" + | "system.transcribe" + | "system.typescript" + | "system.user_input" + | "system.user-tool" + | "system.video" + | "system.vision_ask_images" + | "system.zero_shot_cot" +>; + + type SystemPromptInstance = { + id: SystemPromptId; + parameters?: Record; + vars?: Record; +}; + + type SystemToolId = OptionsOrString< + | "agent_data" + | "agent_docs" + | "agent_fs" + | "agent_git" + | "agent_github" + | "agent_interpreter" + | "agent_planner" + | "agent_user_input" + | "agent_video" + | "agent_web" + | "agent_z3" + | "fetch" + | "fs_ask_file" + | "fs_data_query" + | "fs_diff_files" + | "fs_find_files" + | "fs_read_file" + | "git_branch_current" + | "git_branch_default" + | "git_branch_list" + | "git_diff" + | "git_last_tag" + | "git_list_commits" + | "git_status" + | "github_actions_job_logs_diff" + | "github_actions_job_logs_get" + | "github_actions_jobs_list" + | "github_actions_workflows_list" + | "github_files_get" + | "github_files_list" + | "github_issues_comments_list" + | "github_issues_get" + | "github_issues_list" + | "github_pulls_get" + | "github_pulls_list" + | "github_pulls_review_comments_list" + | "math_eval" + | "md_find_files" + | "md_read_frontmatter" + | "meta_prompt" + | "meta_schema" + | "my_random" + | "node_test" + | "python_code_interpreter_copy_files_to_container" + | "python_code_interpreter_read_file" + | "python_code_interpreter_run" + | "retrieval_fuzz_search" + | "retrieval_vector_search" + | "retrieval_web_search" + | "think" + | "transcribe" + | "user_input_confirm" + | "user_input_select" + | "user_input_text" + | "video_extract_audio" + | "video_extract_clip" + | "video_extract_frames" + | "video_probe" + | "vision_ask_images" +>; + + type FileMergeHandler = ( + filename: string, + label: string, + before: string, + generated: string, +) => Awaitable; + + interface PromptOutputProcessorResult { + /** + * Updated text + */ + text?: string; + /** + * Generated files from the output + */ + files?: Record; + + /** + * User defined errors + */ + annotations?: Diagnostic[]; +} + + type PromptOutputProcessorHandler = ( + output: GenerationOutput, +) => + | PromptOutputProcessorResult + | Promise + | undefined + | Promise + | void + | Promise; + + type PromptTemplateResponseType = + | "text" + | "json" + | "yaml" + | "markdown" + | "json_object" + | "json_schema" + | undefined; + + type ModelType = OptionsOrString< + | "large" + | "small" + | "tiny" + | "long" + | "vision" + | "vision_small" + | "reasoning" + | "reasoning_small" + | "openai:gpt-4.1" + | "openai:gpt-4.1-mini" + | "openai:gpt-4.1-nano" + | "openai:gpt-4o" + | "openai:gpt-4o-mini" + | "openai:gpt-3.5-turbo" + | "openai:o3-mini" + | "openai:o3-mini:low" + | "openai:o3-mini:medium" + | "openai:o3-mini:high" + | "openai:o1" + | "openai:o1-mini" + | "openai:o1-preview" + | "github:openai/gpt-4.1" + | "github:openai/gpt-4o" + | "github:openai/gpt-4o-mini" + | "github:openai/o1" + | "github:openai/o1-mini" + | "github:openai/o3-mini" + | "github:openai/o3-mini:low" + | "github:microsoft/mai-ds-r1" + | "github:deepseek/deepseek-v3" + | "github:deepseek/deepseek-r1" + | "github:microsoft/phi-4" + | "github_copilot_chat:current" + | "github_copilot_chat:gpt-3.5-turbo" + | "github_copilot_chat:gpt-4o-mini" + | "github_copilot_chat:gpt-4o-2024-11-20" + | "github_copilot_chat:gpt-4" + | "github_copilot_chat:o1" + | "github_copilot_chat:o1:low" + | "github_copilot_chat:o1:medium" + | "github_copilot_chat:o1:high" + | "github_copilot_chat:o3-mini" + | "github_copilot_chat:o3-mini:low" + | "github_copilot_chat:o3-mini:medium" + | "github_copilot_chat:o3-mini:high" + | "azure:gpt-4o" + | "azure:gpt-4o-mini" + | "azure:o1" + | "azure:o1-mini" + | "azure:o1-preview" + | "azure:o3-mini" + | "azure:o3-mini:low" + | "azure:o3-mini:medium" + | "azure:o3-mini:high" + | "azure_ai_inference:gpt-4.1" + | "azure_ai_inference:gpt-4o" + | "azure_ai_inference:gpt-4o-mini" + | "azure_ai_inference:o1" + | "azure_ai_inference:o1-mini" + | "azure_ai_inference:o1-preview" + | "azure_ai_inference:o3-mini" + | "azure_ai_inference:o3-mini:low" + | "azure_ai_inference:o3-mini:medium" + | "azure_ai_inference:o3-mini:high" + | "azure_ai_inference:deepSeek-v3" + | "azure_ai_inference:deepseek-r1" + | "ollama:gemma3:4b" + | "ollama:llama3.2" + | "ollama:command-r7b:7b" + | "anthropic:claude-opus-4-0" + | "anthropic:claude-sonnet-4-0" + | "anthropic:claude-sonnet-4-0:low" + | "anthropic:claude-sonnet-4-0:medium" + | "anthropic:claude-sonnet-4-0:high" + | "anthropic:claude-3-7-sonnet-latest" + | "anthropic:claude-3-7-sonnet-latest:low" + | "anthropic:claude-3-7-sonnet-latest:medium" + | "anthropic:claude-3-7-sonnet-latest:high" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:low" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:medium" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:high" + | "huggingface:microsoft/Phi-3-mini-4k-instruct" + | "jan:llama3.2-3b-instruct" + | "google:gemini-2.0-flash-exp" + | "llamafile" + | "sglang" + | "vllm" + | "echo" + | "none" +>; + + type EmbeddingsModelType = OptionsOrString< + | "openai:text-embedding-3-small" + | "openai:text-embedding-3-large" + | "openai:text-embedding-ada-002" + | "github:text-embedding-3-small" + | "github:text-embedding-3-large" + | "azure:text-embedding-3-small" + | "azure:text-embedding-3-large" + | "azure_ai_inference:text-embedding-3-small" + | "azure_ai_inference:text-embedding-3-large" + | "ollama:nomic-embed-text" + | "google:text-embedding-004" + | "huggingface:nomic-ai/nomic-embed-text-v1.5" +>; + + type ModelSmallType = OptionsOrString< + | "openai:gpt-4o-mini" + | "github:openai/gpt-4o-mini" + | "azure:gpt-4o-mini" + | "github:microsoft/phi-4" +>; + + type ModelVisionType = OptionsOrString< + "openai:gpt-4o" | "github:openai/gpt-4o" | "azure:gpt-4o" | "azure:gpt-4o-mini" +>; + + type ModelImageGenerationType = OptionsOrString< + "openai:gpt-image-1" | "openai:dall-e-2" | "openai:dall-e-3" +>; + + type ModelProviderType = OptionsOrString< + | "openai" + | "azure" + | "azure_serverless" + | "azure_serverless_models" + | "anthropic" + | "anthropic_bedrock" + | "google" + | "huggingface" + | "mistral" + | "alibaba" + | "github" + | "transformers" + | "ollama" + | "lmstudio" + | "jan" + | "sglang" + | "vllm" + | "llamafile" + | "litellm" + | "github_copilot_chat" + | "deepseek" + | "whisperasr" + | "echo" +>; + + interface ModelConnectionOptions { + /** + * Which LLM model by default or for the `large` alias. + */ + model?: ModelType; +} + + interface ModelAliasesOptions extends ModelConnectionOptions { + /** + * Configure the `small` model alias. + */ + smallModel?: ModelSmallType; + + /** + * Configure the `vision` model alias. + */ + visionModel?: ModelVisionType; + + /** + * A list of model aliases to use. + */ + modelAliases?: Record; +} + + type ReasoningEffortType = "high" | "medium" | "low"; + + type ChatToolChoice = + | "none" + | "auto" + | "required" + | { + /** + * The name of the function to call. + */ + name: string; + }; + + interface ModelOptions extends ModelConnectionOptions, ModelTemplateOptions, CacheOptions { + /** + * Temperature to use. Higher temperature means more hallucination/creativity. + * Range 0.0-2.0. + * + * @default 0.2 + */ + temperature?: number; + + /** + * Enables fallback tools mode + */ + fallbackTools?: boolean; + + /** + * OpenAI o* reasoning models support a reasoning effort parameter. + * For Clause, these are mapped to thinking budget tokens + */ + reasoningEffort?: ReasoningEffortType; + + /** + * A list of keywords that should be found in the output. + */ + choices?: ElementOrArray; + + /** + * Returns the log probabilities of the each tokens. Not supported in all models. + */ + logprobs?: boolean; + + /** + * Number of alternate token logprobs to generate, up to 5. Enables logprobs. + */ + topLogprobs?: number; + + /** + * Specifies the type of output. Default is plain text. + * - `text` enables plain text mode (through system prompts) + * - `json` enables JSON mode (through system prompts) + * - `yaml` enables YAML mode (through system prompts) + * - `json_object` enables JSON mode (native) + * - `json_schema` enables structured outputs (native) + * Use `responseSchema` to specify an output schema. + */ + responseType?: PromptTemplateResponseType; + + /** + * JSON object schema for the output. Enables the `json_object` output mode by default. + */ + responseSchema?: PromptParametersSchema | JSONSchema; + + /** + * “Top_p” or nucleus sampling is a setting that decides how many possible words to consider. + * A high “top_p” value means the model looks at more possible words, even the less likely ones, + * which makes the generated text more diverse. + */ + topP?: number; + + /** + * Maximum number of completion tokens + * + */ + maxTokens?: number; + + /** + * Tool selection strategy. Default is 'auto'. + */ + toolChoice?: ChatToolChoice; + + /** + * Maximum number of tool calls to make. + */ + maxToolCalls?: number; + + /** + * Maximum number of data repairs to attempt. + */ + maxDataRepairs?: number; + + /** + * A deterministic integer seed to use for the model. + */ + seed?: number; + + /** + * A list of model ids and their maximum number of concurrent requests. + */ + modelConcurrency?: Record; +} + + interface EmbeddingsModelOptions { + /** + * LLM model to use for embeddings. + */ + embeddingsModel?: EmbeddingsModelType; +} + + interface PromptSystemOptions extends PromptSystemSafetyOptions { + /** + * List of system script ids used by the prompt. + */ + system?: ElementOrArray; + + /** + * List of tools used by the prompt. + */ + tools?: ElementOrArray; + + /** + * List of system to exclude from the prompt. + */ + excludedSystem?: ElementOrArray; + + /** + * MCP server configuration. The tools will be injected into the prompt. + */ + mcpServers?: McpServersConfig; + + /** + * MCP agent configuration. Each mcp server will be wrapped with an agent. + */ + mcpAgentServers?: McpAgentServersConfig; +} + + interface ScriptRuntimeOptions extends LineNumberingOptions { + /** + * Secrets required by the prompt + */ + secrets?: string[]; +} + + type PromptJSONParameterType = T & { required?: boolean }; + + type PromptParameterType = + | string + | number + | boolean + | object + | PromptJSONParameterType + | PromptJSONParameterType + | PromptJSONParameterType; + type PromptParametersSchema = Record; + type PromptParameters = Record; + + type PromptAssertion = { + // How heavily to weigh the assertion. Defaults to 1.0 + weight?: number; + /** + * The transformation to apply to the output before checking the assertion. + */ + transform?: string; +} & ( + | { + // type of assertion + type: + | "icontains" + | "not-icontains" + | "equals" + | "not-equals" + | "starts-with" + | "not-starts-with"; + // The expected value + value: string; + } + | { + // type of assertion + type: + | "contains-all" + | "not-contains-all" + | "contains-any" + | "not-contains-any" + | "icontains-all" + | "not-icontains-all"; + // The expected values + value: string[]; + } + | { + // type of assertion + type: "levenshtein" | "not-levenshtein"; + // The expected value + value: string; + // The threshold value + threshold?: number; + } +); + + interface PromptTest { + /** + * Short name of the test + */ + name?: string; + /** + * Description of the test. + */ + description?: string; + /** + * List of files to apply the test to. + */ + files?: ElementOrArray; + /** + * List of in-memory files to apply the test to. + */ + workspaceFiles?: ElementOrArray; + /** + * Extra set of variables for this scenario + */ + vars?: Record; + /** + * LLM output matches a given rubric, using a Language Model to grade output. + */ + rubrics?: ElementOrArray; + /** + * LLM output adheres to the given facts, using Factuality method from OpenAI evaluation. + */ + facts?: ElementOrArray; + /** + * List of keywords that should be contained in the LLM output. + */ + keywords?: ElementOrArray; + /** + * List of keywords that should not be contained in the LLM output. + */ + forbidden?: ElementOrArray; + /** + * Additional deterministic assertions. + */ + asserts?: ElementOrArray; + + /** + * Determines what kind of output is sent back to the test engine. Default is "text". + */ + format?: "text" | "json"; +} + +/** + * Configure promptfoo redteam plugins + */ + interface PromptRedteam { + /** + * The `purpose` property is used to guide the attack generation process. It should be as clear and specific as possible. + * Include the following information: + * - Who the user is and their relationship to the company + * - What data the user has access to + * - What data the user does not have access to + * - What actions the user can perform + * - What actions the user cannot perform + * - What systems the agent has access to + * @link https://www.promptfoo.dev/docs/red-team/troubleshooting/attack-generation/ + */ + purpose: string; + + /** + * Redteam identifier used for reporting purposes + */ + label?: string; + + /** + * Default number of inputs to generate for each plugin. + * The total number of tests will be `(numTests * plugins.length * (1 + strategies.length) * languages.length)` + * Languages.length is 1 by default, but is added when the multilingual strategy is used. + */ + numTests?: number; + + /** + * List of languages to target. Default is English. + */ + language?: string; + + /** + * Red team plugin list + * @link https://www.promptfoo.dev/docs/red-team/owasp-llm-top-10/ + */ + plugins?: ElementOrArray; + + /** + * Adversary prompt generation strategies + */ + strategies?: ElementOrArray; +} + +/** + * Different ways to render a fence block. + */ + type FenceFormat = "markdown" | "xml" | "none"; + + interface FenceFormatOptions { + /** + * Formatting of code sections + */ + fenceFormat?: FenceFormat; +} + + interface ModelTemplateOptions extends FenceFormatOptions { + /** + * Budget of tokens to apply the prompt flex renderer. + */ + flexTokens?: number; +} + + interface McpToolAnnotations { + /** + * Annotations for MCP tools + * @link https://modelcontextprotocol.io/docs/concepts/tools#available-tool-annotations + */ + annotations?: { + /** + * If true, indicates the tool does not modify its environment + */ + readOnlyHint?: boolean; + /** + * If true, the tool may perform destructive updates (only meaningful when readOnlyHint is false) + */ + destructiveHint?: boolean; + /** + * If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when readOnlyHint is false) + */ + idempotentHint?: boolean; + /** + * If true, the tool may interact with an “open world” of external entities + */ + openWorldHint?: boolean; + }; +} + + interface MetadataOptions { + /** + * Set of 16 key-value pairs that can be attached to an object. + * This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. + * Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. + */ + metadata?: Record; +} + + interface TerminalOptions { + /** + * Disable generation of run trace. + */ + disableTrace?: boolean; + + /** + * Disables rendering a preview of the chat messages + */ + disableChatPreview?: boolean; +} + + interface PromptScript + extends PromptLike, + PromptBranding, + ModelOptions, + ModelAliasesOptions, + PromptSystemOptions, + EmbeddingsModelOptions, + ContentSafetyOptions, + SecretDetectionOptions, + GitIgnoreFilterOptions, + ScriptRuntimeOptions, + McpToolAnnotations, + MetadataOptions, + TerminalOptions { + /** + * Which provider to prefer when picking a model. + */ + provider?: ModelProviderType; + + /** + * Additional template parameters that will populate `env.vars` + */ + parameters?: PromptParametersSchema; + + /** + * A file path or list of file paths or globs. + * The content of these files will be by the files selected in the UI by the user or the cli arguments. + */ + files?: ElementOrArray; + + /** + * A comma separated list of file extensions to accept. + */ + accept?: OptionsOrString<".md,.mdx" | "none">; + + /** + * Extra variable values that can be used to configure system prompts. + */ + vars?: Record; + + /** + * Tests to validate this script. + */ + tests?: ElementOrArray; + + /** + * Models to use with tests + */ + testModels?: ElementOrArray; + + /** + * LLM vulnerability checks + */ + redteam?: PromptRedteam; + + /** + * Don't show it to the user in lists. Template `system.*` are automatically unlisted. + */ + unlisted?: boolean; + + /** + * Set if this is a system prompt. + */ + isSystem?: boolean; +} +/** + * Represent a workspace file and optional content. + */ + interface WorkspaceFile { + /** + * Name of the file, relative to project root. + */ + filename: string; + + /** + * Content mime-type if known + */ + type?: string; + + /** + * Encoding of the content + */ + encoding?: "base64"; + + /** + * Content of the file. + */ + content?: string; + + /** + * Size in bytes if known + */ + size?: number; +} + + interface WorkspaceFileWithScore extends WorkspaceFile { + /** + * Score allocated by search algorithm + */ + score?: number; +} + + interface ToolDefinition { + /** + * The name of the function to be called. Must be a-z, A-Z, 0-9, or contain + * underscores and dashes, with a maximum length of 64. + */ + name: string; + + /** + * A description of what the function does, used by the model to choose when and + * how to call the function. + */ + description?: string; + + /** + * The parameters the functions accepts, described as a JSON Schema object. See the + * [guide](https://platform.openai.com/docs/guides/text-generation/function-calling) + * for examples, and the + * [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for + * documentation about the format. + * + * Omitting `parameters` defines a function with an empty parameter list. + */ + parameters?: JSONSchema; +} + +/** + * Interface representing an output trace with various logging and tracing methods. + * Extends the `ToolCallTrace` interface. + */ + interface OutputTrace extends ToolCallTrace { + /** + * Logs a heading message at the specified level. + * @param level - The level of the heading. + * @param message - The heading message. + */ + heading(level: number, message: string): void; + + /** + * Logs an image with an optional caption. + * @param url - The URL of the image. + * @param caption - The optional caption for the image. + */ + image(url: BufferLike, caption?: string): Promise; + + /** + * Logs a markdown table + * @param rows + */ + table(rows: object[]): void; + + /** + * Computes and renders diff between two files. + */ + diff( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: { context?: number }, + ): void; + + /** + * Logs a result item with a boolean value and a message. + * @param value - The boolean value of the result item. + * @param message - The message for the result item. + */ + resultItem(value: boolean, message: string): void; + + /** + * Starts a trace with details in markdown format. + * @param title - The title of the trace. + * @param options - Optional settings for the trace. + * @returns A `MarkdownTrace` instance. + */ + startTraceDetails(title: string, options?: { expanded?: boolean }): OutputTrace; + + /** + * Appends content to the trace. + * @param value - The content to append. + */ + appendContent(value: string): void; + + /** + * Starts a details section in the trace. + * @param title - The title of the details section. + * @param options - Optional settings for the details section. + */ + startDetails(title: string, options?: { success?: boolean; expanded?: boolean }): void; + + /** + * Ends the current details section in the trace. + */ + endDetails(): void; + + /** + * Logs a video with a name, file path, and optional alt text. + * @param name - The name of the video. + * @param filepath - The file path of the video. + * @param alt - The optional alt text for the video. + */ + video(name: string, filepath: string, alt?: string): void; + + /** + * Logs an audio file + * @param name + * @param filepath + * @param alt + */ + audio(name: string, filepath: string, alt?: string): void; + + /** + * Logs a details section with a title and body. + * @param title - The title of the details section. + * @param body - The body content of the details section, can be a string or an object. + * @param options - Optional settings for the details section. + */ + details( + title: string, + body: string | object, + options?: { success?: boolean; expanded?: boolean }, + ): void; + + /** + * Logs a fenced details section with a title, body, and optional content type. + * @param title - The title of the details section. + * @param body - The body content of the details section, can be a string or an object. + * @param contentType - The optional content type of the body. + * @param options - Optional settings for the details section. + */ + detailsFenced( + title: string, + body: string | object, + contentType?: string, + options?: { expanded?: boolean }, + ): void; + + /** + * Logs an item with a name, value, and optional unit. + * @param name - The name of the item. + * @param value - The value of the item. + * @param unit - The optional unit of the value. + */ + itemValue(name: string, value: any, unit?: string): void; + + /** + * Adds a url link item + * @param name name url + * @param url url. If missing, name is treated as the url. + */ + itemLink(name: string, url?: string | URL, title?: string): void; + + /** + * Writes a paragraph of text with empty lines before and after. + * @param text paragraph to write + */ + p(text: string): void; + + /** + * Logs a warning message. + * @param msg - The warning message to log. + */ + warn(msg: string): void; + + /** + * Logs a caution message. + * @param msg - The caution message to log. + */ + caution(msg: string): void; + + /** + * Logs a note message. + * @param msg - The note message to log. + */ + note(msg: string): void; + + /** + * Logs an error object + * @param err + */ + error(message: string, error?: unknown): void; +} + +/** + * Interface representing a tool call trace for logging various types of messages. + */ + interface ToolCallTrace { + /** + * Logs a general message. + * @param message - The message to log. + */ + log(message: string): void; + + /** + * Logs an item message. + * @param message - The item message to log. + */ + item(message: string): void; + + /** + * Logs a tip message. + * @param message - The tip message to log. + */ + tip(message: string): void; + + /** + * Logs a fenced message, optionally specifying the content type. + * @param message - The fenced message to log. + * @param contentType - The optional content type of the message. + */ + fence(message: string | unknown, contentType?: string): void; +} + +/** + * Position (line, character) in a file. Both are 0-based. + */ + type CharPosition = [number, number]; + +/** + * Describes a run of text. + */ + type CharRange = [CharPosition, CharPosition]; + +/** + * 0-based line numbers. + */ + type LineRange = [number, number]; + + interface FileEdit { + type: string; + filename: string; + label?: string; + validated?: boolean; +} + + interface ReplaceEdit extends FileEdit { + type: "replace"; + range: CharRange | LineRange; + text: string; +} + + interface InsertEdit extends FileEdit { + type: "insert"; + pos: CharPosition | number; + text: string; +} + + interface DeleteEdit extends FileEdit { + type: "delete"; + range: CharRange | LineRange; +} + + interface CreateFileEdit extends FileEdit { + type: "createfile"; + overwrite?: boolean; + ignoreIfExists?: boolean; + text: string; +} + + type Edits = InsertEdit | ReplaceEdit | DeleteEdit | CreateFileEdit; + + interface ToolCallContent { + type?: "content"; + content: string; + edits?: Edits[]; +} + + type ToolCallOutput = + | string + | number + | boolean + | ToolCallContent + | ShellOutput + | WorkspaceFile + | RunPromptResult + | SerializedError + | undefined; + + interface WorkspaceFileCache { + /** + * Name of the cache + */ + name: string; + /** + * Gets the value associated with the key, or undefined if there is none. + * @param key + */ + get(key: K): Promise; + /** + * Sets the value associated with the key. + * @param key + * @param value + */ + set(key: K, value: V): Promise; + + /** + * List the values in the cache. + */ + values(): Promise; + + /** + * Gets the sha of the key + * @param key + */ + getSha(key: K): Promise; + + /** + * Gets an existing value or updates it with the updater function. + */ + getOrUpdate( + key: K, + updater: () => Promise, + validator?: (val: V) => boolean, + ): Promise<{ key: string; value: V; cached?: boolean }>; +} + + interface WorkspaceGrepOptions extends FilterGitFilesOptions { + /** + * List of paths to + */ + path?: ElementOrArray; + /** + * list of filename globs to search. !-prefixed globs are excluded. ** are not supported. + */ + glob?: ElementOrArray; + /** + * Read file content. default is true. + */ + readText?: boolean; + + /** + * Enable grep logging to discover what files are searched. + */ + debug?: boolean; +} + + interface WorkspaceGrepResult { + files: WorkspaceFile[]; + matches: WorkspaceFile[]; +} + + interface INIParseOptions extends JSONSchemaValidationOptions { + defaultValue?: any; +} + + interface FilterGitFilesOptions { + /** + * Ignore workspace .gitignore instructions + */ + applyGitIgnore?: false | undefined; +} + + interface FindFilesOptions extends FilterGitFilesOptions { + /** Glob patterns to ignore */ + ignore?: ElementOrArray; + + /** + * Set to false to skip read text content. True by default + */ + readText?: boolean; +} + + interface FileStats { + /** + * Size of the file in bytes + */ + size: number; + mode: number; +} + + interface JSONSchemaValidationOptions { + schema?: JSONSchema; + throwOnValidationError?: boolean; +} + + interface WorkspaceFileSystem { + /** + * Searches for files using the glob pattern and returns a list of files. + * Ignore `.env` files and apply `.gitignore` if present. + * @param glob + */ + findFiles(glob: ElementOrArray, options?: FindFilesOptions): Promise; + + /** + * Performs a grep search over the files in the workspace using ripgrep. + * @param pattern A string to match or a regex pattern. + * @param options Options for the grep search. + */ + grep(pattern: string | RegExp, options?: WorkspaceGrepOptions): Promise; + grep( + pattern: string | RegExp, + glob: string, + options?: Omit, + ): Promise; + + /** + * Reads metadata information about the file. Returns undefined if the file does not exist. + * @param filename + */ + stat(filename: string): Promise; + + /** + * Reads the content of a file as text + * @param path + */ + readText(path: string | Awaitable): Promise; + + /** + * Reads the content of a file and parses to JSON, using the JSON5 parser. + * @param path + */ + readJSON( + path: string | Awaitable, + options?: JSONSchemaValidationOptions, + ): Promise; + + /** + * Reads the content of a file and parses to YAML. + * @param path + */ + readYAML( + path: string | Awaitable, + options?: JSONSchemaValidationOptions, + ): Promise; + + /** + * Reads the content of a file and parses to XML, using the XML parser. + */ + readXML(path: string | Awaitable, options?: XMLParseOptions): Promise; + + /** + * Reads the content of a CSV file. + * @param path + */ + readCSV( + path: string | Awaitable, + options?: CSVParseOptions, + ): Promise; + + /** + * Reads the content of a file and parses to INI + */ + readINI(path: string | Awaitable, options?: INIParseOptions): Promise; + + /** + * Reads the content of a file and attempts to parse it as data. + * @param path + * @param options + */ + readData( + path: string | Awaitable, + options?: CSVParseOptions & INIParseOptions & XMLParseOptions & JSONSchemaValidationOptions, + ): Promise; + + /** + * Appends text to a file as text to the file system. Creates the file if needed. + * @param path + * @param content + */ + appendText(path: string, content: string): Promise; + + /** + * Writes a file as text to the file system + * @param path + * @param content + */ + writeText(path: string, content: string): Promise; + + /** + * Caches a buffer to file and returns the unique file name + * @param bytes + */ + writeCached( + bytes: BufferLike, + options?: { + scope?: "workspace" | "run"; + /** + * Filename extension + */ + ext?: string; + }, + ): Promise; + + /** + * Writes one or more files to the workspace + * @param file a in-memory file or list of files + */ + writeFiles(file: ElementOrArray): Promise; + + /** + * Copies a file between two paths + * @param source + * @param destination + */ + copyFile(source: string, destination: string): Promise; + + /** + * Opens a file-backed key-value cache for the given cache name. + * The cache is persisted across runs of the script. Entries are dropped when the cache grows too large. + * @param cacheName + */ + cache(cacheName: string): Promise>; +} + + interface ToolCallContext { + log(message: string): void; + debug(message: string): void; + trace: ToolCallTrace; +} + + interface ToolCallback { + spec: ToolDefinition; + options?: DefToolOptions; + generator?: ChatGenerationContext; + impl: (args: { context: ToolCallContext } & Record) => Awaitable; +} + + interface ChatContentPartText { + /** + * The text content. + */ + text: string; + + /** + * The type of the content part. + */ + type: "text"; +} + + interface ChatContentPartImage { + image_url: { + /** + * Either a URL of the image or the base64 encoded image data. + */ + url: string; + + /** + * Specifies the detail level of the image. Learn more in the + * [Vision guide](https://platform.openai.com/docs/guides/vision#low-or-high-fidelity-image-understanding). + */ + detail?: "auto" | "low" | "high"; + }; + + /** + * The type of the content part. + */ + type: "image_url"; +} + + interface ChatContentPartInputAudio { + input_audio: { + /** + * Base64 encoded audio data. + */ + data: string; + + /** + * The format of the encoded audio data. Currently supports "wav" and "mp3". + */ + format: "wav" | "mp3"; + }; + + /** + * The type of the content part. Always `input_audio`. + */ + type: "input_audio"; +} + + interface ChatContentPartFile { + file: { + /** + * The base64 encoded file data, used when passing the file to the model as a + * string. + */ + file_data?: string; + + /** + * The ID of an uploaded file to use as input. + */ + file_id?: string; + + /** + * The name of the file, used when passing the file to the model as a string. + */ + filename?: string; + }; + + /** + * The type of the content part. Always `file`. + */ + type: "file"; +} + + interface ChatContentPartRefusal { + /** + * The refusal message generated by the model. + */ + refusal: string; + + /** + * The type of the content part. + */ + type: "refusal"; +} + + interface ChatSystemMessage { + /** + * The contents of the system message. + */ + content: string | ChatContentPartText[]; + + /** + * The role of the messages author, in this case `system`. + */ + role: "system"; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; +} + +/** + * @deprecated + */ + interface ChatFunctionMessage { + content: string; + name: string; + role: "function"; +} + + interface ChatToolMessage { + /** + * The contents of the tool message. + */ + content: string | ChatContentPartText[]; + + /** + * The role of the messages author, in this case `tool`. + */ + role: "tool"; + + /** + * Tool call that this message is responding to. + */ + tool_call_id: string; +} + + interface ChatMessageToolCall { + /** + * The ID of the tool call. + */ + id: string; + + /** + * The function that the model called. + */ + function: { + /** + * The arguments to call the function with, as generated by the model in JSON + * format. Note that the model does not always generate valid JSON, and may + * hallucinate parameters not defined by your function schema. Validate the + * arguments in your code before calling your function. + */ + arguments: string; + + /** + * The name of the function to call. + */ + name: string; + }; + + /** + * The type of the tool. Currently, only `function` is supported. + */ + type: "function"; +} + + interface ChatAssistantMessage { + /** + * The role of the messages author, in this case `assistant`. + */ + role: "assistant"; + + /** + * The contents of the assistant message. Required unless `tool_calls` or + * `function_call` is specified. + */ + content?: string | (ChatContentPartText | ChatContentPartRefusal)[]; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; + + /** + * The refusal message by the assistant. + */ + refusal?: string | null; + + /** + * The tool calls generated by the model, such as function calls. + */ + tool_calls?: ChatMessageToolCall[]; + + /** + * The reasoning of the model + */ + reasoning?: string; +} + + type ChatContentPart = + | ChatContentPartText + | ChatContentPartImage + | ChatContentPartInputAudio + | ChatContentPartFile; + + interface ChatUserMessage { + /** + * The contents of the user message. + */ + content: string | ChatContentPart[]; + + /** + * The role of the messages author, in this case `user`. + */ + role: "user"; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; +} + + type ChatMessage = + | ChatSystemMessage + | ChatUserMessage + | ChatAssistantMessage + | ChatToolMessage + | ChatFunctionMessage; + + type ChatParticipantHandler = ( + /** + * Prompt generation context to create a new message in the conversation + */ + context: ChatTurnGenerationContext, + /** + * Chat conversation messages + */ + messages: ChatMessage[], + /** + * The last assistant text, without + * reasoning sections. + */ + assistantText: string, +) => Awaitable<{ messages?: ChatMessage[] } | undefined | void>; + + interface ChatParticipantOptions { + label?: string; +} + + interface ChatParticipant { + generator: ChatParticipantHandler; + options: ChatParticipantOptions; +} + +/** + * A set of text extracted from the context of the prompt execution + */ + interface ExpansionVariables + extends Required> { + /** + * Directory where the prompt is executed + */ + dir: string; + + /** + * Directory where output files (trace, output) are created + */ + runDir: string; + + /** + * Unique identifier for the run + */ + runId: string; + + /** + * List of linked files parsed in context + */ + files: WorkspaceFile[]; + + /** + * User defined variables + */ + vars: Record & { + /** + * When running in GitHub Copilot Chat, the current user prompt + */ + question?: string; + /** + * When running in GitHub Copilot Chat, the current chat history + */ + "copilot.history"?: (HistoryMessageUser | HistoryMessageAssistant)[]; + /** + * When running in GitHub Copilot Chat, the current editor content + */ + "copilot.editor"?: string; + /** + * When running in GitHub Copilot Chat, the current selection + */ + "copilot.selection"?: string; + /** + * When running in GitHub Copilot Chat, the current terminal content + */ + "copilot.terminalSelection"?: string; + /** + * Selected model identifier in GitHub Copilot Chat + */ + "copilot.model"?: string; + /** + * selected text in active text editor + */ + "editor.selectedText"?: string; + }; + + /** + * List of secrets used by the prompt, must be registered in `genaiscript`. + */ + secrets: Record; + + /** + * Output trace builder + */ + output: OutputTrace; + + /** + * Resolved metadata + */ + meta: PromptDefinition & ModelConnectionOptions; + + /** + * The script debugger logger + */ + dbg: DebugLogger; +} + + type MakeOptional = Partial> & Omit; + + type PromptArgs = Omit< + PromptScript, + "text" | "id" | "jsSource" | "defTools" | "resolvedSystem" +>; + + type PromptSystemArgs = Omit< + PromptArgs, + | "model" + | "embeddingsModel" + | "temperature" + | "topP" + | "maxTokens" + | "seed" + | "tests" + | "responseLanguage" + | "responseType" + | "responseSchema" + | "files" + | "modelConcurrency" + | "redteam" + | "metadata" +>; + + type StringLike = string | WorkspaceFile | WorkspaceFile[]; + + interface LineNumberingOptions { + /** + * Prepend each line with a line numbers. Helps with generating diffs. + */ + lineNumbers?: boolean; + + /** + * Offset when number lines in output + */ + lineNumbersStart?: number; +} + + interface FenceOptions extends LineNumberingOptions, FenceFormatOptions { + /** + * Language of the fenced code block. Defaults to "markdown". + */ + language?: + | "markdown" + | "json" + | "yaml" + | "javascript" + | "typescript" + | "python" + | "shell" + | "toml" + | string; + + /** + * JSON schema identifier + */ + schema?: string; +} + + type PromptCacheControlType = "ephemeral"; + + interface ContextExpansionOptions { + /** + * Specifies an maximum of estimated tokens for this entry; after which it will be truncated. + */ + maxTokens?: number; + + /* + * Value that is conceptually similar to a zIndex (higher number == higher priority). + * If a rendered prompt has more message tokens than can fit into the available context window, the prompt renderer prunes messages with the lowest priority from the ChatMessages result, preserving the order in which they were declared. This means your extension code can safely declare TSX components for potentially large pieces of context like conversation history and codebase context. + */ + priority?: number; + + /** + * Controls the proportion of tokens allocated from the container's budget to this element. + * It defaults to 1 on all elements. + */ + flex?: number; + + /** + * Caching policy for this text. `ephemeral` means the prefix can be cached for a short amount of time. + */ + cacheControl?: PromptCacheControlType; +} + + interface RangeOptions { + /** + * The inclusive start of the line range, with a 1-based index + */ + lineStart?: number; + /** + * The inclusive end of the line range, with a 1-based index + */ + lineEnd?: number; +} + + interface GitIgnoreFilterOptions { + /** + * Disable filtering files based on the `.gitignore` file. + */ + ignoreGitIgnore?: true | undefined; +} + + interface FileFilterOptions extends GitIgnoreFilterOptions { + /** + * Filename filter based on file suffix. Case insensitive. + */ + endsWith?: ElementOrArray; + + /** + * Filename filter using glob syntax. + */ + glob?: ElementOrArray; +} + + interface ContentSafetyOptions { + /** + * Configure the content safety provider. + */ + contentSafety?: ContentSafetyProvider; + /** + * Runs the default content safety validator + * to prevent prompt injection. + */ + detectPromptInjection?: "always" | "available" | boolean; +} + + interface PromptSystemSafetyOptions { + /** + * Policy to inject builtin system prompts. See to `false` prevent automatically injecting. + */ + systemSafety?: "default" | boolean; +} + + interface SecretDetectionOptions { + /** + * Policy to disable secret scanning when communicating with the LLM. + * Set to `false` to disable. + */ + secretScanning?: boolean; +} + + interface DefOptions + extends FenceOptions, + ContextExpansionOptions, + DataFilter, + RangeOptions, + FileFilterOptions, + ContentSafetyOptions { + /** + * By default, throws an error if the value in def is empty. + */ + ignoreEmpty?: boolean; + + /** + * The content of the def is a predicted output. + * This setting disables line numbers. + */ + prediction?: boolean; +} + +/** + * Options for the `defDiff` command. + */ + interface DefDiffOptions + extends ContextExpansionOptions, + FenceFormatOptions, + LineNumberingOptions {} + + interface ImageTransformOptions { + /** + * Crops the image to the specified region. + */ + crop?: { x?: number; y?: number; w?: number; h?: number }; + /** + * Auto cropping same color on the edges of the image + */ + autoCrop?: boolean; + /** + * Applies a scaling factor to the image after cropping. + */ + scale?: number; + /** + * Rotates the image by the specified number of degrees. + */ + rotate?: number; + /** + * Maximum width of the image. Applied after rotation. + */ + maxWidth?: number; + /** + * Maximum height of the image. Applied after rotation. + */ + maxHeight?: number; + /** + * Removes colors from the image using ITU Rec 709 luminance values + */ + greyscale?: boolean; + + /** + * Flips the image horizontally and/or vertically. + */ + flip?: { horizontal?: boolean; vertical?: boolean }; + + /** + * Output mime + */ + mime?: "image/jpeg" | "image/png"; +} + + interface DefImagesOptions extends ImageTransformOptions { + /** + * A "low" detail image is always downsampled to 512x512 pixels. + */ + detail?: "high" | "low"; + /** + * Selects the first N elements from the data + */ + sliceHead?: number; + /** + * Selects the last N elements from the data + */ + sliceTail?: number; + /** + * Selects the a random sample of N items in the collection. + */ + sliceSample?: number; + /** + * Renders all images in a single tiled image + */ + tiled?: boolean; + + /** + * By default, throws an error if no images are passed. + */ + ignoreEmpty?: boolean; +} + + type JSONSchemaTypeName = + | "string" + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null"; + + type JSONSchemaSimpleType = + | JSONSchemaString + | JSONSchemaNumber + | JSONSchemaBoolean + | JSONSchemaObject + | JSONSchemaArray; + + type JSONSchemaType = JSONSchemaSimpleType | JSONSchemaAnyOf | null; + + interface JSONSchemaAnyOf { + anyOf: JSONSchemaType[]; + uiGroup?: string; +} + + interface JSONSchemaDescribed { + /** + * A short description of the property + */ + title?: string; + /** + * A clear description of the property. + */ + description?: string; + + /** + * Moves the field to a sub-group in the form, potentially collapsed + */ + uiGroup?: string; +} + + interface JSONSchemaString extends JSONSchemaDescribed { + type: "string"; + uiType?: "textarea"; + uiSuggestions?: string[]; + enum?: string[]; + default?: string; + pattern?: string; +} + + interface JSONSchemaNumber extends JSONSchemaDescribed { + type: "number" | "integer"; + default?: number; + minimum?: number; + exclusiveMinimum?: number; + maximum?: number; + exclusiveMaximum?: number; +} + + interface JSONSchemaBoolean extends JSONSchemaDescribed { + type: "boolean"; + uiType?: "runOption"; + default?: boolean; +} + + interface JSONSchemaObject extends JSONSchemaDescribed { + $schema?: string; + type: "object"; + properties?: { + [key: string]: JSONSchemaType; + }; + required?: string[]; + additionalProperties?: boolean; + + default?: object; +} + + interface JSONSchemaArray extends JSONSchemaDescribed { + $schema?: string; + type: "array"; + items?: JSONSchemaType; + + default?: any[]; +} + + type JSONSchema = JSONSchemaObject | JSONSchemaArray; + + interface FileEditValidation { + /** + * JSON schema + */ + schema?: JSONSchema; + /** + * Error while validating the JSON schema + */ + schemaError?: string; + /** + * The path was validated with a file output (defFileOutput) + */ + pathValid?: boolean; +} + + interface DataFrame { + schema?: string; + data: unknown; + validation?: FileEditValidation; +} + + interface Logprob { + /** + * Token text + */ + token: string; + /** + * Log probably of the generated token + */ + logprob: number; + /** + * Logprob value converted to % + */ + probPercent?: number; + /** + * Normalized entropy + */ + entropy?: number; + /** + * Other top tokens considered by the LLM + */ + topLogprobs?: { token: string; logprob: number }[]; +} + + interface RunPromptUsage { + /** + * Estimated cost in $ of the generation + */ + cost?: number; + /** + * Estimated duration of the generation + * including multiple rounds with tools + */ + duration?: number; + /** + * Number of tokens in the generated completion. + */ + completion: number; + + /** + * Number of tokens in the prompt. + */ + prompt: number; + /** + * Total number of tokens used in the request (prompt + completion). + */ + total: number; +} + + interface RunPromptResult { + messages: ChatMessage[]; + text: string; + reasoning?: string; + annotations?: Diagnostic[]; + fences?: Fenced[]; + frames?: DataFrame[]; + json?: any; + error?: SerializedError; + schemas?: Record; + finishReason: "stop" | "length" | "tool_calls" | "content_filter" | "cancel" | "fail"; + fileEdits?: Record; + edits?: Edits[]; + changelogs?: string[]; + model?: ModelType; + choices?: Logprob[]; + logprobs?: Logprob[]; + perplexity?: number; + uncertainty?: number; + usage?: RunPromptUsage; +} + +/** + * Path manipulation functions. + */ + interface Path { + parse(path: string): { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + }; + + /** + * Returns the last portion of a path. Similar to the Unix basename command. + * @param path + */ + dirname(path: string): string; + + /** + * Returns the extension of the path, from the last '.' to end of string in the last portion of the path. + * @param path + */ + extname(path: string): string; + + /** + * Returns the last portion of a path, similar to the Unix basename command. + */ + basename(path: string, suffix?: string): string; + + /** + * The path.join() method joins all given path segments together using the platform-specific separator as a delimiter, then normalizes the resulting path. + * @param paths + */ + join(...paths: string[]): string; + + /** + * The path.normalize() method normalizes the given path, resolving '..' and '.' segments. + */ + normalize(...paths: string[]): string; + + /** + * The path.relative() method returns the relative path from from to to based on the current working directory. If from and to each resolve to the same path (after calling path.resolve() on each), a zero-length string is returned. + */ + relative(from: string, to: string): string; + + /** + * The path.resolve() method resolves a sequence of paths or path segments into an absolute path. + * @param pathSegments + */ + resolve(...pathSegments: string[]): string; + + /** + * Determines whether the path is an absolute path. + * @param path + */ + isAbsolute(path: string): boolean; + + /** + * Change the extension of a path + * @param path + * @param ext + */ + changeext(path: string, ext: string): string; + + /** + * Converts a file://... to a path + * @param fileUrl + */ + resolveFileURL(fileUrl: string): string; + + /** + * Sanitize a string to be safe for use as a filename by removing directory paths and invalid characters. + * @param path file path + */ + sanitize(path: string): string; +} + + interface Fenced { + label: string; + language?: string; + content: string; + args?: { schema?: string } & Record; + + validation?: FileEditValidation; +} + + interface XMLParseOptions extends JSONSchemaValidationOptions { + allowBooleanAttributes?: boolean; + ignoreAttributes?: boolean; + ignoreDeclaration?: boolean; + ignorePiTags?: boolean; + parseAttributeValue?: boolean; + removeNSPrefix?: boolean; + unpairedTags?: string[]; +} + + interface ParsePDFOptions { + /** + * Disable removing trailing spaces in text + */ + disableCleanup?: boolean; + /** + * Render each page as an image + */ + renderAsImage?: boolean; + /** + * Zoom scaling with rendering pages and figures + */ + scale?: number; + /** + * Disable caching with cache: false + */ + cache?: boolean; + /** + * Force system fonts use + */ + useSystemFonts?: boolean; +} + + interface HTMLToTextOptions { + /** + * After how many chars a line break should follow in `p` elements. + * + * Set to `null` or `false` to disable word-wrapping. + */ + wordwrap?: number | false | null | undefined; +} + + interface ParseXLSXOptions { + // specific worksheet name + sheet?: string; + // Use specified range (A1-style bounded range string) + range?: string; +} + + interface WorkbookSheet { + name: string; + rows: object[]; +} + + interface ParseZipOptions { + glob?: string; +} + + type TokenEncoder = (text: string) => number[]; + type TokenDecoder = (lines: Iterable) => string; + + interface Tokenizer { + model: string; + /** + * Number of tokens + */ + size?: number; + encode: TokenEncoder; + decode: TokenDecoder; +} + + interface CSVParseOptions extends JSONSchemaValidationOptions { + delimiter?: string; + headers?: string[]; + repair?: boolean; +} + + interface TextChunk extends WorkspaceFile { + lineStart: number; + lineEnd: number; +} + + interface TextChunkerConfig extends LineNumberingOptions { + model?: ModelType; + chunkSize?: number; + chunkOverlap?: number; + docType?: OptionsOrString< + | "cpp" + | "python" + | "py" + | "java" + | "go" + | "c#" + | "c" + | "cs" + | "ts" + | "js" + | "tsx" + | "typescript" + | "js" + | "jsx" + | "javascript" + | "php" + | "md" + | "mdx" + | "markdown" + | "rst" + | "rust" + >; +} + + interface Tokenizers { + /** + * Estimates the number of tokens in the content. May not be accurate + * @param model + * @param text + */ + count(text: string, options?: { model?: ModelType; approximate?: boolean }): Promise; + + /** + * Truncates the text to a given number of tokens, approximation. + * @param model + * @param text + * @param maxTokens + * @param options + */ + truncate( + text: string, + maxTokens: number, + options?: { model?: ModelType; last?: boolean }, + ): Promise; + + /** + * Tries to resolve a tokenizer for a given model. Defaults to gpt-4o if not found. + * @param model + */ + resolve(model?: ModelType): Promise; + + /** + * Chunk the text into smaller pieces based on a token limit and chunking strategy. + * @param text + * @param options + */ + chunk(file: Awaitable, options?: TextChunkerConfig): Promise; +} + + interface HashOptions { + /** + * Algorithm used for hashing + */ + algorithm?: "sha-256"; + /** + * Trim hash to this number of character + */ + length?: number; + /** + * Include genaiscript version in the hash + */ + version?: boolean; + /** + * Optional salting of the hash + */ + salt?: string; + /** + * Read the content of workspace files object into the hash + */ + readWorkspaceFiles?: boolean; +} + + interface VideoProbeResult { + streams: { + index: number; + codec_name: string; + codec_long_name: string; + profile: string; + codec_type: string; + codec_tag_string: string; + codec_tag: string; + width?: number; + height?: number; + coded_width?: number; + coded_height?: number; + closed_captions?: number; + film_grain?: number; + has_b_frames?: number; + sample_aspect_ratio?: string; + display_aspect_ratio?: string; + pix_fmt?: string; + level?: number; + color_range?: string; + color_space?: string; + color_transfer?: string; + color_primaries?: string; + chroma_location?: string; + field_order?: string; + refs?: number; + is_avc?: string; + nal_length_size?: number; + id: string; + r_frame_rate: string; + avg_frame_rate: string; + time_base: string; + start_pts: number; + start_time: number; + duration_ts: number; + duration: number; + bit_rate: number; + max_bit_rate: string; + bits_per_raw_sample: number | string; + nb_frames: number | string; + nb_read_frames?: string; + nb_read_packets?: string; + extradata_size?: number; + tags?: { + creation_time: string; + language?: string; + handler_name: string; + vendor_id?: string; + encoder?: string; + }; + disposition?: { + default: number; + dub: number; + original: number; + comment: number; + lyrics: number; + karaoke: number; + forced: number; + hearing_impaired: number; + visual_impaired: number; + clean_effects: number; + attached_pic: number; + timed_thumbnails: number; + captions: number; + descriptions: number; + metadata: number; + dependent: number; + still_image: number; + }; + sample_fmt?: string; + sample_rate?: number; + channels?: number; + channel_layout?: string; + bits_per_sample?: number | string; + }[]; + format: { + filename: string; + nb_streams: number; + nb_programs: number; + format_name: string; + format_long_name: string; + start_time: number; + duration: number; + size: number; + bit_rate: number; + probe_score: number; + tags: { + major_brand: string; + minor_version: string; + compatible_brands: string; + creation_time: string; + }; + }; +} + + interface PDFPageImage extends WorkspaceFile { + id: string; + width: number; + height: number; +} + + interface PDFPage { + index: number; + content: string; + image?: string; + figures?: PDFPageImage[]; +} + + interface DocxParseOptions extends CacheOptions { + /** + * Desired output format + */ + format?: "markdown" | "text" | "html"; +} + + interface EncodeIDsOptions { + matcher?: RegExp; + prefix?: string; + open?: string; + close?: string; +} + + type GitIgnorer = (files: readonly (string | WorkspaceFile)[]) => string[]; + + interface Parsers { + /** + * Parses text as a JSON5 payload + */ + JSON5( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses text generated by an LLM as JSON payload + * @param content + */ + JSONLLM(content: string): any | undefined; + + /** + * Parses text or file as a JSONL payload. Empty lines are ignore, and JSON5 is used for parsing. + * @param content + */ + JSONL(content: string | WorkspaceFile): any[] | undefined; + + /** + * Parses text as a YAML payload + */ + YAML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses text as TOML payload + * @param text text as TOML payload + */ + TOML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses the front matter of a markdown file + * @param content + * @param defaultValue + */ + frontmatter( + content: string | WorkspaceFile, + options?: { + defaultValue?: any; + format: "yaml" | "json" | "toml"; + } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses a file or URL as PDF + * @param content + */ + PDF( + content: string | WorkspaceFile, + options?: ParsePDFOptions, + ): Promise< + | { + /** + * Reconstructed text content from page content + */ + file: WorkspaceFile; + /** + * Page text content + */ + pages: string[]; + /** + * Rendered pages as images if `renderAsImage` is set + */ + images?: string[]; + + /** + * Parse PDF content + */ + data: PDFPage[]; + } + | undefined + >; + + /** + * Parses a .docx file + * @param content + */ + DOCX( + content: string | WorkspaceFile, + options?: DocxParseOptions, + ): Promise<{ file?: WorkspaceFile; error?: string }>; + + /** + * Parses a CSV file or text + * @param content + */ + CSV(content: string | WorkspaceFile, options?: CSVParseOptions): object[] | undefined; + + /** + * Parses a XLSX file and a given worksheet + * @param content + */ + XLSX(content: WorkspaceFile, options?: ParseXLSXOptions): Promise; + + /** + * Parses a .env file + * @param content + */ + dotEnv(content: string | WorkspaceFile): Record; + + /** + * Parses a .ini file + * @param content + */ + INI(content: string | WorkspaceFile, options?: INIParseOptions): any | undefined; + + /** + * Parses a .xml file + * @param content + */ + XML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & XMLParseOptions, + ): any | undefined; + + /** + * Parses .vtt or .srt transcription files + * @param content + */ + transcription(content: string | WorkspaceFile): TranscriptionSegment[]; + + /** + * Convert HTML to text + * @param content html string or file + * @param options + */ + HTMLToText(content: string | WorkspaceFile, options?: HTMLToTextOptions): Promise; + + /** + * Convert HTML to markdown + * @param content html string or file + * @param options rendering options + */ + HTMLToMarkdown(content: string | WorkspaceFile, options?: HTMLToMarkdownOptions): Promise; + + /** + * Extracts the contents of a zip archive file + * @param file + * @param options + */ + unzip(file: WorkspaceFile, options?: ParseZipOptions): Promise; + + /** + * Parses fenced code sections in a markdown text + */ + fences(content: string | WorkspaceFile): Fenced[]; + + /** + * Parses various format of annotations (error, warning, ...) + * @param content + */ + annotations(content: string | WorkspaceFile): Diagnostic[]; + + /** + * Parses and evaluates a math expression + * @param expression math expression compatible with mathjs + * @param scope object to read/write variables + */ + math(expression: string, scope?: object): Promise; + + /** + * Using the JSON schema, validates the content + * @param schema JSON schema instance + * @param content object to validate + */ + validateJSON(schema: JSONSchema, content: any): FileEditValidation; + + /** + * Renders a mustache template + * @param text template text + * @param data data to render + */ + mustache(text: string | WorkspaceFile, data: Record): string; + + /** + * Renders a jinja template + */ + jinja(text: string | WorkspaceFile, data: Record): string; + + /** + * Computes a diff between two files + */ + diff( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: DefDiffOptions, + ): string; + + /** + * Cleans up a dataset made of rows of data + * @param rows + * @param options + */ + tidyData(rows: object[], options?: DataFilter): object[]; + + /** + * Applies a GROQ query to the data + * @param data data object to filter + * @param query query + * @see https://groq.dev/ + */ + GROQ(query: string, data: any): Promise; + + /** + * Computes a sha1 that can be used for hashing purpose, not cryptographic. + * @param content content to hash + */ + hash(content: any, options?: HashOptions): Promise; + + /** + * Optionally removes a code fence section around the text + * @param text + * @param language + */ + unfence(text: string, language?: ElementOrArray): string; + + /** + * Erase ... tags + * @param text + */ + unthink(text: string): string; + + /** + * Remove left indentation + * @param text + */ + dedent(templ: TemplateStringsArray | string, ...values: unknown[]): string; + + /** + * Encodes ids in a text and returns the function to decode them + * @param text + * @param options + */ + encodeIDs( + text: string, + options?: EncodeIDsOptions, + ): { + encoded: string; + text: string; + decode: (text: string) => string; + matcher: RegExp; + ids: Record; + }; + + /** + * Parses a prompty file + * @param file + */ + prompty(file: WorkspaceFile): Promise; + + /** + * Computes the Levenshtein distance between two strings or workspace files. + */ + levenshtein(a: string | WorkspaceFile, b: string | WorkspaceFile): Promise; + + /** + * Create a file filter using the `.gitignore` format from the given filenames. + * @param filenames + */ + ignore(...filenames: string[]): Promise; +} + + interface YAMLObject { + /** + * Parses a YAML string into a JavaScript object using JSON5. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (strings: TemplateStringsArray, ...values: unknown[]): any; + + /** + * Converts an object to its YAML representation + * @param obj + */ + stringify(obj: unknown): string; + /** + * Parses a YAML string to object + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + parse(text: string | WorkspaceFile): any; +} + + interface PromptyFrontmatter { + name?: string; + description?: string; + version?: string; + authors?: string[]; + tags?: string[]; + sample?: Record | string; + inputs?: Record< + string, + | JSONSchemaArray + | JSONSchemaNumber + | JSONSchemaBoolean + | JSONSchemaString + | JSONSchemaObject + | { type: "list" } + >; + outputs?: JSONSchemaObject; + model?: { + api?: "chat" | "completion"; + configuration?: { + type?: string; + name?: string; + organization?: string; + api_version?: string; + azure_deployment: string; + azure_endpoint: string; + }; + parameters?: { + response_format?: { type: "json_object" | "json_schema" }; + max_tokens?: number; + temperature?: number; + top_p?: number; + n?: number; + seed?: number; + stream?: boolean; // ignored + tools?: unknown[]; // ignored + }; + }; + + // unofficial + files?: string | string[]; + tests?: PromptTest | PromptTest[]; +} + + interface PromptyDocument { + meta: PromptArgs; + frontmatter: PromptyFrontmatter; + content: string; + messages: ChatMessage[]; +} + + interface DiffFile { + chunks: DiffChunk[]; + deletions: number; + additions: number; + from?: string; + to?: string; + oldMode?: string; + newMode?: string; + index?: string[]; + deleted?: true; + new?: true; +} + + interface DiffChunk { + content: string; + changes: DiffChange[]; + oldStart: number; + oldLines: number; + newStart: number; + newLines: number; +} + + interface DiffNormalChange { + type: "normal"; + ln1: number; + ln2: number; + normal: true; + content: string; +} + + interface DiffAddChange { + type: "add"; + add: true; + ln: number; + content: string; +} + + interface DiffDeleteChange { + type: "del"; + del: true; + ln: number; + content: string; +} + + type DiffChangeType = "normal" | "add" | "del"; + + type DiffChange = DiffNormalChange | DiffAddChange | DiffDeleteChange; + + interface DIFFObject { + /** + * Parses a diff string into a structured object + * @param input + */ + parse(input: string): DiffFile[]; + + /** + * Given a filename and line number (0-based), finds the chunk in the diff + * @param file + * @param range line index or range [start, end] inclusive + * @param diff + */ + findChunk( + file: string, + range: number | [number, number] | number[], + diff: ElementOrArray, + ): { file?: DiffFile; chunk?: DiffChunk } | undefined; + + /** + * Creates a two file path + * @param left + * @param right + * @param options + */ + createPatch( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: { + context?: number; + ignoreCase?: boolean; + ignoreWhitespace?: boolean; + }, + ): string; +} + + interface XMLObject { + /** + * Parses an XML payload to an object + * @param text + */ + parse(text: string | WorkspaceFile, options?: XMLParseOptions): Promise; +} + + interface JSONSchemaUtilities { + /** + * Infers a JSON schema from an object + * @param obj + * @deprecated Use `fromParameters` instead + */ + infer(obj: any): Promise; + + /** + * Converts a parameters schema to a JSON schema + * @param parameters + */ + fromParameters(parameters: PromptParametersSchema | undefined): JSONSchema; +} + + interface HTMLTableToJSONOptions { + useFirstRowForHeadings?: boolean; + headers?: { + from?: number; + to: number; + concatWith: string; + }; + stripHtmlFromHeadings?: boolean; + stripHtmlFromCells?: boolean; + stripHtml?: boolean | null; + forceIndexAsNumber?: boolean; + countDuplicateHeadings?: boolean; + ignoreColumns?: number[] | null; + onlyColumns?: number[] | null; + ignoreHiddenRows?: boolean; + id?: string[] | null; + headings?: string[] | null; + containsClasses?: string[] | null; + limitrows?: number | null; +} + + interface HTMLToMarkdownOptions { + disableGfm?: boolean; +} + + interface HTMLObject { + /** + * Converts all HTML tables to JSON. + * @param html + * @param options + */ + convertTablesToJSON(html: string, options?: HTMLTableToJSONOptions): Promise; + /** + * Converts HTML markup to plain text + * @param html + */ + convertToText(html: string): Promise; + /** + * Converts HTML markup to markdown + * @param html + */ + convertToMarkdown(html: string, options?: HTMLToMarkdownOptions): Promise; +} + + interface GitCommit { + sha: string; + date: string; + author: string; + message: string; + files: string[]; +} + + interface GitLogOptions { + base?: string; + head?: string; + count?: number; + merges?: boolean; + author?: string; + until?: string; + after?: string; + excludedGrep?: string | RegExp; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; +} + + interface GitWorktree { + /** + * Path to the worktree + */ + path: string; + /** + * Branch name associated with the worktree + */ + branch: string; + /** + * Commit SHA the worktree is checked out to + */ + head: string; + /** + * Whether the worktree is bare + */ + bare?: boolean; + /** + * Whether the worktree is detached (not on a branch) + */ + detached?: boolean; +} + + interface GitWorktreeAddOptions { + /** + * Create a new branch with the worktree + */ + branch?: string; + /** + * Force creation even if target exists + */ + force?: boolean; + /** + * Checkout the branch into the worktree + */ + checkout?: boolean; + /** + * Create an orphan branch + */ + orphan?: boolean; + /** + * Detach HEAD at the commit + */ + detach?: boolean; +} + + interface Git { + /** + * Current working directory + */ + cwd: string; + + /** + * Resolves the default branch for this repository + */ + defaultBranch(): Promise; + + /** + * Gets the last tag in the repository + */ + lastTag(): Promise; + + /** + * Gets the current branch of the repository + */ + branch(): Promise; + + /** + * Executes a git command in the repository and returns the stdout + * @param cmd + */ + exec( + args: string[] | string, + options?: { + label?: string; + }, + ): Promise; + + /** + * Git fetches the remote repository + * @param options + */ + fetch( + remote?: OptionsOrString<"origin">, + branchOrSha?: string, + options?: { + prune?: boolean; + all?: boolean; + }, + ): Promise; + + /** + * Git pull the remote repository + * @param options + */ + pull(options?: { ff?: boolean }): Promise; + + /** + * Lists the branches in the git repository + */ + listBranches(): Promise; + + /** + * Finds specific files in the git repository. + * By default, work + * @param options + */ + listFiles( + scope?: "modified-base" | "staged" | "modified", + options?: { + base?: string; + /** + * Ask the user to stage the changes if the diff is empty. + */ + askStageOnEmpty?: boolean; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + }, + ): Promise; + + /** + * + * @param options + */ + diff(options?: { + staged?: boolean; + /** + * Ask the user to stage the changes if the diff is empty. + */ + askStageOnEmpty?: boolean; + base?: string; + head?: string; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + unified?: number; + nameOnly?: boolean; + algorithm?: "patience" | "minimal" | "histogram" | "myers"; + ignoreSpaceChange?: boolean; + extras?: string[]; + /** + * Modifies the diff to be in a more LLM friendly format + */ + llmify?: boolean; + /** + * Maximum of tokens before returning a name-only diff + */ + maxTokensFullDiff?: number; + }): Promise; + + /** + * Lists the commits in the git repository + */ + log(options?: GitLogOptions): Promise; + + /** + * Run git blame on a file, line + * @param filename + * @param line + */ + blame(filename: string, line: number): Promise; + + /** + * Returns a list of files that have changed in the git repository + * @param options + */ + changedFiles(options?: GitLogOptions & { readText?: string }): Promise; + + /** + * Create a shallow git clone + * @param repository URL of the remote repository + * @param options various clone options + * @returns the path to the cloned repository + */ + shallowClone( + repository: string, + options?: { + /** + * Branch to clone + */ + branch?: string; + + /** + * Do not reuse previous clone + */ + force?: boolean; + + /** + * Runs install command after cloning + */ + install?: boolean; + + /** + * Number of commits to fetch + */ + depth?: number; + }, + ): Promise; + + /** + * Open a git client on a different directory + * @param cwd working directory + */ + client(cwd: string): Git; + + /** + * List all git worktrees + */ + listWorktrees(): Promise; + + /** + * Add a new git worktree + * @param path path where the worktree should be created + * @param commitish commit, branch, or tag to checkout + * @param options additional options for worktree creation + * @returns Git client opened at the worktree path + */ + addWorktree(path: string, commitish?: string, options?: GitWorktreeAddOptions): Promise; + + /** + * Remove a git worktree + * @param path path to the worktree to remove + * @param options removal options + */ + removeWorktree( + path: string, + options?: { + force?: boolean; + }, + ): Promise; +} + +/** + * A ffmpeg command builder. This instance is the 'native' fluent-ffmpeg command builder. + */ + interface FfmpegCommandBuilder { + seekInput(startTime: number | string): FfmpegCommandBuilder; + duration(duration: number | string): FfmpegCommandBuilder; + noVideo(): FfmpegCommandBuilder; + noAudio(): FfmpegCommandBuilder; + audioCodec(codec: string): FfmpegCommandBuilder; + audioBitrate(bitrate: string | number): FfmpegCommandBuilder; + audioChannels(channels: number): FfmpegCommandBuilder; + audioFrequency(freq: number): FfmpegCommandBuilder; + audioQuality(quality: number): FfmpegCommandBuilder; + audioFilters(filters: string | string[] /* | AudioVideoFilter[]*/): FfmpegCommandBuilder; + toFormat(format: string): FfmpegCommandBuilder; + + videoCodec(codec: string): FfmpegCommandBuilder; + videoBitrate(bitrate: string | number, constant?: boolean): FfmpegCommandBuilder; + videoFilters(filters: string | string[]): FfmpegCommandBuilder; + outputFps(fps: number): FfmpegCommandBuilder; + frames(frames: number): FfmpegCommandBuilder; + keepDisplayAspectRatio(): FfmpegCommandBuilder; + size(size: string): FfmpegCommandBuilder; + aspectRatio(aspect: string | number): FfmpegCommandBuilder; + autopad(pad?: boolean, color?: string): FfmpegCommandBuilder; + + inputOptions(...options: string[]): FfmpegCommandBuilder; + outputOptions(...options: string[]): FfmpegCommandBuilder; +} + + interface FFmpegCommandOptions extends CacheOptions { + inputOptions?: ElementOrArray; + outputOptions?: ElementOrArray; + /** + * For video conversion, output size as `wxh` + */ + size?: string; +} + + interface VideoExtractFramesOptions extends FFmpegCommandOptions { + /** + * A set of seconds or timestamps (`[[hh:]mm:]ss[.xxx]`) + */ + timestamps?: number[] | string[]; + /** + * Number of frames to extract + */ + count?: number; + /** + * Extract frames on the start of each transcript segment + */ + transcript?: TranscriptionResult | string; + /** + * Extract Intra frames (keyframes). This is a efficient and fast decoding. + */ + keyframes?: boolean; + /** + * Picks frames that exceed scene threshold (between 0 and 1), typically between 0.2, and 0.5. + * This is computationally intensive. + */ + sceneThreshold?: number; + /** + * Output of the extracted frames + */ + format?: OptionsOrString<"jpeg" | "png">; +} + + interface VideoExtractClipOptions extends FFmpegCommandOptions { + /** + * Start time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`) + */ + start: number | string; + /** + * Duration of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`). + * You can also specify `end`. + */ + duration?: number | string; + /** + * End time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`). + * You can also specify `duration`. + */ + end?: number | string; +} + + interface VideoExtractAudioOptions extends FFmpegCommandOptions { + /** + * Optimize for speech-to-text transcription. Default is true. + */ + transcription?: boolean; + + forceConversion?: boolean; +} + + interface Ffmpeg { + /** + * Extracts metadata information from a video file using ffprobe + * @param filename + */ + probe(file: string | WorkspaceFile, options?: FFmpegCommandOptions): Promise; + + /** + * Extracts frames from a video file + * @param options + */ + extractFrames( + file: string | WorkspaceFile, + options?: VideoExtractFramesOptions, + ): Promise; + + /** + * Extracts a clip from a video. Returns the generated video file path. + */ + extractClip(file: string | WorkspaceFile, options: VideoExtractClipOptions): Promise; + + /** + * Extract the audio track from a video + * @param videoPath + */ + extractAudio(file: string | WorkspaceFile, options?: VideoExtractAudioOptions): Promise; + + /** + * Runs a ffmpeg command and returns the list of generated file names + * @param input + * @param builder manipulates the ffmpeg command and returns the output name + */ + run( + input: string | WorkspaceFile, + builder: ( + cmd: FfmpegCommandBuilder, + options?: { input: string; dir: string }, + ) => Awaitable, + options?: FFmpegCommandOptions, + ): Promise; +} + + interface TranscriptionSegment { + id?: string; + start: number; + end?: number; + text: string; +} + + interface GitHubOptions { + owner: string; + repo: string; + baseUrl?: string; + auth?: string; + ref?: string; + refName?: string; + issueNumber?: number; + runId?: string; + runUrl?: string; +} + + type GitHubWorkflowRunStatus = + | "completed" + | "action_required" + | "cancelled" + | "failure" + | "neutral" + | "skipped" + | "stale" + | "success" + | "timed_out" + | "in_progress" + | "queued" + | "requested" + | "waiting" + | "pending"; + + interface GitHubNode { + id: number; + node_id: string; +} + + interface GitHubWorkflowRun extends GitHubNode { + run_number: number; + name?: string; + display_title: string; + status: string; + conclusion: string; + html_url: string; + created_at: string; + head_branch: string; + head_sha: string; + workflow_id: number; + run_started_at?: string; +} + + interface GitHubWorkflowJob extends GitHubNode { + run_id: number; + status: string; + conclusion: string; + name: string; + html_url: string; + logs_url: string; + logs: string; + started_at: string; + completed_at: string; + content: string; +} + + interface GitHubIssue extends GitHubNode { + body?: string; + title: string; + number: number; + state: string; + state_reason?: "completed" | "reopened" | "not_planned" | null; + html_url: string; + draft?: boolean; + reactions?: GitHubReactions; + user: GitHubUser; + assignee?: GitHubUser; + labels?: (string | { name?: string })[]; + created_at: string; + updated_at?: string; + closed_at?: string; +} + + type GitHubReactionType = + | "eyes" + | "hooray" + | "heart" + | "rocket" + | "confused" + | "laugh" + | "+1" + | "-1"; + + interface GitHubRef { + ref: string; + url: string; +} + + interface GitHubReactions { + url: string; + total_count: number; + "+1": number; + "-1": number; + laugh: number; + confused: number; + heart: number; + hooray: number; + eyes: number; + rocket: number; +} + + interface GitHubReaction { + id: number; + user: GitHubUser; + content: GitHubReactionType; + created_at: string; +} + + interface GitHubComment extends GitHubNode { + body?: string; + user: GitHubUser; + created_at: string; + updated_at: string; + html_url: string; + reactions?: GitHubReactions; +} + + interface GitHubPullRequest extends GitHubIssue { + head: { + ref: string; + }; + base: { + ref: string; + }; +} + + interface GitHubCodeSearchResult { + name: string; + path: string; + sha: string; + html_url: string; + score: number; + repository: string; +} + + interface GitHubWorkflow extends GitHubNode { + name: string; + path: string; +} + + interface GitHubPaginationOptions { + /** + * Default number of items to fetch, default is 50. + */ + count?: number; +} + + interface GitHubFile extends WorkspaceFile { + type: "file" | "dir" | "submodule" | "symlink"; + size: number; +} + + interface GitHubUser { + login: string; +} + + interface GitHubRelease { + id: number; + tag_name: string; + name: string; + draft?: boolean; + prerelease?: boolean; + html_url: string; + published_at: string; + body?: string; +} + + interface GitHubGist { + id: string; + description?: string; + created_at?: string; + files: WorkspaceFile[]; +} + + interface GitHubArtifact { + id: number; + name: string; + size_in_bytes: number; + url: string; + archive_download_url: string; + expires_at: string; +} + + interface GitHubIssueUpdateOptions { + title?: string; + body?: string; + assignee?: string; + state?: "open" | "closed"; + assignees?: string[]; + labels?: string[]; +} + + interface GitHubIssueCreateOptions { + labels?: string[]; +} + + interface GitHubLabel { + name: string; + color?: string; + description?: string; +} + + interface GitHub { + /** + * Gets connection information for octokit + */ + info(): Promise; + + /** + * Gets the details of a GitHub workflow + * @param workflowId + */ + workflow(workflowId: number | string): Promise; + + /** + * Lists workflows in a GitHub repository + */ + listWorkflows(options?: GitHubPaginationOptions): Promise; + + /** + * Lists workflow runs for a given workflow + * @param workflowId + * @param options + */ + listWorkflowRuns( + workflow_id: string | number, + options?: { + branch?: string; + event?: string; + status?: GitHubWorkflowRunStatus; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub Action workflow run + * @param runId + */ + workflowRun(runId: number | string): Promise; + + /** + * List artifacts for a given workflow run + * @param runId + */ + listWorkflowRunArtifacts( + runId: number | string, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub Action workflow run artifact + * @param artifactId + */ + artifact(artifactId: number | string): Promise; + + /** + * Downloads and unzips archive files from a GitHub Action Artifact + * @param artifactId + */ + downloadArtifactFiles(artifactId: number | string): Promise; + + /** + * Downloads a GitHub Action workflow run log + * @param runId + */ + listWorkflowJobs(runId: number, options?: GitHubPaginationOptions): Promise; + + /** + * Downloads a GitHub Action workflow run log + * @param jobId + */ + downloadWorkflowJobLog(jobId: number, options?: { llmify?: boolean }): Promise; + + /** + * Diffs two GitHub Action workflow job logs + */ + diffWorkflowJobLogs(job_id: number, other_job_id: number): Promise; + + /** + * List labels in repository + */ + listIssueLabels(issueNumber?: string | number): Promise; + + /** + * Lists issues for a given repository + * @param options + */ + listIssues( + options?: { + state?: "open" | "closed" | "all"; + labels?: string; + sort?: "created" | "updated" | "comments"; + direction?: "asc" | "desc"; + creator?: string; + assignee?: string; + since?: string; + mentioned?: string; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Lists gists for a given user + */ + listGists(): Promise; + + /** + * Gets the files of a gist + * @param gist_id + */ + getGist(gist_id: string): Promise; + + /** + * Gets the details of a GitHub issue + * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable. + */ + getIssue(issueNumber?: number | string): Promise; + + /** + * Assigns an existing issue to a bot user. Defaults to copilot user. + */ + assignIssueToBot( + issue_number: number | string, + options?: { bot?: string }, + ): Promise<{ id: string; title: string }>; + + /** + * Creates a new issue or pull request on GitHub + */ + createIssue( + title: string, + body: string, + options?: GitHubIssueCreateOptions, + ): Promise; + + /** + * Updates an issue or pull request on GitHub + * @param issueNumber + * @param options + */ + updateIssue( + issueNumber: number | string, + options: GitHubIssueUpdateOptions, + ): Promise; + + /** + * Create a GitHub issue comment + * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable. + * @param body the body of the comment as Github Flavored markdown + */ + createIssueComment(issueNumber: number | string, body: string): Promise; + + /** + * Lists comments for a given issue + * @param issue_number + * @param options + */ + listIssueComments( + issue_number: number | string, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Updates a comment on a GitHub issue + * @param comment_id + * @param body the updated comment body + */ + updateIssueComment( + comment_id: number | string, + body: string, + options?: GitHubAIDisclaimerOptions, + ): Promise; + + createReaction( + type: "issue" | "issueComment" | "pullRequestReviewComment", + id: number | string, + reaction: GitHubReactionType, + ): Promise; + + /** + * Lists pull requests for a given repository + * @param options + */ + listPullRequests( + options?: { + state?: "open" | "closed" | "all"; + sort?: "created" | "updated" | "popularity" | "long-running"; + direction?: "asc" | "desc"; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub pull request + * @param pull_number pull request number. Default resolves the pull request for the current branch. + */ + getPullRequest(pull_number?: number | string): Promise; + + /** + * Lists comments for a given pull request + * @param pull_number + * @param options + */ + listPullRequestReviewComments( + pull_number: number, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Gets the content of a file from a GitHub repository + * @param filepath + * @param options + */ + getFile( + filepath: string, + /** + * commit sha, branch name or tag name + */ + ref: string, + ): Promise; + + /** + * Searches code in a GitHub repository + */ + searchCode(query: string, options?: GitHubPaginationOptions): Promise; + + /** + * Lists branches in a GitHub repository + */ + listBranches(options?: GitHubPaginationOptions): Promise; + + /** + * Lists tags in a GitHub repository + */ + listRepositoryLanguages(): Promise>; + + /** + * List latest releases in a GitHub repository + * @param options + */ + listReleases(options?: GitHubPaginationOptions): Promise; + + /** + * Lists tags in a GitHub repository + */ + getRepositoryContent( + path?: string, + options?: { + ref?: string; + glob?: string; + downloadContent?: boolean; + maxDownloadSize?: number; + type?: GitHubFile["type"]; + }, + ): Promise; + + /** + * Uploads a file to an orphaned branch in the repository and returns the raw url + * Uploads a single copy of the file using hash as the name. + * @param file file or data to upload + * @param options + */ + uploadAsset( + file: BufferLike, + options?: { + branchName?: string; + }, + ): Promise; + + /** + * Resolves user uploaded assets to a short lived URL with access token. Returns undefined if the asset is not found. + */ + resolveAssetUrl(url: string): Promise; + + /** + * Executes a GraphQL query against the GitHub API. By default, injects the `owner`, `repo`, `ref` variables. + * @param query + * @param variables + */ + graphql(query: string, variables?: Record): Promise; + + /** + * Gets the underlying Octokit client + */ + api(): Promise; + + /** + * Opens a client to a different repository + * @param owner + * @param repo + */ + client(owner: string, repo: string): GitHub; + + /** + * Create a worktree for a specific GitHub pull request + * @param pullNumber pull request number + * @param path path where the worktree should be created + * @param options additional options + * @returns Git client opened at the worktree path + */ + addWorktreeForPullRequest( + pullNumber: number | string, + path?: string, + options?: GitWorktreeAddOptions, + ): Promise; +} + + interface MDObject { + /** + * Parses front matter from markdown + * @param text + */ + frontmatter(text: string | WorkspaceFile, format?: "yaml" | "json" | "toml" | "text"): any; + + /** + * Removes the front matter from the markdown text + */ + content(text: string | WorkspaceFile): string; + + /** + * Merges frontmatter with the existing text + * @param text + * @param frontmatter + * @param format + */ + updateFrontmatter(text: string, frontmatter: unknown, format?: "yaml" | "json"): string; + + /** + * Attempts to chunk markdown in text section in a way that does not splitting the heading structure. + * @param text + * @param options + */ + chunk( + text: string | WorkspaceFile, + options?: { maxTokens?: number; model?: string; pageSeparator?: string }, + ): Promise; + + /** + * Pretty prints object to markdown + * @param value + */ + stringify( + value: unknown, + options?: { + quoteValues?: boolean; + headings?: number; + headingLevel?: number; + }, + ): string; +} + + interface GitHubAIDisclaimerOptions extends Record {} + + interface JSONLObject { + /** + * Parses a JSONL string to an array of objects + * @param text + */ + parse(text: string | WorkspaceFile): any[]; + /** + * Converts objects to JSONL format + * @param objs + */ + stringify(objs: unknown[]): string; + + /** + * Appends an object to a JSONL file + * @param filename + * @param obj + */ + append(name: string, objs: ElementOrArray, meta?: any): Promise; +} + + interface INIObject { + /** + * Parses a .ini file + * @param text + */ + parse(text: string | WorkspaceFile): any; + + /** + * Converts an object to.ini string + * @param value + */ + stringify(value: any): string; +} + + interface JSON5Object { + /** + * Parses a JSON/YAML/XML string to an object + * @param text + */ + parse(text: string | WorkspaceFile): any; + + /** + * Renders an object to a JSON5-LLM friendly string + * @param value + */ + stringify(value: any): string; +} + + interface CSVStringifyOptions { + delimiter?: string; + header?: boolean; +} + +/** + * Interface representing CSV operations. + */ + interface CSVObject { + /** + * Parses a CSV string to an array of objects. + * + * @param text - The CSV string to parse. + * @param options - Optional settings for parsing. + * @param options.delimiter - The delimiter used in the CSV string. Defaults to ','. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the first row. + * @returns An array of objects representing the parsed CSV data. + */ + parse(text: string | WorkspaceFile, options?: CSVParseOptions): object[]; + + /** + * Converts an array of objects to a CSV string. + * + * @param csv - The array of objects to convert. + * @param options - Optional settings for stringifying. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys. + * @returns A CSV string representing the data. + */ + stringify(csv: object[], options?: CSVStringifyOptions): string; + + /** + * Converts an array of objects that represents a data table to a markdown table. + * + * @param csv - The array of objects to convert. + * @param options - Optional settings for markdown conversion. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys. + * @returns A markdown string representing the data table. + */ + markdownify(csv: object[], options?: { headers?: string[] }): string; + + /** + * Splits the original array into chunks of the specified size. + * @param csv + * @param rows + */ + chunk(csv: object[], size: number): { chunkStartIndex: number; rows: object[] }[]; +} + +/** + * Provide service for responsible. + */ + interface ContentSafety { + /** + * Service identifier + */ + id: string; + + /** + * Scans text for the risk of a User input attack on a Large Language Model. + * If not supported, the method is not defined. + */ + detectPromptInjection?( + content: Awaitable | ElementOrArray>, + ): Promise<{ attackDetected: boolean; filename?: string; chunk?: string }>; + /** + * Analyzes text for harmful content. + * If not supported, the method is not defined. + * @param content + */ + detectHarmfulContent?( + content: Awaitable | ElementOrArray>, + ): Promise<{ + harmfulContentDetected: boolean; + filename?: string; + chunk?: string; + }>; +} + + interface HighlightOptions { + maxLength?: number; +} + + interface WorkspaceFileIndex { + /** + * Gets the index name + */ + name: string; + /** + * Uploads or merges files into the index + */ + insertOrUpdate: (file: ElementOrArray) => Promise; + /** + * Searches the index + */ + search: ( + query: string, + options?: { topK?: number; minScore?: number }, + ) => Promise; +} + + interface VectorIndexOptions extends EmbeddingsModelOptions { + /** + * Type of database implementation. + * - `local` uses a local database using embeddingsModel + * - `azure_ai_search` uses Azure AI Search + */ + type?: "local" | "azure_ai_search"; + version?: number; + deleteIfExists?: boolean; + chunkSize?: number; + chunkOverlap?: number; + + /** + * Max tokens in a request + */ + maxTokens?: number; + + /** + * Embeddings vector size + */ + vectorSize?: number; + /** + * Override default embeddings cache name + */ + cacheName?: string; + /** + * Cache salt to invalidate cache entries + */ + cacheSalt?: string; +} + + interface VectorSearchOptions extends VectorIndexOptions { + /** + * Maximum number of embeddings to use + */ + topK?: number; + /** + * Minimum similarity score + */ + minScore?: number; + /** + * Index to use + */ + indexName?: string; +} + + interface FuzzSearchOptions { + /** + * Controls whether to perform prefix search. It can be a simple boolean, or a + * function. + * + * If a boolean is passed, prefix search is performed if true. + * + * If a function is passed, it is called upon search with a search term, the + * positional index of that search term in the tokenized search query, and the + * tokenized search query. + */ + prefix?: boolean; + /** + * Controls whether to perform fuzzy search. It can be a simple boolean, or a + * number, or a function. + * + * If a boolean is given, fuzzy search with a default fuzziness parameter is + * performed if true. + * + * If a number higher or equal to 1 is given, fuzzy search is performed, with + * a maximum edit distance (Levenshtein) equal to the number. + * + * If a number between 0 and 1 is given, fuzzy search is performed within a + * maximum edit distance corresponding to that fraction of the term length, + * approximated to the nearest integer. For example, 0.2 would mean an edit + * distance of 20% of the term length, so 1 character in a 5-characters term. + * The calculated fuzziness value is limited by the `maxFuzzy` option, to + * prevent slowdown for very long queries. + */ + fuzzy?: boolean | number; + /** + * Controls the maximum fuzziness when using a fractional fuzzy value. This is + * set to 6 by default. Very high edit distances usually don't produce + * meaningful results, but can excessively impact search performance. + */ + maxFuzzy?: number; + /** + * Maximum number of results to return + */ + topK?: number; + /** + * Minimum score + */ + minScore?: number; +} + + interface Retrieval { + /** + * Executers a web search with Tavily or Bing Search. + * @param query + */ + webSearch( + query: string, + options?: { + count?: number; + provider?: "tavily" | "bing"; + /** + * Return undefined when no web search providers are present + */ + ignoreMissingProvider?: boolean; + }, + ): Promise; + + /** + * Search using similarity distance on embeddings + */ + vectorSearch( + query: string, + files: (string | WorkspaceFile) | (string | WorkspaceFile)[], + options?: VectorSearchOptions, + ): Promise; + + /** + * Loads or creates a file index using a vector index + * @param options + */ + index(id: string, options?: VectorIndexOptions): Promise; + + /** + * Performs a fuzzy search over the files + * @param query keywords to search + * @param files list of files + * @param options fuzzing configuration + */ + fuzzSearch( + query: string, + files: WorkspaceFile | WorkspaceFile[], + options?: FuzzSearchOptions, + ): Promise; +} + + interface ArrayFilter { + /** + * Selects the first N elements from the data + */ + sliceHead?: number; + /** + * Selects the last N elements from the data + */ + sliceTail?: number; + /** + * Selects the a random sample of N items in the collection. + */ + sliceSample?: number; +} + + interface DataFilter extends ArrayFilter { + /** + * The keys to select from the object. + * If a key is prefixed with -, it will be removed from the object. + */ + headers?: ElementOrArray; + /** + * Removes items with duplicate values for the specified keys. + */ + distinct?: ElementOrArray; + /** + * Sorts the data by the specified key(s) + */ + sort?: ElementOrArray; +} + + interface DefDataOptions + extends Omit, + FenceFormatOptions, + DataFilter, + ContentSafetyOptions { + /** + * Output format in the prompt. Defaults to Markdown table rendering. + */ + format?: "json" | "yaml" | "csv"; + + /** + * GROQ query to filter the data + * @see https://groq.dev/ + */ + query?: string; +} + + interface DefSchemaOptions { + /** + * Output format in the prompt. + */ + format?: "typescript" | "json" | "yaml"; +} + + type ChatFunctionArgs = { context: ToolCallContext } & Record; + type ChatFunctionHandler = (args: ChatFunctionArgs) => Awaitable; + type ChatMessageRole = "user" | "assistant" | "system"; + + interface HistoryMessageUser { + role: "user"; + content: string; +} + + interface HistoryMessageAssistant { + role: "assistant"; + name?: string; + content: string; +} + + interface WriteTextOptions extends ContextExpansionOptions { + /** + * Append text to the assistant response. This feature is not supported by all models. + * @deprecated + */ + assistant?: boolean; + /** + * Specifies the message role. Default is user + */ + role?: ChatMessageRole; +} + + type PromptGenerator = (ctx: ChatGenerationContext) => Awaitable; + + interface PromptGeneratorOptions + extends ModelOptions, + PromptSystemOptions, + ContentSafetyOptions, + SecretDetectionOptions, + MetadataOptions { + /** + * Label for trace + */ + label?: string; + + /** + * Write file edits to the file system + */ + applyEdits?: boolean; + + /** + * Throws if the generation is not successful + */ + throwOnError?: boolean; +} + + interface FileOutputOptions { + /** + * Schema identifier to validate the generated file + */ + schema?: string; +} + + interface FileOutput { + pattern: string[]; + description?: string; + options?: FileOutputOptions; +} + + interface ImportTemplateOptions { + /** + * Ignore unknown arguments + */ + allowExtraArguments?: boolean; + + /** + * Template engine syntax + */ + format?: "mustache" | "jinja"; +} + + interface PromptTemplateString { + /** + * Set a priority similar to CSS z-index + * to control the trimming of the prompt when the context is full + * @param priority + */ + priority(value: number): PromptTemplateString; + /** + * Sets the context layout flex weight + */ + flex(value: number): PromptTemplateString; + /** + * Applies jinja template to the string lazily + * @param data jinja data + */ + jinja(data: Record): PromptTemplateString; + /** + * Applies mustache template to the string lazily + * @param data mustache data + */ + mustache(data: Record): PromptTemplateString; + /** + * Sets the max tokens for this string + * @param tokens + */ + maxTokens(tokens: number): PromptTemplateString; + + /** + * Updates the role of the message + */ + role(role: ChatMessageRole): PromptTemplateString; + + /** + * Configure the cacheability of the prompt. + * @param value cache control type + */ + cacheControl(value: PromptCacheControlType): PromptTemplateString; +} + + type ImportTemplateArgumentType = + | Awaitable + | (() => Awaitable); + +/** + * Represents the context for generating a chat turn in a prompt template. + * Provides methods for importing templates, writing text, adding assistant responses, + * creating template strings, fencing code blocks, defining variables, and logging. + */ + interface ChatTurnGenerationContext { + importTemplate( + files: ElementOrArray, + templateArguments?: Record, + options?: ImportTemplateOptions, + ): void; + writeText(body: Awaitable, options?: WriteTextOptions): void; + assistant(text: Awaitable, options?: Omit): void; + $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString; + fence(body: StringLike, options?: FenceOptions): void; + def( + name: string, + body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult, + options?: DefOptions, + ): string; + defImages(files: ElementOrArray, options?: DefImagesOptions): void; + defData(name: string, data: Awaitable, options?: DefDataOptions): string; + defDiff( + name: string, + left: T, + right: T, + options?: DefDiffOptions, + ): string; + console: PromptGenerationConsole; +} + + interface FileUpdate { + before: string; + after: string; + validation?: FileEditValidation; +} + + interface RunPromptResultPromiseWithOptions extends Promise { + options(values?: PromptGeneratorOptions): RunPromptResultPromiseWithOptions; +} + + interface DefToolOptions extends ContentSafetyOptions { + /** + * Maximum number of tokens per tool content response + */ + maxTokens?: number; + + /** + * Suffix to identify the variant instantiation of the tool + */ + variant?: string; + + /** + * Updated description for the variant + */ + variantDescription?: string; + + /** + * Intent of the tool that will be used for LLM judge validation of the output. + * `description` uses the tool description as the intent. + * If the intent is a function, it must build a LLM-as-Judge prompt that emits OK/ERR categories. + */ + intent?: + | OptionsOrString<"description"> + | ((options: { + tool: ToolDefinition; + args: any; + result: string; + generator: ChatGenerationContext; + }) => Awaitable); +} + + interface DefAgentOptions extends Omit, DefToolOptions { + /** + * Excludes agent conversation from agent memory + */ + disableMemory?: boolean; + + /** + * Disable memory query on each query (let the agent call the tool) + */ + disableMemoryQuery?: boolean; +} + + type ChatAgentHandler = ( + ctx: ChatGenerationContext, + args: ChatFunctionArgs, +) => Awaitable; + + interface McpToolSpecification { + /** + * Tool identifier + */ + id: string; + /** + * The high level intent of the tool, which can be used for LLM judge validation. + * `description` uses the tool description as the intent. + */ + intent?: DefToolOptions["intent"]; +} + + interface McpServerConfig extends ContentSafetyOptions { + /** + * The executable to run to start the server. + * Required for stdio transport, not used for URL-based transports. + */ + command?: OptionsOrString<"npx" | "uv" | "uvx" | "dotnet" | "docker" | "cargo">; + /** + * Command line arguments to pass to the executable. + * Required for stdio transport, not used for URL-based transports. + */ + args?: string[]; + /** + * The URL to connect to for HTTP/WebSocket/SSE transports. + * When provided, command and args are ignored. + */ + url?: string; + /** + * The transport type to use. If not specified, will be inferred from the configuration. + * - "stdio": Use StdioClientTransport (requires command and args) + * - "http": Use StreamableHTTPClientTransport (requires url) + * - "sse": Use SSEClientTransport (requires url) + */ + type?: "stdio" | "http" | "sse"; + /** + * The server version + */ + version?: string; + /** + * The environment to use when spawning the process. + * + * If not specified, the result of getDefaultEnvironment() will be used. + * Only used for stdio transport. + */ + env?: Record; + /** + * The working directory to use when spawning the process. + * + * If not specified, the current working directory will be inherited. + * Only used for stdio transport. + */ + cwd?: string; + + /** + * Do not prepend client identifier with the tool id. + */ + disableToolIdMangling?: boolean; + + id: string; + options?: DefToolOptions; + + /** + * A list of allowed tools and their specifications. This filtering is applied + * before computing the sha signature. + */ + tools?: ElementOrArray; + + /** + * The sha signature of the tools returned by the server. + * If set, the tools will be validated against this sha. + * This is used to ensure that the tools are not modified by the server. + */ + toolsSha?: string; + + /** + * Validates that each tool has responses related to their description. + */ + intent?: DefToolOptions["intent"]; + + generator?: ChatGenerationContext; +} + + type McpServersConfig = Record>; + + interface McpAgentServerConfig extends McpServerConfig { + description: string; + instructions?: string; + /** + * Maximum number of tokens per tool content response + */ + maxTokens?: number; +} + + type McpAgentServersConfig = Record>; + + type ZodTypeLike = { _def: any; safeParse: any; refine: any }; + + type BufferLike = + | string + | WorkspaceFile + | Buffer + | Blob + | ArrayBuffer + | Uint8Array + | ReadableStream + | SharedArrayBuffer; + + type TranscriptionModelType = OptionsOrString< + "openai:whisper-1" | "openai:gpt-4o-transcribe" | "whisperasr:default" +>; + + interface ImageGenerationOptions extends ImageTransformOptions, RetryOptions { + model?: OptionsOrString; + /** + * The quality of the image that will be generated. + * auto (default value) will automatically select the best quality for the given model. + * high, medium and low are supported for gpt-image-1. + * high is supported for dall-e-3. + * dall-e-2 ignores this flag + */ + quality?: "auto" | "low" | "medium" | "high"; + /** + * Image size. + * For gpt-image-1: 1024x1024, 1536x1024 (landscape), 1024x1536 (portrait), or auto (default value) + * For dall-e: 256x256, 512x512, or 1024x1024 for dall-e-2, and one of 1024x1024, 1792x1024. + */ + size?: OptionsOrString< + | "auto" + | "landscape" + | "portrait" + | "square" + | "1536x1024" + | "1024x1536" + | "256x256" + | "512x512" + | "1024x1024" + | "1024x1792" + | "1792x1024" + >; + /** + * Only used for DALL-E 3 + */ + style?: OptionsOrString<"vivid" | "natural">; + + /** + * For gpt-image-1 only, the type of image format to generate. + */ + outputFormat?: "png" | "jpeg" | "webp"; + + /** + * Generation mode. Defaults to "generate". + * - "generate": Create new images from text prompts + * - "edit": Edit existing images using text prompts and optional masks + */ + mode?: "generate" | "edit"; + + /** + * Input image for edit mode. + * Required for "edit" mode. + */ + image?: BufferLike; + + /** + * Mask image for edit mode (optional). + * Used to specify which parts of the image to edit. + * Only applicable in "edit" mode. + */ + mask?: BufferLike; +} + + interface TranscriptionOptions extends CacheOptions, RetryOptions { + /** + * Model to use for transcription. By default uses the `transcribe` alias. + */ + model?: TranscriptionModelType; + + /** + * Translate to English. + */ + translate?: boolean; + + /** + * Input language in iso-639-1 format. + * @see https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes + */ + language?: string; + + /** + * The sampling temperature, between 0 and 1. + * Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. + */ + temperature?: number; +} + + interface TranscriptionResult { + /** + * Complete transcription text + */ + text: string; + /** + * Error if any + */ + error?: SerializedError; + + /** + * SubRip subtitle string from segments + */ + srt?: string; + + /** + * WebVTT subtitle string from segments + */ + vtt?: string; + + /** + * Individual segments + */ + segments?: (TranscriptionSegment & { + /** + * Seek offset of the segment + */ + seek?: number; + /** + * Temperature used for the generation of the segment + */ + temperature?: number; + })[]; +} + + type SpeechModelType = OptionsOrString< + "openai:tts-1-hd" | "openai:tts-1" | "openai:gpt-4o-mini-tts" +>; + + type SpeechVoiceType = OptionsOrString< + | "alloy" + | "ash" + | "coral" + | "echo" + | "fable" + | "onyx" + | "nova" + | "sage" + | "shimmer" + | "verse" + | "ballad" +>; + + interface SpeechOptions extends CacheOptions, RetryOptions { + /** + * Speech to text model + */ + model?: SpeechModelType; + + /** + * Voice to use (model-specific) + */ + voice?: SpeechVoiceType; + + /** + * Control the voice of your generated audio with additional instructions. Does not work with tts-1 or tts-1-hd. + */ + instructions?: string; +} + + interface SpeechResult { + /** + * Generate audio-buffer file + */ + filename?: string; + /** + * Error if any + */ + error?: SerializedError; +} + + interface ChatGenerationContext extends ChatTurnGenerationContext { + env: ExpansionVariables; + defSchema(name: string, schema: JSONSchema | ZodTypeLike, options?: DefSchemaOptions): string; + defTool( + tool: Omit | McpServersConfig | McpClient, + options?: DefToolOptions, + ): void; + defTool( + name: string, + description: string, + parameters: PromptParametersSchema | JSONSchema, + fn: ChatFunctionHandler, + options?: DefToolOptions, + ): void; + defAgent( + name: string, + description: string, + fn: string | ChatAgentHandler, + options?: DefAgentOptions, + ): void; + defChatParticipant(participant: ChatParticipantHandler, options?: ChatParticipantOptions): void; + defFileOutput( + pattern: ElementOrArray, + description: string, + options?: FileOutputOptions, + ): void; + runPrompt( + generator: string | PromptGenerator, + options?: PromptGeneratorOptions, + ): Promise; + prompt(strings: TemplateStringsArray, ...args: any[]): RunPromptResultPromiseWithOptions; + defFileMerge(fn: FileMergeHandler): void; + defOutputProcessor(fn: PromptOutputProcessorHandler): void; + transcribe( + audio: string | WorkspaceFile, + options?: TranscriptionOptions, + ): Promise; + speak(text: string, options?: SpeechOptions): Promise; + generateImage( + prompt: string, + options?: ImageGenerationOptions, + ): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>; +} + + interface ChatGenerationContextOptions { + /** + * Prompt generation context + */ + generator?: ChatGenerationContext; +} + + interface GenerationOutput { + /** + * full chat history + */ + messages: ChatMessage[]; + + /** + * LLM output. + */ + text: string; + + /** + * Reasoning produced by model + */ + reasoning?: string; + + /** + * Parsed fence sections + */ + fences: Fenced[]; + + /** + * Parsed data sections + */ + frames: DataFrame[]; + + /** + * A map of file updates + */ + fileEdits: Record; + + /** + * Generated annotations + */ + annotations: Diagnostic[]; + + /** + * Schema definition used in the generation + */ + schemas: Record; + + /** + * Output as JSON if parsable + */ + json?: any; + + /** + * Usage stats + */ + usage?: RunPromptUsage; +} + + type Point = { + row: number; + column: number; +}; + + interface DebugLogger { + /** + * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters: + * - `%O` Pretty-print an Object on multiple lines. + * - `%o` Pretty-print an Object all on a single line. + * - `%s` String. + * - `%d` Number (both integer and float). + * - `%j` JSON. Replaced with the string '[Circular]' if the argument contains circular references. + * - `%%` Single percent sign ('%'). This does not consume an argument. + * @param category + * @see https://www.npmjs.com/package/debug + */ + (formatter: any, ...args: any[]): void; + /** + * Indicates if this logger is enabled + */ + enabled: boolean; + /** + * The namespace of the logger provided when calling 'host.logger' + */ + namespace: string; +} + + interface LoggerHost { + /** + * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters: + * - `%O` Pretty-print an Object on multiple lines. + * - `%o` Pretty-print an Object all on a single line. + * - `%s` String. + * - `%d` Number (both integer and float). + * - `%j` JSON. Replaced with the string '[Circular]' if the argument contains circular references. + * - `%%` Single percent sign ('%'). This does not consume an argument. + * @param category + * @see https://www.npmjs.com/package/debug + */ + logger(category: string): DebugLogger; +} + + interface ShellOptions { + cwd?: string; + + stdin?: string; + + /** + * Process timeout in milliseconds, default is 60s + */ + timeout?: number; + /** + * trace label + */ + label?: string; + + /** + * Ignore exit code errors + */ + ignoreError?: boolean; + + /** + * Additional environment variables to set for the process. + */ + env?: Record; + + /** + * Inject the content of 'env' exclusively + */ + isolateEnv?: boolean; +} + + interface ShellOutput { + stdout?: string; + stderr?: string; + exitCode: number; + failed?: boolean; +} + + interface TimeoutOptions { + /** + * Maximum time in milliseconds. Default to no timeout + */ + timeout?: number; +} + + interface ShellSelectOptions {} + + interface ShellSelectChoice { + name?: string; + value: string; + description?: string; +} + + interface ShellInputOptions { + required?: boolean; +} + + interface ShellConfirmOptions { + default?: boolean; +} + + interface ShellHost { + /** + * Executes a shell command + * @param command + * @param args + * @param options + */ + exec(commandWithArgs: string, options?: ShellOptions): Promise; + exec(command: string, args: string[], options?: ShellOptions): Promise; +} + + interface McpToolReference { + name: string; + description?: string; + inputSchema?: JSONSchema; +} + + interface McpResourceReference { + name?: string; + description?: string; + uri: string; + mimeType?: string; +} + + interface McpServerToolResultTextPart { + type: "text"; + text: string; +} + + interface McpServerToolResultImagePart { + type: "image"; + data: string; + mimeType: string; +} + + interface McpServerToolResourcePart { + type: "resource"; + text?: string; + uri?: string; + mimeType?: string; + blob?: string; +} + + type McpServerToolResultPart = + | McpServerToolResultTextPart + | McpServerToolResultImagePart + | McpServerToolResourcePart; + + interface McpServerToolResult { + isError?: boolean; + content: McpServerToolResultPart[]; + text?: string; +} + + interface McpClient extends AsyncDisposable { + /** + * Configuration of the server + */ + readonly config: McpServerConfig; + + /** + * Pings the server + */ + ping(): Promise; + + /** + * List all available MCP tools + */ + listTools(): Promise; + + /** + * Returns a list of tools that can be used in a chat session + */ + listToolCallbacks(): Promise; + + /** + * List resources available in the server + */ + listResources(): Promise; + + /** + * Reads the resource content + */ + readResource(uri: string): Promise; + + /** + * + * @param name Call the MCP tool + * @param args + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + callTool(name: string, args: Record): Promise; + + /** + * Closes clients and server. + */ + dispose(): Promise; +} + + interface McpHost { + /** + * Starts a Model Context Protocol server and returns a client. + */ + mcpServer(config: McpServerConfig): Promise; +} + + interface ResourceReference { + uri: string; // Unique identifier for the resource + name: string; // Human-readable name + description?: string; // Optional description + mimeType?: string; // Optional MIME type +} + + interface ResourceHost { + /** + * Publishes a resource that will be exposed through the MCP server protocol. + * @param content + */ + publishResource( + name: string, + content: BufferLike, + options?: Partial> & SecretDetectionOptions, + ): Promise; + + /** + * List available resource references + */ + resources(): Promise; +} + + interface UserInterfaceHost { + /** + * Asks the user to select between options + * @param message question to ask + * @param options options to select from + */ + select( + message: string, + choices: (string | ShellSelectChoice)[], + options?: ShellSelectOptions, + ): Promise; + + /** + * Asks the user to input a text + * @param message message to ask + */ + input(message: string, options?: ShellInputOptions): Promise; + + /** + * Asks the user to confirm a message + * @param message message to ask + */ + confirm(message: string, options?: ShellConfirmOptions): Promise; +} + + interface ContainerPortBinding { + containerPort: OptionsOrString<"8000/tcp">; + hostPort: string | number; +} + + interface ContainerOptions { + /** + * Container image names. + * @example python:alpine python:slim python + * @see https://hub.docker.com/_/python/ + */ + image?: OptionsOrString<"python:alpine" | "python:slim" | "python" | "node" | "gcc">; + + /** + * Enable networking in container (disabled by default) + */ + networkEnabled?: boolean; + + /** + * Environment variables in container. A null/undefined variable is removed from the environment. + */ + env?: Record; + + /** + * Assign the specified name to the container. Must match [a-zA-Z0-9_-]+. + */ + name?: string; + + /** + * Disable automatic purge of container and volume directory and potentially reuse with same name, configuration. + */ + persistent?: boolean; + + /** + * List of exposed TCP ports + */ + ports?: ElementOrArray; + + /** + * Commands to executes after the container is created + */ + postCreateCommands?: ElementOrArray; +} + + interface PromiseQueue { + /** + * Adds a new promise to the queue + * @param fn + */ + add( + function_: (...arguments_: Arguments) => Awaitable, + ...arguments_: Arguments + ): Promise; + + /** + * Runs all the functions in the queue with limited concurrency + * @param fns + */ + all(fns: (() => Awaitable)[]): Promise; + + /** + * Applies a function to all the values in the queue with limited concurrency + * @param values + * @param fn + */ + mapAll( + values: T[], + fn: (value: T, ...arguments_: Arguments) => Awaitable, + ...arguments_: Arguments + ): Promise; +} + + interface LanguageModelReference { + provider: ModelProviderType; + model: ModelType; + modelId: string; +} + + interface LanguageModelInfo { + id: ModelType; + details?: string; + url?: string; + version?: string; + /** + * Base model name + */ + family?: string; +} + + interface LanguageModelProviderInfo { + id: ModelProviderType; + version?: string; + error?: string; + models: LanguageModelInfo[]; + base?: string; + token?: string; // Optional token for the provider +} + + interface LanguageModelHost { + /** + * Resolve a language model alias to a provider and model based on the current configuration + * @param modelId + */ + resolveLanguageModel(modelId?: ModelType): Promise; + + /** + * Returns the status of the model provider and list of models if available + */ + resolveLanguageModelProvider( + provider: ModelProviderType, + options?: { + // If true, returns the list of models available in the provider + listModels?: boolean; + // If true, return the token + token?: boolean; + }, + ): Promise; +} + + type ContentSafetyProvider = "azure"; + + interface ContentSafetyHost { + /** + * Resolve a content safety client + * @param id safety detection project + */ + contentSafety(id?: ContentSafetyProvider): Promise; +} + + interface RetryOptions { + retryOn?: number[]; // HTTP status codes to retry on + retries?: number; // Number of retry attempts + retryDelay?: number; // Initial delay between retries + maxDelay?: number; // Maximum delay between retries + maxRetryAfter?: number; // Maximum retry-after in milliseconds before giving up +} + + interface CacheOptions { + /** + * By default, LLM queries are not cached. + * If true, the LLM request will be cached. Use a string to override the default cache name + */ + cache?: boolean | string; +} + + type FetchOptions = RequestInit & RetryOptions; + + type FetchTextOptions = Omit & { + convert?: "markdown" | "text" | "tables"; +}; + + interface PromptHost + extends ShellHost, + LoggerHost, + McpHost, + ResourceHost, + UserInterfaceHost, + LanguageModelHost, + ContentSafetyHost { + /** + * A fetch wrapper with proxy, retry and timeout handling. + */ + fetch(input: string | URL | globalThis.Request, init?: FetchOptions): Promise; + + /** + * A function that fetches text from a URL or a file + * @param url + * @param options + */ + fetchText( + url: string | WorkspaceFile, + options?: FetchTextOptions, + ): Promise<{ + ok: boolean; + status: number; + text?: string; + file?: WorkspaceFile; + }>; + + /** + * Opens a in-memory key-value cache for the given cache name. Entries are dropped when the cache grows too large. + * @param cacheName + */ + cache(cacheName: string): Promise>; + + /** + * Starts a container + * @param options container creation options + */ + container(options?: ContainerOptions): Promise; + + /** + * Create a new promise queue to run async functions with limited concurrency + */ + promiseQueue(concurrency: number): PromiseQueue; + + /** + * Gets a client to a Microsoft Teams channel from a share link URL; + * uses `GENAISCRIPT_TEAMS_CHANNEL_URL` environment variable if `shareUrl` is not provided. + * Uses Azure CLI login for authentication. + * @param url + */ + teamsChannel(shareUrl?: string): Promise; +} + + interface WorkspaceFileWithDescription extends WorkspaceFile { + /** + * File description used for videos. + */ + description?: string; +} + +/** + * A client to a messaging channel + */ + interface MessageChannelClient { + /** + * Posts a message with attachments to the channel + * @param message + * @param options + */ + postMessage( + message: string, + options?: { + /** + * File attachments that will be added in the channel folder + */ + files?: (string | WorkspaceFileWithDescription)[]; + /** + * Sets to false to remove AI generated disclaimer + */ + disclaimer?: boolean | string; + }, + ): Promise; +} + + interface ContainerHost extends ShellHost { + /** + * Container unique identifier in provider + */ + id: string; + + /** + * Name assigned to the container. For persistent containers, also contains the sha of the options + */ + name: string; + + /** + * Disable automatic purge of container and volume directory + */ + persistent: boolean; + + /** + * Path to the volume mounted in the host + */ + hostPath: string; + + /** + * Writes a file as text to the container file system + * @param path + * @param content + */ + writeText(path: string, content: string): Promise; + + /** + * Reads a file as text from the container mounted volume + * @param path + */ + readText(path: string): Promise; + + /** + * Copies a set of files into the container + * @param fromHost glob matching files + * @param toContainer directory in the container + */ + copyTo( + fromHost: string | string[], + toContainer: string, + options?: Omit, + ): Promise; + + /** + * List files in a directory in the container + * @param dir + */ + listFiles(dir: string): Promise; + + /** + * Stops and cleans out the container + */ + stop(): Promise; + + /** + * Pause container + */ + pause(): Promise; + + /** + * Resume execution of the container + */ + resume(): Promise; + + /** + * Force disconnect network + */ + disconnect(): Promise; + + /** + * A promise queue of concurrency 1 to run serialized functions against the container + */ + scheduler: PromiseQueue; +} + + interface PromptContext extends ChatGenerationContext { + script(options: PromptArgs): void; + system(options: PromptSystemArgs): void; + path: Path; + retrieval: Retrieval; + workspace: WorkspaceFileSystem; + host: PromptHost; +} + + type RuntimePromptContext = Pick< + PromptContext, + | "host" + | "env" + | "workspace" + | "retrieval" + | "prompt" + | "runPrompt" + | "generateImage" + | "transcribe" + | "speak" +>; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// keep in sync with PromptContext! + +/** + * Console functions + */ +declare let console: PromptGenerationConsole; + +/** + * Setup prompt title and other parameters. + * Exactly one call should be present on top of .genai.mts file. + */ +declare function script(options: PromptArgs): void; + +/** + * Equivalent of script() for system prompts. + */ +declare function system(options: PromptSystemArgs): void; + +/** + * Imports template prompt file and expands arguments in it. + * @param files + * @param arguments + */ +declare function importTemplate( + files: ElementOrArray, + arguments?: Record, + options?: ImportTemplateOptions, +): void; + +/** + * Append given string to the prompt. It automatically appends "\n". + * Typically best to use `` $`...` ``-templates instead. + */ +declare function writeText(body: Awaitable, options?: WriteTextOptions): void; + +/** + * Append given string to the prompt as an assistant message. + */ +declare function assistant( + text: Awaitable, + options?: Omit, +): void; + +/** + * Append given string to the prompt. It automatically appends "\n". + * `` $`foo` `` is the same as `text("foo")`. + */ +declare function $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString; + +/** + * Appends given (often multi-line) string to the prompt, surrounded in fences. + * Similar to `text(env.fence); text(body); text(env.fence)` + * + * @param body string to be fenced + */ +declare function fence(body: StringLike, options?: FenceOptions): void; + +/** + * Defines `name` to be the (often multi-line) string `body`. + * Similar to `text(name + ":"); fence(body, language)` + * + * @param name name of defined entity, eg. "NOTE" or "This is text before NOTE" + * @param body string to be fenced/defined + * @returns variable name + */ +declare function def( + name: string, + body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult, + options?: DefOptions, +): string; + +/** + * Declares a file that is expected to be generated by the LLM + * @param pattern file name or glob-like path + * @param description description of the file, used by the model to choose when and how to call the function + * @param options expectations about the generated file content + */ +declare function defFileOutput( + pattern: ElementOrArray, + description?: string, + options?: FileOutputOptions, +): void; + +/** + * Declares a tool that can be called from the prompt. + * @param tool Agentic tool function. + * @param name The name of the tool to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64. + * @param description A description of what the function does, used by the model to choose when and how to call the function. + * @param parameters The parameters the tool accepts, described as a JSON Schema object. + * @param fn callback invoked when the LLM requests to run this function + */ +declare function defTool( + tool: Omit | McpServersConfig, + options?: DefToolOptions, +): void; +declare function defTool( + name: string, + description: string, + parameters: PromptParametersSchema | JSONSchema, + fn: ChatFunctionHandler, + options?: DefToolOptions, +): void; + +/** + * Declares a LLM agent tool that can be called from the prompt. + * @param name name of the agent, do not prefix with agent + * @param description description of the agent, used by the model to choose when and how to call the agent + * @param fn prompt generation context + * @param options additional options for the agent LLM + */ +declare function defAgent( + name: string, + description: string, + fn: string | ChatAgentHandler, + options?: DefAgentOptions, +): void; + +/** + * Registers a callback to be called when a file is being merged + * @param fn + */ +declare function defFileMerge(fn: FileMergeHandler): void; + +/** + * Variables coming from the fragment on which the prompt is operating. + */ +declare let env: ExpansionVariables; + +/** + * Path manipulation functions. + */ +declare let path: Path; + +/** + * A set of parsers for well-known file formats + */ +declare let parsers: Parsers; + +/** + * Retrieval Augmented Generation services + */ +declare let retrieval: Retrieval; + +/** + * Access to the workspace file system. + */ +declare let workspace: WorkspaceFileSystem; + +/** + * YAML parsing and stringifying functions. + */ +declare let YAML: YAMLObject; + +/** + * INI parsing and stringifying. + */ +declare let INI: INIObject; + +/** + * CSV parsing and stringifying. + */ +declare let CSV: CSVObject; + +/** + * XML parsing and stringifying. + */ +declare let XML: XMLObject; + +/** + * HTML parsing + */ +declare let HTML: HTMLObject; + +/** + * Markdown and frontmatter parsing. + */ +declare let MD: MDObject; + +/** + * JSONL parsing and stringifying. + */ +declare let JSONL: JSONLObject; + +/** + * JSON5 parsing + */ +declare let JSON5: JSON5Object; + +/** + * JSON Schema utilities + */ +declare let JSONSchema: JSONSchemaUtilities; + +/** + * Diff utilities + */ +declare let DIFF: DIFFObject; + +/** + * Access to current LLM chat session information + */ +declare let host: PromptHost; + +/** + * Access to GitHub queries for the current repository + */ +declare let github: GitHub; + +/** + * Access to Git operations for the current repository + */ +declare let git: Git; + +/** + * Access to ffmpeg operations + */ +declare let ffmpeg: Ffmpeg; + +/** + * Computation around tokens + */ +declare let tokenizers: Tokenizers; + +/** + * @deprecated use `host.fetchText` instead + */ +declare function fetchText( + url: string | WorkspaceFile, + options?: FetchTextOptions, +): Promise<{ ok: boolean; status: number; text?: string; file?: WorkspaceFile }>; + +/** + * Declares a JSON schema variable. + * @param name name of the variable + * @param schema JSON schema instance + * @returns variable name + */ +declare function defSchema( + name: string, + schema: JSONSchema | ZodTypeLike, + options?: DefSchemaOptions, +): string; + +/** + * Adds images to the prompt + * @param files + * @param options + */ +declare function defImages(files: ElementOrArray, options?: DefImagesOptions): void; + +/** + * Renders a table or object in the prompt + * @param name + * @param data + * @param options + * @returns variable name + */ +declare function defData( + name: string, + data: Awaitable, + options?: DefDataOptions, +): string; + +/** + * Renders a diff of the two given values + * @param left + * @param right + * @param options + */ +declare function defDiff( + name: string, + left: T, + right: T, + options?: DefDiffOptions, +): string; + +/** + * Cancels the current prompt generation/execution with the given reason. + * @param reason + */ +declare function cancel(reason?: string): void; + +/** + * Expands and executes prompt + * @param generator + */ +declare function runPrompt( + generator: string | PromptGenerator, + options?: PromptGeneratorOptions, +): Promise; + +/** + * Expands and executes the prompt + */ +declare function prompt( + strings: TemplateStringsArray, + ...args: any[] +): RunPromptResultPromiseWithOptions; + +/** + * Registers a callback to process the LLM output + * @param fn + */ +declare function defOutputProcessor(fn: PromptOutputProcessorHandler): void; + +/** + * Registers a chat participant + * @param participant + */ +declare function defChatParticipant( + participant: ChatParticipantHandler, + options?: ChatParticipantOptions, +): void; + +/** + * Transcribes audio to text. + * @param audio An audio file to transcribe. + * @param options + */ +declare function transcribe( + audio: string | WorkspaceFile, + options?: TranscriptionOptions, +): Promise; + +/** + * Converts text to speech. + * @param text + * @param options + */ +declare function speak(text: string, options?: SpeechOptions): Promise; + +/** + * Generate an image and return the workspace file. + * @param prompt + * @param options + */ +declare function generateImage( + prompt: string, + options?: ImageGenerationOptions, +): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>; diff --git a/examples/action/genaisrc/tsconfig.json b/examples/action/genaisrc/tsconfig.json new file mode 100644 index 0000000000..896f33bbb2 --- /dev/null +++ b/examples/action/genaisrc/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "lib": [ + "ES2024" + ], + "target": "ES2024", + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "nodenext", + "checkJs": true, + "allowJs": true, + "skipLibCheck": true, + "noEmit": true, + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "resolveJsonModule": true, + "erasableSyntaxOnly": true + }, + "include": [ + "**/*.mjs", + "**/*.mts", + "./genaiscript.d.ts" + ] +} \ No newline at end of file diff --git a/packages/api/.tshy-build/.tshy/commonjs.tsbuildinfo b/packages/api/.tshy-build/.tshy/commonjs.tsbuildinfo new file mode 100644 index 0000000000..c8a3680f8f --- /dev/null +++ b/packages/api/.tshy-build/.tshy/commonjs.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../core/dist/commonjs/types.d.ts","../../../core/dist/commonjs/cancellation.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.ts","../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.ts","../../../core/dist/commonjs/chattypes.d.ts","../../../core/dist/commonjs/traceparser.d.ts","../../../core/dist/commonjs/trace.d.ts","../../../core/dist/commonjs/promptdom.d.ts","../../../core/dist/commonjs/server/messages.d.ts","../../../core/dist/commonjs/chat.d.ts","../../../core/dist/commonjs/usage.d.ts","../../../core/dist/commonjs/generation.d.ts","../../../core/dist/commonjs/agent.d.ts","../../../core/dist/commonjs/annotations.d.ts","../../../core/dist/commonjs/anthropic.d.ts","../../../core/dist/commonjs/assert.d.ts","../../../core/dist/commonjs/ast.d.ts","../../../core/dist/commonjs/azureaiinference.d.ts","../../../core/dist/commonjs/azureaisearch.d.ts","../../../core/dist/commonjs/azurecontentsafety.d.ts","../../../core/dist/commonjs/azuredevops.d.ts","../../../core/dist/commonjs/azureopenai.d.ts","../../../core/dist/commonjs/progress.d.ts","../../../core/dist/commonjs/hostconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredentialplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/tokenclaims.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/authtoken.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authoritytype.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/openidconfigresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/url/iuri.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/networkresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/inetworkmodule.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/protocolmode.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/logger/logger.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/oidcoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/azureregion.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/azureregionconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/clouddiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/cloudinstancediscoveryresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authorityoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/credentialentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/idtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/accesstokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/refreshtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/appmetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/cacherecord.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/accountinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/servertelemetryentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/throttlingentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/authoritymetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/storeincache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/performanceevent.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/iperformancemeasurement.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/iperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/cachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/server/servertelemetryrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/regiondiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/server/servertelemetrymanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/iserializabletokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/persistence/tokencachecontext.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/icacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/clientcredentials.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/config/clientconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/msaltypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/joseheader.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/signedhttprequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/baseauthrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/icrypto.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/accountentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/scopeset.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/utils/cachetypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/icachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authority.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authorityfactory.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/utils/cachehelpers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/timeutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authorizeresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/urlutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/constants/aadserverparamkeys.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/serverauthorizationtokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/requestthumbprint.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/ccscredential.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/baseclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonauthorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authenticationresult.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonendsessionrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authorizationcodepayload.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/authorizationcodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonrefreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonsilentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/refreshtokenclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/silentflowclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/clientinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/throttlingutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/url/urlstring.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonauthorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/protocol/authorize.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/requestparameterbuilder.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/protocolutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/responsehandler.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/authenticationheaderparser.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/autherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/autherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/interactionrequiredautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/interactionrequiredautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/servererror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/networkerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/cacheerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/cacheerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientconfigurationerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientconfigurationerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/stringutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/functionwrappers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-common.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/clientassertionutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/config/apptokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/nativerequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/nativesignoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/broker/nativebroker/inativebrokerplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonclientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commononbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/devicecoderesponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commondevicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonusernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/iguidgenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/index-node.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/serializertypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/serializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/deserializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/internals.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/authorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/authorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/devicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/refreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/silentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/usernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/nodestorage.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/itokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/tokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/network/iloopbackclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/interactiverequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/signoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/ipublicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/clientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/onbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/iconfidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/icacheclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/ipartitionmanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/externaltokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/performanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/stubperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/poptokengenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/index.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/ihttpretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/defaultmanagedidentityretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/imdsretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/config/managedidentityid.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/config/configuration.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/crypto/cryptoprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientassertion.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/publicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/confidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientcredentialclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/devicecodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/onbehalfofclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/managedidentityrequestparams.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/managedidentityapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/usernamepasswordclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/distributedcacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/plugins/provider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/plugins/consumer.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/errors.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/types.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/util/logging.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/msal.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/utils.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/tokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/multitenanttokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorityvalidationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/nodeflows/brokeroptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/brokerauthoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/chainedtokencredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/credentialpersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientsecretcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientsecretcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/defaultazurecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/defaultazurecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/environmentcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/environmentcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredentialmodels.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientassertioncredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientassertioncredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azureclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azureclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azuredeveloperclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azuredeveloperclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/browsercustomizationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivebrowsercredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivebrowsercredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/managedidentitycredential/options.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/managedidentitycredential/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/devicecodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/devicecodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepipelinescredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepipelinescredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorizationcodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorizationcodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepowershellcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepowershellcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/onbehalfofcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/usernamepasswordcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/usernamepasswordcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/onbehalfofcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/workloadidentitycredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/workloadidentitycredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/constants.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/tokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/index.d.ts","../../../core/dist/commonjs/mcpclient.d.ts","../../../core/dist/commonjs/mcpresource.d.ts","../../../core/dist/commonjs/host.d.ts","../../../core/dist/commonjs/azuretoken.d.ts","../../../core/dist/commonjs/base64.d.ts","../../../core/dist/commonjs/binary.d.ts","../../../core/dist/commonjs/bufferlike.d.ts","../../../core/dist/commonjs/cache.d.ts","../../../core/dist/commonjs/changelog.d.ts","../../../core/dist/commonjs/chatcache.d.ts","../../../core/dist/commonjs/chatrender.d.ts","../../../core/dist/commonjs/chatrenderterminal.d.ts","../../../core/dist/commonjs/chunkers.d.ts","../../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../../core/dist/commonjs/ci.d.ts","../../../core/dist/commonjs/cleaners.d.ts","../../../core/dist/commonjs/clone.d.ts","../../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../../core/dist/commonjs/concurrency.d.ts","../../../core/dist/commonjs/config.d.ts","../../../core/dist/commonjs/consolecolor.d.ts","../../../core/dist/commonjs/llmsdata.d.ts","../../../core/dist/commonjs/constants.d.ts","../../../core/dist/commonjs/contentsafety.d.ts","../../../core/dist/commonjs/copy.d.ts","../../../core/dist/commonjs/crypto.d.ts","../../../core/dist/commonjs/csv.d.ts","../../../core/dist/commonjs/data.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../../core/dist/commonjs/debug.d.ts","../../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../../core/dist/commonjs/diff.d.ts","../../../core/dist/commonjs/dispose.d.ts","../../../core/dist/commonjs/docx.d.ts","../../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../../core/dist/commonjs/dotenv.d.ts","../../../core/dist/commonjs/echomodel.d.ts","../../../core/dist/commonjs/encoders.d.ts","../../../core/dist/commonjs/env.d.ts","../../../core/dist/commonjs/error.d.ts","../../../core/dist/commonjs/evalprompt.d.ts","../../../core/dist/commonjs/expander.d.ts","../../../core/dist/commonjs/features.d.ts","../../../core/dist/commonjs/fence.d.ts","../../../core/dist/commonjs/fetch.d.ts","../../../core/dist/commonjs/fetchtext.d.ts","../../../core/dist/commonjs/ffmpeg.d.ts","../../../core/dist/commonjs/file.d.ts","../../../core/dist/commonjs/filebytes.d.ts","../../../core/dist/commonjs/filecache.d.ts","../../../core/dist/commonjs/fileedits.d.ts","../../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../../core/dist/commonjs/filetype.d.ts","../../../core/dist/commonjs/frontmatter.d.ts","../../../core/dist/commonjs/fs.d.ts","../../../core/dist/commonjs/fscache.d.ts","../../../core/dist/commonjs/fuzzsearch.d.ts","../../../core/dist/commonjs/git.d.ts","../../../core/dist/commonjs/github.d.ts","../../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../../core/dist/commonjs/githubclient.d.ts","../../../core/dist/commonjs/gitignore.d.ts","../../../core/dist/commonjs/glob.d.ts","../../../core/dist/commonjs/global.d.ts","../../../core/dist/commonjs/globals.d.ts","../../../core/dist/commonjs/grep.d.ts","../../../core/dist/commonjs/html.d.ts","../../../core/dist/commonjs/htmlescape.d.ts","../../../core/dist/commonjs/id.d.ts","../../../core/dist/commonjs/image.d.ts","../../../core/dist/commonjs/importprompt.d.ts","../../../core/dist/commonjs/indent.d.ts","../../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../../core/dist/commonjs/inflection.d.ts","../../../core/dist/commonjs/ini.d.ts","../../../core/dist/commonjs/jinja.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../../core/dist/commonjs/json5.d.ts","../../../core/dist/commonjs/jsonl.d.ts","../../../core/dist/commonjs/memcache.d.ts","../../../core/dist/commonjs/jsonlinecache.d.ts","../../../core/dist/commonjs/liner.d.ts","../../../core/dist/commonjs/llmdiff.d.ts","../../../core/dist/commonjs/llms.d.ts","../../../core/dist/commonjs/lm.d.ts","../../../core/dist/commonjs/lmstudio.d.ts","../../../core/dist/commonjs/levenshtein.d.ts","../../../core/dist/commonjs/logging.d.ts","../../../core/dist/commonjs/logprob.d.ts","../../../core/dist/commonjs/markdown.d.ts","../../../core/dist/commonjs/math.d.ts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts","../../../core/dist/commonjs/mcpsampling.d.ts","../../../core/dist/commonjs/mdchunk.d.ts","../../../core/dist/commonjs/mddiff.d.ts","../../../core/dist/commonjs/mdstringify.d.ts","../../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../../core/dist/commonjs/merge.d.ts","../../../core/dist/commonjs/metadata.d.ts","../../../core/dist/commonjs/mime.d.ts","../../../core/dist/commonjs/mkmd.d.ts","../../../core/dist/commonjs/modelalias.d.ts","../../../core/dist/commonjs/models.d.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../core/dist/commonjs/mustache.d.ts","../../../core/dist/commonjs/net.d.ts","../../../core/dist/commonjs/nodepackage.d.ts","../../../core/dist/commonjs/nonemodel.d.ts","../../../core/dist/commonjs/ollama.d.ts","../../../core/dist/commonjs/openai.d.ts","../../../core/dist/commonjs/packagemanagers.d.ts","../../../core/dist/commonjs/parameters.d.ts","../../../core/dist/commonjs/parser.d.ts","../../../core/dist/commonjs/path.d.ts","../../../core/dist/commonjs/parsers.d.ts","../../../core/dist/commonjs/pathutils.d.ts","../../../core/dist/commonjs/pdf.d.ts","../../../core/dist/commonjs/perf.d.ts","../../../core/dist/commonjs/performance.d.ts","../../../core/dist/commonjs/plugin.d.ts","../../../core/dist/commonjs/precision.d.ts","../../../core/dist/commonjs/pretty.d.ts","../../../core/dist/commonjs/runpromptcontext.d.ts","../../../core/dist/commonjs/promptcontext.d.ts","../../../core/dist/commonjs/promptfoo.d.ts","../../../core/dist/commonjs/promptrunner.d.ts","../../../core/dist/commonjs/prompty.d.ts","../../../core/dist/commonjs/markdownscript.d.ts","../../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../../core/dist/commonjs/proxy.d.ts","../../../core/dist/commonjs/quiet.d.ts","../../../core/dist/commonjs/resources.d.ts","../../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../../core/dist/commonjs/sanitize.d.ts","../../../core/dist/commonjs/schema.d.ts","../../../core/dist/commonjs/scriptresolver.d.ts","../../../core/dist/commonjs/scripts.d.ts","../../../core/dist/commonjs/secretscanner.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../../core/dist/commonjs/semver.d.ts","../../../core/dist/commonjs/shell.d.ts","../../../core/dist/commonjs/stdio.d.ts","../../../core/dist/commonjs/systems.d.ts","../../../core/dist/commonjs/tags.d.ts","../../../core/dist/commonjs/teams.d.ts","../../../core/dist/commonjs/template.d.ts","../../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../../core/dist/commonjs/terminal.d.ts","../../../core/dist/commonjs/testschema.d.ts","../../../core/dist/commonjs/textsplitter.d.ts","../../../core/dist/commonjs/think.d.ts","../../../core/dist/commonjs/testeval.d.ts","../../../core/dist/commonjs/tidy.d.ts","../../../core/dist/commonjs/tokens.d.ts","../../../core/dist/commonjs/toml.d.ts","../../../core/dist/commonjs/tools.d.ts","../../../core/dist/commonjs/transcription.d.ts","../../../core/dist/commonjs/unwrappers.d.ts","../../../core/dist/commonjs/url.d.ts","../../../core/dist/commonjs/log.d.ts","../../../core/dist/commonjs/util.d.ts","../../../core/dist/commonjs/vars.d.ts","../../../core/dist/commonjs/vectorsearch.d.ts","../../../core/dist/commonjs/vectra.d.ts","../../../core/dist/commonjs/version.d.ts","../../../core/dist/commonjs/websearch.d.ts","../../../core/dist/commonjs/whisperasr.d.ts","../../../core/dist/commonjs/workdir.d.ts","../../../core/dist/commonjs/workerlm.d.ts","../../../core/dist/commonjs/workspace.d.ts","../../../core/dist/commonjs/xlsx.d.ts","../../../core/dist/commonjs/xml.d.ts","../../../core/dist/commonjs/yaml.d.ts","../../../core/dist/commonjs/zip.d.ts","../../../core/dist/commonjs/zod.d.ts","../../../core/dist/commonjs/testhost.d.ts","../../../core/dist/commonjs/build.d.ts","../../../core/dist/commonjs/sarif.d.ts","../../../core/dist/commonjs/tracefile.d.ts","../../../core/dist/commonjs/stdin.d.ts","../../../core/dist/commonjs/server/wsclient.d.ts","../../../core/dist/commonjs/server/client.d.ts","../../../core/dist/commonjs/default_prompts.d.ts","../../../core/dist/commonjs/index.d.ts","../../src/api.ts","../../../runtime/dist/commonjs/version.d.ts","../../../runtime/dist/commonjs/docker.d.ts","../../../runtime/dist/commonjs/input.d.ts","../../../runtime/dist/commonjs/log.d.ts","../../../runtime/dist/commonjs/nodehost.d.ts","../../../runtime/dist/commonjs/classify.d.ts","../../../runtime/dist/commonjs/makeitbetter.d.ts","../../../runtime/dist/commonjs/cast.d.ts","../../../runtime/dist/commonjs/filetree.d.ts","../../../runtime/dist/commonjs/markdownifypdf.d.ts","../../../runtime/dist/commonjs/runtime.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.ts","../../../runtime/dist/commonjs/extras.d.ts","../../../runtime/dist/commonjs/mapreduce.d.ts","../../../runtime/dist/commonjs/index.d.ts","../../src/run.ts","../../src/index.ts","../../src/worker.ts"],"fileIdsList":[[82,88],[82,88,477,478],[82,88,486],[82,88,485,486,487,488,489,490,491],[82,88,479,485,490],[82,88,530],[82,88,530,531],[82,88,531,532,533,534,535,536,537,538],[82,88,479,502,530],[82,88,492,530,534,535],[82,88,531],[82,88,492,530,531],[82,88,503,504,505,506,507],[82,88,503],[82,88,485,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529],[82,88,479,485,502],[82,88,479,485,502,503],[82,88,503,504],[82,88,492,495,504],[82,88,492,495,503,504],[82,88,504],[82,88,495,504],[82,88,495,503,504,512],[82,88,499,500,501],[82,88,499],[82,88,479],[82,88,480],[82,88,480,481,482,483,484],[82,88,492,572],[82,88,541,542],[82,88,492,559],[82,88,541],[82,88,492,561],[82,88,492,530,570],[82,88,541,542,547],[82,88,492,574],[82,88,543],[82,88,492,496],[82,88,492,557],[82,88,492,494,554,555],[82,88,492,548],[82,88,319],[82,88,492,546,550],[82,88,492,494,568],[82,88,545,547],[82,88,492,552],[82,88,492,494,564],[82,88,544,545,547,563],[82,88,494,541,542],[82,88,492,540,566],[82,88,540],[82,88,492,541,547,576],[82,88,492,577],[82,88,320,492,579],[82,88,492,582],[82,88,492],[82,88,319,475,476,492,493,494,496,498,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585],[82,88,474],[82,88,492,494,495,496,497],[82,88,475],[82,88,319,320,474],[82,88,530,539],[82,88,495],[82,88,321],[82,88,323,324,325,327,328,330,334,336,350,353,359,368],[82,88,327,330,336,350,368,369],[82,88,328,331,333,335],[82,88,332],[82,88,334],[82,88,329],[82,88,138,343,359,381,416,417],[82,88,330,336,338,339,340,341,342,343,344,345,346,347,350,363,364,365,367,368],[82,88,329,337],[82,88,321,323,330,343,364,369],[82,88,338,339,340,341,365],[82,88,337],[82,88,338,339,340,341,342,343,344,345,346,347,365,367],[82,88,356],[82,88,355],[82,88,324,329,334,337,338,339,340,341,346],[82,88,329,338,339,340,341,343,344,345,346,365,366],[82,88,350,359,379,380,381,382,383],[82,88,326,327,330,350,351,354,359,363,364,369,376,377,378],[82,88,350,359,379,381,385,386],[82,88,329,350,359,379,381,386],[82,88,327,330,336,351,354,355,357,358,364,369],[82,88,362,363],[82,88,330,350,364],[82,88,361],[82,88,398],[82,88,399,404],[82,88,399,406],[82,88,399,408],[82,88,399,400],[82,88,399],[82,88,348,349,350,361,362,449,450,451,452],[82,88,321,322,323,325,326,327,328,329,330,331,332,333,336,337,338,339,340,341,342,343,344,345,346,347,351,352,354,359,360,363,364,365,366,367,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,401,402,403,405,407,409,410,411,412],[82,88,355,356,357,358,414,415,416,417,418,419,420,421,422,423,424],[82,88,413,425],[82,88,413,425,453],[82,88,359],[82,88,326],[82,88,329,362,363],[82,88,326,351,363,376,377],[82,88,330,350,359,360,369,373,383,392],[82,88,329,347,359,360,362],[82,88,363,378],[82,88,329,343,360,363],[82,88,332,358,363],[82,88,360,363,421],[82,88,343,360],[82,88,363],[82,88,343,363],[82,88,360],[82,88,329,350,354,359,360,389],[82,88,343],[82,88,376],[82,88,321,330,342,350,351,355,357,363,364,365,369,376,381,383,395],[82,88,348,349],[82,88,330,348,349,350,359],[82,88,348,349,350],[82,88,329,344,351,352,353],[82,88,325],[82,88,358],[82,88,330,350],[82,88,364],[82,88,360,373],[82,88,426,447,448],[82,88,426],[82,88,426,427],[82,88,426,427,437,438],[82,88,426,431,432,434,435,436,437,439,460,461,462],[82,88,461],[82,88,426,460],[82,88,426,444,445,446,460,463],[82,88,426,431,432,434,435,436,439,444,445],[82,88,426,431,432,433,434,435,436,439,441,442],[82,88,426,458,460,469],[82,88,426,433,435,441,442,443,460,463],[82,88,103,105,138,426,459],[82,88,458,460],[82,88,426,427,430,431,432,433,434,435,436,438,439,440,441,442,443,444,445,446,447,448,458,460,461,462,463,464,465,466,467,468,469,470,471,472,473],[82,88,428,429],[82,88,138,426,440],[82,88,103,138,454,455],[82,88,103,138,454],[82,88,454,455],[82,88,456,457],[82,88,752,754,756],[82,88,752,753,754,755],[82,88,754],[82,88,752,753],[82,88,665,688,691,694],[82,88,687,693,695],[82,88,687,689],[82,88,688,689,690],[82,88,687],[82,88,697],[82,88,695,697,698,699],[82,88,696],[82,88,687,695,696],[82,88,687,701],[82,88,695,701,703],[82,88,687,702],[82,88,687,692],[82,88,695,700,704],[82,88,671,672,674,677,681],[82,88,666,667,670,671],[82,88,671,675,676,677,679],[82,88,666,667,671],[82,88,669,670,674,678],[82,88,666,667,668,669,670,671,672,673,674,675,676,677,679,680,681,682,683,684,685,686],[82,88,667,673],[82,88,671,674,677,679,680],[82,88,666,667,669,670],[82,88,667,669,670],[82,88,668],[82,88,682],[82,88,820,821,824,826,829,830,831,833,834],[82,88,820,821,823,824,825,830,831,832,834],[82,88,825,830,831,833],[82,88,820],[82,88,833],[82,88,820,821],[82,88,824,825,826,827,828,829,830,831,832,833,834,835,836],[82,88,819,830],[82,88,820,821,830,831],[82,88,821,826,827,829,830,834],[82,88,825,830,833,834],[82,88,820,821,825,830,833],[82,88,820,821,825,827,829,830,834,837],[82,88,820,821,823,824,830,831,833,834],[82,88,820,824,825,827,829,831,833],[82,88,821,822,828,834],[82,88,615],[82,85,88],[82,87,88],[88],[82,88,93,123],[82,88,89,94,100,101,108,120,131],[82,88,89,90,100,108],[77,78,79,82,88],[82,88,91,132],[82,88,92,93,101,109],[82,88,93,120,128],[82,88,94,96,100,108],[82,87,88,95],[82,88,96,97],[82,88,98,100],[82,87,88,100],[82,88,100,101,102,120,131],[82,88,100,101,102,115,120,123],[82,88,173],[82,88,96,100,103,108,120,131,173],[82,88,100,101,103,104,108,120,128,131],[82,88,103,105,120,128,131],[80,81,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[82,88,100,106],[82,88,107,131],[82,88,96,100,108,120],[82,88,109],[82,88,110],[82,87,88,111],[82,85,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[82,88,113],[82,88,114],[82,88,100,115,116],[82,88,115,117,132,134],[82,88,100,120,121,123],[82,88,122,123],[82,88,120,121],[82,88,123],[82,88,124],[82,85,88,120],[82,88,100,126,127],[82,88,126,127],[82,88,93,108,120,128],[82,88,129],[82,88,108,130],[82,88,103,114,131],[82,88,93,132],[82,88,120,133],[82,88,107,134],[82,88,135],[82,88,100,102,111,120,123,131,134,136],[82,88,120,137],[82,88,864,903],[82,88,864,888,903],[82,88,903],[82,88,864],[82,88,864,889,903],[82,88,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902],[82,88,889,903],[82,88,103,105,120,138],[82,88,103,108,120,128,138,796],[82,88,120,128,138,807,809,810,811],[82,88,108,128,138,808],[82,88,807,808,809,811,812,813],[82,88,807],[82,88,108,138],[82,88,120,138,809,810],[82,88,134,138,818,837],[82,88,818,838],[82,88,131,138],[82,88,974],[82,88,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132],[82,88,123,655],[82,88,120,655,656],[82,88,120,138,817],[82,88,101,120,138,817],[82,88,120,138,814,817],[82,88,103,105,120,138,817],[82,88,120,138,805,806,815,816],[82,88,103,108,128,131,138,797],[82,88,722,723],[82,88,131,145,149],[82,88,120,131,145],[82,88,140],[82,88,128,131,142,145],[82,88,108,128],[82,88,138],[82,88,138,140],[82,88,108,131,142,145],[75,76,82,88,100,120,131,141,144],[82,88,145,152],[75,82,88,143],[82,88,145,166,167],[82,88,123,131,138,141,145],[82,88,138,166],[82,88,138,139,140],[82,88,145],[82,88,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,172],[82,88,145,160],[82,88,145,152,153],[82,88,143,145,153,154],[82,88,144],[75,82,88,140,145],[82,88,145,149,153,154],[82,88,149],[82,88,131,143,145,148],[75,82,88,142,145,152],[82,88,120],[82,88,136,138,140,145,166],[82,88,213],[82,88,131,180,183,186,187],[82,88,120,131,183],[82,88,131,183,187],[82,88,177],[82,88,181],[82,88,131,179,180,183],[82,88,138,177],[82,88,108,131,179,183],[82,88,100,120,131,174,175,176,178,182],[82,88,183,191,198],[82,88,175,181],[82,88,183,207,208],[82,88,123,131,138,175,178,183],[82,88,183],[82,88,131,179,183],[82,88,174],[82,88,177,178,179,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212],[82,88,96,183,200,203],[82,88,183,191,192,193],[82,88,181,183,192,194],[82,88,182],[82,88,175,177,183],[82,88,183,187,192,194],[82,88,187],[82,88,131,181,183,186],[82,88,175,179,183,191],[82,88,183,200],[82,88,123,136,138,177,183,207],[73,82,88,216,219,296],[73,82,88,215,216,219,220,221,224,225,228,231,243,249,250,255,256,266,269,270,274,275,283,284,285,286,287,289,293,294,295],[82,88,215,223,296],[82,88,219,223,224,296],[82,88,296],[82,88,217,296],[82,88,226,227],[82,88,221],[82,88,221,224,225,228,296,297],[82,88,219,222,296],[73,82,88,215,216,218],[73,82,88],[82,88,173,214],[73,82,88,219,296],[82,88,219,296],[82,88,219,231,234,236,245,247,248,298],[82,88,217,219,236,257,258,260,261,262],[82,88,234,237,244,247,298],[82,88,217,219,234,237,249,298],[82,88,217,234,237,238,244,247,298],[82,88,235],[82,88,230,234,243],[82,88,243],[82,88,219,236,239,240,243,298],[82,88,234,243,244],[82,88,245,246,248],[82,88,225],[82,88,229,252,253,254],[82,88,219,224,229],[82,88,218,219,224,228,229,253,255],[82,88,219,224,228,229,253,255],[82,88,219,224,225,229,230,256],[82,88,219,224,225,229,230,257,258,259,260,261],[82,88,229,261,262,265],[82,88,229,230,263,264,265],[82,88,219,224,225,229,230,262],[82,88,218,219,224,225,229,230,257,258,259,260,261,262],[82,88,219,224,225,229,230,258],[82,88,218,219,224,229,230,257,259,260,261,262],[82,88,229,230,249],[82,88,233],[82,88,218,219,224,225,229,230,231,232,237,238,244,245,247,248,249],[82,88,232,249],[82,88,219,225,229,249],[82,88,233,250],[82,88,218,219,224,229,231,249],[82,88,219,224,225,229,268],[82,88,219,224,225,228,229,267],[82,88,219,224,225,229,230,243,271,273],[82,88,219,224,225,229,273],[82,88,219,224,225,229,230,243,249,272],[82,88,219,224,225,228,229],[82,88,229,277],[82,88,219,224,229,271],[82,88,229,279],[82,88,219,224,225,229],[82,88,229,276,278,280,282],[82,88,219,225,229],[82,88,219,224,225,229,230,276,281],[82,88,229,271],[82,88,229,243],[82,88,218,219,224,228,229,285],[82,88,230,231,243,251,255,256,266,269,270,274,275,283,284,285,286,287,289,293,294],[82,88,219,225,229,243],[82,88,218,219,224,225,229,230,239,241,242,243],[82,88,219,224,228,229],[82,88,219,224,229,275,288],[82,88,219,224,225,229,290,291,293],[82,88,219,224,225,229,290,293],[82,88,219,224,225,229,230,291,292],[82,88,216,229],[82,88,228],[82,88,103,108,120,131,138,797,798,799,804,817,852],[82,88,138,837,839,840,841,842,843,844,845,846,847,848,849,850,851],[82,88,852],[82,88,103,138,795,797,798,799,804,853],[82,88,103,108,131,138,797,803],[82,88,100,120,138,800,801],[82,88,108,120,138],[82,88,800],[82,88,802],[82,88,639,640],[82,88,640,641],[82,88,120,639,640,641,649,650,651,652],[82,88,102,640,641],[82,88,120,639,650,653,654],[82,88,640,641,649],[82,88,642,643,644,646,647,648],[82,88,120,643],[82,88,645],[82,88,643],[82,88,123,646,647],[82,88,639],[82,88,751],[82,88,742,743],[82,88,739,740,742,744,745,750],[82,88,740,742],[82,88,750],[82,88,742],[82,88,739,740,742,745,746,747,748,749],[82,88,739,740,741],[82,88,110,136,616,948],[82,88,949,1137],[82,88,102,110,948,1136],[82,88,136,948,1133,1136,1137],[71,82,88,301,306],[71,82,88],[82,88,304],[71,82,88,303],[71,72,82,88,301],[82,88,589],[71,82,88,301],[82,88,948],[71,72,82,88],[71,72,82,88,299,301,302,303,306],[71,82,88,299,303],[71,72,82,88,299],[82,88,299],[71,82,88,298],[82,88,600],[71,82,88,604],[72,82,88,303,318],[71,82,88,608],[82,88,616],[71,82,88,618],[82,88,622],[72,82,88,301,303],[71,82,88,230,299,302,303,306],[82,88,608],[82,88,657],[71,82,88,101],[71,72,82,88,299,301,305],[71,72,82,88,301,305,700,705],[71,72,82,88,301,303,304,317,318,586,587,588],[71,72,82,88,301,304],[71,72,82,88,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,587,588,589,590,591,592,593,594,595,596,597,598,599,601,602,603,605,606,607,609,610,611,612,613,614,617,619,620,621,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,658,659,660,661,662,663,664,706,707,708,709,710,711,712,713,714,715,716,717,719,720,721,725,726,727,728,729,730,731,732,733,734,735,736,737,738,758,759,760,761,763,764,765,766,767,768,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,855,856,857,859,860,861,862,863,904,905,906,907,908,909,910,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947],[82,88,718],[82,88,724],[82,88,594,727],[71,82,88,299],[72,82,88],[82,88,301],[72,82,88,299,301,757],[71,82,88,594,616],[82,88,762],[71,72,82,88,299,301,303,589],[71,82,88,769],[71,72,82,88,299,301,303,304],[71,82,88,303,306,788],[71,72,82,88,299,301],[71,72,82,88,301,768],[71,82,88,303,306],[82,88,214,854],[71,72,82,88,131,301],[71,72,82,88,301,302,303,306],[82,88,858],[72,82,88,301],[71,82,88,299,301,303,945],[82,88,303],[82,88,911],[71,72,82,88,301,303,304,587,588,589],[71,72,82,88,299,300],[82,88,131],[82,88,299,301,304],[82,88,924],[71,82,88,299,304],[82,88,752,948,1133],[82,88,950,951,952,953,954,955,956,957,958,959,960,1134,1135],[82,88,948,951]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":1},{"version":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":1},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":1},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":1},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":1},{"version":"b2cd3eea455c4c2e2583adf6e2fb27f1ba26fc4e170e5d9b84243c73022b1ac4","impliedFormat":1},{"version":"bac14d2b22bb575755f937bc6d854c82cdb8434c8abb8844510fc8cb1416849b","impliedFormat":1},{"version":"6d8913dc1b42dce4da3a48e3a57b1cee51afcde894da43bed1e19f4303a38a8e","impliedFormat":1},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":1},{"version":"b898e82350ebf0bad51e0dd49405d79b1243166691944a71d752fb9fc7a0e805","impliedFormat":1},{"version":"02c9bb32c1845dc58c58b68dbdacb200eeb188711a4a9a720b36a2298462b617","impliedFormat":1},{"version":"15bf0d97593eda42b97953a987747614d02e05ab3db6457119955bc176659e79","impliedFormat":1},{"version":"495aeb2d71216ff5b544441862e2b5998fa9a70ac0b5aee90b0c7777ba4dd74b","impliedFormat":1},{"version":"5c7f19d8c5cf23c20fd68e9f1ca8545b56c32941dc11d4f4252c8c8ea67f16d6","impliedFormat":1},{"version":"93ba7b0ec3db0478fa671860f9fd1dd4dc09df5164f62496392be908ae40bdd0","impliedFormat":1},{"version":"2cc3b2743504a647011a477bfa732c80f8c50c435ea14df0e4f45cb04098c65d","impliedFormat":1},{"version":"627136c2fa71fe35ef61e87ceabfe3de8003494bdf15532aabe95d8556ce03f5","impliedFormat":1},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":1},{"version":"41e3ba7cf41ea214fd14c29209c2a8f0781e91aab6c852fb84c263e07424f616","impliedFormat":1},{"version":"552fdbfb98044cea1862e6be1f6aa12b1abed8504c42ac25f5bd20c11256eb5b","impliedFormat":1},{"version":"2b532e5638f20cbbe2bb4ff92f5b998eefdbb8a004d87f8991568e0958c1fa5b","impliedFormat":1},{"version":"140cfa512cdaf55533cfd9afedc48bf72cce371d75d60c54cc09f56c6341fb68","impliedFormat":1},{"version":"e2d9abf824ec4d2376fdfdefa60b154fa3147c1153326e61140c454e93cdc8ba","impliedFormat":1},{"version":"83c89ec38a9147f452cc207300e8e63af9364cc6887cf9e65f385ca98fa2d1ba","impliedFormat":1},{"version":"37f51b9367990c0070ec9798ba788929ab5cc54b74786f45fcbeec4ca9af4a12","impliedFormat":1},{"version":"900fcdd85062c1987f15b0670300bd6707b8d5b0bcdc3629b88c6dbaf71f1f4c","impliedFormat":1},{"version":"067670de65606b4aa07964b0269b788a7fe48026864326cd3ab5db9fc5e93120","impliedFormat":1},{"version":"21290aaea56895f836a0f1da5e1ef89285f8c0e85dc85fd59e2b887255484a6f","impliedFormat":1},{"version":"b77e10408795c272920abd5d537be7017d411bebfbd915d96e3acbca71cc46b6","impliedFormat":1},{"version":"5261eb616fe55994d535f43db524ea4668270cc0aaf6c57af5e52b4d5427d32c","impliedFormat":1},{"version":"98194ee0ea73f8cb6c6e027ffa1b72af8785c90aa94f09ea721c927d12959510","impliedFormat":1},{"version":"7cd062a58bd27ead074cb1b7e12efa0a1f4fe5e2eda677e91e4c07f32555f873","impliedFormat":1},{"version":"2cf94327abec7b8954aec9735d9609610392edee14bb90323cb3dd30f3f54b90","impliedFormat":1},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":1},{"version":"72882f8809fd8c16374e6034f8ca5341e7705c7c9d3dc1817866409474b50f11","impliedFormat":1},{"version":"c33d3ecc050e239dd88589bf565c55446bfd2adf24ce260aa5ea8f6c4c11e883","impliedFormat":1},{"version":"44e901c1ac3e4bb88328ceffc14ef5c06f30c520f7ed69eadfbd47e932c09e31","impliedFormat":1},{"version":"9dc3241bcef94287cc3c3d338bdf59caee3e64e38d37d1adf85f0da7a821beea","impliedFormat":1},{"version":"d9108acee785864d66a865b609735453b578582e42e7127136c7a05abef08d4d","impliedFormat":1},{"version":"d3d6307f78f19574100cde165a3fa717b5efdbf2998e3279661365ac4f0a3d4b","impliedFormat":1},{"version":"50ffb79e1779e621c2afdad2583718d7011a390e964f0bed96fbe72fdd6f4aa8","impliedFormat":1},{"version":"78341884fc9296ca9f42181b382f38c67caa2792b30511525b22b2b08cd199d5","impliedFormat":1},{"version":"cd1cc56c261989fba6f5434be7cfe907232924f612d9f4b39dbe99ac6c9b124b","impliedFormat":1},{"version":"9ed4d8a6ae2e76235ca73ac7789df7060023944f10ed6ad5e2498705861230f5","impliedFormat":1},{"version":"936e0f920dbefc3460b876b69e420fd081ffff58c24ee8be3745acb3094a1edf","impliedFormat":1},{"version":"36e353a79dd09f3b175e3042c9dede8eabc64ce1abbb08095a80956f2dcdfe28","impliedFormat":1},{"version":"fb94137ca73b638df354f7e25092c187df9046b7a8fb07945cd7e9177c993409","impliedFormat":1},{"version":"f83755269feec9bdbe9c34cef3f36af1ea01d64256d3947d6eacd974fd13cd7c","impliedFormat":1},{"version":"f9043086ffebdf6b25eb96ccb40a469bc8b115fd387a72fae496064327a0e617","impliedFormat":1},{"version":"0ebd9e0db484c572e6a3fc27017b5793adb978f4a7cd43331aef4c717230301d","impliedFormat":1},{"version":"a5972788b05a1272c73b7065bb6dd1909a126a40d493620c066b1fd2807cdc31","impliedFormat":1},{"version":"9f3907c708dda33ea13f0aa0365d1482c127840a2cd1d5fdf8f7a8663f052fe9","impliedFormat":1},{"version":"d8a4999007d181c5c38f810760ecdc72d3df43aea92e3c166d9db354756ea1cc","impliedFormat":1},{"version":"bb8b7729659e83adeae399e82e63b770c85908fce5b6c10c85360977c4d284f3","impliedFormat":1},{"version":"83a902704e00227f51a366aa3acc8e95331c59204a15e269287c304daf114724","impliedFormat":1},{"version":"f22f55420b02537aec818b630a151aa399ea52a3381dacd47b39bb3dcf5aa042","impliedFormat":1},{"version":"17a3cd7fcb01492270384259d6a396956fc275c3193d6a2593952dcaa8a34b09","impliedFormat":1},{"version":"d997caf5e9ca48e6a6a083e8c2cb8a08f708123e5c99a3a385aebaeeeda3d155","impliedFormat":1},{"version":"f2e9250ba65f7086fe8c3aef12758bd9dbe236a45cc86009d419225fc8f4b280","impliedFormat":1},{"version":"fbdee056dc017a7706191a6305726e6cfaa9eaea558b1a6ec8878a6c8ab34e3d","impliedFormat":1},{"version":"bbb9ffea79227181ae7ab87143f696d6710221d8f8b9c2753fb7b06dfc49e613","impliedFormat":1},{"version":"a1659836b2b0a6cab98c90dee7594e0a7d5a9169058734c4b89ac0ae17b906fb","impliedFormat":1},{"version":"f47cc97ecfb3618198c195b663a4aa82c6f87d5bc02c6f6f8faa55e3ec7e1156","impliedFormat":1},{"version":"73608d79cc12093fa52d5da2c57945646b01363ce664255c70e757405eacdbb7","impliedFormat":1},{"version":"691fef11ee89ab867fda0a79e51cccbbfa038df769fedc6a18e570b5a2edb03e","impliedFormat":1},{"version":"7acfcd0cb1cec76704a7db87a19b7dda6b8b16c43489234d006bc16f62c8fd40","impliedFormat":1},{"version":"0e9459051a7bbbb90827034c80d0b1961ac774a490e695a716f1d063ce72e7fc","impliedFormat":1},{"version":"fbb6da9f50c633f892065b829c016edddb5ded9b0339c6b66279d66c5f986760","impliedFormat":1},{"version":"1d8b943d0ace83db0975bec61a2a24b03f35e906ef5f33bbbe18aa93aeda886b","impliedFormat":1},{"version":"241f86a8f7db0685bf32fed02ce1ebba7a33788a516cfe054e49b24a04130b80","impliedFormat":1},{"version":"93298628862ea99a097839c6da20136a09746c7a8e94da32efe4976e0b27d676","impliedFormat":1},{"version":"02dbbcbbc3bab5d67ecf641a7a93f54d0996d6d78e68d3208f881e43720a7d7f","impliedFormat":1},{"version":"9511f319a171b432b4b683ea1f6a1ddd11d2b2874aced37216469998b155b691","impliedFormat":1},{"version":"699504c4635c353d5a0dea4de7fd89efbf73403c20576d2657550aa9317c55c3","impliedFormat":1},{"version":"e8727b2e4c693aff93d6889a535e93849001673bca2b40b30c7b5c4f71738f09","impliedFormat":1},{"version":"dd745acde06128c0b1da7a51e5952e7bfa98cbc84c2a7c23e3c2bd2514878d91","impliedFormat":1},{"version":"b35f5f67228bfd80e513a6f364e10ecb66070315ed266ef7e785fc20544baebe","impliedFormat":1},{"version":"2df644564c547b56b2f44a8646846c2aa1abf9ca66e6025d1aef853b5c84cfd0","impliedFormat":1},{"version":"db410b37778ae2309df095e3a32d4be3f1bdd6803bda0a0e571f406d286c8c62","impliedFormat":1},{"version":"2947e875e7b3d11371dc83ae67d760353746514c9a80bb7118d5bbb053730abf","impliedFormat":1},{"version":"9ee7c6f3dae88f271c1d52a8c15096c5c8034cd9a4c5261e8c9aa4853e96fe23","impliedFormat":1},{"version":"29c4c4faa8d4e1bac0b4086336c39d0284aa418808faf065b23d7c04e993b0c8","impliedFormat":1},{"version":"cdbab5b167a7fc460901f27fa7fd880dcb049419b1305139335dc5ae54f01dc1","impliedFormat":1},{"version":"1311e944b7d624ec2c0e83e3835e58d6741537658d32d49bfd8141fafb6f7b44","impliedFormat":1},{"version":"0d2196ca90935eae9ab2ae2f6869cbdc130b30429b89f43825b9e114be5a5415","impliedFormat":1},{"version":"fd4fcc71d7975421f36c4a7c4d2b80fac2c4a2d5f700317ffcd5b2341a2b8413","impliedFormat":1},{"version":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":1},{"version":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":1},{"version":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":1},{"version":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":1},{"version":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":1},{"version":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":1},{"version":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":1},{"version":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":1},{"version":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":1},{"version":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":1},{"version":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":1},{"version":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":1},{"version":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":1},{"version":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":1},{"version":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":1},{"version":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":1},{"version":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":1},{"version":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":1},{"version":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":1},{"version":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":1},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":1},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":1},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":1},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":1},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":1},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":1},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":1},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":1},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":1},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":1},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":1},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":1},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":1},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":1},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":1},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":1},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":1},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":1},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":1},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":1},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":1},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":1},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":1},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":1},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":1},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":1},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":1},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":1},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":1},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":1},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":1},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":1},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":1},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":1},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":1},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":1},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":1},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":1},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":1},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":1},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":1},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":1},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":1},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":1},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":1},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":1},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":1},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":1},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":1},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":1},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":1},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":1},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":1},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":1},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":1},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":1},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":1},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":1},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":1},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":1},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":1},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":1},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":1},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":1},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":1},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":1},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":1},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":1},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":1},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":1},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":1},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":1},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":1},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":1},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":1},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":1},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":1},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":1},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":1},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":1},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":1},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":1},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":1},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":1},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":1},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":1},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":1},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":1},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":1},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":1},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":1},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":1},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":1},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":1},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":1},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":1},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":1},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":1},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":1},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":1},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":1},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":1},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":1},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":1},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":1},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":1},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":1},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":1},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":1},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":1},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":1},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":1},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":1},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":1},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":1},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":1},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":1},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":1},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":1},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":1},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":1},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":1},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":1},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":1},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":1},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":1},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":1},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":1},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":1},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":1},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":1},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":1},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":1},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":1},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":1},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":1},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":1},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":1},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":1},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":1},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":1},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":1},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":1},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":1},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":1},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":1},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":1},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":1},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":1},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":1},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":1},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":1},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":1},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":1},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":1},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":1},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":1},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":1},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":1},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":1},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":1},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":1},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":1},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":1},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":1},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":1},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":1},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":1},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":1},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":1},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":1},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":1},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":1},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":1},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":1},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":1},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":1},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":1},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":1},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":1},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":1},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":1},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":1},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":1},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":1},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":1},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":1},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":1},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":1},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":1},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":1},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":1},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":1},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":1},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":1},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":1},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":1},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":1},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":1},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":1},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":1},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":1},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":1},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":1},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":1},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":1},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":1},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":1},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":1},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":1},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":1},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":1},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":1},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":1},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":1},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":1},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":1},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":1},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":1},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":1},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":1},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":1},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":1},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":1},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":1},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":1},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":1},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":1},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":1},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":1},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":1},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":1},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":1},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":1},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":1},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":1},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":1},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":1},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":1},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":1},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":1},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":1},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":1},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":1},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":1},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":1},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":1},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":1},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":1},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":1},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":1},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":1},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":1},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":1},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":1},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":1},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":1},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":1},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":1},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":1},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":1},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":1},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":1},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":1},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":1},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":1},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":1},{"version":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":1},{"version":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":1},{"version":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":1},{"version":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":1},{"version":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":1},{"version":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":1},{"version":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":1},{"version":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":1},{"version":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":1},{"version":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":1},{"version":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":1},{"version":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":1},{"version":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":1},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":1},{"version":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":1},{"version":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":1},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":1},{"version":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":1},{"version":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":1},{"version":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":1},{"version":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":1},{"version":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":1},{"version":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":1},{"version":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":1},{"version":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":1},{"version":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":1},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":1},{"version":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":1},{"version":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":1},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":1},{"version":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":1},{"version":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":1},{"version":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":1},{"version":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":1},{"version":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":1},{"version":"77b073df8d2b297211f272d52ec7af8bfd20c6ef41477b12f1185c7dde45d25e","impliedFormat":1},{"version":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":1},{"version":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":1},{"version":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":1},{"version":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":1},{"version":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":1},{"version":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":1},{"version":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":1},{"version":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":1},{"version":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":1},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"a43c19197abcedbf3b3dd346956264a2b0f6718600a53596efa9d81ea3f3cfec","impliedFormat":1},{"version":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":1},{"version":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":1},{"version":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":1},{"version":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":1},{"version":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":1},{"version":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":1},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":1},{"version":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":1},{"version":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":1},{"version":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":1},{"version":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":1},{"version":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":1},{"version":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":1},{"version":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":1},{"version":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":1},{"version":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":1},{"version":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":1},{"version":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":1},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":1},{"version":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":1},{"version":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":1},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":1},{"version":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":1},{"version":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":1},{"version":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":1},{"version":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":1},{"version":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":1},{"version":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":1},{"version":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":1},{"version":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":1},{"version":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":1},{"version":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":1},{"version":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":1},{"version":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":1},{"version":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":1},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":1},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":1},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":1},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":1},{"version":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":1},{"version":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":1},{"version":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":1},{"version":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":1},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":1},{"version":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":1},{"version":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":1},{"version":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":1},{"version":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":1},{"version":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":1},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":1},{"version":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":1},{"version":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":1},{"version":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":1},{"version":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":1},{"version":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":1},{"version":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":1},{"version":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":1},{"version":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":1},{"version":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":1},{"version":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":1},{"version":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":1},{"version":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":1},{"version":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":1},{"version":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":1},{"version":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":1},{"version":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":1},{"version":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":1},{"version":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":1},{"version":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":1},{"version":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":1},{"version":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":1},{"version":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":1},{"version":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"0036d72a881e72e62ada17d6554d97a169489398851c0c6df02b708decb080dc","impliedFormat":1},{"version":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":1},{"version":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":1},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":1},{"version":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":1},{"version":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":1},{"version":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":1},{"version":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":1},{"version":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":1},{"version":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":1},{"version":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":1},{"version":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":1},{"version":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":1},{"version":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":1},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":1},{"version":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":1},{"version":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":1},{"version":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":1},{"version":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":1},{"version":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":1},{"version":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":1},{"version":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":1},{"version":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":1},{"version":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":1},{"version":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":1},{"version":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":1},{"version":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":1},{"version":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":1},{"version":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":1},{"version":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":1},{"version":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":1},{"version":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":1},{"version":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":1},{"version":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":1},{"version":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":1},{"version":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":1},{"version":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":1},{"version":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":1},{"version":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":1},{"version":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":1},{"version":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":1},{"version":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":1},{"version":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":1},{"version":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":1},{"version":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":1},{"version":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":1},{"version":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":1},{"version":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":1},{"version":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":1},{"version":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":1},{"version":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":1},{"version":"2fbf67aee625a97a9e16a8afed392687ac00a65e62b325a0b162dd35c546e013","signature":"bdb5216b0543bc930a522a44fb5d0aa5543ff1bb96b7691d4eb3c1fbe3d72db9","impliedFormat":1},{"version":"a5f6790e6a665106689b9e8002325af896f998b952e4f921211377a18486ad6d","impliedFormat":1},{"version":"d1e91aab87ce77300dee6b313016ab9c9fd5dc09c90c3addae6c49d9aafdd48e","impliedFormat":1},{"version":"615dbc206e24cb2a1a1e8c64fe1935ca38fb4b6df1b8ff4c9e3cc5627a22b51e","impliedFormat":1},{"version":"b3e4bab9b85fda13110141f0f8fd3f206ceba4ecf98707e35604df4f0747eea8","impliedFormat":1},{"version":"ab6993a5648ac4c15f42e5bb63c827bc0421ef5b12e4da4e5ec4154c0375258a","impliedFormat":1},{"version":"15fd6d0d064f2ce287af6ba467006d4e33e1fe6c8122b8199232421fac57c7c3","impliedFormat":1},{"version":"11e798d729f260243f71129017c4e15e5ab72a2ba583ed885262e1d71f51a236","impliedFormat":1},{"version":"069e2b2cb21346ac8e6ae696579f88ad9af324948aed8b5c5250db198cd70098","impliedFormat":1},{"version":"32c4d13096ab2f3fc9e420996f0ba9eed018001c4e3f7f502367af6add5ee211","impliedFormat":1},{"version":"2bc5dd5c7c30908ad4505e5a9b650a2c7bf44d302b6dad241b7645133a1f254d","impliedFormat":1},{"version":"9d8edb0a08a2d7f86d57f733b3cf4ea60049e29cf8f59a2d3d6e30d7afeee5bf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":1},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":1},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":1},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":1},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":1},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":1},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":1},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":1},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":1},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":1},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":1},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":1},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":1},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":1},{"version":"d8af20e90dfba259787d7b72281126ad04a724ebddea134486cc248242985928","impliedFormat":1},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":1},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":1},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":1},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":1},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":1},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":1},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":1},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":1},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":1},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":1},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":1},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":1},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":1},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":1},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":1},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":1},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":1},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":1},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":1},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":1},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":1},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":1},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":1},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":1},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":1},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":1},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":1},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":1},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":1},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":1},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":1},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":1},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":1},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":1},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":1},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":1},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":1},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":1},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":1},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":1},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":1},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":1},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":1},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":1},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":1},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":1},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":1},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":1},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":1},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":1},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":1},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":1},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":1},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":1},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":1},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":1},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":1},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":1},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":1},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":1},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":1},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":1},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":1},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":1},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":1},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":1},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":1},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":1},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":1},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":1},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":1},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":1},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":1},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":1},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":1},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":1},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":1},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":1},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":1},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":1},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":1},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":1},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":1},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":1},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":1},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":1},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":1},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":1},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":1},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":1},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":1},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":1},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":1},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":1},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":1},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":1},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":1},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":1},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":1},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":1},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":1},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":1},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":1},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":1},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":1},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":1},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":1},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":1},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":1},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":1},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":1},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":1},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":1},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":1},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":1},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":1},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":1},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":1},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":1},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":1},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":1},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":1},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":1},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":1},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":1},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":1},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":1},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":1},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":1},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":1},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":1},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":1},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":1},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":1},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":1},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":1},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":1},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":1},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":1},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":1},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":1},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":1},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":1},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":1},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":1},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":1},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":1},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":1},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":1},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":1},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":1},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":1},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":1},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":1},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":1},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":1},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":1},{"version":"e074c76ae83c128184a7c51583059b2ac94dc65e42a30d3d07f0a4ae439ada98","impliedFormat":1},{"version":"d83862bfac5368d613e9171c45333f6cc754a25e15c155855f3da97bfb673956","impliedFormat":1},{"version":"a5e1beb9e64a11772ad82cf21d969ad0ceff38bc18e879fd7173683d2e86e333","impliedFormat":1},{"version":"103c63f7abbefd916b6aa2b17d302e8574a017f66142ea75cfa2a952cddcd64a","impliedFormat":1},{"version":"4881c5d85d8d372b879b4b8a6fa7dd85c82e7ec8ae2b7e34f1863fac8e343078","signature":"977cd72d913d528341afeb6db5e8e03da0140aa7dfebd48f4a5a4ec78205518f","impliedFormat":1},{"version":"c6e551994f3b7f515ec34249256e3a302c277abeb911e2811cd84fb93583856e","signature":"4660318f1fbea19e845217e9d537127570826d886e728d9352a998abea06138f","impliedFormat":1},{"version":"7e3a48efc1406b010a647b25d5c42302fb66a2dac2e50b582d3d1f3d918986aa","signature":"a112587eb1b994f0ad61d82ef1be73c9c678913f61a717a6a71a30dccc2fbd8f","impliedFormat":1}],"root":[949,[1137,1139]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"../commonjs","preserveConstEnums":true,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[477,1],[478,1],[479,2],[487,3],[488,1],[489,1],[492,4],[486,1],[491,5],[490,1],[537,6],[538,6],[534,7],[539,8],[531,9],[536,10],[535,7],[532,11],[533,12],[508,13],[509,14],[510,14],[530,15],[503,16],[504,14],[511,17],[528,18],[527,19],[525,20],[513,21],[522,18],[514,21],[524,21],[505,22],[516,21],[526,21],[517,18],[506,21],[520,23],[515,21],[518,21],[519,21],[523,18],[521,21],[507,21],[512,14],[529,1],[502,24],[500,25],[499,1],[501,25],[480,26],[481,27],[482,27],[483,1],[485,28],[484,1],[584,1],[542,1],[573,29],[572,30],[560,31],[559,32],[562,33],[561,32],[571,34],[570,35],[575,36],[574,32],[544,37],[563,1],[546,38],[558,39],[557,35],[556,40],[555,1],[554,35],[549,41],[548,35],[547,42],[551,43],[550,30],[569,44],[568,45],[553,46],[552,30],[565,47],[564,48],[545,49],[567,50],[566,51],[541,51],[581,52],[576,35],[578,53],[577,35],[580,54],[579,32],[320,1],[583,55],[582,30],[493,56],[586,57],[497,58],[543,1],[319,1],[494,1],[498,59],[476,60],[475,61],[540,62],[585,56],[496,63],[495,1],[343,64],[322,64],[378,1],[358,1],[389,1],[321,1],[369,65],[370,66],[336,67],[323,1],[332,1],[333,68],[334,1],[335,69],[331,70],[324,1],[328,1],[353,70],[418,71],[351,72],[339,73],[365,74],[341,1],[346,1],[342,75],[337,70],[338,76],[340,76],[344,1],[345,1],[368,77],[357,78],[355,1],[356,79],[371,80],[367,81],[384,82],[379,83],[387,84],[388,85],[415,1],[359,86],[375,1],[364,87],[424,1],[361,70],[452,88],[362,89],[399,90],[398,1],[405,91],[404,1],[407,92],[406,1],[409,93],[408,1],[401,94],[400,1],[403,95],[402,95],[453,96],[413,97],[425,98],[426,99],[454,100],[330,101],[327,102],[326,1],[377,103],[390,104],[412,1],[393,105],[397,1],[363,106],[380,107],[392,108],[419,109],[422,110],[382,111],[420,112],[385,107],[386,113],[423,112],[416,114],[417,1],[394,115],[366,1],[347,1],[381,116],[383,1],[373,1],[421,1],[449,117],[396,118],[376,70],[350,119],[349,1],[450,120],[348,1],[451,121],[354,122],[352,1],[325,1],[391,123],[414,124],[329,1],[411,125],[360,1],[395,126],[410,1],[372,1],[374,127],[472,128],[447,1],[448,129],[438,129],[437,130],[429,130],[428,130],[427,129],[439,131],[463,132],[462,133],[466,134],[465,135],[467,129],[446,136],[443,137],[470,138],[468,129],[464,139],[471,129],[460,140],[459,141],[461,129],[474,142],[430,143],[440,129],[473,1],[431,129],[432,129],[444,129],[433,129],[441,144],[469,1],[445,129],[434,129],[442,129],[435,129],[436,129],[456,145],[455,146],[457,147],[458,148],[753,1],[757,149],[756,150],[755,151],[754,152],[695,153],[694,154],[690,155],[691,156],[689,157],[678,1],[698,158],[696,157],[700,159],[699,160],[697,161],[702,162],[701,157],[704,163],[703,164],[693,165],[692,157],[688,157],[705,166],[682,167],[675,168],[680,169],[672,170],[668,1],[679,171],[686,1],[687,172],[674,173],[683,1],[670,1],[681,174],[666,1],[676,175],[671,176],[669,177],[673,1],[677,1],[684,178],[667,1],[685,1],[639,1],[819,1],[827,179],[833,180],[832,181],[821,182],[835,183],[822,184],[837,185],[831,186],[823,187],[828,188],[836,189],[834,190],[826,191],[825,192],[820,1],[830,193],[829,194],[824,1],[616,195],[615,1],[769,1],[85,196],[86,196],[87,197],[82,198],[88,199],[89,200],[90,201],[77,1],[80,202],[78,1],[79,1],[91,203],[92,204],[93,205],[94,206],[95,207],[96,208],[97,208],[99,1],[98,209],[100,210],[101,211],[102,212],[84,213],[81,1],[103,214],[104,215],[105,216],[138,217],[106,218],[107,219],[108,220],[109,221],[110,222],[111,223],[112,224],[113,225],[114,226],[115,227],[116,227],[117,228],[118,1],[119,1],[120,229],[122,230],[121,231],[123,232],[124,233],[125,234],[126,235],[127,236],[128,237],[129,238],[130,239],[131,240],[132,241],[133,242],[134,243],[135,244],[136,245],[137,246],[888,247],[889,248],[864,249],[867,249],[886,247],[887,247],[877,247],[876,250],[874,247],[869,247],[882,247],[880,247],[884,247],[868,247],[881,247],[885,247],[870,247],[871,247],[883,247],[865,247],[872,247],[873,247],[875,247],[879,247],[890,251],[878,247],[866,247],[903,252],[902,1],[897,251],[899,253],[898,251],[891,251],[892,251],[894,251],[896,251],[900,253],[901,253],[893,253],[895,253],[796,254],[797,255],[812,256],[807,1],[809,257],[814,258],[813,259],[810,260],[808,1],[811,261],[665,1],[74,1],[600,1],[838,262],[818,1],[839,263],[622,264],[961,1],[962,1],[963,1],[964,1],[965,1],[966,1],[967,1],[968,1],[969,1],[970,1],[971,1],[972,1],[973,1],[975,265],[976,1],[974,1],[977,1],[978,1],[979,1],[980,1],[981,1],[982,1],[983,1],[984,1],[985,1],[986,1],[987,1],[988,1],[989,1],[990,1],[991,1],[992,1],[993,1],[994,1],[995,1],[996,1],[997,1],[998,1],[999,1],[1000,1],[1001,1],[1002,1],[1003,1],[1004,1],[1005,1],[1006,1],[1007,1],[1008,1],[1009,1],[1010,1],[1011,1],[1012,1],[1013,1],[1014,1],[1015,1],[1016,1],[1017,1],[1018,1],[1019,1],[1020,1],[1021,1],[1022,1],[1023,1],[1024,1],[1025,1],[1026,1],[1027,1],[1028,1],[1029,1],[1030,1],[1031,1],[1032,1],[1033,1],[1034,1],[1035,1],[1036,1],[1037,1],[1038,1],[1039,1],[1040,1],[1041,1],[1042,1],[1043,1],[1133,266],[1044,1],[1045,1],[1046,1],[1047,1],[1048,1],[1049,1],[1050,1],[1051,1],[1052,1],[1053,1],[1054,1],[1055,1],[1056,1],[1057,1],[1058,1],[1059,1],[1060,1],[1061,1],[1062,1],[1063,1],[1064,1],[1065,1],[1066,1],[1067,1],[1068,1],[1069,1],[1070,1],[1071,1],[1072,1],[1073,1],[1074,1],[1075,1],[1076,1],[1077,1],[1078,1],[1079,1],[1080,1],[1081,1],[1082,1],[1083,1],[1084,1],[1085,1],[1086,1],[1087,1],[1088,1],[1089,1],[1090,1],[1091,1],[1092,1],[1093,1],[1094,1],[1095,1],[1096,1],[1097,1],[1098,1],[1099,1],[1100,1],[1101,1],[1102,1],[1103,1],[1104,1],[1105,1],[1106,1],[1107,1],[1108,1],[1109,1],[1110,1],[1111,1],[1112,1],[1113,1],[1114,1],[1115,1],[1116,1],[1117,1],[1118,1],[1119,1],[1120,1],[1121,1],[1122,1],[1123,1],[1124,1],[1125,1],[1126,1],[1127,1],[1128,1],[1129,1],[1130,1],[1131,1],[1132,1],[656,267],[657,268],[805,269],[806,270],[815,271],[816,272],[817,273],[798,274],[799,274],[718,1],[724,275],[722,1],[723,1],[795,1],[762,1],[152,276],[162,277],[151,276],[172,278],[143,279],[142,280],[171,281],[165,282],[170,283],[145,284],[159,285],[144,286],[168,287],[140,288],[139,281],[169,289],[141,290],[146,291],[147,1],[150,291],[75,1],[173,292],[163,293],[154,294],[155,295],[157,296],[153,297],[156,298],[166,281],[148,299],[149,300],[158,301],[76,302],[161,293],[160,291],[164,1],[167,303],[214,304],[191,305],[202,306],[189,307],[203,302],[212,308],[180,309],[181,310],[179,280],[211,281],[206,311],[210,312],[183,313],[199,314],[182,315],[209,316],[177,317],[178,311],[184,318],[185,1],[190,319],[188,318],[175,320],[213,321],[204,322],[194,323],[193,318],[195,324],[197,325],[192,326],[196,327],[207,281],[186,328],[187,329],[198,330],[176,302],[201,331],[200,318],[205,1],[174,1],[208,332],[297,333],[296,334],[224,335],[221,1],[225,336],[229,337],[218,338],[228,339],[235,340],[298,341],[73,1],[216,1],[223,342],[219,343],[217,232],[227,344],[215,345],[226,346],[220,347],[237,348],[259,349],[248,350],[238,351],[245,352],[236,353],[246,1],[244,354],[240,355],[241,356],[239,357],[247,358],[222,359],[255,360],[252,361],[253,362],[254,363],[256,364],[262,365],[266,366],[265,367],[263,361],[264,361],[257,368],[260,369],[258,370],[261,371],[250,372],[234,373],[249,374],[233,375],[232,376],[251,377],[231,378],[269,379],[267,361],[268,380],[270,361],[274,381],[272,382],[273,383],[275,384],[278,385],[277,386],[280,387],[279,388],[283,389],[281,390],[282,391],[276,392],[271,393],[284,392],[285,394],[295,395],[286,388],[287,361],[242,396],[243,397],[230,1],[288,398],[289,399],[292,400],[291,401],[293,402],[294,403],[290,404],[604,1],[853,405],[840,1],[841,1],[842,1],[843,1],[852,406],[844,1],[845,1],[846,1],[847,1],[848,1],[849,1],[850,1],[851,407],[618,1],[854,408],[858,1],[804,409],[802,410],[800,411],[801,412],[803,413],[641,414],[652,415],[651,415],[653,416],[654,417],[655,418],[650,419],[643,1],[642,1],[649,420],[644,421],[646,422],[647,423],[645,423],[648,424],[640,425],[911,1],[69,1],[70,1],[12,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[23,1],[24,1],[4,1],[25,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[58,1],[57,1],[59,1],[60,1],[10,1],[61,1],[62,1],[63,1],[11,1],[64,1],[65,1],[66,1],[67,1],[68,1],[1,1],[83,292],[794,304],[752,426],[744,427],[751,428],[746,1],[747,1],[745,429],[748,430],[739,1],[740,1],[741,426],[743,431],[749,1],[750,432],[742,433],[949,434],[1138,435],[1137,436],[1139,437],[307,438],[308,439],[309,440],[310,1],[311,441],[312,440],[313,440],[314,442],[315,439],[316,440],[590,443],[591,1],[592,1],[593,444],[941,445],[594,446],[72,1],[595,1],[304,447],[596,448],[597,449],[598,450],[299,451],[599,1],[601,452],[602,439],[603,1],[605,453],[606,454],[607,1],[609,455],[610,442],[611,439],[612,439],[613,444],[614,444],[617,456],[947,1],[619,457],[620,444],[621,444],[623,458],[624,440],[625,439],[626,459],[627,439],[628,439],[629,460],[630,461],[631,439],[632,442],[633,442],[634,439],[635,442],[636,442],[637,442],[638,444],[658,462],[659,439],[660,463],[661,439],[662,442],[306,464],[663,439],[664,440],[706,465],[707,439],[708,439],[709,1],[710,439],[711,442],[589,466],[318,443],[712,442],[713,1],[714,1],[715,467],[716,444],[717,1],[948,468],[719,469],[720,1],[721,450],[725,470],[726,439],[728,471],[734,1],[729,1],[730,1],[731,443],[608,1],[732,440],[733,440],[924,439],[735,1],[736,472],[737,473],[793,439],[738,474],[587,442],[588,444],[758,475],[759,439],[760,1],[761,1],[727,476],[763,477],[764,439],[765,1],[766,1],[767,441],[768,478],[770,479],[771,1],[772,1],[773,440],[774,440],[775,480],[776,1],[777,439],[778,441],[780,439],[779,439],[781,1],[782,442],[783,1],[784,1],[785,439],[786,1],[787,450],[317,1],[789,481],[302,482],[790,483],[791,484],[792,439],[855,485],[856,1],[857,486],[788,487],[859,488],[942,439],[860,444],[861,489],[862,441],[863,474],[904,249],[946,490],[303,472],[945,491],[905,1],[944,439],[906,1],[907,484],[908,1],[909,442],[910,439],[912,492],[916,441],[940,493],[913,1],[914,439],[915,1],[917,439],[918,439],[919,439],[920,1],[301,494],[943,474],[300,1],[921,439],[71,1],[922,439],[923,495],[305,496],[925,497],[926,441],[927,467],[928,440],[929,1],[930,444],[931,440],[932,1],[933,498],[934,439],[935,439],[936,439],[937,439],[938,439],[939,439],[957,445],[955,445],[951,445],[1134,499],[958,445],[1136,500],[952,445],[953,1],[956,445],[1135,445],[959,445],[954,501],[960,445],[950,1]],"latestChangedDtsFile":"../commonjs/worker.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/api/.tshy-build/.tshy/esm.tsbuildinfo b/packages/api/.tshy-build/.tshy/esm.tsbuildinfo new file mode 100644 index 0000000000..8c1c1b2ecd --- /dev/null +++ b/packages/api/.tshy-build/.tshy/esm.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../core/dist/esm/types.d.ts","../../../core/dist/esm/cancellation.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.mts","../../../core/dist/esm/chattypes.d.ts","../../../core/dist/esm/traceparser.d.ts","../../../core/dist/esm/trace.d.ts","../../../core/dist/esm/promptdom.d.ts","../../../core/dist/esm/server/messages.d.ts","../../../core/dist/esm/chat.d.ts","../../../core/dist/esm/usage.d.ts","../../../core/dist/esm/generation.d.ts","../../../core/dist/esm/agent.d.ts","../../../core/dist/esm/annotations.d.ts","../../../core/dist/esm/anthropic.d.ts","../../../core/dist/esm/assert.d.ts","../../../core/dist/esm/ast.d.ts","../../../core/dist/esm/azureaiinference.d.ts","../../../core/dist/esm/azureaisearch.d.ts","../../../core/dist/esm/azurecontentsafety.d.ts","../../../core/dist/esm/azuredevops.d.ts","../../../core/dist/esm/azureopenai.d.ts","../../../core/dist/esm/progress.d.ts","../../../core/dist/esm/hostconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/authtoken.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/iuri.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/logger/logger.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/storeincache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/scopeset.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authority.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizeresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/baseclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/urlstring.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/protocol/authorize.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/servererror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/networkerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-common.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/clientassertionutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/apptokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativerequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativesignoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/broker/nativebroker/inativebrokerplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonclientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commononbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/devicecoderesponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commondevicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonusernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/iguidgenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-node-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index-node.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializertypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/deserializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/internals.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/devicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/refreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/silentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/usernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/nodestorage.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/itokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/tokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/network/iloopbackclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/interactiverequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/signoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/ipublicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/clientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/onbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/iconfidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/icacheclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/ipartitionmanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/ihttpretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/defaultmanagedidentityretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/imdsretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/managedidentityid.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/configuration.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/crypto/cryptoprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientassertion.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/publicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/confidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientcredentialclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/devicecodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/onbehalfofclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/managedidentityrequestparams.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/managedidentityapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/usernamepasswordclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/distributedcacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/provider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/consumer.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/errors.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/types.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/util/logging.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/msal.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/utils.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/multitenanttokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorityvalidationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/brokeroptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/brokerauthoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/chainedtokencredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/credentialpersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialmodels.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/browsercustomizationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/options.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/index.d.ts","../../../core/dist/esm/mcpclient.d.ts","../../../core/dist/esm/mcpresource.d.ts","../../../core/dist/esm/host.d.ts","../../../core/dist/esm/azuretoken.d.ts","../../../core/dist/esm/base64.d.ts","../../../core/dist/esm/binary.d.ts","../../../core/dist/esm/bufferlike.d.ts","../../../core/dist/esm/cache.d.ts","../../../core/dist/esm/changelog.d.ts","../../../core/dist/esm/chatcache.d.ts","../../../core/dist/esm/chatrender.d.ts","../../../core/dist/esm/chatrenderterminal.d.ts","../../../core/dist/esm/chunkers.d.ts","../../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../../core/dist/esm/ci.d.ts","../../../core/dist/esm/cleaners.d.ts","../../../core/dist/esm/clone.d.ts","../../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../../core/dist/esm/concurrency.d.ts","../../../core/dist/esm/config.d.ts","../../../core/dist/esm/consolecolor.d.ts","../../../core/dist/esm/llmsdata.d.ts","../../../core/dist/esm/constants.d.ts","../../../core/dist/esm/contentsafety.d.ts","../../../core/dist/esm/copy.d.ts","../../../core/dist/esm/crypto.d.ts","../../../core/dist/esm/csv.d.ts","../../../core/dist/esm/data.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../../core/dist/esm/debug.d.ts","../../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../../core/dist/esm/diff.d.ts","../../../core/dist/esm/dispose.d.ts","../../../core/dist/esm/docx.d.ts","../../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../../core/dist/esm/dotenv.d.ts","../../../core/dist/esm/echomodel.d.ts","../../../core/dist/esm/encoders.d.ts","../../../core/dist/esm/env.d.ts","../../../core/dist/esm/error.d.ts","../../../core/dist/esm/evalprompt.d.ts","../../../core/dist/esm/expander.d.ts","../../../core/dist/esm/features.d.ts","../../../core/dist/esm/fence.d.ts","../../../core/dist/esm/fetch.d.ts","../../../core/dist/esm/fetchtext.d.ts","../../../core/dist/esm/ffmpeg.d.ts","../../../core/dist/esm/file.d.ts","../../../core/dist/esm/filebytes.d.ts","../../../core/dist/esm/filecache.d.ts","../../../core/dist/esm/fileedits.d.ts","../../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../../core/dist/esm/filetype.d.ts","../../../core/dist/esm/frontmatter.d.ts","../../../core/dist/esm/fs.d.ts","../../../core/dist/esm/fscache.d.ts","../../../core/dist/esm/fuzzsearch.d.ts","../../../core/dist/esm/git.d.ts","../../../core/dist/esm/github.d.ts","../../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../../core/dist/esm/githubclient.d.ts","../../../core/dist/esm/gitignore.d.ts","../../../core/dist/esm/glob.d.ts","../../../core/dist/esm/global.d.ts","../../../core/dist/esm/globals.d.ts","../../../core/dist/esm/grep.d.ts","../../../core/dist/esm/html.d.ts","../../../core/dist/esm/htmlescape.d.ts","../../../core/dist/esm/id.d.ts","../../../core/dist/esm/image.d.ts","../../../core/dist/esm/importprompt.d.ts","../../../core/dist/esm/indent.d.ts","../../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../../core/dist/esm/inflection.d.ts","../../../core/dist/esm/ini.d.ts","../../../core/dist/esm/jinja.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../../core/dist/esm/json5.d.ts","../../../core/dist/esm/jsonl.d.ts","../../../core/dist/esm/memcache.d.ts","../../../core/dist/esm/jsonlinecache.d.ts","../../../core/dist/esm/liner.d.ts","../../../core/dist/esm/llmdiff.d.ts","../../../core/dist/esm/llms.d.ts","../../../core/dist/esm/lm.d.ts","../../../core/dist/esm/lmstudio.d.ts","../../../core/dist/esm/levenshtein.d.ts","../../../core/dist/esm/logging.d.ts","../../../core/dist/esm/logprob.d.ts","../../../core/dist/esm/markdown.d.ts","../../../core/dist/esm/math.d.ts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../../core/dist/esm/mcpsampling.d.ts","../../../core/dist/esm/mdchunk.d.ts","../../../core/dist/esm/mddiff.d.ts","../../../core/dist/esm/mdstringify.d.ts","../../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../../core/dist/esm/merge.d.ts","../../../core/dist/esm/metadata.d.ts","../../../core/dist/esm/mime.d.ts","../../../core/dist/esm/mkmd.d.ts","../../../core/dist/esm/modelalias.d.ts","../../../core/dist/esm/models.d.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.mts","../../../core/dist/esm/mustache.d.ts","../../../core/dist/esm/net.d.ts","../../../core/dist/esm/nodepackage.d.ts","../../../core/dist/esm/nonemodel.d.ts","../../../core/dist/esm/ollama.d.ts","../../../core/dist/esm/openai.d.ts","../../../core/dist/esm/packagemanagers.d.ts","../../../core/dist/esm/parameters.d.ts","../../../core/dist/esm/parser.d.ts","../../../core/dist/esm/path.d.ts","../../../core/dist/esm/parsers.d.ts","../../../core/dist/esm/pathutils.d.ts","../../../core/dist/esm/pdf.d.ts","../../../core/dist/esm/perf.d.ts","../../../core/dist/esm/performance.d.ts","../../../core/dist/esm/plugin.d.ts","../../../core/dist/esm/precision.d.ts","../../../core/dist/esm/pretty.d.ts","../../../core/dist/esm/runpromptcontext.d.ts","../../../core/dist/esm/promptcontext.d.ts","../../../core/dist/esm/promptfoo.d.ts","../../../core/dist/esm/promptrunner.d.ts","../../../core/dist/esm/prompty.d.ts","../../../core/dist/esm/markdownscript.d.ts","../../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../../core/dist/esm/proxy.d.ts","../../../core/dist/esm/quiet.d.ts","../../../core/dist/esm/resources.d.ts","../../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../../core/dist/esm/sanitize.d.ts","../../../core/dist/esm/schema.d.ts","../../../core/dist/esm/scriptresolver.d.ts","../../../core/dist/esm/scripts.d.ts","../../../core/dist/esm/secretscanner.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../../core/dist/esm/semver.d.ts","../../../core/dist/esm/shell.d.ts","../../../core/dist/esm/stdio.d.ts","../../../core/dist/esm/systems.d.ts","../../../core/dist/esm/tags.d.ts","../../../core/dist/esm/teams.d.ts","../../../core/dist/esm/template.d.ts","../../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../../core/dist/esm/terminal.d.ts","../../../core/dist/esm/testschema.d.ts","../../../core/dist/esm/textsplitter.d.ts","../../../core/dist/esm/think.d.ts","../../../core/dist/esm/testeval.d.ts","../../../core/dist/esm/tidy.d.ts","../../../core/dist/esm/tokens.d.ts","../../../core/dist/esm/toml.d.ts","../../../core/dist/esm/tools.d.ts","../../../core/dist/esm/transcription.d.ts","../../../core/dist/esm/unwrappers.d.ts","../../../core/dist/esm/url.d.ts","../../../core/dist/esm/log.d.ts","../../../core/dist/esm/util.d.ts","../../../core/dist/esm/vars.d.ts","../../../core/dist/esm/vectorsearch.d.ts","../../../core/dist/esm/vectra.d.ts","../../../core/dist/esm/version.d.ts","../../../core/dist/esm/websearch.d.ts","../../../core/dist/esm/whisperasr.d.ts","../../../core/dist/esm/workdir.d.ts","../../../core/dist/esm/workerlm.d.ts","../../../core/dist/esm/workspace.d.ts","../../../core/dist/esm/xlsx.d.ts","../../../core/dist/esm/xml.d.ts","../../../core/dist/esm/yaml.d.ts","../../../core/dist/esm/zip.d.ts","../../../core/dist/esm/zod.d.ts","../../../core/dist/esm/testhost.d.ts","../../../core/dist/esm/build.d.ts","../../../core/dist/esm/sarif.d.ts","../../../core/dist/esm/tracefile.d.ts","../../../core/dist/esm/stdin.d.ts","../../../core/dist/esm/server/wsclient.d.ts","../../../core/dist/esm/server/client.d.ts","../../../core/dist/esm/default_prompts.d.ts","../../../core/dist/esm/index.d.ts","../../src/api.ts","../../../runtime/dist/esm/version.d.ts","../../../runtime/dist/esm/docker.d.ts","../../../runtime/dist/esm/input.d.ts","../../../runtime/dist/esm/log.d.ts","../../../runtime/dist/esm/nodehost.d.ts","../../../runtime/dist/esm/classify.d.ts","../../../runtime/dist/esm/makeitbetter.d.ts","../../../runtime/dist/esm/cast.d.ts","../../../runtime/dist/esm/filetree.d.ts","../../../runtime/dist/esm/markdownifypdf.d.ts","../../../runtime/dist/esm/runtime.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.mts","../../../runtime/dist/esm/extras.d.ts","../../../runtime/dist/esm/mapreduce.d.ts","../../../runtime/dist/esm/index.d.ts","../../src/run.ts","../../src/index.ts","../../src/worker.ts"],"fileIdsList":[[82,88],[82,88,477,478],[82,88,486],[82,88,485,486,487,488,489,490,491],[82,88,479,485,490],[82,88,530],[82,88,530,531],[82,88,531,532,533,534,535,536,537,538],[82,88,479,502,530],[82,88,492,530,534,535],[82,88,531],[82,88,492,530,531],[82,88,503,504,505,506,507],[82,88,503],[82,88,485,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529],[82,88,479,485,502],[82,88,479,485,502,503],[82,88,503,504],[82,88,492,495,504],[82,88,492,495,503,504],[82,88,504],[82,88,495,504],[82,88,495,503,504,512],[82,88,499,500,501],[82,88,499],[82,88,479],[82,88,480],[82,88,480,481,482,483,484],[82,88,492,572],[82,88,541,542],[82,88,492,559],[82,88,541],[82,88,492,561],[82,88,492,530,570],[82,88,541,542,547],[82,88,492,574],[82,88,543],[82,88,492,496],[82,88,492,557],[82,88,492,494,554,555],[82,88,492,548],[82,88,319],[82,88,492,546,550],[82,88,492,494,568],[82,88,545,547],[82,88,492,552],[82,88,492,494,564],[82,88,544,545,547,563],[82,88,494,541,542],[82,88,492,540,566],[82,88,540],[82,88,492,541,547,576],[82,88,492,577],[82,88,320,492,579],[82,88,492,582],[82,88,492],[82,88,319,475,476,492,493,494,496,498,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585],[82,88,474],[82,88,492,494,495,496,497],[82,88,475],[82,88,319,320,474],[82,88,530,539],[82,88,495],[82,88,321],[82,88,323,324,325,327,328,330,334,336,350,353,359,368],[82,88,327,330,336,350,368,369],[82,88,328,331,333,335],[82,88,332],[82,88,334],[82,88,329],[82,88,138,343,359,381,416,417],[82,88,330,336,338,339,340,341,342,343,344,345,346,347,350,363,364,365,367,368],[82,88,329,337],[82,88,321,323,330,343,364,369],[82,88,338,339,340,341,365],[82,88,337],[82,88,338,339,340,341,342,343,344,345,346,347,365,367],[82,88,356],[82,88,355],[82,88,324,329,334,337,338,339,340,341,346],[82,88,329,338,339,340,341,343,344,345,346,365,366],[82,88,350,359,379,380,381,382,383],[82,88,326,327,330,350,351,354,359,363,364,369,376,377,378],[82,88,350,359,379,381,385,386],[82,88,329,350,359,379,381,386],[82,88,327,330,336,351,354,355,357,358,364,369],[82,88,362,363],[82,88,330,350,364],[82,88,361],[82,88,398],[82,88,399,404],[82,88,399,406],[82,88,399,408],[82,88,399,400],[82,88,399],[82,88,348,349,350,361,362,449,450,451,452],[82,88,321,322,323,325,326,327,328,329,330,331,332,333,336,337,338,339,340,341,342,343,344,345,346,347,351,352,354,359,360,363,364,365,366,367,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,401,402,403,405,407,409,410,411,412],[82,88,355,356,357,358,414,415,416,417,418,419,420,421,422,423,424],[82,88,413,425],[82,88,413,425,453],[82,88,359],[82,88,326],[82,88,329,362,363],[82,88,326,351,363,376,377],[82,88,330,350,359,360,369,373,383,392],[82,88,329,347,359,360,362],[82,88,363,378],[82,88,329,343,360,363],[82,88,332,358,363],[82,88,360,363,421],[82,88,343,360],[82,88,363],[82,88,343,363],[82,88,360],[82,88,329,350,354,359,360,389],[82,88,343],[82,88,376],[82,88,321,330,342,350,351,355,357,363,364,365,369,376,381,383,395],[82,88,348,349],[82,88,330,348,349,350,359],[82,88,348,349,350],[82,88,329,344,351,352,353],[82,88,325],[82,88,358],[82,88,330,350],[82,88,364],[82,88,360,373],[82,88,426,447,448],[82,88,426],[82,88,426,427],[82,88,426,427,437,438],[82,88,426,431,432,434,435,436,437,439,460,461,462],[82,88,461],[82,88,426,460],[82,88,426,444,445,446,460,463],[82,88,426,431,432,434,435,436,439,444,445],[82,88,426,431,432,433,434,435,436,439,441,442],[82,88,426,458,460,469],[82,88,426,433,435,441,442,443,460,463],[82,88,103,105,138,426,459],[82,88,458,460],[82,88,426,427,430,431,432,433,434,435,436,438,439,440,441,442,443,444,445,446,447,448,458,460,461,462,463,464,465,466,467,468,469,470,471,472,473],[82,88,428,429],[82,88,138,426,440],[82,88,103,138,454,455],[82,88,103,138,454],[82,88,454,455],[82,88,456,457],[82,88,752,754,756],[82,88,752,753,754,755],[82,88,754],[82,88,752,753],[82,88,665,688,691,694],[82,88,687,693,695],[82,88,687,689],[82,88,688,689,690],[82,88,687],[82,88,697],[82,88,695,697,698,699],[82,88,696],[82,88,687,695,696],[82,88,687,701],[82,88,695,701,703],[82,88,687,702],[82,88,687,692],[82,88,695,700,704],[82,88,671,672,674,677,681],[82,88,666,667,670,671],[82,88,671,675,676,677,679],[82,88,666,667,671],[82,88,669,670,674,678],[82,88,666,667,668,669,670,671,672,673,674,675,676,677,679,680,681,682,683,684,685,686],[82,88,667,673],[82,88,671,674,677,679,680],[82,88,666,667,669,670],[82,88,667,669,670],[82,88,668],[82,88,682],[82,88,821,822,825,827,830,831,832,834,835],[82,88,821,822,824,825,826,831,832,833,835],[82,88,826,831,832,834],[82,88,821],[82,88,834],[82,88,821,822],[82,88,825,826,827,828,829,830,831,832,833,834,835,836,837],[82,88,820,831],[82,88,821,822,831,832],[82,88,822,827,828,830,831,835],[82,88,826,831,834,835],[82,88,821,822,826,831,834],[82,88,821,822,826,828,830,831,835,838],[82,88,821,822,824,825,831,832,834,835],[82,88,821,825,826,828,830,832,834],[82,88,822,823,829,835],[82,88,615],[82,88,769],[82,85,88],[82,87,88],[88],[82,88,93,123],[82,88,89,94,100,101,108,120,131],[82,88,89,90,100,108],[77,78,79,82,88],[82,88,91,132],[82,88,92,93,101,109],[82,88,93,120,128],[82,88,94,96,100,108],[82,87,88,95],[82,88,96,97],[82,88,98,100],[82,87,88,100],[82,88,100,101,102,120,131],[82,88,100,101,102,115,120,123],[82,88,173],[82,88,96,100,103,108,120,131,173],[82,88,100,101,103,104,108,120,128,131],[82,88,103,105,120,128,131],[80,81,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[82,88,100,106],[82,88,107,131],[82,88,96,100,108,120],[82,88,109],[82,88,110],[82,87,88,111],[82,85,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[82,88,113],[82,88,114],[82,88,100,115,116],[82,88,115,117,132,134],[82,88,100,120,121,123],[82,88,122,123],[82,88,120,121],[82,88,123],[82,88,124],[82,85,88,120],[82,88,100,126,127],[82,88,126,127],[82,88,93,108,120,128],[82,88,129],[82,88,108,130],[82,88,103,114,131],[82,88,93,132],[82,88,120,133],[82,88,107,134],[82,88,135],[82,88,100,102,111,120,123,131,134,136],[82,88,120,137],[82,88,865,904],[82,88,865,889,904],[82,88,904],[82,88,865],[82,88,865,890,904],[82,88,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903],[82,88,890,904],[82,88,103,105,120,138],[82,88,103,108,120,128,138,797],[82,88,120,128,138,808,810,811,812],[82,88,108,128,138,809],[82,88,808,809,810,812,813,814],[82,88,808],[82,88,108,138],[82,88,120,138,810,811],[82,88,134,138,819,838],[82,88,819,839],[82,88,131,138],[82,88,975],[82,88,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133],[82,88,123,655],[82,88,120,655,656],[82,88,120,138,818],[82,88,101,120,138,818],[82,88,120,138,815,818],[82,88,103,105,120,138,818],[82,88,120,138,806,807,816,817],[82,88,103,108,128,131,138,798],[82,88,722,723],[82,88,131,145,149],[82,88,120,131,145],[82,88,140],[82,88,128,131,142,145],[82,88,108,128],[82,88,138],[82,88,138,140],[82,88,108,131,142,145],[75,76,82,88,100,120,131,141,144],[82,88,145,152],[75,82,88,143],[82,88,145,166,167],[82,88,123,131,138,141,145],[82,88,138,166],[82,88,138,139,140],[82,88,145],[82,88,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,172],[82,88,145,160],[82,88,145,152,153],[82,88,143,145,153,154],[82,88,144],[75,82,88,140,145],[82,88,145,149,153,154],[82,88,149],[82,88,131,143,145,148],[75,82,88,142,145,152],[82,88,120],[82,88,136,138,140,145,166],[82,88,213],[82,88,131,180,183,186,187],[82,88,120,131,183],[82,88,131,183,187],[82,88,177],[82,88,181],[82,88,131,179,180,183],[82,88,138,177],[82,88,108,131,179,183],[82,88,100,120,131,174,175,176,178,182],[82,88,183,191,198],[82,88,175,181],[82,88,183,207,208],[82,88,123,131,138,175,178,183],[82,88,183],[82,88,131,179,183],[82,88,174],[82,88,177,178,179,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212],[82,88,96,183,200,203],[82,88,183,191,192,193],[82,88,181,183,192,194],[82,88,182],[82,88,175,177,183],[82,88,183,187,192,194],[82,88,187],[82,88,131,181,183,186],[82,88,175,179,183,191],[82,88,183,200],[82,88,123,136,138,177,183,207],[73,82,88,216,219,296],[73,82,88,215,216,219,220,221,224,225,228,231,243,249,250,255,256,266,269,270,274,275,283,284,285,286,287,289,293,294,295],[82,88,215,223,296],[82,88,219,223,224,296],[82,88,296],[82,88,217,296],[82,88,226,227],[82,88,221],[82,88,221,224,225,228,296,297],[82,88,219,222,296],[73,82,88,215,216,218],[73,82,88],[82,88,173,214],[73,82,88,219,296],[82,88,219,296],[82,88,219,231,234,236,245,247,248,298],[82,88,217,219,236,257,258,260,261,262],[82,88,234,237,244,247,298],[82,88,217,219,234,237,249,298],[82,88,217,234,237,238,244,247,298],[82,88,235],[82,88,230,234,243],[82,88,243],[82,88,219,236,239,240,243,298],[82,88,234,243,244],[82,88,245,246,248],[82,88,225],[82,88,229,252,253,254],[82,88,219,224,229],[82,88,218,219,224,228,229,253,255],[82,88,219,224,228,229,253,255],[82,88,219,224,225,229,230,256],[82,88,219,224,225,229,230,257,258,259,260,261],[82,88,229,261,262,265],[82,88,229,230,263,264,265],[82,88,219,224,225,229,230,262],[82,88,218,219,224,225,229,230,257,258,259,260,261,262],[82,88,219,224,225,229,230,258],[82,88,218,219,224,229,230,257,259,260,261,262],[82,88,229,230,249],[82,88,233],[82,88,218,219,224,225,229,230,231,232,237,238,244,245,247,248,249],[82,88,232,249],[82,88,219,225,229,249],[82,88,233,250],[82,88,218,219,224,229,231,249],[82,88,219,224,225,229,268],[82,88,219,224,225,228,229,267],[82,88,219,224,225,229,230,243,271,273],[82,88,219,224,225,229,273],[82,88,219,224,225,229,230,243,249,272],[82,88,219,224,225,228,229],[82,88,229,277],[82,88,219,224,229,271],[82,88,229,279],[82,88,219,224,225,229],[82,88,229,276,278,280,282],[82,88,219,225,229],[82,88,219,224,225,229,230,276,281],[82,88,229,271],[82,88,229,243],[82,88,218,219,224,228,229,285],[82,88,230,231,243,251,255,256,266,269,270,274,275,283,284,285,286,287,289,293,294],[82,88,219,225,229,243],[82,88,218,219,224,225,229,230,239,241,242,243],[82,88,219,224,228,229],[82,88,219,224,229,275,288],[82,88,219,224,225,229,290,291,293],[82,88,219,224,225,229,290,293],[82,88,219,224,225,229,230,291,292],[82,88,216,229],[82,88,228],[82,88,103,108,120,131,138,798,799,800,805,818,853],[82,88,138,838,840,841,842,843,844,845,846,847,848,849,850,851,852],[82,88,853],[82,88,103,138,796,798,799,800,805,854],[82,88,103,108,131,138,798,804],[82,88,100,120,138,801,802],[82,88,108,120,138],[82,88,801],[82,88,803],[82,88,639,640],[82,88,640,641],[82,88,120,639,640,641,649,650,651,652],[82,88,102,640,641],[82,88,120,639,650,653,654],[82,88,640,641,649],[82,88,642,643,644,646,647,648],[82,88,120,643],[82,88,645],[82,88,643],[82,88,123,646,647],[82,88,639],[82,88,751],[82,88,742,743],[82,88,739,740,742,744,745,750],[82,88,740,742],[82,88,750],[82,88,742],[82,88,739,740,742,745,746,747,748,749],[82,88,739,740,741],[82,88,110,136,616,949],[82,88,950,1138],[82,88,102,110,949,1137],[82,88,136,949,1134,1137,1138],[71,82,88,301,306],[71,82,88],[82,88,304],[71,82,88,303],[71,72,82,88,301],[82,88,589],[71,82,88,301],[82,88,949],[71,72,82,88],[71,72,82,88,299,301,302,303,306],[71,82,88,299,303],[71,72,82,88,299],[82,88,299],[71,82,88,298],[82,88,600],[71,82,88,604],[72,82,88,303,318],[71,82,88,608],[82,88,616],[71,82,88,618],[82,88,622],[72,82,88,301,303],[71,82,88,230,299,302,303,306],[82,88,608],[82,88,657],[71,82,88,101],[71,72,82,88,299,301,305],[71,72,82,88,301,305,700,705],[71,72,82,88,301,303,304,317,318,586,587,588],[71,72,82,88,301,304],[71,72,82,88,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,587,588,589,590,591,592,593,594,595,596,597,598,599,601,602,603,605,606,607,609,610,611,612,613,614,617,619,620,621,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,658,659,660,661,662,663,664,706,707,708,709,710,711,712,713,714,715,716,717,719,720,721,725,726,727,728,729,730,731,732,733,734,735,736,737,738,758,759,760,761,763,764,765,766,767,768,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,856,857,858,860,861,862,863,864,905,906,907,908,909,910,911,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948],[82,88,718],[82,88,724],[82,88,594,727],[71,82,88,299],[72,82,88],[82,88,301],[72,82,88,299,301,757],[71,82,88,594,616],[82,88,762],[71,72,82,88,299,301,303,589],[71,82,88,770],[71,72,82,88,299,301,303,304],[71,82,88,303,306,789],[71,72,82,88,299,301],[71,72,82,88,301,768],[71,82,88,303,306],[82,88,214,855],[71,72,82,88,131,301],[71,72,82,88,301,302,303,306],[82,88,859],[72,82,88,301],[71,82,88,299,301,303,946],[82,88,303],[82,88,912],[71,72,82,88,301,303,304,587,588,589],[71,72,82,88,299,300],[82,88,131],[82,88,299,301,304],[82,88,925],[71,82,88,299,304],[82,88,752,949,1134],[82,88,951,952,953,954,955,956,957,958,959,960,961,1135,1136],[82,88,949,952]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":99},{"version":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":99},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"ed9680d6573920c3f1588fdb732d2469324e16b4795e2bec5f196a613e66030f","impliedFormat":99},{"version":"804e73c5236db118192cf774837ecf6d37013470832dc0ed9aaecfb4c93fb88b","impliedFormat":99},{"version":"91c093343733c2c2d40bee28dc793eff3071af0cb53897651f8459ad25ad01da","impliedFormat":99},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":99},{"version":"e1c58879ba7cfcb2a70f4ec69831f48eef47b7a356f15ab9f4fce03942d9f21a","impliedFormat":99},{"version":"f4fc36916b3eac2ea0180532b46283808604e4b6ff11e5031494d05aa6661cc6","impliedFormat":99},{"version":"82e23a5d9f36ccdac5322227cd970a545b8c23179f2035388a1524f82f96d8d0","impliedFormat":99},{"version":"5a5703de2fe655aa091dfb5b30a5a249295af3ab189b800c92f8e2bc434fb8db","impliedFormat":99},{"version":"bfce32506c0d081212ff9d27ec466fa6135a695ba61d5a02738abd2442566231","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"493c39c5f9e9c050c10930448fda1be8de10a0d9b34dcd24ff17a1713c282162","impliedFormat":99},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":99},{"version":"fb5a2c398c5d06e25ae7b12ad15a921f1b980a63fa2a7e4fab133b4e2a812016","impliedFormat":99},{"version":"ba3df48971907e524e144d82ed8f02d79729234b659307f8ea6c53b40821c021","impliedFormat":99},{"version":"01667d68efa44dff300acf4c59dd32da24ef2a5e60f22ab0a2453e78384313c4","impliedFormat":99},{"version":"e6ad9376e7d088ce1dc6d3183ba5f0b3fb67ee586aa824cc8519b52f2341307a","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"d62b09cb6f1ceb87ec6c26f3789bc38f8be9fb0ce3126fd0bf89b003d0cba371","impliedFormat":99},{"version":"f1814fe671a8c89958dc5c6bbba86886a5e240d4b5dc67d5fe0230a1453173aa","impliedFormat":99},{"version":"093c715953724a40a662c88333a643328eb31bc8c677a75a132fc91cac5374eb","impliedFormat":99},{"version":"491d5f012b1de793c45e75a930f5cdef1ff0e7875968e743fa6bd5dd7d31cb3b","impliedFormat":99},{"version":"53c86b81daa463deacb0046fee490b6d589438ac71311050b74dcee99afca0f6","impliedFormat":99},{"version":"70587241a4cc2e08ffc30e60c20f3eb38bd5af7e3d99640568ffe2993f933485","impliedFormat":99},{"version":"25eae186ba15de27b0d3100df3b30998ad63eaacf9e3d8ca953c3ad120a84c22","impliedFormat":99},{"version":"437bd33cd28dbf6eccc49404feb45896f2b16a5999a6f302568bdaa43b36c517","impliedFormat":99},{"version":"2210cc7bbaf78e3cbaf26c9ccfd22906fb9d4db9de2157c05bf22ba11384aec6","impliedFormat":99},{"version":"29c4e9ce50026f15c4e58637d8668ced90f82ce7605ca2fd7b521667caa4a12c","impliedFormat":99},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":99},{"version":"3b56bc74e48ec8704af54db1f6ecfee746297ee344b12e990ba5f406431014c1","impliedFormat":99},{"version":"9e4991da8b398fa3ee9b889b272b4fe3c21e898d873916b89c641c0717caed10","impliedFormat":99},{"version":"71725d35a48bc9a5ae7ae3ef4823c25c8913470913d97fcb9247ebdca14d63f6","impliedFormat":99},{"version":"575d3752baaacf5d34ae1fe3840a3a7acb782f0b670b2e0385af58dabba9ae12","impliedFormat":99},{"version":"dccadbf7c7a1a95c6ce5627765dc1c603f33fb928ddc39092f589476bca7965f","impliedFormat":99},{"version":"dfb1f442faf045df05149751d29131b68726cae26c6e9cb2eeb132acee59e6e0","impliedFormat":99},{"version":"09fe9b15282a073c2cd0ef426704e0baea167c2270fc5c46bc932deee440a071","impliedFormat":99},{"version":"ee02719d72e35d2816bd9052ad2a35f148ac54aa4ffb5d2ad2ef0229a17fc3ae","impliedFormat":99},{"version":"eac029dfd99082efdc6854f4f23932fe54be7eb9bb5debd03c2f6ebd1be502f7","impliedFormat":99},{"version":"38d3c5eb27acab967299ad6aa835c944301501392c5056d9976842e4a4259623","impliedFormat":99},{"version":"924abf8e5bf12cc08323ce731f7c8215953755d53fdd509886ef321137b1fdf3","impliedFormat":99},{"version":"af12948563d3973b5f4c9a4ceda63c362758edb8c64412410ebd9c145b85611b","impliedFormat":99},{"version":"4a5d9348012a3e46c03888e71b0d318cda7e7db25869731375f90edad8dcea02","impliedFormat":99},{"version":"41ae8b7e49e35f92ace79c1f30e48b2938c97f774a4163b24765abe9fb84085d","impliedFormat":99},{"version":"0ed362e8185765e6ab2e251f9da6d0db15d6f9042d1dc69cdd6ecd0433c0dc8e","impliedFormat":99},{"version":"935a4d16a9559f0832c5f32852872c5bea91fa0f6ad63c89dd4461029b6f294c","impliedFormat":99},{"version":"75a6adb9a4ee5df5192fad33566b5eea99cc4dd0685f713e4f4a4d4c7555103b","impliedFormat":99},{"version":"e88c9554eb7f5f8e7ada1653e98612a1c77afadf953757b8c08c8fe2c993b462","impliedFormat":99},{"version":"2480b9275023f19d0b53c8858feda680a92fb1a98ea1e43c8570f1fb28930aa3","impliedFormat":99},{"version":"bccef2e4035020788934f608255058fc234b3ccc67bf9b888b7eb1ef3285e521","impliedFormat":99},{"version":"4ecb0eb653de7093f2eb589cea5b35fdea6e2bbd62bc3d9fafdc5702850f7714","impliedFormat":99},{"version":"69ed52603ad6430aaffbc9dec25e0d01df733aaa32ab4d57d37987aedc94c349","impliedFormat":99},{"version":"323420ca2dd68ae9922913d7c5ca44f36b1db0e5d58e4a9316d4121d5da88664","impliedFormat":99},{"version":"584cbaebe5928714465942169a1820461276944ac1e97c2062855b14b498b546","impliedFormat":99},{"version":"2d2e14e426fbae030b971ca08931afaa3cd36babd63482351e957ce404bd4dcd","impliedFormat":99},{"version":"96fa3b7fc7a6199abe026fa8456c6c2b5fa4baef96473fb7c924ee16c349dc36","impliedFormat":99},{"version":"2942e902cb59989e45f2a924357e73011f531d71972d0159efd557e16b1b150d","impliedFormat":99},{"version":"b6120275cc4fc44b151af141c6a5c41c9557b4b9d551454812d10713ddb63847","impliedFormat":99},{"version":"534408204925f12d5d3e43457f87f89fdfd062b7ce4f4496ea36b072423d56d5","impliedFormat":99},{"version":"953ee863def1b11f321dcb17a7a91686aa582e69dd4ec370e9e33fbad2adcfd3","impliedFormat":99},{"version":"c6fcf55644bb1ee497dbe1debb485d5478abd8e8f9450c3134d1765bff93d141","impliedFormat":99},{"version":"e452b617664fc3d2db96f64ef3addadb8c1ef275eff7946373528b1d6c86a217","impliedFormat":99},{"version":"434a60088d7096cd59e8002f69e87077c620027103d20cd608a240d13881fba7","impliedFormat":99},{"version":"40d9502a7af4ad95d761c849dd6915c9c295b3049faca2728bff940231ca81d3","impliedFormat":99},{"version":"792d1145b644098c0bb411ffb584075eadcfbbd41d72cd9c85c7835212a71079","impliedFormat":99},{"version":"30d0ecf1c23d75cba9e57457703695a25003c4328f6d048171e91b20d1012aa2","impliedFormat":99},{"version":"f216cb46ebeff3f767183626f70d18242307b2c3aab203841ae1d309277aad6b","impliedFormat":99},{"version":"fa9c695ac6e545d4f8a416fb190e4a5e8c5bc2d23388b83f5ae1b765fff5add5","impliedFormat":99},{"version":"fe69ad9a4b9c61fa429e252aaf63ba4bd330bfd169432de7afbd45a8bf2f50a1","impliedFormat":99},{"version":"f294be0ee8508d25d0ea14b5170a056cae0439a6d555a23d7779e3c5c28430ae","impliedFormat":99},{"version":"99b487d1ed8af24e01c427b9837fd7230366ad661d389dc7f142e1c1c8c33b5e","impliedFormat":99},{"version":"a384b0ea68d5a8c2ab6ad5fbd3ce1480e752e153dd23feb03d143e7ecc1ac2c7","impliedFormat":99},{"version":"e79760097ef8fd7afd8db7b11a374fd44921deb417cebf497962127b44ec9a37","impliedFormat":99},{"version":"afad82addd1d9ee6e361606205bbda03e97cb3850f948e53fdbb82f160dc43c7","impliedFormat":99},{"version":"5ee44a60fe09b4c21f71506f6697107f19a01c9842980c7145a4f2938d4dafc4","impliedFormat":99},{"version":"3729454e7f755d54f08bad759e29cc87453323f90ffcbb3f425c4ede7224cfd3","impliedFormat":99},{"version":"04fd41edfc690bb3735e61ee7d53f513cc30d2fc9080d4ca108fff642e91e0ce","impliedFormat":99},{"version":"c1cb04d8bc056dd78a2a463062cd44a3ae424a6351e5649736640e72697e42fc","impliedFormat":99},{"version":"c6c06d1932ee8445fcc00726917a51cf18fcb53d5a97697551542caa62906318","impliedFormat":99},{"version":"54dc4a604b09975a5c90b9e75864897c028ecc284c27fc2dbea68685a6526f74","impliedFormat":99},{"version":"3d971255e2e8aca864a90e1953f21c119b3b717aa484747a19f7834d1b2102f0","impliedFormat":99},{"version":"7b6261a4407295b1057feba24a1333923dee852f67fe3c329c990ddcfa20adce","impliedFormat":99},{"version":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":99},{"version":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":99},{"version":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":99},{"version":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":99},{"version":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":99},{"version":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":99},{"version":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":99},{"version":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":99},{"version":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":99},{"version":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":99},{"version":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":99},{"version":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":99},{"version":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":99},{"version":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":99},{"version":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":99},{"version":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":99},{"version":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":99},{"version":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":99},{"version":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":99},{"version":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":99},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":99},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":99},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":99},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":99},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":99},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":99},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":99},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":99},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":99},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":99},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":99},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":99},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":99},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":99},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":99},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":99},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":99},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":99},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":99},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":99},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":99},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":99},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":99},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":99},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":99},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":99},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":99},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":99},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":99},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":99},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":99},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":99},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":99},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":99},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":99},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":99},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":99},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":99},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":99},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":99},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":99},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":99},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":99},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":99},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":99},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":99},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":99},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":99},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":99},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":99},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":99},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":99},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":99},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":99},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":99},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":99},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":99},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":99},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":99},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":99},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":99},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":99},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":99},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":99},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":99},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":99},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":99},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":99},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":99},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":99},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":99},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":99},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":99},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":99},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":99},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":99},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":99},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":99},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":99},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":99},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":99},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":99},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":99},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":99},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":99},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":99},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":99},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":99},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":99},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":99},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":99},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":99},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":99},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":99},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":99},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":99},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":99},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":99},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":99},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":99},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":99},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":99},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":99},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":99},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":99},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":99},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":99},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":99},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":99},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":99},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":99},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":99},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":99},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":99},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":99},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":99},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":99},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":99},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":99},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":99},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":99},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":99},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":99},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":99},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":99},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":99},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":99},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":99},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":99},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":99},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":99},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":99},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":99},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":99},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":99},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":99},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":99},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":99},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":99},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":99},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":99},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":99},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":99},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":99},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":99},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":99},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":99},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":99},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":99},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":99},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":99},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":99},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":99},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":99},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":99},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":99},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":99},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":99},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":99},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":99},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":99},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":99},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":99},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":99},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":99},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":99},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":99},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":99},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":99},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":99},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":99},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":99},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":99},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":99},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":99},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":99},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":99},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":99},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":99},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":99},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":99},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":99},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":99},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":99},{"version":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":99},{"version":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":99},{"version":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":99},{"version":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":99},{"version":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":99},{"version":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":99},{"version":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":99},{"version":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":99},{"version":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":99},{"version":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":99},{"version":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":99},{"version":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":99},{"version":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":99},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":99},{"version":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":99},{"version":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":99},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":99},{"version":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":99},{"version":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":99},{"version":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":99},{"version":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":99},{"version":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":99},{"version":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":99},{"version":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":99},{"version":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":99},{"version":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":99},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":99},{"version":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":99},{"version":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":99},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":99},{"version":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":99},{"version":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":99},{"version":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":99},{"version":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":99},{"version":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":99},{"version":"ab012885c91b77e85a32d6dac2a3758f81f0cdac5127745d3d23432ccbb95fc0","impliedFormat":99},{"version":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":99},{"version":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":99},{"version":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":99},{"version":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":99},{"version":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":99},{"version":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":99},{"version":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":99},{"version":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":99},{"version":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":99},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"9ea2b1188610ac5bfd0bab8c5ce454ec09d402e0a7c7a8c52fac937783fea36f","impliedFormat":99},{"version":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":99},{"version":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":99},{"version":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":99},{"version":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":99},{"version":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":99},{"version":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":99},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":99},{"version":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":99},{"version":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":99},{"version":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":99},{"version":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":99},{"version":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":99},{"version":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":99},{"version":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":99},{"version":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":99},{"version":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":99},{"version":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":99},{"version":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":99},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":99},{"version":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":99},{"version":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":99},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":99},{"version":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":99},{"version":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":99},{"version":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":99},{"version":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":99},{"version":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":99},{"version":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":99},{"version":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":99},{"version":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":99},{"version":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":99},{"version":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":99},{"version":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":99},{"version":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":99},{"version":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":99},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":99},{"version":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":99},{"version":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":99},{"version":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":99},{"version":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":99},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":99},{"version":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":99},{"version":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":99},{"version":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":99},{"version":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":99},{"version":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":99},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"361685e1b13e75583717b22dfec48705646a4a465fc8eaa4c14660ef321f722d","impliedFormat":99},{"version":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":99},{"version":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":99},{"version":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":99},{"version":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":99},{"version":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":99},{"version":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":99},{"version":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":99},{"version":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":99},{"version":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":99},{"version":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":99},{"version":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":99},{"version":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":99},{"version":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":99},{"version":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":99},{"version":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":99},{"version":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":99},{"version":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":99},{"version":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":99},{"version":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":99},{"version":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":99},{"version":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":99},{"version":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":99},{"version":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":99},{"version":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":99},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"2f3ee083529edd701ea0d830dac5099770afac93b436814d16cb4425983c0e09","impliedFormat":99},{"version":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":99},{"version":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":99},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":99},{"version":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":99},{"version":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":99},{"version":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":99},{"version":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":99},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":99},{"version":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":99},{"version":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":99},{"version":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":99},{"version":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":99},{"version":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":99},{"version":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":99},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":99},{"version":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":99},{"version":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":99},{"version":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":99},{"version":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":99},{"version":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":99},{"version":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":99},{"version":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":99},{"version":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":99},{"version":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":99},{"version":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":99},{"version":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":99},{"version":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":99},{"version":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":99},{"version":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":99},{"version":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":99},{"version":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":99},{"version":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":99},{"version":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":99},{"version":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":99},{"version":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":99},{"version":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":99},{"version":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":99},{"version":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":99},{"version":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":99},{"version":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":99},{"version":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":99},{"version":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":99},{"version":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":99},{"version":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":99},{"version":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":99},{"version":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":99},{"version":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":99},{"version":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":99},{"version":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":99},{"version":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":99},{"version":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":99},{"version":"2fbf67aee625a97a9e16a8afed392687ac00a65e62b325a0b162dd35c546e013","signature":"bdb5216b0543bc930a522a44fb5d0aa5543ff1bb96b7691d4eb3c1fbe3d72db9","impliedFormat":99},{"version":"a5f6790e6a665106689b9e8002325af896f998b952e4f921211377a18486ad6d","impliedFormat":99},{"version":"d1e91aab87ce77300dee6b313016ab9c9fd5dc09c90c3addae6c49d9aafdd48e","impliedFormat":99},{"version":"615dbc206e24cb2a1a1e8c64fe1935ca38fb4b6df1b8ff4c9e3cc5627a22b51e","impliedFormat":99},{"version":"b3e4bab9b85fda13110141f0f8fd3f206ceba4ecf98707e35604df4f0747eea8","impliedFormat":99},{"version":"ab6993a5648ac4c15f42e5bb63c827bc0421ef5b12e4da4e5ec4154c0375258a","impliedFormat":99},{"version":"15fd6d0d064f2ce287af6ba467006d4e33e1fe6c8122b8199232421fac57c7c3","impliedFormat":99},{"version":"11e798d729f260243f71129017c4e15e5ab72a2ba583ed885262e1d71f51a236","impliedFormat":99},{"version":"069e2b2cb21346ac8e6ae696579f88ad9af324948aed8b5c5250db198cd70098","impliedFormat":99},{"version":"32c4d13096ab2f3fc9e420996f0ba9eed018001c4e3f7f502367af6add5ee211","impliedFormat":99},{"version":"2bc5dd5c7c30908ad4505e5a9b650a2c7bf44d302b6dad241b7645133a1f254d","impliedFormat":99},{"version":"9d8edb0a08a2d7f86d57f733b3cf4ea60049e29cf8f59a2d3d6e30d7afeee5bf","affectsGlobalScope":true,"impliedFormat":99},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":99},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":99},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":99},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":99},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":99},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":99},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":99},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":99},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":99},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":99},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":99},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":99},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":99},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":99},{"version":"37ebb37fdfb5ba642138f4caf66dcd65c16a380b054553cf10110e21f570e527","impliedFormat":99},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":99},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":99},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":99},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":99},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":99},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":99},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":99},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":99},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":99},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":99},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":99},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":99},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":99},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":99},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":99},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":99},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":99},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":99},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":99},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":99},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":99},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":99},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":99},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":99},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":99},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":99},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":99},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":99},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":99},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":99},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":99},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":99},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":99},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":99},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":99},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":99},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":99},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":99},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":99},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":99},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":99},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":99},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":99},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":99},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":99},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":99},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":99},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":99},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":99},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":99},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":99},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":99},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":99},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":99},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":99},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":99},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":99},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":99},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":99},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":99},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":99},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":99},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":99},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":99},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":99},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":99},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":99},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":99},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":99},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":99},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":99},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":99},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":99},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":99},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":99},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":99},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":99},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":99},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":99},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":99},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":99},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":99},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":99},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":99},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":99},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":99},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":99},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":99},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":99},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":99},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":99},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":99},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":99},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":99},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":99},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":99},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":99},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":99},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":99},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":99},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":99},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":99},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":99},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":99},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":99},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":99},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":99},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":99},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":99},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":99},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":99},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":99},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":99},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":99},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":99},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":99},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":99},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":99},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":99},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":99},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":99},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":99},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":99},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":99},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":99},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":99},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":99},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":99},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":99},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":99},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":99},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":99},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":99},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":99},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":99},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":99},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":99},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":99},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":99},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":99},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":99},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":99},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":99},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":99},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":99},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":99},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":99},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":99},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":99},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":99},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":99},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":99},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":99},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":99},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":99},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":99},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":99},{"version":"e45c27159f906b280b931c5f6d60933cee4af26704662790f74c190219e21922","impliedFormat":99},{"version":"d83862bfac5368d613e9171c45333f6cc754a25e15c155855f3da97bfb673956","impliedFormat":99},{"version":"a5e1beb9e64a11772ad82cf21d969ad0ceff38bc18e879fd7173683d2e86e333","impliedFormat":99},{"version":"103c63f7abbefd916b6aa2b17d302e8574a017f66142ea75cfa2a952cddcd64a","impliedFormat":99},{"version":"4881c5d85d8d372b879b4b8a6fa7dd85c82e7ec8ae2b7e34f1863fac8e343078","signature":"977cd72d913d528341afeb6db5e8e03da0140aa7dfebd48f4a5a4ec78205518f","impliedFormat":99},{"version":"c6e551994f3b7f515ec34249256e3a302c277abeb911e2811cd84fb93583856e","signature":"4660318f1fbea19e845217e9d537127570826d886e728d9352a998abea06138f","impliedFormat":99},{"version":"7e3a48efc1406b010a647b25d5c42302fb66a2dac2e50b582d3d1f3d918986aa","signature":"a112587eb1b994f0ad61d82ef1be73c9c678913f61a717a6a71a30dccc2fbd8f","impliedFormat":99}],"root":[950,[1138,1140]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"../esm","preserveConstEnums":true,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[477,1],[478,1],[479,2],[487,3],[488,1],[489,1],[492,4],[486,1],[491,5],[490,1],[537,6],[538,6],[534,7],[539,8],[531,9],[536,10],[535,7],[532,11],[533,12],[508,13],[509,14],[510,14],[530,15],[503,16],[504,14],[511,17],[528,18],[527,19],[525,20],[513,21],[522,18],[514,21],[524,21],[505,22],[516,21],[526,21],[517,18],[506,21],[520,23],[515,21],[518,21],[519,21],[523,18],[521,21],[507,21],[512,14],[529,1],[502,24],[500,25],[499,1],[501,25],[480,26],[481,27],[482,27],[483,1],[485,28],[484,1],[584,1],[542,1],[573,29],[572,30],[560,31],[559,32],[562,33],[561,32],[571,34],[570,35],[575,36],[574,32],[544,37],[563,1],[546,38],[558,39],[557,35],[556,40],[555,1],[554,35],[549,41],[548,35],[547,42],[551,43],[550,30],[569,44],[568,45],[553,46],[552,30],[565,47],[564,48],[545,49],[567,50],[566,51],[541,51],[581,52],[576,35],[578,53],[577,35],[580,54],[579,32],[320,1],[583,55],[582,30],[493,56],[586,57],[497,58],[543,1],[319,1],[494,1],[498,59],[476,60],[475,61],[540,62],[585,56],[496,63],[495,1],[343,64],[322,64],[378,1],[358,1],[389,1],[321,1],[369,65],[370,66],[336,67],[323,1],[332,1],[333,68],[334,1],[335,69],[331,70],[324,1],[328,1],[353,70],[418,71],[351,72],[339,73],[365,74],[341,1],[346,1],[342,75],[337,70],[338,76],[340,76],[344,1],[345,1],[368,77],[357,78],[355,1],[356,79],[371,80],[367,81],[384,82],[379,83],[387,84],[388,85],[415,1],[359,86],[375,1],[364,87],[424,1],[361,70],[452,88],[362,89],[399,90],[398,1],[405,91],[404,1],[407,92],[406,1],[409,93],[408,1],[401,94],[400,1],[403,95],[402,95],[453,96],[413,97],[425,98],[426,99],[454,100],[330,101],[327,102],[326,1],[377,103],[390,104],[412,1],[393,105],[397,1],[363,106],[380,107],[392,108],[419,109],[422,110],[382,111],[420,112],[385,107],[386,113],[423,112],[416,114],[417,1],[394,115],[366,1],[347,1],[381,116],[383,1],[373,1],[421,1],[449,117],[396,118],[376,70],[350,119],[349,1],[450,120],[348,1],[451,121],[354,122],[352,1],[325,1],[391,123],[414,124],[329,1],[411,125],[360,1],[395,126],[410,1],[372,1],[374,127],[472,128],[447,1],[448,129],[438,129],[437,130],[429,130],[428,130],[427,129],[439,131],[463,132],[462,133],[466,134],[465,135],[467,129],[446,136],[443,137],[470,138],[468,129],[464,139],[471,129],[460,140],[459,141],[461,129],[474,142],[430,143],[440,129],[473,1],[431,129],[432,129],[444,129],[433,129],[441,144],[469,1],[445,129],[434,129],[442,129],[435,129],[436,129],[456,145],[455,146],[457,147],[458,148],[753,1],[757,149],[756,150],[755,151],[754,152],[695,153],[694,154],[690,155],[691,156],[689,157],[678,1],[698,158],[696,157],[700,159],[699,160],[697,161],[702,162],[701,157],[704,163],[703,164],[693,165],[692,157],[688,157],[705,166],[682,167],[675,168],[680,169],[672,170],[668,1],[679,171],[686,1],[687,172],[674,173],[683,1],[670,1],[681,174],[666,1],[676,175],[671,176],[669,177],[673,1],[677,1],[684,178],[667,1],[685,1],[639,1],[820,1],[828,179],[834,180],[833,181],[822,182],[836,183],[823,184],[838,185],[832,186],[824,187],[829,188],[837,189],[835,190],[827,191],[826,192],[821,1],[831,193],[830,194],[825,1],[616,195],[615,1],[770,196],[769,1],[85,197],[86,197],[87,198],[82,199],[88,200],[89,201],[90,202],[77,1],[80,203],[78,1],[79,1],[91,204],[92,205],[93,206],[94,207],[95,208],[96,209],[97,209],[99,1],[98,210],[100,211],[101,212],[102,213],[84,214],[81,1],[103,215],[104,216],[105,217],[138,218],[106,219],[107,220],[108,221],[109,222],[110,223],[111,224],[112,225],[113,226],[114,227],[115,228],[116,228],[117,229],[118,1],[119,1],[120,230],[122,231],[121,232],[123,233],[124,234],[125,235],[126,236],[127,237],[128,238],[129,239],[130,240],[131,241],[132,242],[133,243],[134,244],[135,245],[136,246],[137,247],[889,248],[890,249],[865,250],[868,250],[887,248],[888,248],[878,248],[877,251],[875,248],[870,248],[883,248],[881,248],[885,248],[869,248],[882,248],[886,248],[871,248],[872,248],[884,248],[866,248],[873,248],[874,248],[876,248],[880,248],[891,252],[879,248],[867,248],[904,253],[903,1],[898,252],[900,254],[899,252],[892,252],[893,252],[895,252],[897,252],[901,254],[902,254],[894,254],[896,254],[797,255],[798,256],[813,257],[808,1],[810,258],[815,259],[814,260],[811,261],[809,1],[812,262],[665,1],[74,1],[600,1],[839,263],[819,1],[840,264],[622,265],[962,1],[963,1],[964,1],[965,1],[966,1],[967,1],[968,1],[969,1],[970,1],[971,1],[972,1],[973,1],[974,1],[976,266],[977,1],[975,1],[978,1],[979,1],[980,1],[981,1],[982,1],[983,1],[984,1],[985,1],[986,1],[987,1],[988,1],[989,1],[990,1],[991,1],[992,1],[993,1],[994,1],[995,1],[996,1],[997,1],[998,1],[999,1],[1000,1],[1001,1],[1002,1],[1003,1],[1004,1],[1005,1],[1006,1],[1007,1],[1008,1],[1009,1],[1010,1],[1011,1],[1012,1],[1013,1],[1014,1],[1015,1],[1016,1],[1017,1],[1018,1],[1019,1],[1020,1],[1021,1],[1022,1],[1023,1],[1024,1],[1025,1],[1026,1],[1027,1],[1028,1],[1029,1],[1030,1],[1031,1],[1032,1],[1033,1],[1034,1],[1035,1],[1036,1],[1037,1],[1038,1],[1039,1],[1040,1],[1041,1],[1042,1],[1043,1],[1044,1],[1134,267],[1045,1],[1046,1],[1047,1],[1048,1],[1049,1],[1050,1],[1051,1],[1052,1],[1053,1],[1054,1],[1055,1],[1056,1],[1057,1],[1058,1],[1059,1],[1060,1],[1061,1],[1062,1],[1063,1],[1064,1],[1065,1],[1066,1],[1067,1],[1068,1],[1069,1],[1070,1],[1071,1],[1072,1],[1073,1],[1074,1],[1075,1],[1076,1],[1077,1],[1078,1],[1079,1],[1080,1],[1081,1],[1082,1],[1083,1],[1084,1],[1085,1],[1086,1],[1087,1],[1088,1],[1089,1],[1090,1],[1091,1],[1092,1],[1093,1],[1094,1],[1095,1],[1096,1],[1097,1],[1098,1],[1099,1],[1100,1],[1101,1],[1102,1],[1103,1],[1104,1],[1105,1],[1106,1],[1107,1],[1108,1],[1109,1],[1110,1],[1111,1],[1112,1],[1113,1],[1114,1],[1115,1],[1116,1],[1117,1],[1118,1],[1119,1],[1120,1],[1121,1],[1122,1],[1123,1],[1124,1],[1125,1],[1126,1],[1127,1],[1128,1],[1129,1],[1130,1],[1131,1],[1132,1],[1133,1],[656,268],[657,269],[806,270],[807,271],[816,272],[817,273],[818,274],[799,275],[800,275],[718,1],[724,276],[722,1],[723,1],[796,1],[762,1],[152,277],[162,278],[151,277],[172,279],[143,280],[142,281],[171,282],[165,283],[170,284],[145,285],[159,286],[144,287],[168,288],[140,289],[139,282],[169,290],[141,291],[146,292],[147,1],[150,292],[75,1],[173,293],[163,294],[154,295],[155,296],[157,297],[153,298],[156,299],[166,282],[148,300],[149,301],[158,302],[76,303],[161,294],[160,292],[164,1],[167,304],[214,305],[191,306],[202,307],[189,308],[203,303],[212,309],[180,310],[181,311],[179,281],[211,282],[206,312],[210,313],[183,314],[199,315],[182,316],[209,317],[177,318],[178,312],[184,319],[185,1],[190,320],[188,319],[175,321],[213,322],[204,323],[194,324],[193,319],[195,325],[197,326],[192,327],[196,328],[207,282],[186,329],[187,330],[198,331],[176,303],[201,332],[200,319],[205,1],[174,1],[208,333],[297,334],[296,335],[224,336],[221,1],[225,337],[229,338],[218,339],[228,340],[235,341],[298,342],[73,1],[216,1],[223,343],[219,344],[217,233],[227,345],[215,346],[226,347],[220,348],[237,349],[259,350],[248,351],[238,352],[245,353],[236,354],[246,1],[244,355],[240,356],[241,357],[239,358],[247,359],[222,360],[255,361],[252,362],[253,363],[254,364],[256,365],[262,366],[266,367],[265,368],[263,362],[264,362],[257,369],[260,370],[258,371],[261,372],[250,373],[234,374],[249,375],[233,376],[232,377],[251,378],[231,379],[269,380],[267,362],[268,381],[270,362],[274,382],[272,383],[273,384],[275,385],[278,386],[277,387],[280,388],[279,389],[283,390],[281,391],[282,392],[276,393],[271,394],[284,393],[285,395],[295,396],[286,389],[287,362],[242,397],[243,398],[230,1],[288,399],[289,400],[292,401],[291,402],[293,403],[294,404],[290,405],[604,1],[854,406],[841,1],[842,1],[843,1],[844,1],[853,407],[845,1],[846,1],[847,1],[848,1],[849,1],[850,1],[851,1],[852,408],[618,1],[855,409],[859,1],[805,410],[803,411],[801,412],[802,413],[804,414],[641,415],[652,416],[651,416],[653,417],[654,418],[655,419],[650,420],[643,1],[642,1],[649,421],[644,422],[646,423],[647,424],[645,424],[648,425],[640,426],[912,1],[69,1],[70,1],[12,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[23,1],[24,1],[4,1],[25,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[58,1],[57,1],[59,1],[60,1],[10,1],[61,1],[62,1],[63,1],[11,1],[64,1],[65,1],[66,1],[67,1],[68,1],[1,1],[83,293],[795,305],[752,427],[744,428],[751,429],[746,1],[747,1],[745,430],[748,431],[739,1],[740,1],[741,427],[743,432],[749,1],[750,433],[742,434],[950,435],[1139,436],[1138,437],[1140,438],[307,439],[308,440],[309,441],[310,1],[311,442],[312,441],[313,441],[314,443],[315,440],[316,441],[590,444],[591,1],[592,1],[593,445],[942,446],[594,447],[72,1],[595,1],[304,448],[596,449],[597,450],[598,451],[299,452],[599,1],[601,453],[602,440],[603,1],[605,454],[606,455],[607,1],[609,456],[610,443],[611,440],[612,440],[613,445],[614,445],[617,457],[948,1],[619,458],[620,445],[621,445],[623,459],[624,441],[625,440],[626,460],[627,440],[628,440],[629,461],[630,462],[631,440],[632,443],[633,443],[634,440],[635,443],[636,443],[637,443],[638,445],[658,463],[659,440],[660,464],[661,440],[662,443],[306,465],[663,440],[664,441],[706,466],[707,440],[708,440],[709,1],[710,440],[711,443],[589,467],[318,444],[712,443],[713,1],[714,1],[715,468],[716,445],[717,1],[949,469],[719,470],[720,1],[721,451],[725,471],[726,440],[728,472],[734,1],[729,1],[730,1],[731,444],[608,1],[732,441],[733,441],[925,440],[735,1],[736,473],[737,474],[794,440],[738,475],[587,443],[588,445],[758,476],[759,440],[760,1],[761,1],[727,477],[763,478],[764,440],[765,1],[766,1],[767,442],[768,479],[771,480],[772,1],[773,1],[774,441],[775,441],[776,481],[777,1],[778,440],[779,442],[781,440],[780,440],[782,1],[783,443],[784,1],[785,1],[786,440],[787,1],[788,451],[317,1],[790,482],[302,483],[791,484],[792,485],[793,440],[856,486],[857,1],[858,487],[789,488],[860,489],[943,440],[861,445],[862,490],[863,442],[864,475],[905,250],[947,491],[303,473],[946,492],[906,1],[945,440],[907,1],[908,485],[909,1],[910,443],[911,440],[913,493],[917,442],[941,494],[914,1],[915,440],[916,1],[918,440],[919,440],[920,440],[921,1],[301,495],[944,475],[300,1],[922,440],[71,1],[923,440],[924,496],[305,497],[926,498],[927,442],[928,468],[929,441],[930,1],[931,445],[932,441],[933,1],[934,499],[935,440],[936,440],[937,440],[938,440],[939,440],[940,440],[958,446],[956,446],[952,446],[1135,500],[959,446],[1137,501],[953,446],[954,1],[957,446],[1136,446],[960,446],[955,502],[961,446],[951,1]],"latestChangedDtsFile":"../esm/worker.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/api.d.ts b/packages/api/.tshy-build/commonjs/api.d.ts new file mode 100644 index 0000000000..17875cde59 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/api.d.ts @@ -0,0 +1,44 @@ +import type { Awaitable, GenerationResult, PromptScriptRunOptions, Resource } from "@genaiscript/core"; +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export declare function run( +/** + * The script identifier or full file path. + */ +scriptId: string, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files?: string | string[], +/** + * GenAIScript generation options. + */ +options?: Partial & { + /** + * Environment variables to use for the operation. + */ + envVars?: Record; + /** + * The signal to use for aborting the operation. Terminates the worker thread. + */ + signal?: AbortSignal; + /** + * Handles messages + */ + onMessage?: (data: { + type: "resourceChange"; + } & Resource, postMessage: (data: any) => void) => Awaitable; + /** + * Enable client language model as parent. + */ + parentLanguageModel?: boolean; +}): Promise; +//# sourceMappingURL=api.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/api.d.ts.map b/packages/api/.tshy-build/commonjs/api.d.ts.map new file mode 100644 index 0000000000..d086e59497 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/api.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAe3B;;;;;;;;;GASG;AACH,wBAAsB,GAAG;AACvB;;GAEG;AACH,QAAQ,EAAE,MAAM;AAChB;;GAEG;AACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;AACzB;;GAEG;AACH,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAG,QAAQ,EAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,gBAAgB,CAAC,CAkD3B"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/api.js b/packages/api/.tshy-build/commonjs/api.js new file mode 100644 index 0000000000..2aec18c290 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/api.js @@ -0,0 +1,95 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.run = run; +const node_worker_threads_1 = require("node:worker_threads"); +const core_1 = require("@genaiscript/core"); +const debug_1 = __importDefault(require("debug")); +const node_path_1 = require("node:path"); +const dbg = (0, debug_1.default)("genaiscript:api"); +const { __dirname } = typeof module !== "undefined" && module.filename + ? (0, core_1.getModulePaths)(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + (0, core_1.getModulePaths)(import.meta); +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +async function run( +/** + * The script identifier or full file path. + */ +scriptId, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files, +/** + * GenAIScript generation options. + */ +options) { + if (!scriptId) + throw new Error("scriptId is required"); + dbg(`run ${scriptId}`); + // eslint-disable-next-line no-param-reassign + if (typeof files === "string") + files = [files]; + const { signal, onMessage, ...rest } = options || {}; + const workerData = { + type: "run", + scriptId, + files: files || [], + options: rest, + }; + dbg(`__dirname: %s`, __dirname); + const sidebyside = await (0, core_1.tryStat)((0, node_path_1.join)(__dirname, "worker.js")); + const workerJs = sidebyside + ? (0, node_path_1.join)(__dirname, "worker.js") + : (0, node_path_1.join)((0, node_path_1.dirname)(__dirname), "dist", "esm", "worker.js"); + dbg(`start ${workerJs}`); + const worker = new node_worker_threads_1.Worker(workerJs, { workerData, name: options?.label }); + return new Promise((resolve, reject) => { + const abort = () => { + if (worker) { + dbg(`abort`); + reject(new Error("aborted")); // fail early + worker.terminate(); // don't wait for the worker to finish + } + }; + signal?.addEventListener("abort", abort); + worker.on("message", async (res) => { + const type = res?.type; + dbg(type); + if (type === "run") { + signal?.removeEventListener("abort", abort); + resolve(res.result); + } + else if (onMessage) { + await onMessage(res, (data) => { + dbg(`postMessage %O`, data); + worker.postMessage(data); + }); + } + else { + dbg(`unknown message type ${type}`); + } + }); + worker.on("error", (reason) => { + dbg(`error ${reason}`); + signal?.removeEventListener("abort", abort); + reject(reason); + }); + }); +} +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/api.js.map b/packages/api/.tshy-build/commonjs/api.js.map new file mode 100644 index 0000000000..6f84480da7 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/index.d.ts b/packages/api/.tshy-build/commonjs/index.d.ts new file mode 100644 index 0000000000..90b799fe3d --- /dev/null +++ b/packages/api/.tshy-build/commonjs/index.d.ts @@ -0,0 +1,3 @@ +export * from "./api.js"; +export * from "./run.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/index.d.ts.map b/packages/api/.tshy-build/commonjs/index.d.ts.map new file mode 100644 index 0000000000..597d6db09d --- /dev/null +++ b/packages/api/.tshy-build/commonjs/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/index.js b/packages/api/.tshy-build/commonjs/index.js new file mode 100644 index 0000000000..e8d4072899 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/index.js @@ -0,0 +1,22 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./api.js"), exports); +__exportStar(require("./run.js"), exports); +// do not import worker here, it will cause circular dependency issues +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/index.js.map b/packages/api/.tshy-build/commonjs/index.js.map new file mode 100644 index 0000000000..42642552ad --- /dev/null +++ b/packages/api/.tshy-build/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;AAElC,2CAAyB;AACzB,2CAAyB;AACzB,sEAAsE"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/run.d.ts b/packages/api/.tshy-build/commonjs/run.d.ts new file mode 100644 index 0000000000..3bb6e3ac5e --- /dev/null +++ b/packages/api/.tshy-build/commonjs/run.d.ts @@ -0,0 +1,70 @@ +import type { CancellationOptions, ChatCompletionsProgressReport, GenerationResult, PromptScriptRunOptions, TraceOptions } from "@genaiscript/core"; +import { MarkdownTrace } from "@genaiscript/core"; +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export declare function runScriptInternal(scriptId: string, files: string[], options: Partial & TraceOptions & CancellationOptions & { + runId?: string; + runOutputTrace?: MarkdownTrace; + cli?: boolean; + infoCb?: (partialResponse: { + text: string; + }) => void; + partialCb?: (progress: ChatCompletionsProgressReport) => void; +}): Promise<{ + exitCode: number; + result?: GenerationResult; +}>; +//# sourceMappingURL=run.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/run.d.ts.map b/packages/api/.tshy-build/commonjs/run.d.ts.map new file mode 100644 index 0000000000..3a87e964c5 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/run.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,6BAA6B,EAE7B,gBAAgB,EAEhB,sBAAsB,EAEtB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EA2BL,aAAa,EA8Dd,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,YAAY,GACZ,mBAAmB,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAC/D,GACF,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAukB1D"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/run.js b/packages/api/.tshy-build/commonjs/run.js new file mode 100644 index 0000000000..5042b72457 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/run.js @@ -0,0 +1,599 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.runScriptInternal = runScriptInternal; +const node_path_1 = require("node:path"); +const promises_1 = require("node:fs/promises"); +const runtime_1 = require("@genaiscript/runtime"); +const core_1 = require("@genaiscript/core"); +const dbg = (0, core_1.genaiscriptDebug)("run"); +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +async function runScriptInternal(scriptId, files, options) { + dbg(`scriptid: %s`, scriptId); + const runId = options.runId || (0, core_1.generateId)(); + dbg(`run id: `, runId); + const runDir = options.out || (0, core_1.getRunDir)(scriptId, runId); + dbg(`run dir: `, runDir); + dbg(`files: %O`, files); + const cancellationToken = options.cancellationToken; + const { trace = new core_1.MarkdownTrace({ cancellationToken, dir: runDir }), runOutputTrace = new core_1.MarkdownTrace({ cancellationToken, dir: runDir }), infoCb, partialCb, } = options || {}; + const runtimeHost = (0, core_1.resolveRuntimeHost)(); + runtimeHost.clearModelAlias("script"); + let result; + let workspaceFiles = options.workspaceFiles || []; + const excludedFiles = options.excludedFiles || []; + const stream = !options.json; + const retries = (0, core_1.normalizeInt)(options.retry); + const retryDelay = (0, core_1.normalizeInt)(options.retryDelay) || core_1.OPENAI_MAX_RETRY_COUNT; + const maxDelay = (0, core_1.normalizeInt)(options.maxDelay) || core_1.OPENAI_MAX_RETRY_DELAY; + const maxRetryAfter = (0, core_1.normalizeInt)(options.maxRetryAfter) || core_1.OPENAI_MAX_RETRY_AFTER_DEFAULT; + const outTrace = options.outTrace; + const outOutput = options.outOutput; + const outAnnotations = options.outAnnotations; + const failOnErrors = options.failOnErrors; + const outChangelogs = options.outChangelogs; + const pullRequestComment = options.pullRequestComment; + const pullRequestDescription = options.pullRequestDescription; + const pullRequestReviews = options.pullRequestReviews; + const teamsMessage = options.teamsMessage; + const outData = options.outData; + const label = options.label; + const temperature = (0, core_1.normalizeFloat)(options.temperature); + const fallbackTools = options.fallbackTools; + const reasoningEffort = options.reasoningEffort; + const topP = (0, core_1.normalizeFloat)(options.topP); + const toolChoice = options.toolChoice; + const seed = (0, core_1.normalizeFloat)(options.seed); + const maxTokens = (0, core_1.normalizeInt)(options.maxTokens); + const maxToolCalls = (0, core_1.normalizeInt)(options.maxToolCalls); + const maxDataRepairs = (0, core_1.normalizeInt)(options.maxDataRepairs); + const cache = options.cacheName ?? options.cache; + const applyEdits = !!options.applyEdits; + const csvSeparator = options.csvSeparator || "\t"; + const removeOut = options.removeOut; + const jsSource = options.jsSource; + const logprobs = options.logprobs; + const topLogprobs = (0, core_1.normalizeInt)(options.topLogprobs); + const fenceFormat = options.fenceFormat; + (0, core_1.assert)(!!runDir); + if (options.json) + (0, core_1.overrideStdoutWithStdErr)(); + (0, core_1.applyModelOptions)(options, "cli"); + const fail = (msg, exitCode, url) => { + (0, core_1.logError)(url ? `${msg} (see ${url})` : msg); + trace?.error(msg); + return { exitCode, result }; + }; + (0, core_1.logInfo)(`genaiscript: ${scriptId}`); + dbg(`run id: %s`, runId); + dbg(`ci: %s`, core_1.isCI); + // manage out folder + if (removeOut) + await (0, core_1.rmDir)(runDir); + await (0, core_1.ensureDir)(runDir); + const toolFiles = []; + const resourceScript = await (0, core_1.tryResolveScript)(scriptId, { + trace, + cancellationToken, + }); + if (resourceScript) { + scriptId = resourceScript; + dbg(`resolved script file: %s`, scriptId); + toolFiles.push(scriptId); + } + else if (core_1.GENAI_ANY_REGEX.test(scriptId)) + toolFiles.push(scriptId); + const prj = await (0, core_1.buildProject)({ + toolFiles, + }); + if (jsSource) { + prj.scripts.push({ + id: scriptId, + ...(0, core_1.parsePromptScriptMeta)(jsSource), + jsSource, + }); + } + const script = prj.scripts.find((t) => t.id === scriptId || + (t.filename && core_1.GENAI_ANY_REGEX.test(scriptId) && (0, node_path_1.resolve)(t.filename) === (0, node_path_1.resolve)(scriptId))); + if (!script) { + dbg(`script id not found: %s`, scriptId); + dbg(`scripts: %O`, prj.scripts.map((s) => ({ id: s.id, filename: s.filename }))); + throw new Error(`script ${scriptId} not found`); + } + const outTraceFilename = options.runTrace === false || (core_1.isCI && !options.runTrace) || script.disableTrace + ? undefined + : await (0, core_1.setupTraceWriting)(trace, "trace", (0, node_path_1.join)(runDir, core_1.TRACE_FILENAME)); + const outputFilename = options.outputTrace === false || (core_1.isCI && !options.outputTrace) + ? undefined + : await (0, core_1.setupTraceWriting)(runOutputTrace, "output", (0, node_path_1.join)(runDir, core_1.OUTPUT_FILENAME), { + ignoreInner: true, + }); + if (outTrace && !/^false$/i.test(outTrace)) + await (0, core_1.setupTraceWriting)(trace, " trace", outTrace); + if (outOutput && !/^false$/i.test(outOutput)) { + await (0, core_1.setupTraceWriting)(runOutputTrace, " output", outOutput, { + ignoreInner: true, + }); + } + const applyGitIgnore = options.ignoreGitIgnore !== true && script.ignoreGitIgnore !== true; + dbg(`apply gitignore: ${applyGitIgnore}`); + const ignorer = applyGitIgnore ? await (0, core_1.createGitIgnorer)() : undefined; + const resolvedFiles = new Set(); + // move exclusions to excludedFiles + excludedFiles.push(...files + .filter((f) => core_1.NEGATIVE_GLOB_REGEX.test(f)) + .map((f) => f.replace(core_1.NEGATIVE_GLOB_REGEX, ""))); + files = files.filter((f) => !core_1.NEGATIVE_GLOB_REGEX.test(f)); + dbg(`files (remaining): %O`, files); + for (let arg of files) { + (0, core_1.checkCancelled)(cancellationToken); + dbg(`resolving ${arg}`); + const stat = await runtimeHost.statFile(arg); + if (stat?.type === "file") { + dbg(`file found %s`, arg); + if (!ignorer?.([arg])?.length) { + dbg(`ignored by gitignore`); + continue; + } + resolvedFiles.add((0, core_1.filePathOrUrlToWorkspaceFile)(arg)); + continue; + } + const uriArg = (0, core_1.uriTryParse)(arg); + if (uriArg) { + dbg(`parsed uri %o`, uriArg); + const resource = await (0, core_1.tryResolveResource)(arg, { + trace, + cancellationToken, + }); + if (!resource) + return fail(`resource ${arg} not found`, core_1.FILES_NOT_FOUND_ERROR_CODE); + dbg(`resolved %d files`, resource.files.length); + workspaceFiles.push(...resource.files); + continue; + } + if (stat?.type === "directory") { + arg = (0, node_path_1.join)(arg, "**", "*"); + dbg(`directory, updating to %s`, arg); + } + dbg(`expand ${arg} (apply .gitignore: ${applyGitIgnore})`); + const ffs = await runtimeHost.findFiles(arg, { + applyGitIgnore, + }); + if (!ffs?.length && arg.includes("*")) { + // edge case when gitignore dumps 1 file + return fail(`no files matching ${arg} under ${process.cwd()} (all files might have been ignored)`, core_1.FILES_NOT_FOUND_ERROR_CODE); + } + for (const file of ffs) { + resolvedFiles.add((0, core_1.filePathOrUrlToWorkspaceFile)(file)); + } + } + if (excludedFiles.length) { + for (const arg of excludedFiles) { + const ffs = await runtimeHost.findFiles(arg); + for (const f of ffs) { + dbg(`removing excluded file %s`, f); + resolvedFiles.delete((0, core_1.filePathOrUrlToWorkspaceFile)(f)); + } + } + } + // try reading stdin + const stdin = await (0, core_1.readStdIn)(); + if (stdin) { + dbg(`stdin: %s`, (0, core_1.ellipse)(stdin.content, 42)); + workspaceFiles.push(stdin); + } + const accept = script.accept || options.accept; + if (accept) { + dbg(`accept: %s`, accept); + const exts = accept + .split(",") + .map((s) => s.trim().replace(/^\*\./, ".")) + .filter((s) => !!s); + dbg(`extensions: %o`, exts); + for (const rf of resolvedFiles) { + if (!exts.some((ext) => rf.endsWith(ext))) + resolvedFiles.delete(rf); + } + workspaceFiles = workspaceFiles.filter(({ filename }) => exts.some((ext) => filename.endsWith(ext))); + dbg(`filtered files: %d %d`, resolvedFiles.size, workspaceFiles.length); + } + const reasoningEndMarker = (0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, core_1.REASONING_END_MARKER); + const reasoningStartMarker = (0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, core_1.REASONING_START_MARKER); + let tokenColor = 0; + let reasoningOutput = false; + runOutputTrace.addEventListener(core_1.TRACE_CHUNK, (ev) => { + const { progress, chunk } = ev; + if (progress) { + const { responseChunk, responseTokens, inner, reasoningChunk } = progress; + if (!core_1.isQuiet && + reasoningChunk !== undefined && + reasoningChunk !== null && + reasoningChunk !== "") { + if (!reasoningOutput) + core_1.stderr.write(reasoningStartMarker); + reasoningOutput = true; + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, reasoningChunk)); + } + if (responseChunk !== undefined && responseChunk !== null && responseChunk !== "") { + if (reasoningOutput) { + core_1.stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + if (stream) { + if (responseTokens && core_1.consoleColors) { + const colors = inner ? core_1.CONSOLE_TOKEN_INNER_COLORS : core_1.CONSOLE_TOKEN_COLORS; + for (const token of responseTokens) { + if (!isNaN(token.logprob)) { + const c = (0, core_1.wrapRgbColor)((0, core_1.logprobColor)(token), token.token); + core_1.stdout.write(c); + } + else { + tokenColor = (tokenColor + 1) % colors.length; + const c = colors[tokenColor]; + core_1.stdout.write((0, core_1.wrapColor)(c, token.token)); + } + } + } + else { + if (!inner) + core_1.stdout.write(responseChunk); + else { + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!core_1.isQuiet) { + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!core_1.isQuiet && chunk !== undefined && chunk !== null && chunk !== "") { + if (reasoningOutput) { + core_1.stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + core_1.stdout.write(chunk); + } + }); + const fragment = { + files: Array.from(resolvedFiles), + workspaceFiles, + }; + dbg(`files: %O\n workspace files: %O`, fragment.files, fragment.workspaceFiles.map((f) => f.filename)); + const vars = (0, core_1.parseOptionsVars)(options.vars, process.env); + dbg(`vars: %o`, Object.keys(vars)); + const stats = new core_1.GenerationStats(""); + const userState = {}; + try { + if (options.label) + trace.heading(2, options.label); + (0, core_1.applyScriptModelAliases)(script); + (0, core_1.logModelAliases)(); + const { info } = await (0, core_1.resolveModelConnectionInfo)(script, { + trace, + model: options.model, + defaultModel: core_1.LARGE_MODEL_ID, + token: true, + }); + if (info.error) { + trace.error(undefined, info.error); + return fail(info.error ?? "invalid model configuration", core_1.CONFIGURATION_ERROR_CODE, core_1.DOCS_CONFIGURATION_URL); + } + result = await (0, core_1.runTemplate)(prj, script, fragment, { + runId, + inner: false, + infoCb: (args) => { + const { text } = args; + if (text) { + if (!core_1.isQuiet) + (0, core_1.logInfo)(text); + infoCb?.(args); + } + }, + partialCb: (args) => { + runOutputTrace.chatProgress(args); + partialCb?.(args); + }, + label, + cache, + temperature, + reasoningEffort, + topP, + toolChoice, + seed, + cancellationToken, + maxTokens, + maxToolCalls, + maxDataRepairs, + model: info.model, + embeddingsModel: options.embeddingsModel, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + vars, + trace, + outputTrace: runOutputTrace, + fallbackTools, + logprobs, + topLogprobs, + fenceFormat, + runDir, + applyGitIgnore, + stats, + userState, + }); + } + catch (err) { + stats.log(); + if ((0, core_1.isCancelError)(err)) + return fail("user cancelled", core_1.USER_CANCELLED_ERROR_CODE); + (0, core_1.logError)(err); + return fail("runtime error", core_1.RUNTIME_ERROR_CODE); + } + dbg(`result: %s`, result.finishReason); + dbg(`annotations: %d`, result.annotations?.length); + await aggregateResults(scriptId, outTrace, stats, result); + await (0, core_1.traceAgentMemory)({ userState, trace }); + if (outAnnotations && result.annotations?.length) { + if ((0, core_1.isJSONLFilename)(outAnnotations)) + await (0, core_1.appendJSONL)(outAnnotations, result.annotations); + else { + await (0, core_1.writeText)(outAnnotations, core_1.CSV_REGEX.test(outAnnotations) + ? (0, core_1.diagnosticsToCSV)(result.annotations, csvSeparator) + : /\.ya?ml$/i.test(outAnnotations) + ? (0, core_1.YAMLStringify)(result.annotations) + : /\.sarif$/i.test(outAnnotations) + ? await (0, core_1.convertDiagnosticsToSARIF)(script, result.annotations) + : JSON.stringify(result.annotations, null, 2)); + } + } + if (outChangelogs && result.changelogs?.length) { + await (0, core_1.writeText)(outChangelogs, result.changelogs.join("\n")); + } + if (outData && result.frames?.length) { + if ((0, core_1.isJSONLFilename)(outData)) + await (0, core_1.appendJSONL)(outData, result.frames); + else + await (0, core_1.writeText)(outData, JSON.stringify(result.frames, null, 2)); + } + await (0, core_1.writeFileEdits)(result.fileEdits, { applyEdits, trace }); + const promptjson = result.messages?.length ? JSON.stringify(result.messages, null, 2) : undefined; + const jsonf = (0, node_path_1.join)(runDir, `res.json`); + const yamlf = (0, node_path_1.join)(runDir, `res.yaml`); + const mkfn = (ext) => jsonf.replace(/\.json$/i, ext); + const promptf = mkfn(".prompt.json"); + const outputjson = mkfn(".output.json"); + const outputyaml = mkfn(".output.yaml"); + const annotationf = result.annotations?.length ? mkfn(".annotations.csv") : undefined; + const sariff = result.annotations?.length ? mkfn(".sarif") : undefined; + const changelogf = result.changelogs?.length ? mkfn(".changelog.txt") : undefined; + await (0, core_1.writeText)(jsonf, JSON.stringify(result, null, 2)); + await (0, core_1.writeText)(yamlf, (0, core_1.YAMLStringify)(result)); + if (promptjson) + await (0, core_1.writeText)(promptf, promptjson); + if (result.json) { + await (0, core_1.writeText)(outputjson, JSON.stringify(result.json, null, 2)); + await (0, core_1.writeText)(outputyaml, (0, core_1.YAMLStringify)(result.json)); + } + if (result.schemas) { + for (const [sname, schema] of Object.entries(result.schemas)) { + await (0, core_1.writeText)((0, node_path_1.join)(runDir, `${sname.toLocaleLowerCase()}.schema.ts`), (0, core_1.JSONSchemaStringifyToTypeScript)(schema, { + typeName: (0, core_1.capitalize)(sname), + export: true, + })); + await (0, core_1.writeText)((0, node_path_1.join)(runDir, `${sname.toLocaleLowerCase()}.schema.json`), (0, core_1.JSONSchemaStringify)(schema)); + } + } + if (annotationf) { + await (0, core_1.writeText)(annotationf, `severity, filename, start, end, message\n` + + result.annotations + .map(({ severity, filename, range, message }) => `${severity}, ${filename}, ${range[0][0]}, ${range[1][0]}, ${message} `) + .join("\n")); + } + if (sariff) + await (0, core_1.writeText)(sariff, await (0, core_1.convertDiagnosticsToSARIF)(script, result.annotations)); + if (changelogf && result.changelogs?.length) { + await (0, core_1.writeText)(changelogf, result.changelogs.join("\n")); + } + for (const [filename, edits] of Object.entries(result.fileEdits || {})) { + const rel = (0, node_path_1.relative)(process.cwd(), filename); + const isAbsolutePath = (0, node_path_1.resolve)(rel) === rel; + if (!isAbsolutePath) + await (0, core_1.writeText)((0, node_path_1.join)(runDir, core_1.CLI_RUN_FILES_FOLDER, rel), edits.after); + } + if (options.json && result !== undefined) { + // needs to go to process.stdout + core_1.stdout.write(JSON.stringify(result, null, 2)); + } + let _ghInfo = undefined; + const resolveGitHubInfo = async () => { + if (!_ghInfo) { + _ghInfo = await (0, core_1.githubParseEnv)(process.env, { + resolveToken: true, + resolveIssue: true, + resolveCommit: true, + }); + } + return _ghInfo; + }; + let adoInfo = undefined; + if (teamsMessage && result.text) { + const ghInfo = await resolveGitHubInfo(); + const channelURL = process.env.GENAISCRIPT_TEAMS_CHANNEL_URL || process.env.TEAMS_CHANNEL_URL; + if (channelURL && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to post to Teams?", { + preview: result.text, + }))) { + await (0, core_1.microsoftTeamsChannelPostMessage)(channelURL, (0, core_1.prettifyMarkdown)(result.text), { + script, + info: ghInfo, + cancellationToken, + trace, + }); + } + } + if (pullRequestComment && result.text) { + dbg(`upsert pull request comment`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await (0, core_1.githubCreateIssueComment)(script, ghInfo, result.text, typeof pullRequestComment === "string" ? pullRequestComment : script.id, { cancellationToken, stats }); + } + else { + adoInfo = adoInfo ?? (await (0, core_1.azureDevOpsParseEnv)(process.env)); + if (adoInfo.collectionUri && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await (0, core_1.azureDevOpsCreateIssueComment)(script, adoInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestComment === "string" ? pullRequestComment : script.id); + } + else + (0, core_1.logError)("pull request comment: no pull request information found"); + } + } + if (pullRequestDescription && result.text) { + // github action or repo + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await (0, core_1.githubUpdatePullRequestDescription)(script, ghInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id, { cancellationToken }); + } + else { + // azure devops pipeline + adoInfo = adoInfo ?? (await (0, core_1.azureDevOpsParseEnv)(process.env)); + if (adoInfo.collectionUri && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await (0, core_1.azureDevOpsUpdatePullRequestDescription)(script, adoInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id); + } + else { + (0, core_1.logError)("pull request description: no pull request information found"); + } + } + } + if (pullRequestReviews && result.annotations?.length) { + dbg(`adding pull request reviews`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && ghInfo.issue) { + if (!ghInfo.commitSha) + dbg(`no commit sha found, skipping pull request reviews`); + else { + await (0, core_1.githubCreatePullRequestReviews)(script, ghInfo, result.annotations, { + cancellationToken, + }); + } + } + } + if (result.status === "success") + (0, core_1.logInfo)(`genaiscript: ${result.status}`); + else if (result.status === "cancelled") + (0, core_1.logWarn)(`genaiscript: ${result.status}`); + else + (0, core_1.logError)(`genaiscript: ${result.status}`); + stats.log(); + if (outTraceFilename) + (0, core_1.logVerbose)(` trace: ${outTraceFilename}`); + if (outputFilename) + (0, core_1.logVerbose)(` output: ${outputFilename}`); + if (result.status !== "success" && result.status !== "cancelled") { + const msg = (0, core_1.errorMessage)(result.error) ?? result.statusText ?? result.finishReason; + return fail(msg, core_1.RUNTIME_ERROR_CODE); + } + if (failOnErrors && result.annotations?.some((a) => a.severity === "error")) { + return fail("error annotations found", core_1.ANNOTATION_ERROR_CODE); + } + return { exitCode: 0, result }; +} +async function aggregateResults(scriptId, outTrace, stats, result) { + const statsDir = await (0, core_1.createStatsDir)(); + const statsFile = (0, node_path_1.join)(statsDir, "runs.csv"); + if (!(await (0, core_1.tryStat)(statsFile))) { + await (0, promises_1.writeFile)(statsFile, [ + "script", + "status", + "cost", + "total_tokens", + "prompt_tokens", + "completion_tokens", + "trace", + "version", + ].join(",") + "\n", { encoding: "utf-8" }); + } + const acc = stats.accumulatedUsage(); + await (0, promises_1.appendFile)(statsFile, [ + scriptId, + result.status, + stats.cost(), + acc.total_tokens, + acc.prompt_tokens, + acc.completion_tokens, + outTrace ? (0, node_path_1.basename)(outTrace) : "", + result.version, + ] + .map((s) => String(s)) + .join(",") + "\n", { encoding: "utf-8" }); +} +//# sourceMappingURL=run.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/run.js.map b/packages/api/.tshy-build/commonjs/run.js.map new file mode 100644 index 0000000000..1b38c6402d --- /dev/null +++ b/packages/api/.tshy-build/commonjs/run.js.map @@ -0,0 +1 @@ +{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/worker.d.ts b/packages/api/.tshy-build/commonjs/worker.d.ts new file mode 100644 index 0000000000..f1b4f8c638 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/worker.d.ts @@ -0,0 +1,16 @@ +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export declare function worker(): Promise; +//# sourceMappingURL=worker.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/worker.d.ts.map b/packages/api/.tshy-build/commonjs/worker.d.ts.map new file mode 100644 index 0000000000..2f60b00e1c --- /dev/null +++ b/packages/api/.tshy-build/commonjs/worker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC5C"} \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/worker.js b/packages/api/.tshy-build/commonjs/worker.js new file mode 100644 index 0000000000..fb17b490fc --- /dev/null +++ b/packages/api/.tshy-build/commonjs/worker.js @@ -0,0 +1,57 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.worker = worker; +const node_worker_threads_1 = require("node:worker_threads"); +const es_toolkit_1 = require("es-toolkit"); +const runtime_1 = require("@genaiscript/runtime"); +const core_1 = require("@genaiscript/core"); +const run_js_1 = require("./run.js"); +const dbg = (0, core_1.genaiscriptDebug)("worker"); +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +async function worker() { + (0, core_1.overrideStdoutWithStdErr)(); + (0, core_1.installGlobals)(); + const { type, ...data } = node_worker_threads_1.workerData; + dbg(`worker data: %O`, data); + await runtime_1.NodeHost.install(undefined, undefined); // Install NodeHost with environment options + const runtimeHost = (0, core_1.resolveRuntimeHost)(); + runtimeHost.resources.addEventListener(core_1.RESOURCE_CHANGE, (ev) => { + const cev = ev; + const { reference, content } = cev.detail; + node_worker_threads_1.parentPort.postMessage({ + type: core_1.RESOURCE_CHANGE, + reference, + content, + }); + }); + switch (type) { + case "run": { + const { scriptId, files, options } = data; + if (options.parentLanguageModel) { + dbg(`using parent language model`); + runtimeHost.clientLanguageModel = (0, core_1.createWorkerLanguageModel)(); + } + const { result } = await (0, run_js_1.runScriptInternal)(scriptId, files, options); + await (0, es_toolkit_1.delay)(0); // flush streams + node_worker_threads_1.parentPort.postMessage({ type: "run", result }); + break; + } + } +} +worker(); +//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/commonjs/worker.js.map b/packages/api/.tshy-build/commonjs/worker.js.map new file mode 100644 index 0000000000..6490d0e563 --- /dev/null +++ b/packages/api/.tshy-build/commonjs/worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA+BlC,wBAqCC;AAlED,6DAA6D;AAC7D,2CAAmC;AACnC,kDAAgD;AAChD,4CAO2B;AAE3B,qCAA6C;AAC7C,MAAM,GAAG,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,MAAM;IAC1B,IAAA,+BAAwB,GAAE,CAAC;IAC3B,IAAA,qBAAc,GAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,gCAEzB,CAAC;IACF,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,kBAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;IAE1F,MAAM,WAAW,GAAG,IAAA,yBAAkB,GAAE,CAAA;IACxC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,sBAAe,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,EAA2B,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1C,gCAAU,CAAC,WAAW,CAAC;YACrB,IAAI,EAAE,sBAAe;YACrB,SAAS;YACT,OAAO;SAC8B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAIpC,CAAC;YACF,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBACnC,WAAW,CAAC,mBAAmB,GAAG,IAAA,gCAAyB,GAAE,CAAC;YAChE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAiB,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAc,CAAC,CAAC;YAC5E,MAAM,IAAA,kBAAK,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAChC,gCAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/api.d.ts b/packages/api/.tshy-build/esm/api.d.ts new file mode 100644 index 0000000000..17875cde59 --- /dev/null +++ b/packages/api/.tshy-build/esm/api.d.ts @@ -0,0 +1,44 @@ +import type { Awaitable, GenerationResult, PromptScriptRunOptions, Resource } from "@genaiscript/core"; +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export declare function run( +/** + * The script identifier or full file path. + */ +scriptId: string, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files?: string | string[], +/** + * GenAIScript generation options. + */ +options?: Partial & { + /** + * Environment variables to use for the operation. + */ + envVars?: Record; + /** + * The signal to use for aborting the operation. Terminates the worker thread. + */ + signal?: AbortSignal; + /** + * Handles messages + */ + onMessage?: (data: { + type: "resourceChange"; + } & Resource, postMessage: (data: any) => void) => Awaitable; + /** + * Enable client language model as parent. + */ + parentLanguageModel?: boolean; +}): Promise; +//# sourceMappingURL=api.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/api.d.ts.map b/packages/api/.tshy-build/esm/api.d.ts.map new file mode 100644 index 0000000000..d086e59497 --- /dev/null +++ b/packages/api/.tshy-build/esm/api.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAe3B;;;;;;;;;GASG;AACH,wBAAsB,GAAG;AACvB;;GAEG;AACH,QAAQ,EAAE,MAAM;AAChB;;GAEG;AACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;AACzB;;GAEG;AACH,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAG,QAAQ,EAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,gBAAgB,CAAC,CAkD3B"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/api.js b/packages/api/.tshy-build/esm/api.js new file mode 100644 index 0000000000..1183e2a9f9 --- /dev/null +++ b/packages/api/.tshy-build/esm/api.js @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { Worker } from "node:worker_threads"; +import { getModulePaths, tryStat } from "@genaiscript/core"; +import debug from "debug"; +import { dirname, join } from "node:path"; +const dbg = debug("genaiscript:api"); +const { __dirname } = typeof module !== "undefined" && module.filename + ? getModulePaths(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + getModulePaths(import.meta); +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export async function run( +/** + * The script identifier or full file path. + */ +scriptId, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files, +/** + * GenAIScript generation options. + */ +options) { + if (!scriptId) + throw new Error("scriptId is required"); + dbg(`run ${scriptId}`); + // eslint-disable-next-line no-param-reassign + if (typeof files === "string") + files = [files]; + const { signal, onMessage, ...rest } = options || {}; + const workerData = { + type: "run", + scriptId, + files: files || [], + options: rest, + }; + dbg(`__dirname: %s`, __dirname); + const sidebyside = await tryStat(join(__dirname, "worker.js")); + const workerJs = sidebyside + ? join(__dirname, "worker.js") + : join(dirname(__dirname), "dist", "esm", "worker.js"); + dbg(`start ${workerJs}`); + const worker = new Worker(workerJs, { workerData, name: options?.label }); + return new Promise((resolve, reject) => { + const abort = () => { + if (worker) { + dbg(`abort`); + reject(new Error("aborted")); // fail early + worker.terminate(); // don't wait for the worker to finish + } + }; + signal?.addEventListener("abort", abort); + worker.on("message", async (res) => { + const type = res?.type; + dbg(type); + if (type === "run") { + signal?.removeEventListener("abort", abort); + resolve(res.result); + } + else if (onMessage) { + await onMessage(res, (data) => { + dbg(`postMessage %O`, data); + worker.postMessage(data); + }); + } + else { + dbg(`unknown message type ${type}`); + } + }); + worker.on("error", (reason) => { + dbg(`error ${reason}`); + signal?.removeEventListener("abort", abort); + reject(reason); + }); + }); +} +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/api.js.map b/packages/api/.tshy-build/esm/api.js.map new file mode 100644 index 0000000000..22e9fe421f --- /dev/null +++ b/packages/api/.tshy-build/esm/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/index.d.ts b/packages/api/.tshy-build/esm/index.d.ts new file mode 100644 index 0000000000..90b799fe3d --- /dev/null +++ b/packages/api/.tshy-build/esm/index.d.ts @@ -0,0 +1,3 @@ +export * from "./api.js"; +export * from "./run.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/index.d.ts.map b/packages/api/.tshy-build/esm/index.d.ts.map new file mode 100644 index 0000000000..597d6db09d --- /dev/null +++ b/packages/api/.tshy-build/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/index.js b/packages/api/.tshy-build/esm/index.js new file mode 100644 index 0000000000..1f280c2cdc --- /dev/null +++ b/packages/api/.tshy-build/esm/index.js @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export * from "./api.js"; +export * from "./run.js"; +// do not import worker here, it will cause circular dependency issues +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/index.js.map b/packages/api/.tshy-build/esm/index.js.map new file mode 100644 index 0000000000..e4f50ae3ba --- /dev/null +++ b/packages/api/.tshy-build/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,sEAAsE"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/run.d.ts b/packages/api/.tshy-build/esm/run.d.ts new file mode 100644 index 0000000000..3bb6e3ac5e --- /dev/null +++ b/packages/api/.tshy-build/esm/run.d.ts @@ -0,0 +1,70 @@ +import type { CancellationOptions, ChatCompletionsProgressReport, GenerationResult, PromptScriptRunOptions, TraceOptions } from "@genaiscript/core"; +import { MarkdownTrace } from "@genaiscript/core"; +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export declare function runScriptInternal(scriptId: string, files: string[], options: Partial & TraceOptions & CancellationOptions & { + runId?: string; + runOutputTrace?: MarkdownTrace; + cli?: boolean; + infoCb?: (partialResponse: { + text: string; + }) => void; + partialCb?: (progress: ChatCompletionsProgressReport) => void; +}): Promise<{ + exitCode: number; + result?: GenerationResult; +}>; +//# sourceMappingURL=run.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/run.d.ts.map b/packages/api/.tshy-build/esm/run.d.ts.map new file mode 100644 index 0000000000..3a87e964c5 --- /dev/null +++ b/packages/api/.tshy-build/esm/run.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,6BAA6B,EAE7B,gBAAgB,EAEhB,sBAAsB,EAEtB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EA2BL,aAAa,EA8Dd,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,YAAY,GACZ,mBAAmB,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAC/D,GACF,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAukB1D"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/run.js b/packages/api/.tshy-build/esm/run.js new file mode 100644 index 0000000000..46230afef3 --- /dev/null +++ b/packages/api/.tshy-build/esm/run.js @@ -0,0 +1,596 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolve, join, relative, basename } from "node:path"; +import { writeFile, appendFile } from "node:fs/promises"; +import { confirmOrSkipInCI } from "@genaiscript/runtime"; +import { buildProject, convertDiagnosticsToSARIF, setupTraceWriting, ANNOTATION_ERROR_CODE, CLI_RUN_FILES_FOLDER, CONFIGURATION_ERROR_CODE, CONSOLE_COLOR_DEBUG, CONSOLE_COLOR_REASONING, CONSOLE_TOKEN_COLORS, CONSOLE_TOKEN_INNER_COLORS, CSV_REGEX, DOCS_CONFIGURATION_URL, FILES_NOT_FOUND_ERROR_CODE, GENAI_ANY_REGEX, LARGE_MODEL_ID, NEGATIVE_GLOB_REGEX, OUTPUT_FILENAME, REASONING_END_MARKER, REASONING_START_MARKER, RUNTIME_ERROR_CODE, TRACE_CHUNK, TRACE_FILENAME, USER_CANCELLED_ERROR_CODE, GenerationStats, JSONSchemaStringify, JSONSchemaStringifyToTypeScript, MarkdownTrace, YAMLStringify, appendJSONL, applyModelOptions, applyScriptModelAliases, assert, azureDevOpsCreateIssueComment, azureDevOpsParseEnv, azureDevOpsUpdatePullRequestDescription, checkCancelled, consoleColors, createStatsDir, diagnosticsToCSV, ellipse, errorMessage, filePathOrUrlToWorkspaceFile, genaiscriptDebug, generateId, getRunDir, githubCreateIssueComment, githubCreatePullRequestReviews, githubParseEnv, githubUpdatePullRequestDescription, isCI, isCancelError, isJSONLFilename, isQuiet, logError, logInfo, logModelAliases, logVerbose, logWarn, logprobColor, microsoftTeamsChannelPostMessage, normalizeFloat, normalizeInt, overrideStdoutWithStdErr, parsePromptScriptMeta, prettifyMarkdown, resolveModelConnectionInfo, runTemplate, stderr, stdout, traceAgentMemory, tryResolveResource, tryResolveScript, uriTryParse, writeFileEdits, writeText, wrapColor, wrapRgbColor, capitalize, readStdIn, ensureDir, parseOptionsVars, rmDir, tryStat, createGitIgnorer, OPENAI_MAX_RETRY_AFTER_DEFAULT, OPENAI_MAX_RETRY_DELAY, OPENAI_MAX_RETRY_COUNT, resolveRuntimeHost, } from "@genaiscript/core"; +const dbg = genaiscriptDebug("run"); +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export async function runScriptInternal(scriptId, files, options) { + dbg(`scriptid: %s`, scriptId); + const runId = options.runId || generateId(); + dbg(`run id: `, runId); + const runDir = options.out || getRunDir(scriptId, runId); + dbg(`run dir: `, runDir); + dbg(`files: %O`, files); + const cancellationToken = options.cancellationToken; + const { trace = new MarkdownTrace({ cancellationToken, dir: runDir }), runOutputTrace = new MarkdownTrace({ cancellationToken, dir: runDir }), infoCb, partialCb, } = options || {}; + const runtimeHost = resolveRuntimeHost(); + runtimeHost.clearModelAlias("script"); + let result; + let workspaceFiles = options.workspaceFiles || []; + const excludedFiles = options.excludedFiles || []; + const stream = !options.json; + const retries = normalizeInt(options.retry); + const retryDelay = normalizeInt(options.retryDelay) || OPENAI_MAX_RETRY_COUNT; + const maxDelay = normalizeInt(options.maxDelay) || OPENAI_MAX_RETRY_DELAY; + const maxRetryAfter = normalizeInt(options.maxRetryAfter) || OPENAI_MAX_RETRY_AFTER_DEFAULT; + const outTrace = options.outTrace; + const outOutput = options.outOutput; + const outAnnotations = options.outAnnotations; + const failOnErrors = options.failOnErrors; + const outChangelogs = options.outChangelogs; + const pullRequestComment = options.pullRequestComment; + const pullRequestDescription = options.pullRequestDescription; + const pullRequestReviews = options.pullRequestReviews; + const teamsMessage = options.teamsMessage; + const outData = options.outData; + const label = options.label; + const temperature = normalizeFloat(options.temperature); + const fallbackTools = options.fallbackTools; + const reasoningEffort = options.reasoningEffort; + const topP = normalizeFloat(options.topP); + const toolChoice = options.toolChoice; + const seed = normalizeFloat(options.seed); + const maxTokens = normalizeInt(options.maxTokens); + const maxToolCalls = normalizeInt(options.maxToolCalls); + const maxDataRepairs = normalizeInt(options.maxDataRepairs); + const cache = options.cacheName ?? options.cache; + const applyEdits = !!options.applyEdits; + const csvSeparator = options.csvSeparator || "\t"; + const removeOut = options.removeOut; + const jsSource = options.jsSource; + const logprobs = options.logprobs; + const topLogprobs = normalizeInt(options.topLogprobs); + const fenceFormat = options.fenceFormat; + assert(!!runDir); + if (options.json) + overrideStdoutWithStdErr(); + applyModelOptions(options, "cli"); + const fail = (msg, exitCode, url) => { + logError(url ? `${msg} (see ${url})` : msg); + trace?.error(msg); + return { exitCode, result }; + }; + logInfo(`genaiscript: ${scriptId}`); + dbg(`run id: %s`, runId); + dbg(`ci: %s`, isCI); + // manage out folder + if (removeOut) + await rmDir(runDir); + await ensureDir(runDir); + const toolFiles = []; + const resourceScript = await tryResolveScript(scriptId, { + trace, + cancellationToken, + }); + if (resourceScript) { + scriptId = resourceScript; + dbg(`resolved script file: %s`, scriptId); + toolFiles.push(scriptId); + } + else if (GENAI_ANY_REGEX.test(scriptId)) + toolFiles.push(scriptId); + const prj = await buildProject({ + toolFiles, + }); + if (jsSource) { + prj.scripts.push({ + id: scriptId, + ...parsePromptScriptMeta(jsSource), + jsSource, + }); + } + const script = prj.scripts.find((t) => t.id === scriptId || + (t.filename && GENAI_ANY_REGEX.test(scriptId) && resolve(t.filename) === resolve(scriptId))); + if (!script) { + dbg(`script id not found: %s`, scriptId); + dbg(`scripts: %O`, prj.scripts.map((s) => ({ id: s.id, filename: s.filename }))); + throw new Error(`script ${scriptId} not found`); + } + const outTraceFilename = options.runTrace === false || (isCI && !options.runTrace) || script.disableTrace + ? undefined + : await setupTraceWriting(trace, "trace", join(runDir, TRACE_FILENAME)); + const outputFilename = options.outputTrace === false || (isCI && !options.outputTrace) + ? undefined + : await setupTraceWriting(runOutputTrace, "output", join(runDir, OUTPUT_FILENAME), { + ignoreInner: true, + }); + if (outTrace && !/^false$/i.test(outTrace)) + await setupTraceWriting(trace, " trace", outTrace); + if (outOutput && !/^false$/i.test(outOutput)) { + await setupTraceWriting(runOutputTrace, " output", outOutput, { + ignoreInner: true, + }); + } + const applyGitIgnore = options.ignoreGitIgnore !== true && script.ignoreGitIgnore !== true; + dbg(`apply gitignore: ${applyGitIgnore}`); + const ignorer = applyGitIgnore ? await createGitIgnorer() : undefined; + const resolvedFiles = new Set(); + // move exclusions to excludedFiles + excludedFiles.push(...files + .filter((f) => NEGATIVE_GLOB_REGEX.test(f)) + .map((f) => f.replace(NEGATIVE_GLOB_REGEX, ""))); + files = files.filter((f) => !NEGATIVE_GLOB_REGEX.test(f)); + dbg(`files (remaining): %O`, files); + for (let arg of files) { + checkCancelled(cancellationToken); + dbg(`resolving ${arg}`); + const stat = await runtimeHost.statFile(arg); + if (stat?.type === "file") { + dbg(`file found %s`, arg); + if (!ignorer?.([arg])?.length) { + dbg(`ignored by gitignore`); + continue; + } + resolvedFiles.add(filePathOrUrlToWorkspaceFile(arg)); + continue; + } + const uriArg = uriTryParse(arg); + if (uriArg) { + dbg(`parsed uri %o`, uriArg); + const resource = await tryResolveResource(arg, { + trace, + cancellationToken, + }); + if (!resource) + return fail(`resource ${arg} not found`, FILES_NOT_FOUND_ERROR_CODE); + dbg(`resolved %d files`, resource.files.length); + workspaceFiles.push(...resource.files); + continue; + } + if (stat?.type === "directory") { + arg = join(arg, "**", "*"); + dbg(`directory, updating to %s`, arg); + } + dbg(`expand ${arg} (apply .gitignore: ${applyGitIgnore})`); + const ffs = await runtimeHost.findFiles(arg, { + applyGitIgnore, + }); + if (!ffs?.length && arg.includes("*")) { + // edge case when gitignore dumps 1 file + return fail(`no files matching ${arg} under ${process.cwd()} (all files might have been ignored)`, FILES_NOT_FOUND_ERROR_CODE); + } + for (const file of ffs) { + resolvedFiles.add(filePathOrUrlToWorkspaceFile(file)); + } + } + if (excludedFiles.length) { + for (const arg of excludedFiles) { + const ffs = await runtimeHost.findFiles(arg); + for (const f of ffs) { + dbg(`removing excluded file %s`, f); + resolvedFiles.delete(filePathOrUrlToWorkspaceFile(f)); + } + } + } + // try reading stdin + const stdin = await readStdIn(); + if (stdin) { + dbg(`stdin: %s`, ellipse(stdin.content, 42)); + workspaceFiles.push(stdin); + } + const accept = script.accept || options.accept; + if (accept) { + dbg(`accept: %s`, accept); + const exts = accept + .split(",") + .map((s) => s.trim().replace(/^\*\./, ".")) + .filter((s) => !!s); + dbg(`extensions: %o`, exts); + for (const rf of resolvedFiles) { + if (!exts.some((ext) => rf.endsWith(ext))) + resolvedFiles.delete(rf); + } + workspaceFiles = workspaceFiles.filter(({ filename }) => exts.some((ext) => filename.endsWith(ext))); + dbg(`filtered files: %d %d`, resolvedFiles.size, workspaceFiles.length); + } + const reasoningEndMarker = wrapColor(CONSOLE_COLOR_REASONING, REASONING_END_MARKER); + const reasoningStartMarker = wrapColor(CONSOLE_COLOR_REASONING, REASONING_START_MARKER); + let tokenColor = 0; + let reasoningOutput = false; + runOutputTrace.addEventListener(TRACE_CHUNK, (ev) => { + const { progress, chunk } = ev; + if (progress) { + const { responseChunk, responseTokens, inner, reasoningChunk } = progress; + if (!isQuiet && + reasoningChunk !== undefined && + reasoningChunk !== null && + reasoningChunk !== "") { + if (!reasoningOutput) + stderr.write(reasoningStartMarker); + reasoningOutput = true; + stderr.write(wrapColor(CONSOLE_COLOR_REASONING, reasoningChunk)); + } + if (responseChunk !== undefined && responseChunk !== null && responseChunk !== "") { + if (reasoningOutput) { + stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + if (stream) { + if (responseTokens && consoleColors) { + const colors = inner ? CONSOLE_TOKEN_INNER_COLORS : CONSOLE_TOKEN_COLORS; + for (const token of responseTokens) { + if (!isNaN(token.logprob)) { + const c = wrapRgbColor(logprobColor(token), token.token); + stdout.write(c); + } + else { + tokenColor = (tokenColor + 1) % colors.length; + const c = colors[tokenColor]; + stdout.write(wrapColor(c, token.token)); + } + } + } + else { + if (!inner) + stdout.write(responseChunk); + else { + stderr.write(wrapColor(CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!isQuiet) { + stderr.write(wrapColor(CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!isQuiet && chunk !== undefined && chunk !== null && chunk !== "") { + if (reasoningOutput) { + stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + stdout.write(chunk); + } + }); + const fragment = { + files: Array.from(resolvedFiles), + workspaceFiles, + }; + dbg(`files: %O\n workspace files: %O`, fragment.files, fragment.workspaceFiles.map((f) => f.filename)); + const vars = parseOptionsVars(options.vars, process.env); + dbg(`vars: %o`, Object.keys(vars)); + const stats = new GenerationStats(""); + const userState = {}; + try { + if (options.label) + trace.heading(2, options.label); + applyScriptModelAliases(script); + logModelAliases(); + const { info } = await resolveModelConnectionInfo(script, { + trace, + model: options.model, + defaultModel: LARGE_MODEL_ID, + token: true, + }); + if (info.error) { + trace.error(undefined, info.error); + return fail(info.error ?? "invalid model configuration", CONFIGURATION_ERROR_CODE, DOCS_CONFIGURATION_URL); + } + result = await runTemplate(prj, script, fragment, { + runId, + inner: false, + infoCb: (args) => { + const { text } = args; + if (text) { + if (!isQuiet) + logInfo(text); + infoCb?.(args); + } + }, + partialCb: (args) => { + runOutputTrace.chatProgress(args); + partialCb?.(args); + }, + label, + cache, + temperature, + reasoningEffort, + topP, + toolChoice, + seed, + cancellationToken, + maxTokens, + maxToolCalls, + maxDataRepairs, + model: info.model, + embeddingsModel: options.embeddingsModel, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + vars, + trace, + outputTrace: runOutputTrace, + fallbackTools, + logprobs, + topLogprobs, + fenceFormat, + runDir, + applyGitIgnore, + stats, + userState, + }); + } + catch (err) { + stats.log(); + if (isCancelError(err)) + return fail("user cancelled", USER_CANCELLED_ERROR_CODE); + logError(err); + return fail("runtime error", RUNTIME_ERROR_CODE); + } + dbg(`result: %s`, result.finishReason); + dbg(`annotations: %d`, result.annotations?.length); + await aggregateResults(scriptId, outTrace, stats, result); + await traceAgentMemory({ userState, trace }); + if (outAnnotations && result.annotations?.length) { + if (isJSONLFilename(outAnnotations)) + await appendJSONL(outAnnotations, result.annotations); + else { + await writeText(outAnnotations, CSV_REGEX.test(outAnnotations) + ? diagnosticsToCSV(result.annotations, csvSeparator) + : /\.ya?ml$/i.test(outAnnotations) + ? YAMLStringify(result.annotations) + : /\.sarif$/i.test(outAnnotations) + ? await convertDiagnosticsToSARIF(script, result.annotations) + : JSON.stringify(result.annotations, null, 2)); + } + } + if (outChangelogs && result.changelogs?.length) { + await writeText(outChangelogs, result.changelogs.join("\n")); + } + if (outData && result.frames?.length) { + if (isJSONLFilename(outData)) + await appendJSONL(outData, result.frames); + else + await writeText(outData, JSON.stringify(result.frames, null, 2)); + } + await writeFileEdits(result.fileEdits, { applyEdits, trace }); + const promptjson = result.messages?.length ? JSON.stringify(result.messages, null, 2) : undefined; + const jsonf = join(runDir, `res.json`); + const yamlf = join(runDir, `res.yaml`); + const mkfn = (ext) => jsonf.replace(/\.json$/i, ext); + const promptf = mkfn(".prompt.json"); + const outputjson = mkfn(".output.json"); + const outputyaml = mkfn(".output.yaml"); + const annotationf = result.annotations?.length ? mkfn(".annotations.csv") : undefined; + const sariff = result.annotations?.length ? mkfn(".sarif") : undefined; + const changelogf = result.changelogs?.length ? mkfn(".changelog.txt") : undefined; + await writeText(jsonf, JSON.stringify(result, null, 2)); + await writeText(yamlf, YAMLStringify(result)); + if (promptjson) + await writeText(promptf, promptjson); + if (result.json) { + await writeText(outputjson, JSON.stringify(result.json, null, 2)); + await writeText(outputyaml, YAMLStringify(result.json)); + } + if (result.schemas) { + for (const [sname, schema] of Object.entries(result.schemas)) { + await writeText(join(runDir, `${sname.toLocaleLowerCase()}.schema.ts`), JSONSchemaStringifyToTypeScript(schema, { + typeName: capitalize(sname), + export: true, + })); + await writeText(join(runDir, `${sname.toLocaleLowerCase()}.schema.json`), JSONSchemaStringify(schema)); + } + } + if (annotationf) { + await writeText(annotationf, `severity, filename, start, end, message\n` + + result.annotations + .map(({ severity, filename, range, message }) => `${severity}, ${filename}, ${range[0][0]}, ${range[1][0]}, ${message} `) + .join("\n")); + } + if (sariff) + await writeText(sariff, await convertDiagnosticsToSARIF(script, result.annotations)); + if (changelogf && result.changelogs?.length) { + await writeText(changelogf, result.changelogs.join("\n")); + } + for (const [filename, edits] of Object.entries(result.fileEdits || {})) { + const rel = relative(process.cwd(), filename); + const isAbsolutePath = resolve(rel) === rel; + if (!isAbsolutePath) + await writeText(join(runDir, CLI_RUN_FILES_FOLDER, rel), edits.after); + } + if (options.json && result !== undefined) { + // needs to go to process.stdout + stdout.write(JSON.stringify(result, null, 2)); + } + let _ghInfo = undefined; + const resolveGitHubInfo = async () => { + if (!_ghInfo) { + _ghInfo = await githubParseEnv(process.env, { + resolveToken: true, + resolveIssue: true, + resolveCommit: true, + }); + } + return _ghInfo; + }; + let adoInfo = undefined; + if (teamsMessage && result.text) { + const ghInfo = await resolveGitHubInfo(); + const channelURL = process.env.GENAISCRIPT_TEAMS_CHANNEL_URL || process.env.TEAMS_CHANNEL_URL; + if (channelURL && + (await confirmOrSkipInCI("Would you like to post to Teams?", { + preview: result.text, + }))) { + await microsoftTeamsChannelPostMessage(channelURL, prettifyMarkdown(result.text), { + script, + info: ghInfo, + cancellationToken, + trace, + }); + } + } + if (pullRequestComment && result.text) { + dbg(`upsert pull request comment`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await confirmOrSkipInCI("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await githubCreateIssueComment(script, ghInfo, result.text, typeof pullRequestComment === "string" ? pullRequestComment : script.id, { cancellationToken, stats }); + } + else { + adoInfo = adoInfo ?? (await azureDevOpsParseEnv(process.env)); + if (adoInfo.collectionUri && + (await confirmOrSkipInCI("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await azureDevOpsCreateIssueComment(script, adoInfo, prettifyMarkdown(result.text), typeof pullRequestComment === "string" ? pullRequestComment : script.id); + } + else + logError("pull request comment: no pull request information found"); + } + } + if (pullRequestDescription && result.text) { + // github action or repo + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await confirmOrSkipInCI("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await githubUpdatePullRequestDescription(script, ghInfo, prettifyMarkdown(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id, { cancellationToken }); + } + else { + // azure devops pipeline + adoInfo = adoInfo ?? (await azureDevOpsParseEnv(process.env)); + if (adoInfo.collectionUri && + (await confirmOrSkipInCI("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await azureDevOpsUpdatePullRequestDescription(script, adoInfo, prettifyMarkdown(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id); + } + else { + logError("pull request description: no pull request information found"); + } + } + } + if (pullRequestReviews && result.annotations?.length) { + dbg(`adding pull request reviews`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && ghInfo.issue) { + if (!ghInfo.commitSha) + dbg(`no commit sha found, skipping pull request reviews`); + else { + await githubCreatePullRequestReviews(script, ghInfo, result.annotations, { + cancellationToken, + }); + } + } + } + if (result.status === "success") + logInfo(`genaiscript: ${result.status}`); + else if (result.status === "cancelled") + logWarn(`genaiscript: ${result.status}`); + else + logError(`genaiscript: ${result.status}`); + stats.log(); + if (outTraceFilename) + logVerbose(` trace: ${outTraceFilename}`); + if (outputFilename) + logVerbose(` output: ${outputFilename}`); + if (result.status !== "success" && result.status !== "cancelled") { + const msg = errorMessage(result.error) ?? result.statusText ?? result.finishReason; + return fail(msg, RUNTIME_ERROR_CODE); + } + if (failOnErrors && result.annotations?.some((a) => a.severity === "error")) { + return fail("error annotations found", ANNOTATION_ERROR_CODE); + } + return { exitCode: 0, result }; +} +async function aggregateResults(scriptId, outTrace, stats, result) { + const statsDir = await createStatsDir(); + const statsFile = join(statsDir, "runs.csv"); + if (!(await tryStat(statsFile))) { + await writeFile(statsFile, [ + "script", + "status", + "cost", + "total_tokens", + "prompt_tokens", + "completion_tokens", + "trace", + "version", + ].join(",") + "\n", { encoding: "utf-8" }); + } + const acc = stats.accumulatedUsage(); + await appendFile(statsFile, [ + scriptId, + result.status, + stats.cost(), + acc.total_tokens, + acc.prompt_tokens, + acc.completion_tokens, + outTrace ? basename(outTrace) : "", + result.version, + ] + .map((s) => String(s)) + .join(",") + "\n", { encoding: "utf-8" }); +} +//# sourceMappingURL=run.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/run.js.map b/packages/api/.tshy-build/esm/run.js.map new file mode 100644 index 0000000000..30abbcd129 --- /dev/null +++ b/packages/api/.tshy-build/esm/run.js.map @@ -0,0 +1 @@ +{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/worker.d.ts b/packages/api/.tshy-build/esm/worker.d.ts new file mode 100644 index 0000000000..f1b4f8c638 --- /dev/null +++ b/packages/api/.tshy-build/esm/worker.d.ts @@ -0,0 +1,16 @@ +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export declare function worker(): Promise; +//# sourceMappingURL=worker.d.ts.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/worker.d.ts.map b/packages/api/.tshy-build/esm/worker.d.ts.map new file mode 100644 index 0000000000..2f60b00e1c --- /dev/null +++ b/packages/api/.tshy-build/esm/worker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC5C"} \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/worker.js b/packages/api/.tshy-build/esm/worker.js new file mode 100644 index 0000000000..fcb5343821 --- /dev/null +++ b/packages/api/.tshy-build/esm/worker.js @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { parentPort, workerData } from "node:worker_threads"; +import { delay } from "es-toolkit"; +import { NodeHost } from "@genaiscript/runtime"; +import { RESOURCE_CHANGE, genaiscriptDebug, installGlobals, overrideStdoutWithStdErr, createWorkerLanguageModel, resolveRuntimeHost, } from "@genaiscript/core"; +import { runScriptInternal } from "./run.js"; +const dbg = genaiscriptDebug("worker"); +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export async function worker() { + overrideStdoutWithStdErr(); + installGlobals(); + const { type, ...data } = workerData; + dbg(`worker data: %O`, data); + await NodeHost.install(undefined, undefined); // Install NodeHost with environment options + const runtimeHost = resolveRuntimeHost(); + runtimeHost.resources.addEventListener(RESOURCE_CHANGE, (ev) => { + const cev = ev; + const { reference, content } = cev.detail; + parentPort.postMessage({ + type: RESOURCE_CHANGE, + reference, + content, + }); + }); + switch (type) { + case "run": { + const { scriptId, files, options } = data; + if (options.parentLanguageModel) { + dbg(`using parent language model`); + runtimeHost.clientLanguageModel = createWorkerLanguageModel(); + } + const { result } = await runScriptInternal(scriptId, files, options); + await delay(0); // flush streams + parentPort.postMessage({ type: "run", result }); + break; + } + } +} +worker(); +//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/packages/api/.tshy-build/esm/worker.js.map b/packages/api/.tshy-build/esm/worker.js.map new file mode 100644 index 0000000000..bd21243219 --- /dev/null +++ b/packages/api/.tshy-build/esm/worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,wBAAwB,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,UAEzB,CAAC;IACF,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;IAE1F,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;IACxC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,EAA2B,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,WAAW,CAAC;YACrB,IAAI,EAAE,eAAe;YACrB,SAAS;YACT,OAAO;SAC8B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAIpC,CAAC;YACF,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBACnC,WAAW,CAAC,mBAAmB,GAAG,yBAAyB,EAAE,CAAC;YAChE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAc,CAAC,CAAC;YAC5E,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAChC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/api/.tshy/build.json b/packages/api/.tshy/build.json new file mode 100644 index 0000000000..6fd2ea9c8d --- /dev/null +++ b/packages/api/.tshy/build.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.src.json", + "compilerOptions": { + "rootDir": "../src", + "module": "nodenext", + "moduleResolution": "nodenext" + } +} diff --git a/packages/api/.tshy/commonjs.json b/packages/api/.tshy/commonjs.json new file mode 100644 index 0000000000..7c9db50b6a --- /dev/null +++ b/packages/api/.tshy/commonjs.json @@ -0,0 +1,16 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.cts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/**/*.mts", + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/commonjs" + } +} diff --git a/packages/api/.tshy/esm.json b/packages/api/.tshy/esm.json new file mode 100644 index 0000000000..959294a842 --- /dev/null +++ b/packages/api/.tshy/esm.json @@ -0,0 +1,15 @@ +{ + "extends": "./build.json", + "include": [ + "../src/**/*.ts", + "../src/**/*.mts", + "../src/**/*.tsx", + "../src/**/*.json" + ], + "exclude": [ + "../src/package.json" + ], + "compilerOptions": { + "outDir": "../.tshy-build/esm" + } +} diff --git a/packages/api/dist/commonjs/api.d.ts b/packages/api/dist/commonjs/api.d.ts new file mode 100644 index 0000000000..17875cde59 --- /dev/null +++ b/packages/api/dist/commonjs/api.d.ts @@ -0,0 +1,44 @@ +import type { Awaitable, GenerationResult, PromptScriptRunOptions, Resource } from "@genaiscript/core"; +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export declare function run( +/** + * The script identifier or full file path. + */ +scriptId: string, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files?: string | string[], +/** + * GenAIScript generation options. + */ +options?: Partial & { + /** + * Environment variables to use for the operation. + */ + envVars?: Record; + /** + * The signal to use for aborting the operation. Terminates the worker thread. + */ + signal?: AbortSignal; + /** + * Handles messages + */ + onMessage?: (data: { + type: "resourceChange"; + } & Resource, postMessage: (data: any) => void) => Awaitable; + /** + * Enable client language model as parent. + */ + parentLanguageModel?: boolean; +}): Promise; +//# sourceMappingURL=api.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/api.d.ts.map b/packages/api/dist/commonjs/api.d.ts.map new file mode 100644 index 0000000000..d086e59497 --- /dev/null +++ b/packages/api/dist/commonjs/api.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAe3B;;;;;;;;;GASG;AACH,wBAAsB,GAAG;AACvB;;GAEG;AACH,QAAQ,EAAE,MAAM;AAChB;;GAEG;AACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;AACzB;;GAEG;AACH,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAG,QAAQ,EAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,gBAAgB,CAAC,CAkD3B"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/api.js b/packages/api/dist/commonjs/api.js new file mode 100644 index 0000000000..2aec18c290 --- /dev/null +++ b/packages/api/dist/commonjs/api.js @@ -0,0 +1,95 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.run = run; +const node_worker_threads_1 = require("node:worker_threads"); +const core_1 = require("@genaiscript/core"); +const debug_1 = __importDefault(require("debug")); +const node_path_1 = require("node:path"); +const dbg = (0, debug_1.default)("genaiscript:api"); +const { __dirname } = typeof module !== "undefined" && module.filename + ? (0, core_1.getModulePaths)(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + (0, core_1.getModulePaths)(import.meta); +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +async function run( +/** + * The script identifier or full file path. + */ +scriptId, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files, +/** + * GenAIScript generation options. + */ +options) { + if (!scriptId) + throw new Error("scriptId is required"); + dbg(`run ${scriptId}`); + // eslint-disable-next-line no-param-reassign + if (typeof files === "string") + files = [files]; + const { signal, onMessage, ...rest } = options || {}; + const workerData = { + type: "run", + scriptId, + files: files || [], + options: rest, + }; + dbg(`__dirname: %s`, __dirname); + const sidebyside = await (0, core_1.tryStat)((0, node_path_1.join)(__dirname, "worker.js")); + const workerJs = sidebyside + ? (0, node_path_1.join)(__dirname, "worker.js") + : (0, node_path_1.join)((0, node_path_1.dirname)(__dirname), "dist", "esm", "worker.js"); + dbg(`start ${workerJs}`); + const worker = new node_worker_threads_1.Worker(workerJs, { workerData, name: options?.label }); + return new Promise((resolve, reject) => { + const abort = () => { + if (worker) { + dbg(`abort`); + reject(new Error("aborted")); // fail early + worker.terminate(); // don't wait for the worker to finish + } + }; + signal?.addEventListener("abort", abort); + worker.on("message", async (res) => { + const type = res?.type; + dbg(type); + if (type === "run") { + signal?.removeEventListener("abort", abort); + resolve(res.result); + } + else if (onMessage) { + await onMessage(res, (data) => { + dbg(`postMessage %O`, data); + worker.postMessage(data); + }); + } + else { + dbg(`unknown message type ${type}`); + } + }); + worker.on("error", (reason) => { + dbg(`error ${reason}`); + signal?.removeEventListener("abort", abort); + reject(reason); + }); + }); +} +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/api.js.map b/packages/api/dist/commonjs/api.js.map new file mode 100644 index 0000000000..6f84480da7 --- /dev/null +++ b/packages/api/dist/commonjs/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/index.d.ts b/packages/api/dist/commonjs/index.d.ts new file mode 100644 index 0000000000..90b799fe3d --- /dev/null +++ b/packages/api/dist/commonjs/index.d.ts @@ -0,0 +1,3 @@ +export * from "./api.js"; +export * from "./run.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/index.d.ts.map b/packages/api/dist/commonjs/index.d.ts.map new file mode 100644 index 0000000000..597d6db09d --- /dev/null +++ b/packages/api/dist/commonjs/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/index.js b/packages/api/dist/commonjs/index.js new file mode 100644 index 0000000000..e8d4072899 --- /dev/null +++ b/packages/api/dist/commonjs/index.js @@ -0,0 +1,22 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./api.js"), exports); +__exportStar(require("./run.js"), exports); +// do not import worker here, it will cause circular dependency issues +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/index.js.map b/packages/api/dist/commonjs/index.js.map new file mode 100644 index 0000000000..42642552ad --- /dev/null +++ b/packages/api/dist/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;AAElC,2CAAyB;AACzB,2CAAyB;AACzB,sEAAsE"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/package.json b/packages/api/dist/commonjs/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/packages/api/dist/commonjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/packages/api/dist/commonjs/run.d.ts b/packages/api/dist/commonjs/run.d.ts new file mode 100644 index 0000000000..3bb6e3ac5e --- /dev/null +++ b/packages/api/dist/commonjs/run.d.ts @@ -0,0 +1,70 @@ +import type { CancellationOptions, ChatCompletionsProgressReport, GenerationResult, PromptScriptRunOptions, TraceOptions } from "@genaiscript/core"; +import { MarkdownTrace } from "@genaiscript/core"; +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export declare function runScriptInternal(scriptId: string, files: string[], options: Partial & TraceOptions & CancellationOptions & { + runId?: string; + runOutputTrace?: MarkdownTrace; + cli?: boolean; + infoCb?: (partialResponse: { + text: string; + }) => void; + partialCb?: (progress: ChatCompletionsProgressReport) => void; +}): Promise<{ + exitCode: number; + result?: GenerationResult; +}>; +//# sourceMappingURL=run.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/run.d.ts.map b/packages/api/dist/commonjs/run.d.ts.map new file mode 100644 index 0000000000..3a87e964c5 --- /dev/null +++ b/packages/api/dist/commonjs/run.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,6BAA6B,EAE7B,gBAAgB,EAEhB,sBAAsB,EAEtB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EA2BL,aAAa,EA8Dd,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,YAAY,GACZ,mBAAmB,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAC/D,GACF,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAukB1D"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/run.js b/packages/api/dist/commonjs/run.js new file mode 100644 index 0000000000..5042b72457 --- /dev/null +++ b/packages/api/dist/commonjs/run.js @@ -0,0 +1,599 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.runScriptInternal = runScriptInternal; +const node_path_1 = require("node:path"); +const promises_1 = require("node:fs/promises"); +const runtime_1 = require("@genaiscript/runtime"); +const core_1 = require("@genaiscript/core"); +const dbg = (0, core_1.genaiscriptDebug)("run"); +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +async function runScriptInternal(scriptId, files, options) { + dbg(`scriptid: %s`, scriptId); + const runId = options.runId || (0, core_1.generateId)(); + dbg(`run id: `, runId); + const runDir = options.out || (0, core_1.getRunDir)(scriptId, runId); + dbg(`run dir: `, runDir); + dbg(`files: %O`, files); + const cancellationToken = options.cancellationToken; + const { trace = new core_1.MarkdownTrace({ cancellationToken, dir: runDir }), runOutputTrace = new core_1.MarkdownTrace({ cancellationToken, dir: runDir }), infoCb, partialCb, } = options || {}; + const runtimeHost = (0, core_1.resolveRuntimeHost)(); + runtimeHost.clearModelAlias("script"); + let result; + let workspaceFiles = options.workspaceFiles || []; + const excludedFiles = options.excludedFiles || []; + const stream = !options.json; + const retries = (0, core_1.normalizeInt)(options.retry); + const retryDelay = (0, core_1.normalizeInt)(options.retryDelay) || core_1.OPENAI_MAX_RETRY_COUNT; + const maxDelay = (0, core_1.normalizeInt)(options.maxDelay) || core_1.OPENAI_MAX_RETRY_DELAY; + const maxRetryAfter = (0, core_1.normalizeInt)(options.maxRetryAfter) || core_1.OPENAI_MAX_RETRY_AFTER_DEFAULT; + const outTrace = options.outTrace; + const outOutput = options.outOutput; + const outAnnotations = options.outAnnotations; + const failOnErrors = options.failOnErrors; + const outChangelogs = options.outChangelogs; + const pullRequestComment = options.pullRequestComment; + const pullRequestDescription = options.pullRequestDescription; + const pullRequestReviews = options.pullRequestReviews; + const teamsMessage = options.teamsMessage; + const outData = options.outData; + const label = options.label; + const temperature = (0, core_1.normalizeFloat)(options.temperature); + const fallbackTools = options.fallbackTools; + const reasoningEffort = options.reasoningEffort; + const topP = (0, core_1.normalizeFloat)(options.topP); + const toolChoice = options.toolChoice; + const seed = (0, core_1.normalizeFloat)(options.seed); + const maxTokens = (0, core_1.normalizeInt)(options.maxTokens); + const maxToolCalls = (0, core_1.normalizeInt)(options.maxToolCalls); + const maxDataRepairs = (0, core_1.normalizeInt)(options.maxDataRepairs); + const cache = options.cacheName ?? options.cache; + const applyEdits = !!options.applyEdits; + const csvSeparator = options.csvSeparator || "\t"; + const removeOut = options.removeOut; + const jsSource = options.jsSource; + const logprobs = options.logprobs; + const topLogprobs = (0, core_1.normalizeInt)(options.topLogprobs); + const fenceFormat = options.fenceFormat; + (0, core_1.assert)(!!runDir); + if (options.json) + (0, core_1.overrideStdoutWithStdErr)(); + (0, core_1.applyModelOptions)(options, "cli"); + const fail = (msg, exitCode, url) => { + (0, core_1.logError)(url ? `${msg} (see ${url})` : msg); + trace?.error(msg); + return { exitCode, result }; + }; + (0, core_1.logInfo)(`genaiscript: ${scriptId}`); + dbg(`run id: %s`, runId); + dbg(`ci: %s`, core_1.isCI); + // manage out folder + if (removeOut) + await (0, core_1.rmDir)(runDir); + await (0, core_1.ensureDir)(runDir); + const toolFiles = []; + const resourceScript = await (0, core_1.tryResolveScript)(scriptId, { + trace, + cancellationToken, + }); + if (resourceScript) { + scriptId = resourceScript; + dbg(`resolved script file: %s`, scriptId); + toolFiles.push(scriptId); + } + else if (core_1.GENAI_ANY_REGEX.test(scriptId)) + toolFiles.push(scriptId); + const prj = await (0, core_1.buildProject)({ + toolFiles, + }); + if (jsSource) { + prj.scripts.push({ + id: scriptId, + ...(0, core_1.parsePromptScriptMeta)(jsSource), + jsSource, + }); + } + const script = prj.scripts.find((t) => t.id === scriptId || + (t.filename && core_1.GENAI_ANY_REGEX.test(scriptId) && (0, node_path_1.resolve)(t.filename) === (0, node_path_1.resolve)(scriptId))); + if (!script) { + dbg(`script id not found: %s`, scriptId); + dbg(`scripts: %O`, prj.scripts.map((s) => ({ id: s.id, filename: s.filename }))); + throw new Error(`script ${scriptId} not found`); + } + const outTraceFilename = options.runTrace === false || (core_1.isCI && !options.runTrace) || script.disableTrace + ? undefined + : await (0, core_1.setupTraceWriting)(trace, "trace", (0, node_path_1.join)(runDir, core_1.TRACE_FILENAME)); + const outputFilename = options.outputTrace === false || (core_1.isCI && !options.outputTrace) + ? undefined + : await (0, core_1.setupTraceWriting)(runOutputTrace, "output", (0, node_path_1.join)(runDir, core_1.OUTPUT_FILENAME), { + ignoreInner: true, + }); + if (outTrace && !/^false$/i.test(outTrace)) + await (0, core_1.setupTraceWriting)(trace, " trace", outTrace); + if (outOutput && !/^false$/i.test(outOutput)) { + await (0, core_1.setupTraceWriting)(runOutputTrace, " output", outOutput, { + ignoreInner: true, + }); + } + const applyGitIgnore = options.ignoreGitIgnore !== true && script.ignoreGitIgnore !== true; + dbg(`apply gitignore: ${applyGitIgnore}`); + const ignorer = applyGitIgnore ? await (0, core_1.createGitIgnorer)() : undefined; + const resolvedFiles = new Set(); + // move exclusions to excludedFiles + excludedFiles.push(...files + .filter((f) => core_1.NEGATIVE_GLOB_REGEX.test(f)) + .map((f) => f.replace(core_1.NEGATIVE_GLOB_REGEX, ""))); + files = files.filter((f) => !core_1.NEGATIVE_GLOB_REGEX.test(f)); + dbg(`files (remaining): %O`, files); + for (let arg of files) { + (0, core_1.checkCancelled)(cancellationToken); + dbg(`resolving ${arg}`); + const stat = await runtimeHost.statFile(arg); + if (stat?.type === "file") { + dbg(`file found %s`, arg); + if (!ignorer?.([arg])?.length) { + dbg(`ignored by gitignore`); + continue; + } + resolvedFiles.add((0, core_1.filePathOrUrlToWorkspaceFile)(arg)); + continue; + } + const uriArg = (0, core_1.uriTryParse)(arg); + if (uriArg) { + dbg(`parsed uri %o`, uriArg); + const resource = await (0, core_1.tryResolveResource)(arg, { + trace, + cancellationToken, + }); + if (!resource) + return fail(`resource ${arg} not found`, core_1.FILES_NOT_FOUND_ERROR_CODE); + dbg(`resolved %d files`, resource.files.length); + workspaceFiles.push(...resource.files); + continue; + } + if (stat?.type === "directory") { + arg = (0, node_path_1.join)(arg, "**", "*"); + dbg(`directory, updating to %s`, arg); + } + dbg(`expand ${arg} (apply .gitignore: ${applyGitIgnore})`); + const ffs = await runtimeHost.findFiles(arg, { + applyGitIgnore, + }); + if (!ffs?.length && arg.includes("*")) { + // edge case when gitignore dumps 1 file + return fail(`no files matching ${arg} under ${process.cwd()} (all files might have been ignored)`, core_1.FILES_NOT_FOUND_ERROR_CODE); + } + for (const file of ffs) { + resolvedFiles.add((0, core_1.filePathOrUrlToWorkspaceFile)(file)); + } + } + if (excludedFiles.length) { + for (const arg of excludedFiles) { + const ffs = await runtimeHost.findFiles(arg); + for (const f of ffs) { + dbg(`removing excluded file %s`, f); + resolvedFiles.delete((0, core_1.filePathOrUrlToWorkspaceFile)(f)); + } + } + } + // try reading stdin + const stdin = await (0, core_1.readStdIn)(); + if (stdin) { + dbg(`stdin: %s`, (0, core_1.ellipse)(stdin.content, 42)); + workspaceFiles.push(stdin); + } + const accept = script.accept || options.accept; + if (accept) { + dbg(`accept: %s`, accept); + const exts = accept + .split(",") + .map((s) => s.trim().replace(/^\*\./, ".")) + .filter((s) => !!s); + dbg(`extensions: %o`, exts); + for (const rf of resolvedFiles) { + if (!exts.some((ext) => rf.endsWith(ext))) + resolvedFiles.delete(rf); + } + workspaceFiles = workspaceFiles.filter(({ filename }) => exts.some((ext) => filename.endsWith(ext))); + dbg(`filtered files: %d %d`, resolvedFiles.size, workspaceFiles.length); + } + const reasoningEndMarker = (0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, core_1.REASONING_END_MARKER); + const reasoningStartMarker = (0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, core_1.REASONING_START_MARKER); + let tokenColor = 0; + let reasoningOutput = false; + runOutputTrace.addEventListener(core_1.TRACE_CHUNK, (ev) => { + const { progress, chunk } = ev; + if (progress) { + const { responseChunk, responseTokens, inner, reasoningChunk } = progress; + if (!core_1.isQuiet && + reasoningChunk !== undefined && + reasoningChunk !== null && + reasoningChunk !== "") { + if (!reasoningOutput) + core_1.stderr.write(reasoningStartMarker); + reasoningOutput = true; + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_REASONING, reasoningChunk)); + } + if (responseChunk !== undefined && responseChunk !== null && responseChunk !== "") { + if (reasoningOutput) { + core_1.stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + if (stream) { + if (responseTokens && core_1.consoleColors) { + const colors = inner ? core_1.CONSOLE_TOKEN_INNER_COLORS : core_1.CONSOLE_TOKEN_COLORS; + for (const token of responseTokens) { + if (!isNaN(token.logprob)) { + const c = (0, core_1.wrapRgbColor)((0, core_1.logprobColor)(token), token.token); + core_1.stdout.write(c); + } + else { + tokenColor = (tokenColor + 1) % colors.length; + const c = colors[tokenColor]; + core_1.stdout.write((0, core_1.wrapColor)(c, token.token)); + } + } + } + else { + if (!inner) + core_1.stdout.write(responseChunk); + else { + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!core_1.isQuiet) { + core_1.stderr.write((0, core_1.wrapColor)(core_1.CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!core_1.isQuiet && chunk !== undefined && chunk !== null && chunk !== "") { + if (reasoningOutput) { + core_1.stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + core_1.stdout.write(chunk); + } + }); + const fragment = { + files: Array.from(resolvedFiles), + workspaceFiles, + }; + dbg(`files: %O\n workspace files: %O`, fragment.files, fragment.workspaceFiles.map((f) => f.filename)); + const vars = (0, core_1.parseOptionsVars)(options.vars, process.env); + dbg(`vars: %o`, Object.keys(vars)); + const stats = new core_1.GenerationStats(""); + const userState = {}; + try { + if (options.label) + trace.heading(2, options.label); + (0, core_1.applyScriptModelAliases)(script); + (0, core_1.logModelAliases)(); + const { info } = await (0, core_1.resolveModelConnectionInfo)(script, { + trace, + model: options.model, + defaultModel: core_1.LARGE_MODEL_ID, + token: true, + }); + if (info.error) { + trace.error(undefined, info.error); + return fail(info.error ?? "invalid model configuration", core_1.CONFIGURATION_ERROR_CODE, core_1.DOCS_CONFIGURATION_URL); + } + result = await (0, core_1.runTemplate)(prj, script, fragment, { + runId, + inner: false, + infoCb: (args) => { + const { text } = args; + if (text) { + if (!core_1.isQuiet) + (0, core_1.logInfo)(text); + infoCb?.(args); + } + }, + partialCb: (args) => { + runOutputTrace.chatProgress(args); + partialCb?.(args); + }, + label, + cache, + temperature, + reasoningEffort, + topP, + toolChoice, + seed, + cancellationToken, + maxTokens, + maxToolCalls, + maxDataRepairs, + model: info.model, + embeddingsModel: options.embeddingsModel, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + vars, + trace, + outputTrace: runOutputTrace, + fallbackTools, + logprobs, + topLogprobs, + fenceFormat, + runDir, + applyGitIgnore, + stats, + userState, + }); + } + catch (err) { + stats.log(); + if ((0, core_1.isCancelError)(err)) + return fail("user cancelled", core_1.USER_CANCELLED_ERROR_CODE); + (0, core_1.logError)(err); + return fail("runtime error", core_1.RUNTIME_ERROR_CODE); + } + dbg(`result: %s`, result.finishReason); + dbg(`annotations: %d`, result.annotations?.length); + await aggregateResults(scriptId, outTrace, stats, result); + await (0, core_1.traceAgentMemory)({ userState, trace }); + if (outAnnotations && result.annotations?.length) { + if ((0, core_1.isJSONLFilename)(outAnnotations)) + await (0, core_1.appendJSONL)(outAnnotations, result.annotations); + else { + await (0, core_1.writeText)(outAnnotations, core_1.CSV_REGEX.test(outAnnotations) + ? (0, core_1.diagnosticsToCSV)(result.annotations, csvSeparator) + : /\.ya?ml$/i.test(outAnnotations) + ? (0, core_1.YAMLStringify)(result.annotations) + : /\.sarif$/i.test(outAnnotations) + ? await (0, core_1.convertDiagnosticsToSARIF)(script, result.annotations) + : JSON.stringify(result.annotations, null, 2)); + } + } + if (outChangelogs && result.changelogs?.length) { + await (0, core_1.writeText)(outChangelogs, result.changelogs.join("\n")); + } + if (outData && result.frames?.length) { + if ((0, core_1.isJSONLFilename)(outData)) + await (0, core_1.appendJSONL)(outData, result.frames); + else + await (0, core_1.writeText)(outData, JSON.stringify(result.frames, null, 2)); + } + await (0, core_1.writeFileEdits)(result.fileEdits, { applyEdits, trace }); + const promptjson = result.messages?.length ? JSON.stringify(result.messages, null, 2) : undefined; + const jsonf = (0, node_path_1.join)(runDir, `res.json`); + const yamlf = (0, node_path_1.join)(runDir, `res.yaml`); + const mkfn = (ext) => jsonf.replace(/\.json$/i, ext); + const promptf = mkfn(".prompt.json"); + const outputjson = mkfn(".output.json"); + const outputyaml = mkfn(".output.yaml"); + const annotationf = result.annotations?.length ? mkfn(".annotations.csv") : undefined; + const sariff = result.annotations?.length ? mkfn(".sarif") : undefined; + const changelogf = result.changelogs?.length ? mkfn(".changelog.txt") : undefined; + await (0, core_1.writeText)(jsonf, JSON.stringify(result, null, 2)); + await (0, core_1.writeText)(yamlf, (0, core_1.YAMLStringify)(result)); + if (promptjson) + await (0, core_1.writeText)(promptf, promptjson); + if (result.json) { + await (0, core_1.writeText)(outputjson, JSON.stringify(result.json, null, 2)); + await (0, core_1.writeText)(outputyaml, (0, core_1.YAMLStringify)(result.json)); + } + if (result.schemas) { + for (const [sname, schema] of Object.entries(result.schemas)) { + await (0, core_1.writeText)((0, node_path_1.join)(runDir, `${sname.toLocaleLowerCase()}.schema.ts`), (0, core_1.JSONSchemaStringifyToTypeScript)(schema, { + typeName: (0, core_1.capitalize)(sname), + export: true, + })); + await (0, core_1.writeText)((0, node_path_1.join)(runDir, `${sname.toLocaleLowerCase()}.schema.json`), (0, core_1.JSONSchemaStringify)(schema)); + } + } + if (annotationf) { + await (0, core_1.writeText)(annotationf, `severity, filename, start, end, message\n` + + result.annotations + .map(({ severity, filename, range, message }) => `${severity}, ${filename}, ${range[0][0]}, ${range[1][0]}, ${message} `) + .join("\n")); + } + if (sariff) + await (0, core_1.writeText)(sariff, await (0, core_1.convertDiagnosticsToSARIF)(script, result.annotations)); + if (changelogf && result.changelogs?.length) { + await (0, core_1.writeText)(changelogf, result.changelogs.join("\n")); + } + for (const [filename, edits] of Object.entries(result.fileEdits || {})) { + const rel = (0, node_path_1.relative)(process.cwd(), filename); + const isAbsolutePath = (0, node_path_1.resolve)(rel) === rel; + if (!isAbsolutePath) + await (0, core_1.writeText)((0, node_path_1.join)(runDir, core_1.CLI_RUN_FILES_FOLDER, rel), edits.after); + } + if (options.json && result !== undefined) { + // needs to go to process.stdout + core_1.stdout.write(JSON.stringify(result, null, 2)); + } + let _ghInfo = undefined; + const resolveGitHubInfo = async () => { + if (!_ghInfo) { + _ghInfo = await (0, core_1.githubParseEnv)(process.env, { + resolveToken: true, + resolveIssue: true, + resolveCommit: true, + }); + } + return _ghInfo; + }; + let adoInfo = undefined; + if (teamsMessage && result.text) { + const ghInfo = await resolveGitHubInfo(); + const channelURL = process.env.GENAISCRIPT_TEAMS_CHANNEL_URL || process.env.TEAMS_CHANNEL_URL; + if (channelURL && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to post to Teams?", { + preview: result.text, + }))) { + await (0, core_1.microsoftTeamsChannelPostMessage)(channelURL, (0, core_1.prettifyMarkdown)(result.text), { + script, + info: ghInfo, + cancellationToken, + trace, + }); + } + } + if (pullRequestComment && result.text) { + dbg(`upsert pull request comment`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await (0, core_1.githubCreateIssueComment)(script, ghInfo, result.text, typeof pullRequestComment === "string" ? pullRequestComment : script.id, { cancellationToken, stats }); + } + else { + adoInfo = adoInfo ?? (await (0, core_1.azureDevOpsParseEnv)(process.env)); + if (adoInfo.collectionUri && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await (0, core_1.azureDevOpsCreateIssueComment)(script, adoInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestComment === "string" ? pullRequestComment : script.id); + } + else + (0, core_1.logError)("pull request comment: no pull request information found"); + } + } + if (pullRequestDescription && result.text) { + // github action or repo + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await (0, core_1.githubUpdatePullRequestDescription)(script, ghInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id, { cancellationToken }); + } + else { + // azure devops pipeline + adoInfo = adoInfo ?? (await (0, core_1.azureDevOpsParseEnv)(process.env)); + if (adoInfo.collectionUri && + (await (0, runtime_1.confirmOrSkipInCI)("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await (0, core_1.azureDevOpsUpdatePullRequestDescription)(script, adoInfo, (0, core_1.prettifyMarkdown)(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id); + } + else { + (0, core_1.logError)("pull request description: no pull request information found"); + } + } + } + if (pullRequestReviews && result.annotations?.length) { + dbg(`adding pull request reviews`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && ghInfo.issue) { + if (!ghInfo.commitSha) + dbg(`no commit sha found, skipping pull request reviews`); + else { + await (0, core_1.githubCreatePullRequestReviews)(script, ghInfo, result.annotations, { + cancellationToken, + }); + } + } + } + if (result.status === "success") + (0, core_1.logInfo)(`genaiscript: ${result.status}`); + else if (result.status === "cancelled") + (0, core_1.logWarn)(`genaiscript: ${result.status}`); + else + (0, core_1.logError)(`genaiscript: ${result.status}`); + stats.log(); + if (outTraceFilename) + (0, core_1.logVerbose)(` trace: ${outTraceFilename}`); + if (outputFilename) + (0, core_1.logVerbose)(` output: ${outputFilename}`); + if (result.status !== "success" && result.status !== "cancelled") { + const msg = (0, core_1.errorMessage)(result.error) ?? result.statusText ?? result.finishReason; + return fail(msg, core_1.RUNTIME_ERROR_CODE); + } + if (failOnErrors && result.annotations?.some((a) => a.severity === "error")) { + return fail("error annotations found", core_1.ANNOTATION_ERROR_CODE); + } + return { exitCode: 0, result }; +} +async function aggregateResults(scriptId, outTrace, stats, result) { + const statsDir = await (0, core_1.createStatsDir)(); + const statsFile = (0, node_path_1.join)(statsDir, "runs.csv"); + if (!(await (0, core_1.tryStat)(statsFile))) { + await (0, promises_1.writeFile)(statsFile, [ + "script", + "status", + "cost", + "total_tokens", + "prompt_tokens", + "completion_tokens", + "trace", + "version", + ].join(",") + "\n", { encoding: "utf-8" }); + } + const acc = stats.accumulatedUsage(); + await (0, promises_1.appendFile)(statsFile, [ + scriptId, + result.status, + stats.cost(), + acc.total_tokens, + acc.prompt_tokens, + acc.completion_tokens, + outTrace ? (0, node_path_1.basename)(outTrace) : "", + result.version, + ] + .map((s) => String(s)) + .join(",") + "\n", { encoding: "utf-8" }); +} +//# sourceMappingURL=run.js.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/run.js.map b/packages/api/dist/commonjs/run.js.map new file mode 100644 index 0000000000..1b38c6402d --- /dev/null +++ b/packages/api/dist/commonjs/run.js.map @@ -0,0 +1 @@ +{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/worker.d.ts b/packages/api/dist/commonjs/worker.d.ts new file mode 100644 index 0000000000..f1b4f8c638 --- /dev/null +++ b/packages/api/dist/commonjs/worker.d.ts @@ -0,0 +1,16 @@ +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export declare function worker(): Promise; +//# sourceMappingURL=worker.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/worker.d.ts.map b/packages/api/dist/commonjs/worker.d.ts.map new file mode 100644 index 0000000000..2f60b00e1c --- /dev/null +++ b/packages/api/dist/commonjs/worker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC5C"} \ No newline at end of file diff --git a/packages/api/dist/commonjs/worker.js b/packages/api/dist/commonjs/worker.js new file mode 100644 index 0000000000..fb17b490fc --- /dev/null +++ b/packages/api/dist/commonjs/worker.js @@ -0,0 +1,57 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.worker = worker; +const node_worker_threads_1 = require("node:worker_threads"); +const es_toolkit_1 = require("es-toolkit"); +const runtime_1 = require("@genaiscript/runtime"); +const core_1 = require("@genaiscript/core"); +const run_js_1 = require("./run.js"); +const dbg = (0, core_1.genaiscriptDebug)("worker"); +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +async function worker() { + (0, core_1.overrideStdoutWithStdErr)(); + (0, core_1.installGlobals)(); + const { type, ...data } = node_worker_threads_1.workerData; + dbg(`worker data: %O`, data); + await runtime_1.NodeHost.install(undefined, undefined); // Install NodeHost with environment options + const runtimeHost = (0, core_1.resolveRuntimeHost)(); + runtimeHost.resources.addEventListener(core_1.RESOURCE_CHANGE, (ev) => { + const cev = ev; + const { reference, content } = cev.detail; + node_worker_threads_1.parentPort.postMessage({ + type: core_1.RESOURCE_CHANGE, + reference, + content, + }); + }); + switch (type) { + case "run": { + const { scriptId, files, options } = data; + if (options.parentLanguageModel) { + dbg(`using parent language model`); + runtimeHost.clientLanguageModel = (0, core_1.createWorkerLanguageModel)(); + } + const { result } = await (0, run_js_1.runScriptInternal)(scriptId, files, options); + await (0, es_toolkit_1.delay)(0); // flush streams + node_worker_threads_1.parentPort.postMessage({ type: "run", result }); + break; + } + } +} +worker(); +//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/packages/api/dist/commonjs/worker.js.map b/packages/api/dist/commonjs/worker.js.map new file mode 100644 index 0000000000..6490d0e563 --- /dev/null +++ b/packages/api/dist/commonjs/worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AA+BlC,wBAqCC;AAlED,6DAA6D;AAC7D,2CAAmC;AACnC,kDAAgD;AAChD,4CAO2B;AAE3B,qCAA6C;AAC7C,MAAM,GAAG,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,MAAM;IAC1B,IAAA,+BAAwB,GAAE,CAAC;IAC3B,IAAA,qBAAc,GAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,gCAEzB,CAAC;IACF,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,kBAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;IAE1F,MAAM,WAAW,GAAG,IAAA,yBAAkB,GAAE,CAAA;IACxC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,sBAAe,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,EAA2B,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1C,gCAAU,CAAC,WAAW,CAAC;YACrB,IAAI,EAAE,sBAAe;YACrB,SAAS;YACT,OAAO;SAC8B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAIpC,CAAC;YACF,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBACnC,WAAW,CAAC,mBAAmB,GAAG,IAAA,gCAAyB,GAAE,CAAC;YAChE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAiB,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAc,CAAC,CAAC;YAC5E,MAAM,IAAA,kBAAK,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAChC,gCAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/api/dist/esm/api.d.ts b/packages/api/dist/esm/api.d.ts new file mode 100644 index 0000000000..17875cde59 --- /dev/null +++ b/packages/api/dist/esm/api.d.ts @@ -0,0 +1,44 @@ +import type { Awaitable, GenerationResult, PromptScriptRunOptions, Resource } from "@genaiscript/core"; +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export declare function run( +/** + * The script identifier or full file path. + */ +scriptId: string, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files?: string | string[], +/** + * GenAIScript generation options. + */ +options?: Partial & { + /** + * Environment variables to use for the operation. + */ + envVars?: Record; + /** + * The signal to use for aborting the operation. Terminates the worker thread. + */ + signal?: AbortSignal; + /** + * Handles messages + */ + onMessage?: (data: { + type: "resourceChange"; + } & Resource, postMessage: (data: any) => void) => Awaitable; + /** + * Enable client language model as parent. + */ + parentLanguageModel?: boolean; +}): Promise; +//# sourceMappingURL=api.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/esm/api.d.ts.map b/packages/api/dist/esm/api.d.ts.map new file mode 100644 index 0000000000..d086e59497 --- /dev/null +++ b/packages/api/dist/esm/api.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAe3B;;;;;;;;;GASG;AACH,wBAAsB,GAAG;AACvB;;GAEG;AACH,QAAQ,EAAE,MAAM;AAChB;;GAEG;AACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;AACzB;;GAEG;AACH,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAG,QAAQ,EAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,gBAAgB,CAAC,CAkD3B"} \ No newline at end of file diff --git a/packages/api/dist/esm/api.js b/packages/api/dist/esm/api.js new file mode 100644 index 0000000000..1183e2a9f9 --- /dev/null +++ b/packages/api/dist/esm/api.js @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { Worker } from "node:worker_threads"; +import { getModulePaths, tryStat } from "@genaiscript/core"; +import debug from "debug"; +import { dirname, join } from "node:path"; +const dbg = debug("genaiscript:api"); +const { __dirname } = typeof module !== "undefined" && module.filename + ? getModulePaths(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + getModulePaths(import.meta); +/** + * Runs a GenAIScript script with the given files and options. + * This function acts similarly to the `run` command in the CLI. + * @param scriptId The script identifier or full file path. This parameter is required. + * @param files List of file paths to run the script on, leave empty if not needed. + * @param options GenAIScript generation options, including optional environment variables, an abort signal, and additional options. The options may include a label for the worker thread. + * - envVars: Environment variables to use for the operation. + * - signal: The signal to use for aborting the operation. Terminates the worker thread. + * @returns A promise that resolves with the generation result or rejects if an error occurs. + */ +export async function run( +/** + * The script identifier or full file path. + */ +scriptId, +/** + * List of file paths to run the script on, leave empty if not needed. + */ +files, +/** + * GenAIScript generation options. + */ +options) { + if (!scriptId) + throw new Error("scriptId is required"); + dbg(`run ${scriptId}`); + // eslint-disable-next-line no-param-reassign + if (typeof files === "string") + files = [files]; + const { signal, onMessage, ...rest } = options || {}; + const workerData = { + type: "run", + scriptId, + files: files || [], + options: rest, + }; + dbg(`__dirname: %s`, __dirname); + const sidebyside = await tryStat(join(__dirname, "worker.js")); + const workerJs = sidebyside + ? join(__dirname, "worker.js") + : join(dirname(__dirname), "dist", "esm", "worker.js"); + dbg(`start ${workerJs}`); + const worker = new Worker(workerJs, { workerData, name: options?.label }); + return new Promise((resolve, reject) => { + const abort = () => { + if (worker) { + dbg(`abort`); + reject(new Error("aborted")); // fail early + worker.terminate(); // don't wait for the worker to finish + } + }; + signal?.addEventListener("abort", abort); + worker.on("message", async (res) => { + const type = res?.type; + dbg(type); + if (type === "run") { + signal?.removeEventListener("abort", abort); + resolve(res.result); + } + else if (onMessage) { + await onMessage(res, (data) => { + dbg(`postMessage %O`, data); + worker.postMessage(data); + }); + } + else { + dbg(`unknown message type ${type}`); + } + }); + worker.on("error", (reason) => { + dbg(`error ${reason}`); + signal?.removeEventListener("abort", abort); + reject(reason); + }); + }); +} +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/packages/api/dist/esm/api.js.map b/packages/api/dist/esm/api.js.map new file mode 100644 index 0000000000..22e9fe421f --- /dev/null +++ b/packages/api/dist/esm/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAQlC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAErC,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ;IAC9C,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,6DAA6D;QAC7D,aAAa;QACb,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG;AACvB;;GAEG;AACH,QAAgB;AAChB;;GAEG;AACH,KAAyB;AACzB;;GAEG;AACH,OAoBC;IAED,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACvD,GAAG,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC;IACvB,6CAA6C;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,KAAK;QACX,QAAQ;QACR,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,UAAU;QACzB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACzD,GAAG,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,OAAO,CAAC,CAAC;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa;gBAC3C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,sCAAsC;YAC5D,CAAC;QACH,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,CAAC;YACV,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC5B,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAc,EAAE,EAAE;YACpC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;YACvB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/api/dist/esm/index.d.ts b/packages/api/dist/esm/index.d.ts new file mode 100644 index 0000000000..90b799fe3d --- /dev/null +++ b/packages/api/dist/esm/index.d.ts @@ -0,0 +1,3 @@ +export * from "./api.js"; +export * from "./run.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/esm/index.d.ts.map b/packages/api/dist/esm/index.d.ts.map new file mode 100644 index 0000000000..597d6db09d --- /dev/null +++ b/packages/api/dist/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/api/dist/esm/index.js b/packages/api/dist/esm/index.js new file mode 100644 index 0000000000..1f280c2cdc --- /dev/null +++ b/packages/api/dist/esm/index.js @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export * from "./api.js"; +export * from "./run.js"; +// do not import worker here, it will cause circular dependency issues +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/api/dist/esm/index.js.map b/packages/api/dist/esm/index.js.map new file mode 100644 index 0000000000..e4f50ae3ba --- /dev/null +++ b/packages/api/dist/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,sEAAsE"} \ No newline at end of file diff --git a/packages/api/dist/esm/package.json b/packages/api/dist/esm/package.json new file mode 100644 index 0000000000..3dbc1ca591 --- /dev/null +++ b/packages/api/dist/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/api/dist/esm/run.d.ts b/packages/api/dist/esm/run.d.ts new file mode 100644 index 0000000000..3bb6e3ac5e --- /dev/null +++ b/packages/api/dist/esm/run.d.ts @@ -0,0 +1,70 @@ +import type { CancellationOptions, ChatCompletionsProgressReport, GenerationResult, PromptScriptRunOptions, TraceOptions } from "@genaiscript/core"; +import { MarkdownTrace } from "@genaiscript/core"; +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export declare function runScriptInternal(scriptId: string, files: string[], options: Partial & TraceOptions & CancellationOptions & { + runId?: string; + runOutputTrace?: MarkdownTrace; + cli?: boolean; + infoCb?: (partialResponse: { + text: string; + }) => void; + partialCb?: (progress: ChatCompletionsProgressReport) => void; +}): Promise<{ + exitCode: number; + result?: GenerationResult; +}>; +//# sourceMappingURL=run.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/esm/run.d.ts.map b/packages/api/dist/esm/run.d.ts.map new file mode 100644 index 0000000000..3a87e964c5 --- /dev/null +++ b/packages/api/dist/esm/run.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,6BAA6B,EAE7B,gBAAgB,EAEhB,sBAAsB,EAEtB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EA2BL,aAAa,EA8Dd,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,YAAY,GACZ,mBAAmB,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;CAC/D,GACF,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAukB1D"} \ No newline at end of file diff --git a/packages/api/dist/esm/run.js b/packages/api/dist/esm/run.js new file mode 100644 index 0000000000..46230afef3 --- /dev/null +++ b/packages/api/dist/esm/run.js @@ -0,0 +1,596 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolve, join, relative, basename } from "node:path"; +import { writeFile, appendFile } from "node:fs/promises"; +import { confirmOrSkipInCI } from "@genaiscript/runtime"; +import { buildProject, convertDiagnosticsToSARIF, setupTraceWriting, ANNOTATION_ERROR_CODE, CLI_RUN_FILES_FOLDER, CONFIGURATION_ERROR_CODE, CONSOLE_COLOR_DEBUG, CONSOLE_COLOR_REASONING, CONSOLE_TOKEN_COLORS, CONSOLE_TOKEN_INNER_COLORS, CSV_REGEX, DOCS_CONFIGURATION_URL, FILES_NOT_FOUND_ERROR_CODE, GENAI_ANY_REGEX, LARGE_MODEL_ID, NEGATIVE_GLOB_REGEX, OUTPUT_FILENAME, REASONING_END_MARKER, REASONING_START_MARKER, RUNTIME_ERROR_CODE, TRACE_CHUNK, TRACE_FILENAME, USER_CANCELLED_ERROR_CODE, GenerationStats, JSONSchemaStringify, JSONSchemaStringifyToTypeScript, MarkdownTrace, YAMLStringify, appendJSONL, applyModelOptions, applyScriptModelAliases, assert, azureDevOpsCreateIssueComment, azureDevOpsParseEnv, azureDevOpsUpdatePullRequestDescription, checkCancelled, consoleColors, createStatsDir, diagnosticsToCSV, ellipse, errorMessage, filePathOrUrlToWorkspaceFile, genaiscriptDebug, generateId, getRunDir, githubCreateIssueComment, githubCreatePullRequestReviews, githubParseEnv, githubUpdatePullRequestDescription, isCI, isCancelError, isJSONLFilename, isQuiet, logError, logInfo, logModelAliases, logVerbose, logWarn, logprobColor, microsoftTeamsChannelPostMessage, normalizeFloat, normalizeInt, overrideStdoutWithStdErr, parsePromptScriptMeta, prettifyMarkdown, resolveModelConnectionInfo, runTemplate, stderr, stdout, traceAgentMemory, tryResolveResource, tryResolveScript, uriTryParse, writeFileEdits, writeText, wrapColor, wrapRgbColor, capitalize, readStdIn, ensureDir, parseOptionsVars, rmDir, tryStat, createGitIgnorer, OPENAI_MAX_RETRY_AFTER_DEFAULT, OPENAI_MAX_RETRY_DELAY, OPENAI_MAX_RETRY_COUNT, resolveRuntimeHost, } from "@genaiscript/core"; +const dbg = genaiscriptDebug("run"); +/** + * Executes a script internally with supplied options and handles outputs. + * + * @param scriptId - The identifier of the script to be executed. + * @param files - Array of file paths or URLs to be processed by the script. + * @param options - Configuration object including additional execution parameters: + * - runId: Optional identifier for the execution run. + * - runOutputTrace: Instance for capturing output trace events. + * - cli: Indicates if CLI mode is active. + * - infoCb: Callback function for informational messages. + * - partialCb: Callback for reporting partial progress in chat completions. + * - cancellationToken: Token for handling cancellation requests. + * - runTrace: Enables/disables trace file writing. + * - json/yaml: Toggles structured output formats. + * - vars: Variables to pass to the script. + * - reasoningEffort: Specifies reasoning intensity for model execution. + * - annotations/changelogs/data/output options: Configs for exporting diagnostics, changes, intermediate data, and results. + * - pullRequestComments, descriptions, or reviews: Enables integration with GitHub or Azure DevOps for updates. + * - applyEdits: Indicates if file edits should be applied. + * - retry/retryDelay/maxDelay: Configurations for retry logic. + * - cache: Cache name or configuration. + * - csvSeparator: Separator for CSV outputs. + * - removeOut: Indicates if the output directory should be cleared before execution. + * - jsSource: JavaScript source code for the script. + * - logprobs/topLogprobs: Configurations for log probability outputs. + * - fenceFormat: Specifies the format for fenced code blocks. + * - workspaceFiles: Additional files to include in the workspace. + * - excludedFiles: Files to exclude from processing. + * - ignoreGitIgnore: Disables applying .gitignore rules when resolving files. + * - label: Optional label for the execution run. + * - temperature: Sampling temperature for model execution. + * - fallbackTools: Fallback tools to use if primary tools fail. + * - topP: Top-p sampling parameter for model execution. + * - toolChoice: Specifies the tool to use for execution. + * - seed: Random seed for reproducibility. + * - maxTokens: Maximum number of tokens for model responses. + * - maxToolCalls: Maximum number of tool calls allowed. + * - maxDataRepairs: Maximum number of data repair attempts. + * - accept: Specifies file extensions to accept for processing. + * - failOnErrors: Indicates if the script should fail on errors. + * - outTrace: Path to write trace output. + * - outOutput: Path to write output trace. + * - outAnnotations: Path to write annotations. + * - outChangelogs: Path to write changelogs. + * - outData: Path to write intermediate data. + * - pullRequest: Pull request ID for integration. + * - pullRequestComment: Enables adding comments to pull requests. + * - pullRequestDescription: Enables updating pull request descriptions. + * - pullRequestReviews: Enables adding reviews to pull requests. + * - teamsMessage: Enables sending messages to Microsoft Teams. + * + * @returns A Promise resolving to an object containing: + * - exitCode: Final exit code of the script execution. + * - result: Generation result object from script processing. + */ +export async function runScriptInternal(scriptId, files, options) { + dbg(`scriptid: %s`, scriptId); + const runId = options.runId || generateId(); + dbg(`run id: `, runId); + const runDir = options.out || getRunDir(scriptId, runId); + dbg(`run dir: `, runDir); + dbg(`files: %O`, files); + const cancellationToken = options.cancellationToken; + const { trace = new MarkdownTrace({ cancellationToken, dir: runDir }), runOutputTrace = new MarkdownTrace({ cancellationToken, dir: runDir }), infoCb, partialCb, } = options || {}; + const runtimeHost = resolveRuntimeHost(); + runtimeHost.clearModelAlias("script"); + let result; + let workspaceFiles = options.workspaceFiles || []; + const excludedFiles = options.excludedFiles || []; + const stream = !options.json; + const retries = normalizeInt(options.retry); + const retryDelay = normalizeInt(options.retryDelay) || OPENAI_MAX_RETRY_COUNT; + const maxDelay = normalizeInt(options.maxDelay) || OPENAI_MAX_RETRY_DELAY; + const maxRetryAfter = normalizeInt(options.maxRetryAfter) || OPENAI_MAX_RETRY_AFTER_DEFAULT; + const outTrace = options.outTrace; + const outOutput = options.outOutput; + const outAnnotations = options.outAnnotations; + const failOnErrors = options.failOnErrors; + const outChangelogs = options.outChangelogs; + const pullRequestComment = options.pullRequestComment; + const pullRequestDescription = options.pullRequestDescription; + const pullRequestReviews = options.pullRequestReviews; + const teamsMessage = options.teamsMessage; + const outData = options.outData; + const label = options.label; + const temperature = normalizeFloat(options.temperature); + const fallbackTools = options.fallbackTools; + const reasoningEffort = options.reasoningEffort; + const topP = normalizeFloat(options.topP); + const toolChoice = options.toolChoice; + const seed = normalizeFloat(options.seed); + const maxTokens = normalizeInt(options.maxTokens); + const maxToolCalls = normalizeInt(options.maxToolCalls); + const maxDataRepairs = normalizeInt(options.maxDataRepairs); + const cache = options.cacheName ?? options.cache; + const applyEdits = !!options.applyEdits; + const csvSeparator = options.csvSeparator || "\t"; + const removeOut = options.removeOut; + const jsSource = options.jsSource; + const logprobs = options.logprobs; + const topLogprobs = normalizeInt(options.topLogprobs); + const fenceFormat = options.fenceFormat; + assert(!!runDir); + if (options.json) + overrideStdoutWithStdErr(); + applyModelOptions(options, "cli"); + const fail = (msg, exitCode, url) => { + logError(url ? `${msg} (see ${url})` : msg); + trace?.error(msg); + return { exitCode, result }; + }; + logInfo(`genaiscript: ${scriptId}`); + dbg(`run id: %s`, runId); + dbg(`ci: %s`, isCI); + // manage out folder + if (removeOut) + await rmDir(runDir); + await ensureDir(runDir); + const toolFiles = []; + const resourceScript = await tryResolveScript(scriptId, { + trace, + cancellationToken, + }); + if (resourceScript) { + scriptId = resourceScript; + dbg(`resolved script file: %s`, scriptId); + toolFiles.push(scriptId); + } + else if (GENAI_ANY_REGEX.test(scriptId)) + toolFiles.push(scriptId); + const prj = await buildProject({ + toolFiles, + }); + if (jsSource) { + prj.scripts.push({ + id: scriptId, + ...parsePromptScriptMeta(jsSource), + jsSource, + }); + } + const script = prj.scripts.find((t) => t.id === scriptId || + (t.filename && GENAI_ANY_REGEX.test(scriptId) && resolve(t.filename) === resolve(scriptId))); + if (!script) { + dbg(`script id not found: %s`, scriptId); + dbg(`scripts: %O`, prj.scripts.map((s) => ({ id: s.id, filename: s.filename }))); + throw new Error(`script ${scriptId} not found`); + } + const outTraceFilename = options.runTrace === false || (isCI && !options.runTrace) || script.disableTrace + ? undefined + : await setupTraceWriting(trace, "trace", join(runDir, TRACE_FILENAME)); + const outputFilename = options.outputTrace === false || (isCI && !options.outputTrace) + ? undefined + : await setupTraceWriting(runOutputTrace, "output", join(runDir, OUTPUT_FILENAME), { + ignoreInner: true, + }); + if (outTrace && !/^false$/i.test(outTrace)) + await setupTraceWriting(trace, " trace", outTrace); + if (outOutput && !/^false$/i.test(outOutput)) { + await setupTraceWriting(runOutputTrace, " output", outOutput, { + ignoreInner: true, + }); + } + const applyGitIgnore = options.ignoreGitIgnore !== true && script.ignoreGitIgnore !== true; + dbg(`apply gitignore: ${applyGitIgnore}`); + const ignorer = applyGitIgnore ? await createGitIgnorer() : undefined; + const resolvedFiles = new Set(); + // move exclusions to excludedFiles + excludedFiles.push(...files + .filter((f) => NEGATIVE_GLOB_REGEX.test(f)) + .map((f) => f.replace(NEGATIVE_GLOB_REGEX, ""))); + files = files.filter((f) => !NEGATIVE_GLOB_REGEX.test(f)); + dbg(`files (remaining): %O`, files); + for (let arg of files) { + checkCancelled(cancellationToken); + dbg(`resolving ${arg}`); + const stat = await runtimeHost.statFile(arg); + if (stat?.type === "file") { + dbg(`file found %s`, arg); + if (!ignorer?.([arg])?.length) { + dbg(`ignored by gitignore`); + continue; + } + resolvedFiles.add(filePathOrUrlToWorkspaceFile(arg)); + continue; + } + const uriArg = uriTryParse(arg); + if (uriArg) { + dbg(`parsed uri %o`, uriArg); + const resource = await tryResolveResource(arg, { + trace, + cancellationToken, + }); + if (!resource) + return fail(`resource ${arg} not found`, FILES_NOT_FOUND_ERROR_CODE); + dbg(`resolved %d files`, resource.files.length); + workspaceFiles.push(...resource.files); + continue; + } + if (stat?.type === "directory") { + arg = join(arg, "**", "*"); + dbg(`directory, updating to %s`, arg); + } + dbg(`expand ${arg} (apply .gitignore: ${applyGitIgnore})`); + const ffs = await runtimeHost.findFiles(arg, { + applyGitIgnore, + }); + if (!ffs?.length && arg.includes("*")) { + // edge case when gitignore dumps 1 file + return fail(`no files matching ${arg} under ${process.cwd()} (all files might have been ignored)`, FILES_NOT_FOUND_ERROR_CODE); + } + for (const file of ffs) { + resolvedFiles.add(filePathOrUrlToWorkspaceFile(file)); + } + } + if (excludedFiles.length) { + for (const arg of excludedFiles) { + const ffs = await runtimeHost.findFiles(arg); + for (const f of ffs) { + dbg(`removing excluded file %s`, f); + resolvedFiles.delete(filePathOrUrlToWorkspaceFile(f)); + } + } + } + // try reading stdin + const stdin = await readStdIn(); + if (stdin) { + dbg(`stdin: %s`, ellipse(stdin.content, 42)); + workspaceFiles.push(stdin); + } + const accept = script.accept || options.accept; + if (accept) { + dbg(`accept: %s`, accept); + const exts = accept + .split(",") + .map((s) => s.trim().replace(/^\*\./, ".")) + .filter((s) => !!s); + dbg(`extensions: %o`, exts); + for (const rf of resolvedFiles) { + if (!exts.some((ext) => rf.endsWith(ext))) + resolvedFiles.delete(rf); + } + workspaceFiles = workspaceFiles.filter(({ filename }) => exts.some((ext) => filename.endsWith(ext))); + dbg(`filtered files: %d %d`, resolvedFiles.size, workspaceFiles.length); + } + const reasoningEndMarker = wrapColor(CONSOLE_COLOR_REASONING, REASONING_END_MARKER); + const reasoningStartMarker = wrapColor(CONSOLE_COLOR_REASONING, REASONING_START_MARKER); + let tokenColor = 0; + let reasoningOutput = false; + runOutputTrace.addEventListener(TRACE_CHUNK, (ev) => { + const { progress, chunk } = ev; + if (progress) { + const { responseChunk, responseTokens, inner, reasoningChunk } = progress; + if (!isQuiet && + reasoningChunk !== undefined && + reasoningChunk !== null && + reasoningChunk !== "") { + if (!reasoningOutput) + stderr.write(reasoningStartMarker); + reasoningOutput = true; + stderr.write(wrapColor(CONSOLE_COLOR_REASONING, reasoningChunk)); + } + if (responseChunk !== undefined && responseChunk !== null && responseChunk !== "") { + if (reasoningOutput) { + stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + if (stream) { + if (responseTokens && consoleColors) { + const colors = inner ? CONSOLE_TOKEN_INNER_COLORS : CONSOLE_TOKEN_COLORS; + for (const token of responseTokens) { + if (!isNaN(token.logprob)) { + const c = wrapRgbColor(logprobColor(token), token.token); + stdout.write(c); + } + else { + tokenColor = (tokenColor + 1) % colors.length; + const c = colors[tokenColor]; + stdout.write(wrapColor(c, token.token)); + } + } + } + else { + if (!inner) + stdout.write(responseChunk); + else { + stderr.write(wrapColor(CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!isQuiet) { + stderr.write(wrapColor(CONSOLE_COLOR_DEBUG, responseChunk)); + } + } + } + else if (!isQuiet && chunk !== undefined && chunk !== null && chunk !== "") { + if (reasoningOutput) { + stderr.write(reasoningEndMarker); + reasoningOutput = false; + } + stdout.write(chunk); + } + }); + const fragment = { + files: Array.from(resolvedFiles), + workspaceFiles, + }; + dbg(`files: %O\n workspace files: %O`, fragment.files, fragment.workspaceFiles.map((f) => f.filename)); + const vars = parseOptionsVars(options.vars, process.env); + dbg(`vars: %o`, Object.keys(vars)); + const stats = new GenerationStats(""); + const userState = {}; + try { + if (options.label) + trace.heading(2, options.label); + applyScriptModelAliases(script); + logModelAliases(); + const { info } = await resolveModelConnectionInfo(script, { + trace, + model: options.model, + defaultModel: LARGE_MODEL_ID, + token: true, + }); + if (info.error) { + trace.error(undefined, info.error); + return fail(info.error ?? "invalid model configuration", CONFIGURATION_ERROR_CODE, DOCS_CONFIGURATION_URL); + } + result = await runTemplate(prj, script, fragment, { + runId, + inner: false, + infoCb: (args) => { + const { text } = args; + if (text) { + if (!isQuiet) + logInfo(text); + infoCb?.(args); + } + }, + partialCb: (args) => { + runOutputTrace.chatProgress(args); + partialCb?.(args); + }, + label, + cache, + temperature, + reasoningEffort, + topP, + toolChoice, + seed, + cancellationToken, + maxTokens, + maxToolCalls, + maxDataRepairs, + model: info.model, + embeddingsModel: options.embeddingsModel, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + vars, + trace, + outputTrace: runOutputTrace, + fallbackTools, + logprobs, + topLogprobs, + fenceFormat, + runDir, + applyGitIgnore, + stats, + userState, + }); + } + catch (err) { + stats.log(); + if (isCancelError(err)) + return fail("user cancelled", USER_CANCELLED_ERROR_CODE); + logError(err); + return fail("runtime error", RUNTIME_ERROR_CODE); + } + dbg(`result: %s`, result.finishReason); + dbg(`annotations: %d`, result.annotations?.length); + await aggregateResults(scriptId, outTrace, stats, result); + await traceAgentMemory({ userState, trace }); + if (outAnnotations && result.annotations?.length) { + if (isJSONLFilename(outAnnotations)) + await appendJSONL(outAnnotations, result.annotations); + else { + await writeText(outAnnotations, CSV_REGEX.test(outAnnotations) + ? diagnosticsToCSV(result.annotations, csvSeparator) + : /\.ya?ml$/i.test(outAnnotations) + ? YAMLStringify(result.annotations) + : /\.sarif$/i.test(outAnnotations) + ? await convertDiagnosticsToSARIF(script, result.annotations) + : JSON.stringify(result.annotations, null, 2)); + } + } + if (outChangelogs && result.changelogs?.length) { + await writeText(outChangelogs, result.changelogs.join("\n")); + } + if (outData && result.frames?.length) { + if (isJSONLFilename(outData)) + await appendJSONL(outData, result.frames); + else + await writeText(outData, JSON.stringify(result.frames, null, 2)); + } + await writeFileEdits(result.fileEdits, { applyEdits, trace }); + const promptjson = result.messages?.length ? JSON.stringify(result.messages, null, 2) : undefined; + const jsonf = join(runDir, `res.json`); + const yamlf = join(runDir, `res.yaml`); + const mkfn = (ext) => jsonf.replace(/\.json$/i, ext); + const promptf = mkfn(".prompt.json"); + const outputjson = mkfn(".output.json"); + const outputyaml = mkfn(".output.yaml"); + const annotationf = result.annotations?.length ? mkfn(".annotations.csv") : undefined; + const sariff = result.annotations?.length ? mkfn(".sarif") : undefined; + const changelogf = result.changelogs?.length ? mkfn(".changelog.txt") : undefined; + await writeText(jsonf, JSON.stringify(result, null, 2)); + await writeText(yamlf, YAMLStringify(result)); + if (promptjson) + await writeText(promptf, promptjson); + if (result.json) { + await writeText(outputjson, JSON.stringify(result.json, null, 2)); + await writeText(outputyaml, YAMLStringify(result.json)); + } + if (result.schemas) { + for (const [sname, schema] of Object.entries(result.schemas)) { + await writeText(join(runDir, `${sname.toLocaleLowerCase()}.schema.ts`), JSONSchemaStringifyToTypeScript(schema, { + typeName: capitalize(sname), + export: true, + })); + await writeText(join(runDir, `${sname.toLocaleLowerCase()}.schema.json`), JSONSchemaStringify(schema)); + } + } + if (annotationf) { + await writeText(annotationf, `severity, filename, start, end, message\n` + + result.annotations + .map(({ severity, filename, range, message }) => `${severity}, ${filename}, ${range[0][0]}, ${range[1][0]}, ${message} `) + .join("\n")); + } + if (sariff) + await writeText(sariff, await convertDiagnosticsToSARIF(script, result.annotations)); + if (changelogf && result.changelogs?.length) { + await writeText(changelogf, result.changelogs.join("\n")); + } + for (const [filename, edits] of Object.entries(result.fileEdits || {})) { + const rel = relative(process.cwd(), filename); + const isAbsolutePath = resolve(rel) === rel; + if (!isAbsolutePath) + await writeText(join(runDir, CLI_RUN_FILES_FOLDER, rel), edits.after); + } + if (options.json && result !== undefined) { + // needs to go to process.stdout + stdout.write(JSON.stringify(result, null, 2)); + } + let _ghInfo = undefined; + const resolveGitHubInfo = async () => { + if (!_ghInfo) { + _ghInfo = await githubParseEnv(process.env, { + resolveToken: true, + resolveIssue: true, + resolveCommit: true, + }); + } + return _ghInfo; + }; + let adoInfo = undefined; + if (teamsMessage && result.text) { + const ghInfo = await resolveGitHubInfo(); + const channelURL = process.env.GENAISCRIPT_TEAMS_CHANNEL_URL || process.env.TEAMS_CHANNEL_URL; + if (channelURL && + (await confirmOrSkipInCI("Would you like to post to Teams?", { + preview: result.text, + }))) { + await microsoftTeamsChannelPostMessage(channelURL, prettifyMarkdown(result.text), { + script, + info: ghInfo, + cancellationToken, + trace, + }); + } + } + if (pullRequestComment && result.text) { + dbg(`upsert pull request comment`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await confirmOrSkipInCI("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await githubCreateIssueComment(script, ghInfo, result.text, typeof pullRequestComment === "string" ? pullRequestComment : script.id, { cancellationToken, stats }); + } + else { + adoInfo = adoInfo ?? (await azureDevOpsParseEnv(process.env)); + if (adoInfo.collectionUri && + (await confirmOrSkipInCI("Would you like to add a pull request comment?", { + preview: result.text, + }))) { + await azureDevOpsCreateIssueComment(script, adoInfo, prettifyMarkdown(result.text), typeof pullRequestComment === "string" ? pullRequestComment : script.id); + } + else + logError("pull request comment: no pull request information found"); + } + } + if (pullRequestDescription && result.text) { + // github action or repo + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && + ghInfo.issue && + (await confirmOrSkipInCI("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await githubUpdatePullRequestDescription(script, ghInfo, prettifyMarkdown(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id, { cancellationToken }); + } + else { + // azure devops pipeline + adoInfo = adoInfo ?? (await azureDevOpsParseEnv(process.env)); + if (adoInfo.collectionUri && + (await confirmOrSkipInCI("Would you like to update the pull request description?", { + preview: result.text, + }))) { + await azureDevOpsUpdatePullRequestDescription(script, adoInfo, prettifyMarkdown(result.text), typeof pullRequestDescription === "string" ? pullRequestDescription : script.id); + } + else { + logError("pull request description: no pull request information found"); + } + } + } + if (pullRequestReviews && result.annotations?.length) { + dbg(`adding pull request reviews`); + const ghInfo = await resolveGitHubInfo(); + if (ghInfo.repository && ghInfo.issue) { + if (!ghInfo.commitSha) + dbg(`no commit sha found, skipping pull request reviews`); + else { + await githubCreatePullRequestReviews(script, ghInfo, result.annotations, { + cancellationToken, + }); + } + } + } + if (result.status === "success") + logInfo(`genaiscript: ${result.status}`); + else if (result.status === "cancelled") + logWarn(`genaiscript: ${result.status}`); + else + logError(`genaiscript: ${result.status}`); + stats.log(); + if (outTraceFilename) + logVerbose(` trace: ${outTraceFilename}`); + if (outputFilename) + logVerbose(` output: ${outputFilename}`); + if (result.status !== "success" && result.status !== "cancelled") { + const msg = errorMessage(result.error) ?? result.statusText ?? result.finishReason; + return fail(msg, RUNTIME_ERROR_CODE); + } + if (failOnErrors && result.annotations?.some((a) => a.severity === "error")) { + return fail("error annotations found", ANNOTATION_ERROR_CODE); + } + return { exitCode: 0, result }; +} +async function aggregateResults(scriptId, outTrace, stats, result) { + const statsDir = await createStatsDir(); + const statsFile = join(statsDir, "runs.csv"); + if (!(await tryStat(statsFile))) { + await writeFile(statsFile, [ + "script", + "status", + "cost", + "total_tokens", + "prompt_tokens", + "completion_tokens", + "trace", + "version", + ].join(",") + "\n", { encoding: "utf-8" }); + } + const acc = stats.accumulatedUsage(); + await appendFile(statsFile, [ + scriptId, + result.status, + stats.cost(), + acc.total_tokens, + acc.prompt_tokens, + acc.completion_tokens, + outTrace ? basename(outTrace) : "", + result.version, + ] + .map((s) => String(s)) + .join(",") + "\n", { encoding: "utf-8" }); +} +//# sourceMappingURL=run.js.map \ No newline at end of file diff --git a/packages/api/dist/esm/run.js.map b/packages/api/dist/esm/run.js.map new file mode 100644 index 0000000000..30abbcd129 --- /dev/null +++ b/packages/api/dist/esm/run.js.map @@ -0,0 +1 @@ +{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/api/dist/esm/worker.d.ts b/packages/api/dist/esm/worker.d.ts new file mode 100644 index 0000000000..f1b4f8c638 --- /dev/null +++ b/packages/api/dist/esm/worker.d.ts @@ -0,0 +1,16 @@ +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export declare function worker(): Promise; +//# sourceMappingURL=worker.d.ts.map \ No newline at end of file diff --git a/packages/api/dist/esm/worker.d.ts.map b/packages/api/dist/esm/worker.d.ts.map new file mode 100644 index 0000000000..2f60b00e1c --- /dev/null +++ b/packages/api/dist/esm/worker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC5C"} \ No newline at end of file diff --git a/packages/api/dist/esm/worker.js b/packages/api/dist/esm/worker.js new file mode 100644 index 0000000000..fcb5343821 --- /dev/null +++ b/packages/api/dist/esm/worker.js @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { parentPort, workerData } from "node:worker_threads"; +import { delay } from "es-toolkit"; +import { NodeHost } from "@genaiscript/runtime"; +import { RESOURCE_CHANGE, genaiscriptDebug, installGlobals, overrideStdoutWithStdErr, createWorkerLanguageModel, resolveRuntimeHost, } from "@genaiscript/core"; +import { runScriptInternal } from "./run.js"; +const dbg = genaiscriptDebug("worker"); +/** + * Handles worker thread execution based on the provided data type. + * + * Parameters: + * - type: Specifies the type of operation to execute. For now, supports "run". + * - scriptId: Identifier of the script to be executed (provided when type is "run"). + * - files: List of file paths required for script execution (provided when type is "run"). + * - options: Additional configuration options for script execution (provided when type is "run"). + * + * Notes: + * - Redirects stdout to stderr. + * - Installs NodeHost with environment options. + * - Handles resource change events and communicates them to the parent thread. + */ +export async function worker() { + overrideStdoutWithStdErr(); + installGlobals(); + const { type, ...data } = workerData; + dbg(`worker data: %O`, data); + await NodeHost.install(undefined, undefined); // Install NodeHost with environment options + const runtimeHost = resolveRuntimeHost(); + runtimeHost.resources.addEventListener(RESOURCE_CHANGE, (ev) => { + const cev = ev; + const { reference, content } = cev.detail; + parentPort.postMessage({ + type: RESOURCE_CHANGE, + reference, + content, + }); + }); + switch (type) { + case "run": { + const { scriptId, files, options } = data; + if (options.parentLanguageModel) { + dbg(`using parent language model`); + runtimeHost.clientLanguageModel = createWorkerLanguageModel(); + } + const { result } = await runScriptInternal(scriptId, files, options); + await delay(0); // flush streams + parentPort.postMessage({ type: "run", result }); + break; + } + } +} +worker(); +//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/packages/api/dist/esm/worker.js.map b/packages/api/dist/esm/worker.js.map new file mode 100644 index 0000000000..bd21243219 --- /dev/null +++ b/packages/api/dist/esm/worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,wBAAwB,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,UAEzB,CAAC;IACF,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;IAE1F,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;IACxC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,EAA2B,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,WAAW,CAAC;YACrB,IAAI,EAAE,eAAe;YACrB,SAAS;YACT,OAAO;SAC8B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAIpC,CAAC;YACF,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBACnC,WAAW,CAAC,mBAAmB,GAAG,yBAAyB,EAAE,CAAC;YAChE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAc,CAAC,CAAC;YAC5E,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAChC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/api/genaisrc/genaiscript.d.ts b/packages/api/genaisrc/genaiscript.d.ts new file mode 100644 index 0000000000..b33363d367 --- /dev/null +++ b/packages/api/genaisrc/genaiscript.d.ts @@ -0,0 +1,5921 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * GenAIScript Ambient Type Definition File + * @version 2.3.10 + */ + type OptionsOrString = (string & {}) | TOptions; + + type ElementOrArray = T | T[]; + + interface PromptGenerationConsole { + log(...data: any[]): void; + warn(...data: any[]): void; + debug(...data: any[]): void; + error(...data: any[]): void; +} + + type DiagnosticSeverity = "error" | "warning" | "info"; + + interface Diagnostic { + filename: string; + range: CharRange; + severity: DiagnosticSeverity; + message: string; + /** + * suggested fix + */ + suggestion?: string; + /** + * error or warning code + */ + code?: string; +} + + type Awaitable = T | PromiseLike; + + interface SerializedError { + name?: string; + message?: string; + stack?: string; + cause?: unknown; + code?: string; + line?: number; + column?: number; +} + +/** + * A color and icon to associate with the script. + * @see https://actions-cool.github.io/github-action-branding/ + */ + interface PromptBranding { + /** + * Marketplace and web site branding + */ + branding?: { + /** + * The background color of the badge. + */ + color?: + | "white" + | "black" + | "yellow" + | "blue" + | "green" + | "orange" + | "red" + | "purple" + | "gray-dark"; + /** + * Name of the Feather icon to use. + * @see https://actions-cool.github.io/github-action-branding/ + */ + icon?: string; + }; +} + + interface PromptDefinition { + /** + * Based on file name. + */ + id: string; + + /** + * Something like "Summarize children", show in UI. + */ + title?: string; + + /** + * Longer description of the prompt. Shows in UI grayed-out. + */ + description?: string; + + /** + * Groups template in UI + */ + group?: string; + + /** + * List of tools defined in the script + */ + defTools?: { id: string; description: string; kind: "tool" | "agent" }[]; +} + + interface PromptLike extends PromptDefinition { + /** + * File where the prompt comes from (if any). + */ + filename?: string; + + /** + * The actual text of the prompt template. + * Only used for system prompts. + */ + text?: string; + + /** + * The text of the prompt JS source code. + */ + jsSource?: string; + + /** + * Resolved system ids + */ + resolvedSystem?: SystemPromptInstance[]; + + /** + * Inferred input schema for parameters + */ + inputSchema?: JSONSchemaObject; +} + + type SystemPromptId = OptionsOrString< + | "synthlang" + | "system" + | "system.agent_data" + | "system.agent_docs" + | "system.agent_fs" + | "system.agent_git" + | "system.agent_github" + | "system.agent_interpreter" + | "system.agent_mcp" + | "system.agent_planner" + | "system.agent_user_input" + | "system.agent_video" + | "system.agent_web" + | "system.agent_z3" + | "system.annotations" + | "system.assistant" + | "system.chain_of_draft" + | "system.changelog" + | "system.cooperation" + | "system.cpp" + | "system.diagrams" + | "system.diff" + | "system.do_not_explain" + | "system.english" + | "system.explanations" + | "system.fetch" + | "system.files" + | "system.files_schema" + | "system.fs_ask_file" + | "system.fs_data_query" + | "system.fs_diff_files" + | "system.fs_find_files" + | "system.fs_read_file" + | "system.git" + | "system.git_diff" + | "system.git_info" + | "system.github_actions" + | "system.github_files" + | "system.github_info" + | "system.github_issues" + | "system.github_pulls" + | "system.go" + | "system.java" + | "system.math" + | "system.mcp" + | "system.md_find_files" + | "system.md_frontmatter" + | "system.meta_prompt" + | "system.meta_schema" + | "system.node_info" + | "system.node_test" + | "system.output_ini" + | "system.output_json" + | "system.output_markdown" + | "system.output_plaintext" + | "system.output_yaml" + | "system.php" + | "system.planner" + | "system.python" + | "system.python_code_interpreter" + | "system.python_types" + | "system.retrieval_fuzz_search" + | "system.retrieval_vector_search" + | "system.retrieval_web_search" + | "system.ruby" + | "system.rust" + | "system.safety_canary_word" + | "system.safety_harmful_content" + | "system.safety_jailbreak" + | "system.safety_protected_material" + | "system.safety_ungrounded_content_summarization" + | "system.safety_validate_harmful_content" + | "system.schema" + | "system.tasks" + | "system.technical" + | "system.think" + | "system.today" + | "system.tool_calls" + | "system.tools" + | "system.transcribe" + | "system.typescript" + | "system.user_input" + | "system.user-tool" + | "system.video" + | "system.vision_ask_images" + | "system.zero_shot_cot" +>; + + type SystemPromptInstance = { + id: SystemPromptId; + parameters?: Record; + vars?: Record; +}; + + type SystemToolId = OptionsOrString< + | "agent_data" + | "agent_docs" + | "agent_fs" + | "agent_git" + | "agent_github" + | "agent_interpreter" + | "agent_planner" + | "agent_user_input" + | "agent_video" + | "agent_web" + | "agent_z3" + | "fetch" + | "fs_ask_file" + | "fs_data_query" + | "fs_diff_files" + | "fs_find_files" + | "fs_read_file" + | "git_branch_current" + | "git_branch_default" + | "git_branch_list" + | "git_diff" + | "git_last_tag" + | "git_list_commits" + | "git_status" + | "github_actions_job_logs_diff" + | "github_actions_job_logs_get" + | "github_actions_jobs_list" + | "github_actions_workflows_list" + | "github_files_get" + | "github_files_list" + | "github_issues_comments_list" + | "github_issues_get" + | "github_issues_list" + | "github_pulls_get" + | "github_pulls_list" + | "github_pulls_review_comments_list" + | "math_eval" + | "md_find_files" + | "md_read_frontmatter" + | "meta_prompt" + | "meta_schema" + | "my_random" + | "node_test" + | "python_code_interpreter_copy_files_to_container" + | "python_code_interpreter_read_file" + | "python_code_interpreter_run" + | "retrieval_fuzz_search" + | "retrieval_vector_search" + | "retrieval_web_search" + | "think" + | "transcribe" + | "user_input_confirm" + | "user_input_select" + | "user_input_text" + | "video_extract_audio" + | "video_extract_clip" + | "video_extract_frames" + | "video_probe" + | "vision_ask_images" +>; + + type FileMergeHandler = ( + filename: string, + label: string, + before: string, + generated: string, +) => Awaitable; + + interface PromptOutputProcessorResult { + /** + * Updated text + */ + text?: string; + /** + * Generated files from the output + */ + files?: Record; + + /** + * User defined errors + */ + annotations?: Diagnostic[]; +} + + type PromptOutputProcessorHandler = ( + output: GenerationOutput, +) => + | PromptOutputProcessorResult + | Promise + | undefined + | Promise + | void + | Promise; + + type PromptTemplateResponseType = + | "text" + | "json" + | "yaml" + | "markdown" + | "json_object" + | "json_schema" + | undefined; + + type ModelType = OptionsOrString< + | "large" + | "small" + | "tiny" + | "long" + | "vision" + | "vision_small" + | "reasoning" + | "reasoning_small" + | "openai:gpt-4.1" + | "openai:gpt-4.1-mini" + | "openai:gpt-4.1-nano" + | "openai:gpt-4o" + | "openai:gpt-4o-mini" + | "openai:gpt-3.5-turbo" + | "openai:o3-mini" + | "openai:o3-mini:low" + | "openai:o3-mini:medium" + | "openai:o3-mini:high" + | "openai:o1" + | "openai:o1-mini" + | "openai:o1-preview" + | "github:openai/gpt-4.1" + | "github:openai/gpt-4o" + | "github:openai/gpt-4o-mini" + | "github:openai/o1" + | "github:openai/o1-mini" + | "github:openai/o3-mini" + | "github:openai/o3-mini:low" + | "github:microsoft/mai-ds-r1" + | "github:deepseek/deepseek-v3" + | "github:deepseek/deepseek-r1" + | "github:microsoft/phi-4" + | "github_copilot_chat:current" + | "github_copilot_chat:gpt-3.5-turbo" + | "github_copilot_chat:gpt-4o-mini" + | "github_copilot_chat:gpt-4o-2024-11-20" + | "github_copilot_chat:gpt-4" + | "github_copilot_chat:o1" + | "github_copilot_chat:o1:low" + | "github_copilot_chat:o1:medium" + | "github_copilot_chat:o1:high" + | "github_copilot_chat:o3-mini" + | "github_copilot_chat:o3-mini:low" + | "github_copilot_chat:o3-mini:medium" + | "github_copilot_chat:o3-mini:high" + | "azure:gpt-4o" + | "azure:gpt-4o-mini" + | "azure:o1" + | "azure:o1-mini" + | "azure:o1-preview" + | "azure:o3-mini" + | "azure:o3-mini:low" + | "azure:o3-mini:medium" + | "azure:o3-mini:high" + | "azure_ai_inference:gpt-4.1" + | "azure_ai_inference:gpt-4o" + | "azure_ai_inference:gpt-4o-mini" + | "azure_ai_inference:o1" + | "azure_ai_inference:o1-mini" + | "azure_ai_inference:o1-preview" + | "azure_ai_inference:o3-mini" + | "azure_ai_inference:o3-mini:low" + | "azure_ai_inference:o3-mini:medium" + | "azure_ai_inference:o3-mini:high" + | "azure_ai_inference:deepSeek-v3" + | "azure_ai_inference:deepseek-r1" + | "ollama:gemma3:4b" + | "ollama:llama3.2" + | "ollama:command-r7b:7b" + | "anthropic:claude-opus-4-0" + | "anthropic:claude-sonnet-4-0" + | "anthropic:claude-sonnet-4-0:low" + | "anthropic:claude-sonnet-4-0:medium" + | "anthropic:claude-sonnet-4-0:high" + | "anthropic:claude-3-7-sonnet-latest" + | "anthropic:claude-3-7-sonnet-latest:low" + | "anthropic:claude-3-7-sonnet-latest:medium" + | "anthropic:claude-3-7-sonnet-latest:high" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:low" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:medium" + | "anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:high" + | "huggingface:microsoft/Phi-3-mini-4k-instruct" + | "jan:llama3.2-3b-instruct" + | "google:gemini-2.0-flash-exp" + | "llamafile" + | "sglang" + | "vllm" + | "echo" + | "none" +>; + + type EmbeddingsModelType = OptionsOrString< + | "openai:text-embedding-3-small" + | "openai:text-embedding-3-large" + | "openai:text-embedding-ada-002" + | "github:text-embedding-3-small" + | "github:text-embedding-3-large" + | "azure:text-embedding-3-small" + | "azure:text-embedding-3-large" + | "azure_ai_inference:text-embedding-3-small" + | "azure_ai_inference:text-embedding-3-large" + | "ollama:nomic-embed-text" + | "google:text-embedding-004" + | "huggingface:nomic-ai/nomic-embed-text-v1.5" +>; + + type ModelSmallType = OptionsOrString< + | "openai:gpt-4o-mini" + | "github:openai/gpt-4o-mini" + | "azure:gpt-4o-mini" + | "github:microsoft/phi-4" +>; + + type ModelVisionType = OptionsOrString< + "openai:gpt-4o" | "github:openai/gpt-4o" | "azure:gpt-4o" | "azure:gpt-4o-mini" +>; + + type ModelImageGenerationType = OptionsOrString< + "openai:gpt-image-1" | "openai:dall-e-2" | "openai:dall-e-3" +>; + + type ModelProviderType = OptionsOrString< + | "openai" + | "azure" + | "azure_serverless" + | "azure_serverless_models" + | "anthropic" + | "anthropic_bedrock" + | "google" + | "huggingface" + | "mistral" + | "alibaba" + | "github" + | "transformers" + | "ollama" + | "lmstudio" + | "jan" + | "sglang" + | "vllm" + | "llamafile" + | "litellm" + | "github_copilot_chat" + | "deepseek" + | "whisperasr" + | "echo" +>; + + interface ModelConnectionOptions { + /** + * Which LLM model by default or for the `large` alias. + */ + model?: ModelType; +} + + interface ModelAliasesOptions extends ModelConnectionOptions { + /** + * Configure the `small` model alias. + */ + smallModel?: ModelSmallType; + + /** + * Configure the `vision` model alias. + */ + visionModel?: ModelVisionType; + + /** + * A list of model aliases to use. + */ + modelAliases?: Record; +} + + type ReasoningEffortType = "high" | "medium" | "low"; + + type ChatToolChoice = + | "none" + | "auto" + | "required" + | { + /** + * The name of the function to call. + */ + name: string; + }; + + interface ModelOptions extends ModelConnectionOptions, ModelTemplateOptions, CacheOptions { + /** + * Temperature to use. Higher temperature means more hallucination/creativity. + * Range 0.0-2.0. + * + * @default 0.2 + */ + temperature?: number; + + /** + * Enables fallback tools mode + */ + fallbackTools?: boolean; + + /** + * OpenAI o* reasoning models support a reasoning effort parameter. + * For Clause, these are mapped to thinking budget tokens + */ + reasoningEffort?: ReasoningEffortType; + + /** + * A list of keywords that should be found in the output. + */ + choices?: ElementOrArray; + + /** + * Returns the log probabilities of the each tokens. Not supported in all models. + */ + logprobs?: boolean; + + /** + * Number of alternate token logprobs to generate, up to 5. Enables logprobs. + */ + topLogprobs?: number; + + /** + * Specifies the type of output. Default is plain text. + * - `text` enables plain text mode (through system prompts) + * - `json` enables JSON mode (through system prompts) + * - `yaml` enables YAML mode (through system prompts) + * - `json_object` enables JSON mode (native) + * - `json_schema` enables structured outputs (native) + * Use `responseSchema` to specify an output schema. + */ + responseType?: PromptTemplateResponseType; + + /** + * JSON object schema for the output. Enables the `json_object` output mode by default. + */ + responseSchema?: PromptParametersSchema | JSONSchema; + + /** + * “Top_p” or nucleus sampling is a setting that decides how many possible words to consider. + * A high “top_p” value means the model looks at more possible words, even the less likely ones, + * which makes the generated text more diverse. + */ + topP?: number; + + /** + * Maximum number of completion tokens + * + */ + maxTokens?: number; + + /** + * Tool selection strategy. Default is 'auto'. + */ + toolChoice?: ChatToolChoice; + + /** + * Maximum number of tool calls to make. + */ + maxToolCalls?: number; + + /** + * Maximum number of data repairs to attempt. + */ + maxDataRepairs?: number; + + /** + * A deterministic integer seed to use for the model. + */ + seed?: number; + + /** + * A list of model ids and their maximum number of concurrent requests. + */ + modelConcurrency?: Record; +} + + interface EmbeddingsModelOptions { + /** + * LLM model to use for embeddings. + */ + embeddingsModel?: EmbeddingsModelType; +} + + interface PromptSystemOptions extends PromptSystemSafetyOptions { + /** + * List of system script ids used by the prompt. + */ + system?: ElementOrArray; + + /** + * List of tools used by the prompt. + */ + tools?: ElementOrArray; + + /** + * List of system to exclude from the prompt. + */ + excludedSystem?: ElementOrArray; + + /** + * MCP server configuration. The tools will be injected into the prompt. + */ + mcpServers?: McpServersConfig; + + /** + * MCP agent configuration. Each mcp server will be wrapped with an agent. + */ + mcpAgentServers?: McpAgentServersConfig; +} + + interface ScriptRuntimeOptions extends LineNumberingOptions { + /** + * Secrets required by the prompt + */ + secrets?: string[]; +} + + type PromptJSONParameterType = T & { required?: boolean }; + + type PromptParameterType = + | string + | number + | boolean + | object + | PromptJSONParameterType + | PromptJSONParameterType + | PromptJSONParameterType; + type PromptParametersSchema = Record; + type PromptParameters = Record; + + type PromptAssertion = { + // How heavily to weigh the assertion. Defaults to 1.0 + weight?: number; + /** + * The transformation to apply to the output before checking the assertion. + */ + transform?: string; +} & ( + | { + // type of assertion + type: + | "icontains" + | "not-icontains" + | "equals" + | "not-equals" + | "starts-with" + | "not-starts-with"; + // The expected value + value: string; + } + | { + // type of assertion + type: + | "contains-all" + | "not-contains-all" + | "contains-any" + | "not-contains-any" + | "icontains-all" + | "not-icontains-all"; + // The expected values + value: string[]; + } + | { + // type of assertion + type: "levenshtein" | "not-levenshtein"; + // The expected value + value: string; + // The threshold value + threshold?: number; + } +); + + interface PromptTest { + /** + * Short name of the test + */ + name?: string; + /** + * Description of the test. + */ + description?: string; + /** + * List of files to apply the test to. + */ + files?: ElementOrArray; + /** + * List of in-memory files to apply the test to. + */ + workspaceFiles?: ElementOrArray; + /** + * Extra set of variables for this scenario + */ + vars?: Record; + /** + * LLM output matches a given rubric, using a Language Model to grade output. + */ + rubrics?: ElementOrArray; + /** + * LLM output adheres to the given facts, using Factuality method from OpenAI evaluation. + */ + facts?: ElementOrArray; + /** + * List of keywords that should be contained in the LLM output. + */ + keywords?: ElementOrArray; + /** + * List of keywords that should not be contained in the LLM output. + */ + forbidden?: ElementOrArray; + /** + * Additional deterministic assertions. + */ + asserts?: ElementOrArray; + + /** + * Determines what kind of output is sent back to the test engine. Default is "text". + */ + format?: "text" | "json"; +} + +/** + * Configure promptfoo redteam plugins + */ + interface PromptRedteam { + /** + * The `purpose` property is used to guide the attack generation process. It should be as clear and specific as possible. + * Include the following information: + * - Who the user is and their relationship to the company + * - What data the user has access to + * - What data the user does not have access to + * - What actions the user can perform + * - What actions the user cannot perform + * - What systems the agent has access to + * @link https://www.promptfoo.dev/docs/red-team/troubleshooting/attack-generation/ + */ + purpose: string; + + /** + * Redteam identifier used for reporting purposes + */ + label?: string; + + /** + * Default number of inputs to generate for each plugin. + * The total number of tests will be `(numTests * plugins.length * (1 + strategies.length) * languages.length)` + * Languages.length is 1 by default, but is added when the multilingual strategy is used. + */ + numTests?: number; + + /** + * List of languages to target. Default is English. + */ + language?: string; + + /** + * Red team plugin list + * @link https://www.promptfoo.dev/docs/red-team/owasp-llm-top-10/ + */ + plugins?: ElementOrArray; + + /** + * Adversary prompt generation strategies + */ + strategies?: ElementOrArray; +} + +/** + * Different ways to render a fence block. + */ + type FenceFormat = "markdown" | "xml" | "none"; + + interface FenceFormatOptions { + /** + * Formatting of code sections + */ + fenceFormat?: FenceFormat; +} + + interface ModelTemplateOptions extends FenceFormatOptions { + /** + * Budget of tokens to apply the prompt flex renderer. + */ + flexTokens?: number; +} + + interface McpToolAnnotations { + /** + * Annotations for MCP tools + * @link https://modelcontextprotocol.io/docs/concepts/tools#available-tool-annotations + */ + annotations?: { + /** + * If true, indicates the tool does not modify its environment + */ + readOnlyHint?: boolean; + /** + * If true, the tool may perform destructive updates (only meaningful when readOnlyHint is false) + */ + destructiveHint?: boolean; + /** + * If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when readOnlyHint is false) + */ + idempotentHint?: boolean; + /** + * If true, the tool may interact with an “open world” of external entities + */ + openWorldHint?: boolean; + }; +} + + interface MetadataOptions { + /** + * Set of 16 key-value pairs that can be attached to an object. + * This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. + * Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. + */ + metadata?: Record; +} + + interface TerminalOptions { + /** + * Disable generation of run trace. + */ + disableTrace?: boolean; + + /** + * Disables rendering a preview of the chat messages + */ + disableChatPreview?: boolean; +} + + interface PromptScript + extends PromptLike, + PromptBranding, + ModelOptions, + ModelAliasesOptions, + PromptSystemOptions, + EmbeddingsModelOptions, + ContentSafetyOptions, + SecretDetectionOptions, + GitIgnoreFilterOptions, + ScriptRuntimeOptions, + McpToolAnnotations, + MetadataOptions, + TerminalOptions { + /** + * Which provider to prefer when picking a model. + */ + provider?: ModelProviderType; + + /** + * Additional template parameters that will populate `env.vars` + */ + parameters?: PromptParametersSchema; + + /** + * A file path or list of file paths or globs. + * The content of these files will be by the files selected in the UI by the user or the cli arguments. + */ + files?: ElementOrArray; + + /** + * A comma separated list of file extensions to accept. + */ + accept?: OptionsOrString<".md,.mdx" | "none">; + + /** + * Extra variable values that can be used to configure system prompts. + */ + vars?: Record; + + /** + * Tests to validate this script. + */ + tests?: ElementOrArray; + + /** + * Models to use with tests + */ + testModels?: ElementOrArray; + + /** + * LLM vulnerability checks + */ + redteam?: PromptRedteam; + + /** + * Don't show it to the user in lists. Template `system.*` are automatically unlisted. + */ + unlisted?: boolean; + + /** + * Set if this is a system prompt. + */ + isSystem?: boolean; +} +/** + * Represent a workspace file and optional content. + */ + interface WorkspaceFile { + /** + * Name of the file, relative to project root. + */ + filename: string; + + /** + * Content mime-type if known + */ + type?: string; + + /** + * Encoding of the content + */ + encoding?: "base64"; + + /** + * Content of the file. + */ + content?: string; + + /** + * Size in bytes if known + */ + size?: number; +} + + interface WorkspaceFileWithScore extends WorkspaceFile { + /** + * Score allocated by search algorithm + */ + score?: number; +} + + interface ToolDefinition { + /** + * The name of the function to be called. Must be a-z, A-Z, 0-9, or contain + * underscores and dashes, with a maximum length of 64. + */ + name: string; + + /** + * A description of what the function does, used by the model to choose when and + * how to call the function. + */ + description?: string; + + /** + * The parameters the functions accepts, described as a JSON Schema object. See the + * [guide](https://platform.openai.com/docs/guides/text-generation/function-calling) + * for examples, and the + * [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for + * documentation about the format. + * + * Omitting `parameters` defines a function with an empty parameter list. + */ + parameters?: JSONSchema; +} + +/** + * Interface representing an output trace with various logging and tracing methods. + * Extends the `ToolCallTrace` interface. + */ + interface OutputTrace extends ToolCallTrace { + /** + * Logs a heading message at the specified level. + * @param level - The level of the heading. + * @param message - The heading message. + */ + heading(level: number, message: string): void; + + /** + * Logs an image with an optional caption. + * @param url - The URL of the image. + * @param caption - The optional caption for the image. + */ + image(url: BufferLike, caption?: string): Promise; + + /** + * Logs a markdown table + * @param rows + */ + table(rows: object[]): void; + + /** + * Computes and renders diff between two files. + */ + diff( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: { context?: number }, + ): void; + + /** + * Logs a result item with a boolean value and a message. + * @param value - The boolean value of the result item. + * @param message - The message for the result item. + */ + resultItem(value: boolean, message: string): void; + + /** + * Starts a trace with details in markdown format. + * @param title - The title of the trace. + * @param options - Optional settings for the trace. + * @returns A `MarkdownTrace` instance. + */ + startTraceDetails(title: string, options?: { expanded?: boolean }): OutputTrace; + + /** + * Appends content to the trace. + * @param value - The content to append. + */ + appendContent(value: string): void; + + /** + * Starts a details section in the trace. + * @param title - The title of the details section. + * @param options - Optional settings for the details section. + */ + startDetails(title: string, options?: { success?: boolean; expanded?: boolean }): void; + + /** + * Ends the current details section in the trace. + */ + endDetails(): void; + + /** + * Logs a video with a name, file path, and optional alt text. + * @param name - The name of the video. + * @param filepath - The file path of the video. + * @param alt - The optional alt text for the video. + */ + video(name: string, filepath: string, alt?: string): void; + + /** + * Logs an audio file + * @param name + * @param filepath + * @param alt + */ + audio(name: string, filepath: string, alt?: string): void; + + /** + * Logs a details section with a title and body. + * @param title - The title of the details section. + * @param body - The body content of the details section, can be a string or an object. + * @param options - Optional settings for the details section. + */ + details( + title: string, + body: string | object, + options?: { success?: boolean; expanded?: boolean }, + ): void; + + /** + * Logs a fenced details section with a title, body, and optional content type. + * @param title - The title of the details section. + * @param body - The body content of the details section, can be a string or an object. + * @param contentType - The optional content type of the body. + * @param options - Optional settings for the details section. + */ + detailsFenced( + title: string, + body: string | object, + contentType?: string, + options?: { expanded?: boolean }, + ): void; + + /** + * Logs an item with a name, value, and optional unit. + * @param name - The name of the item. + * @param value - The value of the item. + * @param unit - The optional unit of the value. + */ + itemValue(name: string, value: any, unit?: string): void; + + /** + * Adds a url link item + * @param name name url + * @param url url. If missing, name is treated as the url. + */ + itemLink(name: string, url?: string | URL, title?: string): void; + + /** + * Writes a paragraph of text with empty lines before and after. + * @param text paragraph to write + */ + p(text: string): void; + + /** + * Logs a warning message. + * @param msg - The warning message to log. + */ + warn(msg: string): void; + + /** + * Logs a caution message. + * @param msg - The caution message to log. + */ + caution(msg: string): void; + + /** + * Logs a note message. + * @param msg - The note message to log. + */ + note(msg: string): void; + + /** + * Logs an error object + * @param err + */ + error(message: string, error?: unknown): void; +} + +/** + * Interface representing a tool call trace for logging various types of messages. + */ + interface ToolCallTrace { + /** + * Logs a general message. + * @param message - The message to log. + */ + log(message: string): void; + + /** + * Logs an item message. + * @param message - The item message to log. + */ + item(message: string): void; + + /** + * Logs a tip message. + * @param message - The tip message to log. + */ + tip(message: string): void; + + /** + * Logs a fenced message, optionally specifying the content type. + * @param message - The fenced message to log. + * @param contentType - The optional content type of the message. + */ + fence(message: string | unknown, contentType?: string): void; +} + +/** + * Position (line, character) in a file. Both are 0-based. + */ + type CharPosition = [number, number]; + +/** + * Describes a run of text. + */ + type CharRange = [CharPosition, CharPosition]; + +/** + * 0-based line numbers. + */ + type LineRange = [number, number]; + + interface FileEdit { + type: string; + filename: string; + label?: string; + validated?: boolean; +} + + interface ReplaceEdit extends FileEdit { + type: "replace"; + range: CharRange | LineRange; + text: string; +} + + interface InsertEdit extends FileEdit { + type: "insert"; + pos: CharPosition | number; + text: string; +} + + interface DeleteEdit extends FileEdit { + type: "delete"; + range: CharRange | LineRange; +} + + interface CreateFileEdit extends FileEdit { + type: "createfile"; + overwrite?: boolean; + ignoreIfExists?: boolean; + text: string; +} + + type Edits = InsertEdit | ReplaceEdit | DeleteEdit | CreateFileEdit; + + interface ToolCallContent { + type?: "content"; + content: string; + edits?: Edits[]; +} + + type ToolCallOutput = + | string + | number + | boolean + | ToolCallContent + | ShellOutput + | WorkspaceFile + | RunPromptResult + | SerializedError + | undefined; + + interface WorkspaceFileCache { + /** + * Name of the cache + */ + name: string; + /** + * Gets the value associated with the key, or undefined if there is none. + * @param key + */ + get(key: K): Promise; + /** + * Sets the value associated with the key. + * @param key + * @param value + */ + set(key: K, value: V): Promise; + + /** + * List the values in the cache. + */ + values(): Promise; + + /** + * Gets the sha of the key + * @param key + */ + getSha(key: K): Promise; + + /** + * Gets an existing value or updates it with the updater function. + */ + getOrUpdate( + key: K, + updater: () => Promise, + validator?: (val: V) => boolean, + ): Promise<{ key: string; value: V; cached?: boolean }>; +} + + interface WorkspaceGrepOptions extends FilterGitFilesOptions { + /** + * List of paths to + */ + path?: ElementOrArray; + /** + * list of filename globs to search. !-prefixed globs are excluded. ** are not supported. + */ + glob?: ElementOrArray; + /** + * Read file content. default is true. + */ + readText?: boolean; + + /** + * Enable grep logging to discover what files are searched. + */ + debug?: boolean; +} + + interface WorkspaceGrepResult { + files: WorkspaceFile[]; + matches: WorkspaceFile[]; +} + + interface INIParseOptions extends JSONSchemaValidationOptions { + defaultValue?: any; +} + + interface FilterGitFilesOptions { + /** + * Ignore workspace .gitignore instructions + */ + applyGitIgnore?: false | undefined; +} + + interface FindFilesOptions extends FilterGitFilesOptions { + /** Glob patterns to ignore */ + ignore?: ElementOrArray; + + /** + * Set to false to skip read text content. True by default + */ + readText?: boolean; +} + + interface FileStats { + /** + * Size of the file in bytes + */ + size: number; + mode: number; +} + + interface JSONSchemaValidationOptions { + schema?: JSONSchema; + throwOnValidationError?: boolean; +} + + interface WorkspaceFileSystem { + /** + * Searches for files using the glob pattern and returns a list of files. + * Ignore `.env` files and apply `.gitignore` if present. + * @param glob + */ + findFiles(glob: ElementOrArray, options?: FindFilesOptions): Promise; + + /** + * Performs a grep search over the files in the workspace using ripgrep. + * @param pattern A string to match or a regex pattern. + * @param options Options for the grep search. + */ + grep(pattern: string | RegExp, options?: WorkspaceGrepOptions): Promise; + grep( + pattern: string | RegExp, + glob: string, + options?: Omit, + ): Promise; + + /** + * Reads metadata information about the file. Returns undefined if the file does not exist. + * @param filename + */ + stat(filename: string): Promise; + + /** + * Reads the content of a file as text + * @param path + */ + readText(path: string | Awaitable): Promise; + + /** + * Reads the content of a file and parses to JSON, using the JSON5 parser. + * @param path + */ + readJSON( + path: string | Awaitable, + options?: JSONSchemaValidationOptions, + ): Promise; + + /** + * Reads the content of a file and parses to YAML. + * @param path + */ + readYAML( + path: string | Awaitable, + options?: JSONSchemaValidationOptions, + ): Promise; + + /** + * Reads the content of a file and parses to XML, using the XML parser. + */ + readXML(path: string | Awaitable, options?: XMLParseOptions): Promise; + + /** + * Reads the content of a CSV file. + * @param path + */ + readCSV( + path: string | Awaitable, + options?: CSVParseOptions, + ): Promise; + + /** + * Reads the content of a file and parses to INI + */ + readINI(path: string | Awaitable, options?: INIParseOptions): Promise; + + /** + * Reads the content of a file and attempts to parse it as data. + * @param path + * @param options + */ + readData( + path: string | Awaitable, + options?: CSVParseOptions & INIParseOptions & XMLParseOptions & JSONSchemaValidationOptions, + ): Promise; + + /** + * Appends text to a file as text to the file system. Creates the file if needed. + * @param path + * @param content + */ + appendText(path: string, content: string): Promise; + + /** + * Writes a file as text to the file system + * @param path + * @param content + */ + writeText(path: string, content: string): Promise; + + /** + * Caches a buffer to file and returns the unique file name + * @param bytes + */ + writeCached( + bytes: BufferLike, + options?: { + scope?: "workspace" | "run"; + /** + * Filename extension + */ + ext?: string; + }, + ): Promise; + + /** + * Writes one or more files to the workspace + * @param file a in-memory file or list of files + */ + writeFiles(file: ElementOrArray): Promise; + + /** + * Copies a file between two paths + * @param source + * @param destination + */ + copyFile(source: string, destination: string): Promise; + + /** + * Opens a file-backed key-value cache for the given cache name. + * The cache is persisted across runs of the script. Entries are dropped when the cache grows too large. + * @param cacheName + */ + cache(cacheName: string): Promise>; +} + + interface ToolCallContext { + log(message: string): void; + debug(message: string): void; + trace: ToolCallTrace; +} + + interface ToolCallback { + spec: ToolDefinition; + options?: DefToolOptions; + generator?: ChatGenerationContext; + impl: (args: { context: ToolCallContext } & Record) => Awaitable; +} + + interface ChatContentPartText { + /** + * The text content. + */ + text: string; + + /** + * The type of the content part. + */ + type: "text"; +} + + interface ChatContentPartImage { + image_url: { + /** + * Either a URL of the image or the base64 encoded image data. + */ + url: string; + + /** + * Specifies the detail level of the image. Learn more in the + * [Vision guide](https://platform.openai.com/docs/guides/vision#low-or-high-fidelity-image-understanding). + */ + detail?: "auto" | "low" | "high"; + }; + + /** + * The type of the content part. + */ + type: "image_url"; +} + + interface ChatContentPartInputAudio { + input_audio: { + /** + * Base64 encoded audio data. + */ + data: string; + + /** + * The format of the encoded audio data. Currently supports "wav" and "mp3". + */ + format: "wav" | "mp3"; + }; + + /** + * The type of the content part. Always `input_audio`. + */ + type: "input_audio"; +} + + interface ChatContentPartFile { + file: { + /** + * The base64 encoded file data, used when passing the file to the model as a + * string. + */ + file_data?: string; + + /** + * The ID of an uploaded file to use as input. + */ + file_id?: string; + + /** + * The name of the file, used when passing the file to the model as a string. + */ + filename?: string; + }; + + /** + * The type of the content part. Always `file`. + */ + type: "file"; +} + + interface ChatContentPartRefusal { + /** + * The refusal message generated by the model. + */ + refusal: string; + + /** + * The type of the content part. + */ + type: "refusal"; +} + + interface ChatSystemMessage { + /** + * The contents of the system message. + */ + content: string | ChatContentPartText[]; + + /** + * The role of the messages author, in this case `system`. + */ + role: "system"; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; +} + +/** + * @deprecated + */ + interface ChatFunctionMessage { + content: string; + name: string; + role: "function"; +} + + interface ChatToolMessage { + /** + * The contents of the tool message. + */ + content: string | ChatContentPartText[]; + + /** + * The role of the messages author, in this case `tool`. + */ + role: "tool"; + + /** + * Tool call that this message is responding to. + */ + tool_call_id: string; +} + + interface ChatMessageToolCall { + /** + * The ID of the tool call. + */ + id: string; + + /** + * The function that the model called. + */ + function: { + /** + * The arguments to call the function with, as generated by the model in JSON + * format. Note that the model does not always generate valid JSON, and may + * hallucinate parameters not defined by your function schema. Validate the + * arguments in your code before calling your function. + */ + arguments: string; + + /** + * The name of the function to call. + */ + name: string; + }; + + /** + * The type of the tool. Currently, only `function` is supported. + */ + type: "function"; +} + + interface ChatAssistantMessage { + /** + * The role of the messages author, in this case `assistant`. + */ + role: "assistant"; + + /** + * The contents of the assistant message. Required unless `tool_calls` or + * `function_call` is specified. + */ + content?: string | (ChatContentPartText | ChatContentPartRefusal)[]; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; + + /** + * The refusal message by the assistant. + */ + refusal?: string | null; + + /** + * The tool calls generated by the model, such as function calls. + */ + tool_calls?: ChatMessageToolCall[]; + + /** + * The reasoning of the model + */ + reasoning?: string; +} + + type ChatContentPart = + | ChatContentPartText + | ChatContentPartImage + | ChatContentPartInputAudio + | ChatContentPartFile; + + interface ChatUserMessage { + /** + * The contents of the user message. + */ + content: string | ChatContentPart[]; + + /** + * The role of the messages author, in this case `user`. + */ + role: "user"; + + /** + * An optional name for the participant. Provides the model information to + * differentiate between participants of the same role. + */ + name?: string; +} + + type ChatMessage = + | ChatSystemMessage + | ChatUserMessage + | ChatAssistantMessage + | ChatToolMessage + | ChatFunctionMessage; + + type ChatParticipantHandler = ( + /** + * Prompt generation context to create a new message in the conversation + */ + context: ChatTurnGenerationContext, + /** + * Chat conversation messages + */ + messages: ChatMessage[], + /** + * The last assistant text, without + * reasoning sections. + */ + assistantText: string, +) => Awaitable<{ messages?: ChatMessage[] } | undefined | void>; + + interface ChatParticipantOptions { + label?: string; +} + + interface ChatParticipant { + generator: ChatParticipantHandler; + options: ChatParticipantOptions; +} + +/** + * A set of text extracted from the context of the prompt execution + */ + interface ExpansionVariables + extends Required> { + /** + * Directory where the prompt is executed + */ + dir: string; + + /** + * Directory where output files (trace, output) are created + */ + runDir: string; + + /** + * Unique identifier for the run + */ + runId: string; + + /** + * List of linked files parsed in context + */ + files: WorkspaceFile[]; + + /** + * User defined variables + */ + vars: Record & { + /** + * When running in GitHub Copilot Chat, the current user prompt + */ + question?: string; + /** + * When running in GitHub Copilot Chat, the current chat history + */ + "copilot.history"?: (HistoryMessageUser | HistoryMessageAssistant)[]; + /** + * When running in GitHub Copilot Chat, the current editor content + */ + "copilot.editor"?: string; + /** + * When running in GitHub Copilot Chat, the current selection + */ + "copilot.selection"?: string; + /** + * When running in GitHub Copilot Chat, the current terminal content + */ + "copilot.terminalSelection"?: string; + /** + * Selected model identifier in GitHub Copilot Chat + */ + "copilot.model"?: string; + /** + * selected text in active text editor + */ + "editor.selectedText"?: string; + }; + + /** + * List of secrets used by the prompt, must be registered in `genaiscript`. + */ + secrets: Record; + + /** + * Output trace builder + */ + output: OutputTrace; + + /** + * Resolved metadata + */ + meta: PromptDefinition & ModelConnectionOptions; + + /** + * The script debugger logger + */ + dbg: DebugLogger; +} + + type MakeOptional = Partial> & Omit; + + type PromptArgs = Omit< + PromptScript, + "text" | "id" | "jsSource" | "defTools" | "resolvedSystem" +>; + + type PromptSystemArgs = Omit< + PromptArgs, + | "model" + | "embeddingsModel" + | "temperature" + | "topP" + | "maxTokens" + | "seed" + | "tests" + | "responseLanguage" + | "responseType" + | "responseSchema" + | "files" + | "modelConcurrency" + | "redteam" + | "metadata" +>; + + type StringLike = string | WorkspaceFile | WorkspaceFile[]; + + interface LineNumberingOptions { + /** + * Prepend each line with a line numbers. Helps with generating diffs. + */ + lineNumbers?: boolean; + + /** + * Offset when number lines in output + */ + lineNumbersStart?: number; +} + + interface FenceOptions extends LineNumberingOptions, FenceFormatOptions { + /** + * Language of the fenced code block. Defaults to "markdown". + */ + language?: + | "markdown" + | "json" + | "yaml" + | "javascript" + | "typescript" + | "python" + | "shell" + | "toml" + | string; + + /** + * JSON schema identifier + */ + schema?: string; +} + + type PromptCacheControlType = "ephemeral"; + + interface ContextExpansionOptions { + /** + * Specifies an maximum of estimated tokens for this entry; after which it will be truncated. + */ + maxTokens?: number; + + /* + * Value that is conceptually similar to a zIndex (higher number == higher priority). + * If a rendered prompt has more message tokens than can fit into the available context window, the prompt renderer prunes messages with the lowest priority from the ChatMessages result, preserving the order in which they were declared. This means your extension code can safely declare TSX components for potentially large pieces of context like conversation history and codebase context. + */ + priority?: number; + + /** + * Controls the proportion of tokens allocated from the container's budget to this element. + * It defaults to 1 on all elements. + */ + flex?: number; + + /** + * Caching policy for this text. `ephemeral` means the prefix can be cached for a short amount of time. + */ + cacheControl?: PromptCacheControlType; +} + + interface RangeOptions { + /** + * The inclusive start of the line range, with a 1-based index + */ + lineStart?: number; + /** + * The inclusive end of the line range, with a 1-based index + */ + lineEnd?: number; +} + + interface GitIgnoreFilterOptions { + /** + * Disable filtering files based on the `.gitignore` file. + */ + ignoreGitIgnore?: true | undefined; +} + + interface FileFilterOptions extends GitIgnoreFilterOptions { + /** + * Filename filter based on file suffix. Case insensitive. + */ + endsWith?: ElementOrArray; + + /** + * Filename filter using glob syntax. + */ + glob?: ElementOrArray; +} + + interface ContentSafetyOptions { + /** + * Configure the content safety provider. + */ + contentSafety?: ContentSafetyProvider; + /** + * Runs the default content safety validator + * to prevent prompt injection. + */ + detectPromptInjection?: "always" | "available" | boolean; +} + + interface PromptSystemSafetyOptions { + /** + * Policy to inject builtin system prompts. See to `false` prevent automatically injecting. + */ + systemSafety?: "default" | boolean; +} + + interface SecretDetectionOptions { + /** + * Policy to disable secret scanning when communicating with the LLM. + * Set to `false` to disable. + */ + secretScanning?: boolean; +} + + interface DefOptions + extends FenceOptions, + ContextExpansionOptions, + DataFilter, + RangeOptions, + FileFilterOptions, + ContentSafetyOptions { + /** + * By default, throws an error if the value in def is empty. + */ + ignoreEmpty?: boolean; + + /** + * The content of the def is a predicted output. + * This setting disables line numbers. + */ + prediction?: boolean; +} + +/** + * Options for the `defDiff` command. + */ + interface DefDiffOptions + extends ContextExpansionOptions, + FenceFormatOptions, + LineNumberingOptions {} + + interface ImageTransformOptions { + /** + * Crops the image to the specified region. + */ + crop?: { x?: number; y?: number; w?: number; h?: number }; + /** + * Auto cropping same color on the edges of the image + */ + autoCrop?: boolean; + /** + * Applies a scaling factor to the image after cropping. + */ + scale?: number; + /** + * Rotates the image by the specified number of degrees. + */ + rotate?: number; + /** + * Maximum width of the image. Applied after rotation. + */ + maxWidth?: number; + /** + * Maximum height of the image. Applied after rotation. + */ + maxHeight?: number; + /** + * Removes colors from the image using ITU Rec 709 luminance values + */ + greyscale?: boolean; + + /** + * Flips the image horizontally and/or vertically. + */ + flip?: { horizontal?: boolean; vertical?: boolean }; + + /** + * Output mime + */ + mime?: "image/jpeg" | "image/png"; +} + + interface DefImagesOptions extends ImageTransformOptions { + /** + * A "low" detail image is always downsampled to 512x512 pixels. + */ + detail?: "high" | "low"; + /** + * Selects the first N elements from the data + */ + sliceHead?: number; + /** + * Selects the last N elements from the data + */ + sliceTail?: number; + /** + * Selects the a random sample of N items in the collection. + */ + sliceSample?: number; + /** + * Renders all images in a single tiled image + */ + tiled?: boolean; + + /** + * By default, throws an error if no images are passed. + */ + ignoreEmpty?: boolean; +} + + type JSONSchemaTypeName = + | "string" + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null"; + + type JSONSchemaSimpleType = + | JSONSchemaString + | JSONSchemaNumber + | JSONSchemaBoolean + | JSONSchemaObject + | JSONSchemaArray; + + type JSONSchemaType = JSONSchemaSimpleType | JSONSchemaAnyOf | null; + + interface JSONSchemaAnyOf { + anyOf: JSONSchemaType[]; + uiGroup?: string; +} + + interface JSONSchemaDescribed { + /** + * A short description of the property + */ + title?: string; + /** + * A clear description of the property. + */ + description?: string; + + /** + * Moves the field to a sub-group in the form, potentially collapsed + */ + uiGroup?: string; +} + + interface JSONSchemaString extends JSONSchemaDescribed { + type: "string"; + uiType?: "textarea"; + uiSuggestions?: string[]; + enum?: string[]; + default?: string; + pattern?: string; +} + + interface JSONSchemaNumber extends JSONSchemaDescribed { + type: "number" | "integer"; + default?: number; + minimum?: number; + exclusiveMinimum?: number; + maximum?: number; + exclusiveMaximum?: number; +} + + interface JSONSchemaBoolean extends JSONSchemaDescribed { + type: "boolean"; + uiType?: "runOption"; + default?: boolean; +} + + interface JSONSchemaObject extends JSONSchemaDescribed { + $schema?: string; + type: "object"; + properties?: { + [key: string]: JSONSchemaType; + }; + required?: string[]; + additionalProperties?: boolean; + + default?: object; +} + + interface JSONSchemaArray extends JSONSchemaDescribed { + $schema?: string; + type: "array"; + items?: JSONSchemaType; + + default?: any[]; +} + + type JSONSchema = JSONSchemaObject | JSONSchemaArray; + + interface FileEditValidation { + /** + * JSON schema + */ + schema?: JSONSchema; + /** + * Error while validating the JSON schema + */ + schemaError?: string; + /** + * The path was validated with a file output (defFileOutput) + */ + pathValid?: boolean; +} + + interface DataFrame { + schema?: string; + data: unknown; + validation?: FileEditValidation; +} + + interface Logprob { + /** + * Token text + */ + token: string; + /** + * Log probably of the generated token + */ + logprob: number; + /** + * Logprob value converted to % + */ + probPercent?: number; + /** + * Normalized entropy + */ + entropy?: number; + /** + * Other top tokens considered by the LLM + */ + topLogprobs?: { token: string; logprob: number }[]; +} + + interface RunPromptUsage { + /** + * Estimated cost in $ of the generation + */ + cost?: number; + /** + * Estimated duration of the generation + * including multiple rounds with tools + */ + duration?: number; + /** + * Number of tokens in the generated completion. + */ + completion: number; + + /** + * Number of tokens in the prompt. + */ + prompt: number; + /** + * Total number of tokens used in the request (prompt + completion). + */ + total: number; +} + + interface RunPromptResult { + messages: ChatMessage[]; + text: string; + reasoning?: string; + annotations?: Diagnostic[]; + fences?: Fenced[]; + frames?: DataFrame[]; + json?: any; + error?: SerializedError; + schemas?: Record; + finishReason: "stop" | "length" | "tool_calls" | "content_filter" | "cancel" | "fail"; + fileEdits?: Record; + edits?: Edits[]; + changelogs?: string[]; + model?: ModelType; + choices?: Logprob[]; + logprobs?: Logprob[]; + perplexity?: number; + uncertainty?: number; + usage?: RunPromptUsage; +} + +/** + * Path manipulation functions. + */ + interface Path { + parse(path: string): { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + }; + + /** + * Returns the last portion of a path. Similar to the Unix basename command. + * @param path + */ + dirname(path: string): string; + + /** + * Returns the extension of the path, from the last '.' to end of string in the last portion of the path. + * @param path + */ + extname(path: string): string; + + /** + * Returns the last portion of a path, similar to the Unix basename command. + */ + basename(path: string, suffix?: string): string; + + /** + * The path.join() method joins all given path segments together using the platform-specific separator as a delimiter, then normalizes the resulting path. + * @param paths + */ + join(...paths: string[]): string; + + /** + * The path.normalize() method normalizes the given path, resolving '..' and '.' segments. + */ + normalize(...paths: string[]): string; + + /** + * The path.relative() method returns the relative path from from to to based on the current working directory. If from and to each resolve to the same path (after calling path.resolve() on each), a zero-length string is returned. + */ + relative(from: string, to: string): string; + + /** + * The path.resolve() method resolves a sequence of paths or path segments into an absolute path. + * @param pathSegments + */ + resolve(...pathSegments: string[]): string; + + /** + * Determines whether the path is an absolute path. + * @param path + */ + isAbsolute(path: string): boolean; + + /** + * Change the extension of a path + * @param path + * @param ext + */ + changeext(path: string, ext: string): string; + + /** + * Converts a file://... to a path + * @param fileUrl + */ + resolveFileURL(fileUrl: string): string; + + /** + * Sanitize a string to be safe for use as a filename by removing directory paths and invalid characters. + * @param path file path + */ + sanitize(path: string): string; +} + + interface Fenced { + label: string; + language?: string; + content: string; + args?: { schema?: string } & Record; + + validation?: FileEditValidation; +} + + interface XMLParseOptions extends JSONSchemaValidationOptions { + allowBooleanAttributes?: boolean; + ignoreAttributes?: boolean; + ignoreDeclaration?: boolean; + ignorePiTags?: boolean; + parseAttributeValue?: boolean; + removeNSPrefix?: boolean; + unpairedTags?: string[]; +} + + interface ParsePDFOptions { + /** + * Disable removing trailing spaces in text + */ + disableCleanup?: boolean; + /** + * Render each page as an image + */ + renderAsImage?: boolean; + /** + * Zoom scaling with rendering pages and figures + */ + scale?: number; + /** + * Disable caching with cache: false + */ + cache?: boolean; + /** + * Force system fonts use + */ + useSystemFonts?: boolean; +} + + interface HTMLToTextOptions { + /** + * After how many chars a line break should follow in `p` elements. + * + * Set to `null` or `false` to disable word-wrapping. + */ + wordwrap?: number | false | null | undefined; +} + + interface ParseXLSXOptions { + // specific worksheet name + sheet?: string; + // Use specified range (A1-style bounded range string) + range?: string; +} + + interface WorkbookSheet { + name: string; + rows: object[]; +} + + interface ParseZipOptions { + glob?: string; +} + + type TokenEncoder = (text: string) => number[]; + type TokenDecoder = (lines: Iterable) => string; + + interface Tokenizer { + model: string; + /** + * Number of tokens + */ + size?: number; + encode: TokenEncoder; + decode: TokenDecoder; +} + + interface CSVParseOptions extends JSONSchemaValidationOptions { + delimiter?: string; + headers?: string[]; + repair?: boolean; +} + + interface TextChunk extends WorkspaceFile { + lineStart: number; + lineEnd: number; +} + + interface TextChunkerConfig extends LineNumberingOptions { + model?: ModelType; + chunkSize?: number; + chunkOverlap?: number; + docType?: OptionsOrString< + | "cpp" + | "python" + | "py" + | "java" + | "go" + | "c#" + | "c" + | "cs" + | "ts" + | "js" + | "tsx" + | "typescript" + | "js" + | "jsx" + | "javascript" + | "php" + | "md" + | "mdx" + | "markdown" + | "rst" + | "rust" + >; +} + + interface Tokenizers { + /** + * Estimates the number of tokens in the content. May not be accurate + * @param model + * @param text + */ + count(text: string, options?: { model?: ModelType; approximate?: boolean }): Promise; + + /** + * Truncates the text to a given number of tokens, approximation. + * @param model + * @param text + * @param maxTokens + * @param options + */ + truncate( + text: string, + maxTokens: number, + options?: { model?: ModelType; last?: boolean }, + ): Promise; + + /** + * Tries to resolve a tokenizer for a given model. Defaults to gpt-4o if not found. + * @param model + */ + resolve(model?: ModelType): Promise; + + /** + * Chunk the text into smaller pieces based on a token limit and chunking strategy. + * @param text + * @param options + */ + chunk(file: Awaitable, options?: TextChunkerConfig): Promise; +} + + interface HashOptions { + /** + * Algorithm used for hashing + */ + algorithm?: "sha-256"; + /** + * Trim hash to this number of character + */ + length?: number; + /** + * Include genaiscript version in the hash + */ + version?: boolean; + /** + * Optional salting of the hash + */ + salt?: string; + /** + * Read the content of workspace files object into the hash + */ + readWorkspaceFiles?: boolean; +} + + interface VideoProbeResult { + streams: { + index: number; + codec_name: string; + codec_long_name: string; + profile: string; + codec_type: string; + codec_tag_string: string; + codec_tag: string; + width?: number; + height?: number; + coded_width?: number; + coded_height?: number; + closed_captions?: number; + film_grain?: number; + has_b_frames?: number; + sample_aspect_ratio?: string; + display_aspect_ratio?: string; + pix_fmt?: string; + level?: number; + color_range?: string; + color_space?: string; + color_transfer?: string; + color_primaries?: string; + chroma_location?: string; + field_order?: string; + refs?: number; + is_avc?: string; + nal_length_size?: number; + id: string; + r_frame_rate: string; + avg_frame_rate: string; + time_base: string; + start_pts: number; + start_time: number; + duration_ts: number; + duration: number; + bit_rate: number; + max_bit_rate: string; + bits_per_raw_sample: number | string; + nb_frames: number | string; + nb_read_frames?: string; + nb_read_packets?: string; + extradata_size?: number; + tags?: { + creation_time: string; + language?: string; + handler_name: string; + vendor_id?: string; + encoder?: string; + }; + disposition?: { + default: number; + dub: number; + original: number; + comment: number; + lyrics: number; + karaoke: number; + forced: number; + hearing_impaired: number; + visual_impaired: number; + clean_effects: number; + attached_pic: number; + timed_thumbnails: number; + captions: number; + descriptions: number; + metadata: number; + dependent: number; + still_image: number; + }; + sample_fmt?: string; + sample_rate?: number; + channels?: number; + channel_layout?: string; + bits_per_sample?: number | string; + }[]; + format: { + filename: string; + nb_streams: number; + nb_programs: number; + format_name: string; + format_long_name: string; + start_time: number; + duration: number; + size: number; + bit_rate: number; + probe_score: number; + tags: { + major_brand: string; + minor_version: string; + compatible_brands: string; + creation_time: string; + }; + }; +} + + interface PDFPageImage extends WorkspaceFile { + id: string; + width: number; + height: number; +} + + interface PDFPage { + index: number; + content: string; + image?: string; + figures?: PDFPageImage[]; +} + + interface DocxParseOptions extends CacheOptions { + /** + * Desired output format + */ + format?: "markdown" | "text" | "html"; +} + + interface EncodeIDsOptions { + matcher?: RegExp; + prefix?: string; + open?: string; + close?: string; +} + + type GitIgnorer = (files: readonly (string | WorkspaceFile)[]) => string[]; + + interface Parsers { + /** + * Parses text as a JSON5 payload + */ + JSON5( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses text generated by an LLM as JSON payload + * @param content + */ + JSONLLM(content: string): any | undefined; + + /** + * Parses text or file as a JSONL payload. Empty lines are ignore, and JSON5 is used for parsing. + * @param content + */ + JSONL(content: string | WorkspaceFile): any[] | undefined; + + /** + * Parses text as a YAML payload + */ + YAML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses text as TOML payload + * @param text text as TOML payload + */ + TOML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses the front matter of a markdown file + * @param content + * @param defaultValue + */ + frontmatter( + content: string | WorkspaceFile, + options?: { + defaultValue?: any; + format: "yaml" | "json" | "toml"; + } & JSONSchemaValidationOptions, + ): any | undefined; + + /** + * Parses a file or URL as PDF + * @param content + */ + PDF( + content: string | WorkspaceFile, + options?: ParsePDFOptions, + ): Promise< + | { + /** + * Reconstructed text content from page content + */ + file: WorkspaceFile; + /** + * Page text content + */ + pages: string[]; + /** + * Rendered pages as images if `renderAsImage` is set + */ + images?: string[]; + + /** + * Parse PDF content + */ + data: PDFPage[]; + } + | undefined + >; + + /** + * Parses a .docx file + * @param content + */ + DOCX( + content: string | WorkspaceFile, + options?: DocxParseOptions, + ): Promise<{ file?: WorkspaceFile; error?: string }>; + + /** + * Parses a CSV file or text + * @param content + */ + CSV(content: string | WorkspaceFile, options?: CSVParseOptions): object[] | undefined; + + /** + * Parses a XLSX file and a given worksheet + * @param content + */ + XLSX(content: WorkspaceFile, options?: ParseXLSXOptions): Promise; + + /** + * Parses a .env file + * @param content + */ + dotEnv(content: string | WorkspaceFile): Record; + + /** + * Parses a .ini file + * @param content + */ + INI(content: string | WorkspaceFile, options?: INIParseOptions): any | undefined; + + /** + * Parses a .xml file + * @param content + */ + XML( + content: string | WorkspaceFile, + options?: { defaultValue?: any } & XMLParseOptions, + ): any | undefined; + + /** + * Parses .vtt or .srt transcription files + * @param content + */ + transcription(content: string | WorkspaceFile): TranscriptionSegment[]; + + /** + * Convert HTML to text + * @param content html string or file + * @param options + */ + HTMLToText(content: string | WorkspaceFile, options?: HTMLToTextOptions): Promise; + + /** + * Convert HTML to markdown + * @param content html string or file + * @param options rendering options + */ + HTMLToMarkdown(content: string | WorkspaceFile, options?: HTMLToMarkdownOptions): Promise; + + /** + * Extracts the contents of a zip archive file + * @param file + * @param options + */ + unzip(file: WorkspaceFile, options?: ParseZipOptions): Promise; + + /** + * Parses fenced code sections in a markdown text + */ + fences(content: string | WorkspaceFile): Fenced[]; + + /** + * Parses various format of annotations (error, warning, ...) + * @param content + */ + annotations(content: string | WorkspaceFile): Diagnostic[]; + + /** + * Parses and evaluates a math expression + * @param expression math expression compatible with mathjs + * @param scope object to read/write variables + */ + math(expression: string, scope?: object): Promise; + + /** + * Using the JSON schema, validates the content + * @param schema JSON schema instance + * @param content object to validate + */ + validateJSON(schema: JSONSchema, content: any): FileEditValidation; + + /** + * Renders a mustache template + * @param text template text + * @param data data to render + */ + mustache(text: string | WorkspaceFile, data: Record): string; + + /** + * Renders a jinja template + */ + jinja(text: string | WorkspaceFile, data: Record): string; + + /** + * Computes a diff between two files + */ + diff( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: DefDiffOptions, + ): string; + + /** + * Cleans up a dataset made of rows of data + * @param rows + * @param options + */ + tidyData(rows: object[], options?: DataFilter): object[]; + + /** + * Applies a GROQ query to the data + * @param data data object to filter + * @param query query + * @see https://groq.dev/ + */ + GROQ(query: string, data: any): Promise; + + /** + * Computes a sha1 that can be used for hashing purpose, not cryptographic. + * @param content content to hash + */ + hash(content: any, options?: HashOptions): Promise; + + /** + * Optionally removes a code fence section around the text + * @param text + * @param language + */ + unfence(text: string, language?: ElementOrArray): string; + + /** + * Erase ... tags + * @param text + */ + unthink(text: string): string; + + /** + * Remove left indentation + * @param text + */ + dedent(templ: TemplateStringsArray | string, ...values: unknown[]): string; + + /** + * Encodes ids in a text and returns the function to decode them + * @param text + * @param options + */ + encodeIDs( + text: string, + options?: EncodeIDsOptions, + ): { + encoded: string; + text: string; + decode: (text: string) => string; + matcher: RegExp; + ids: Record; + }; + + /** + * Parses a prompty file + * @param file + */ + prompty(file: WorkspaceFile): Promise; + + /** + * Computes the Levenshtein distance between two strings or workspace files. + */ + levenshtein(a: string | WorkspaceFile, b: string | WorkspaceFile): Promise; + + /** + * Create a file filter using the `.gitignore` format from the given filenames. + * @param filenames + */ + ignore(...filenames: string[]): Promise; +} + + interface YAMLObject { + /** + * Parses a YAML string into a JavaScript object using JSON5. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (strings: TemplateStringsArray, ...values: unknown[]): any; + + /** + * Converts an object to its YAML representation + * @param obj + */ + stringify(obj: unknown): string; + /** + * Parses a YAML string to object + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + parse(text: string | WorkspaceFile): any; +} + + interface PromptyFrontmatter { + name?: string; + description?: string; + version?: string; + authors?: string[]; + tags?: string[]; + sample?: Record | string; + inputs?: Record< + string, + | JSONSchemaArray + | JSONSchemaNumber + | JSONSchemaBoolean + | JSONSchemaString + | JSONSchemaObject + | { type: "list" } + >; + outputs?: JSONSchemaObject; + model?: { + api?: "chat" | "completion"; + configuration?: { + type?: string; + name?: string; + organization?: string; + api_version?: string; + azure_deployment: string; + azure_endpoint: string; + }; + parameters?: { + response_format?: { type: "json_object" | "json_schema" }; + max_tokens?: number; + temperature?: number; + top_p?: number; + n?: number; + seed?: number; + stream?: boolean; // ignored + tools?: unknown[]; // ignored + }; + }; + + // unofficial + files?: string | string[]; + tests?: PromptTest | PromptTest[]; +} + + interface PromptyDocument { + meta: PromptArgs; + frontmatter: PromptyFrontmatter; + content: string; + messages: ChatMessage[]; +} + + interface DiffFile { + chunks: DiffChunk[]; + deletions: number; + additions: number; + from?: string; + to?: string; + oldMode?: string; + newMode?: string; + index?: string[]; + deleted?: true; + new?: true; +} + + interface DiffChunk { + content: string; + changes: DiffChange[]; + oldStart: number; + oldLines: number; + newStart: number; + newLines: number; +} + + interface DiffNormalChange { + type: "normal"; + ln1: number; + ln2: number; + normal: true; + content: string; +} + + interface DiffAddChange { + type: "add"; + add: true; + ln: number; + content: string; +} + + interface DiffDeleteChange { + type: "del"; + del: true; + ln: number; + content: string; +} + + type DiffChangeType = "normal" | "add" | "del"; + + type DiffChange = DiffNormalChange | DiffAddChange | DiffDeleteChange; + + interface DIFFObject { + /** + * Parses a diff string into a structured object + * @param input + */ + parse(input: string): DiffFile[]; + + /** + * Given a filename and line number (0-based), finds the chunk in the diff + * @param file + * @param range line index or range [start, end] inclusive + * @param diff + */ + findChunk( + file: string, + range: number | [number, number] | number[], + diff: ElementOrArray, + ): { file?: DiffFile; chunk?: DiffChunk } | undefined; + + /** + * Creates a two file path + * @param left + * @param right + * @param options + */ + createPatch( + left: string | WorkspaceFile, + right: string | WorkspaceFile, + options?: { + context?: number; + ignoreCase?: boolean; + ignoreWhitespace?: boolean; + }, + ): string; +} + + interface XMLObject { + /** + * Parses an XML payload to an object + * @param text + */ + parse(text: string | WorkspaceFile, options?: XMLParseOptions): Promise; +} + + interface JSONSchemaUtilities { + /** + * Infers a JSON schema from an object + * @param obj + * @deprecated Use `fromParameters` instead + */ + infer(obj: any): Promise; + + /** + * Converts a parameters schema to a JSON schema + * @param parameters + */ + fromParameters(parameters: PromptParametersSchema | undefined): JSONSchema; +} + + interface HTMLTableToJSONOptions { + useFirstRowForHeadings?: boolean; + headers?: { + from?: number; + to: number; + concatWith: string; + }; + stripHtmlFromHeadings?: boolean; + stripHtmlFromCells?: boolean; + stripHtml?: boolean | null; + forceIndexAsNumber?: boolean; + countDuplicateHeadings?: boolean; + ignoreColumns?: number[] | null; + onlyColumns?: number[] | null; + ignoreHiddenRows?: boolean; + id?: string[] | null; + headings?: string[] | null; + containsClasses?: string[] | null; + limitrows?: number | null; +} + + interface HTMLToMarkdownOptions { + disableGfm?: boolean; +} + + interface HTMLObject { + /** + * Converts all HTML tables to JSON. + * @param html + * @param options + */ + convertTablesToJSON(html: string, options?: HTMLTableToJSONOptions): Promise; + /** + * Converts HTML markup to plain text + * @param html + */ + convertToText(html: string): Promise; + /** + * Converts HTML markup to markdown + * @param html + */ + convertToMarkdown(html: string, options?: HTMLToMarkdownOptions): Promise; +} + + interface GitCommit { + sha: string; + date: string; + author: string; + message: string; + files: string[]; +} + + interface GitLogOptions { + base?: string; + head?: string; + count?: number; + merges?: boolean; + author?: string; + until?: string; + after?: string; + excludedGrep?: string | RegExp; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; +} + + interface GitWorktree { + /** + * Path to the worktree + */ + path: string; + /** + * Branch name associated with the worktree + */ + branch: string; + /** + * Commit SHA the worktree is checked out to + */ + head: string; + /** + * Whether the worktree is bare + */ + bare?: boolean; + /** + * Whether the worktree is detached (not on a branch) + */ + detached?: boolean; +} + + interface GitWorktreeAddOptions { + /** + * Create a new branch with the worktree + */ + branch?: string; + /** + * Force creation even if target exists + */ + force?: boolean; + /** + * Checkout the branch into the worktree + */ + checkout?: boolean; + /** + * Create an orphan branch + */ + orphan?: boolean; + /** + * Detach HEAD at the commit + */ + detach?: boolean; +} + + interface Git { + /** + * Current working directory + */ + cwd: string; + + /** + * Resolves the default branch for this repository + */ + defaultBranch(): Promise; + + /** + * Gets the last tag in the repository + */ + lastTag(): Promise; + + /** + * Gets the current branch of the repository + */ + branch(): Promise; + + /** + * Executes a git command in the repository and returns the stdout + * @param cmd + */ + exec( + args: string[] | string, + options?: { + label?: string; + }, + ): Promise; + + /** + * Git fetches the remote repository + * @param options + */ + fetch( + remote?: OptionsOrString<"origin">, + branchOrSha?: string, + options?: { + prune?: boolean; + all?: boolean; + }, + ): Promise; + + /** + * Git pull the remote repository + * @param options + */ + pull(options?: { ff?: boolean }): Promise; + + /** + * Lists the branches in the git repository + */ + listBranches(): Promise; + + /** + * Finds specific files in the git repository. + * By default, work + * @param options + */ + listFiles( + scope?: "modified-base" | "staged" | "modified", + options?: { + base?: string; + /** + * Ask the user to stage the changes if the diff is empty. + */ + askStageOnEmpty?: boolean; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + }, + ): Promise; + + /** + * + * @param options + */ + diff(options?: { + staged?: boolean; + /** + * Ask the user to stage the changes if the diff is empty. + */ + askStageOnEmpty?: boolean; + base?: string; + head?: string; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + unified?: number; + nameOnly?: boolean; + algorithm?: "patience" | "minimal" | "histogram" | "myers"; + ignoreSpaceChange?: boolean; + extras?: string[]; + /** + * Modifies the diff to be in a more LLM friendly format + */ + llmify?: boolean; + /** + * Maximum of tokens before returning a name-only diff + */ + maxTokensFullDiff?: number; + }): Promise; + + /** + * Lists the commits in the git repository + */ + log(options?: GitLogOptions): Promise; + + /** + * Run git blame on a file, line + * @param filename + * @param line + */ + blame(filename: string, line: number): Promise; + + /** + * Returns a list of files that have changed in the git repository + * @param options + */ + changedFiles(options?: GitLogOptions & { readText?: string }): Promise; + + /** + * Create a shallow git clone + * @param repository URL of the remote repository + * @param options various clone options + * @returns the path to the cloned repository + */ + shallowClone( + repository: string, + options?: { + /** + * Branch to clone + */ + branch?: string; + + /** + * Do not reuse previous clone + */ + force?: boolean; + + /** + * Runs install command after cloning + */ + install?: boolean; + + /** + * Number of commits to fetch + */ + depth?: number; + }, + ): Promise; + + /** + * Open a git client on a different directory + * @param cwd working directory + */ + client(cwd: string): Git; + + /** + * List all git worktrees + */ + listWorktrees(): Promise; + + /** + * Add a new git worktree + * @param path path where the worktree should be created + * @param commitish commit, branch, or tag to checkout + * @param options additional options for worktree creation + * @returns Git client opened at the worktree path + */ + addWorktree(path: string, commitish?: string, options?: GitWorktreeAddOptions): Promise; + + /** + * Remove a git worktree + * @param path path to the worktree to remove + * @param options removal options + */ + removeWorktree( + path: string, + options?: { + force?: boolean; + }, + ): Promise; +} + +/** + * A ffmpeg command builder. This instance is the 'native' fluent-ffmpeg command builder. + */ + interface FfmpegCommandBuilder { + seekInput(startTime: number | string): FfmpegCommandBuilder; + duration(duration: number | string): FfmpegCommandBuilder; + noVideo(): FfmpegCommandBuilder; + noAudio(): FfmpegCommandBuilder; + audioCodec(codec: string): FfmpegCommandBuilder; + audioBitrate(bitrate: string | number): FfmpegCommandBuilder; + audioChannels(channels: number): FfmpegCommandBuilder; + audioFrequency(freq: number): FfmpegCommandBuilder; + audioQuality(quality: number): FfmpegCommandBuilder; + audioFilters(filters: string | string[] /* | AudioVideoFilter[]*/): FfmpegCommandBuilder; + toFormat(format: string): FfmpegCommandBuilder; + + videoCodec(codec: string): FfmpegCommandBuilder; + videoBitrate(bitrate: string | number, constant?: boolean): FfmpegCommandBuilder; + videoFilters(filters: string | string[]): FfmpegCommandBuilder; + outputFps(fps: number): FfmpegCommandBuilder; + frames(frames: number): FfmpegCommandBuilder; + keepDisplayAspectRatio(): FfmpegCommandBuilder; + size(size: string): FfmpegCommandBuilder; + aspectRatio(aspect: string | number): FfmpegCommandBuilder; + autopad(pad?: boolean, color?: string): FfmpegCommandBuilder; + + inputOptions(...options: string[]): FfmpegCommandBuilder; + outputOptions(...options: string[]): FfmpegCommandBuilder; +} + + interface FFmpegCommandOptions extends CacheOptions { + inputOptions?: ElementOrArray; + outputOptions?: ElementOrArray; + /** + * For video conversion, output size as `wxh` + */ + size?: string; +} + + interface VideoExtractFramesOptions extends FFmpegCommandOptions { + /** + * A set of seconds or timestamps (`[[hh:]mm:]ss[.xxx]`) + */ + timestamps?: number[] | string[]; + /** + * Number of frames to extract + */ + count?: number; + /** + * Extract frames on the start of each transcript segment + */ + transcript?: TranscriptionResult | string; + /** + * Extract Intra frames (keyframes). This is a efficient and fast decoding. + */ + keyframes?: boolean; + /** + * Picks frames that exceed scene threshold (between 0 and 1), typically between 0.2, and 0.5. + * This is computationally intensive. + */ + sceneThreshold?: number; + /** + * Output of the extracted frames + */ + format?: OptionsOrString<"jpeg" | "png">; +} + + interface VideoExtractClipOptions extends FFmpegCommandOptions { + /** + * Start time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`) + */ + start: number | string; + /** + * Duration of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`). + * You can also specify `end`. + */ + duration?: number | string; + /** + * End time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`). + * You can also specify `duration`. + */ + end?: number | string; +} + + interface VideoExtractAudioOptions extends FFmpegCommandOptions { + /** + * Optimize for speech-to-text transcription. Default is true. + */ + transcription?: boolean; + + forceConversion?: boolean; +} + + interface Ffmpeg { + /** + * Extracts metadata information from a video file using ffprobe + * @param filename + */ + probe(file: string | WorkspaceFile, options?: FFmpegCommandOptions): Promise; + + /** + * Extracts frames from a video file + * @param options + */ + extractFrames( + file: string | WorkspaceFile, + options?: VideoExtractFramesOptions, + ): Promise; + + /** + * Extracts a clip from a video. Returns the generated video file path. + */ + extractClip(file: string | WorkspaceFile, options: VideoExtractClipOptions): Promise; + + /** + * Extract the audio track from a video + * @param videoPath + */ + extractAudio(file: string | WorkspaceFile, options?: VideoExtractAudioOptions): Promise; + + /** + * Runs a ffmpeg command and returns the list of generated file names + * @param input + * @param builder manipulates the ffmpeg command and returns the output name + */ + run( + input: string | WorkspaceFile, + builder: ( + cmd: FfmpegCommandBuilder, + options?: { input: string; dir: string }, + ) => Awaitable, + options?: FFmpegCommandOptions, + ): Promise; +} + + interface TranscriptionSegment { + id?: string; + start: number; + end?: number; + text: string; +} + + interface GitHubOptions { + owner: string; + repo: string; + baseUrl?: string; + auth?: string; + ref?: string; + refName?: string; + issueNumber?: number; + runId?: string; + runUrl?: string; +} + + type GitHubWorkflowRunStatus = + | "completed" + | "action_required" + | "cancelled" + | "failure" + | "neutral" + | "skipped" + | "stale" + | "success" + | "timed_out" + | "in_progress" + | "queued" + | "requested" + | "waiting" + | "pending"; + + interface GitHubNode { + id: number; + node_id: string; +} + + interface GitHubWorkflowRun extends GitHubNode { + run_number: number; + name?: string; + display_title: string; + status: string; + conclusion: string; + html_url: string; + created_at: string; + head_branch: string; + head_sha: string; + workflow_id: number; + run_started_at?: string; +} + + interface GitHubWorkflowJob extends GitHubNode { + run_id: number; + status: string; + conclusion: string; + name: string; + html_url: string; + logs_url: string; + logs: string; + started_at: string; + completed_at: string; + content: string; +} + + interface GitHubIssue extends GitHubNode { + body?: string; + title: string; + number: number; + state: string; + state_reason?: "completed" | "reopened" | "not_planned" | null; + html_url: string; + draft?: boolean; + reactions?: GitHubReactions; + user: GitHubUser; + assignee?: GitHubUser; + labels?: (string | { name?: string })[]; + created_at: string; + updated_at?: string; + closed_at?: string; +} + + type GitHubReactionType = + | "eyes" + | "hooray" + | "heart" + | "rocket" + | "confused" + | "laugh" + | "+1" + | "-1"; + + interface GitHubRef { + ref: string; + url: string; +} + + interface GitHubReactions { + url: string; + total_count: number; + "+1": number; + "-1": number; + laugh: number; + confused: number; + heart: number; + hooray: number; + eyes: number; + rocket: number; +} + + interface GitHubReaction { + id: number; + user: GitHubUser; + content: GitHubReactionType; + created_at: string; +} + + interface GitHubComment extends GitHubNode { + body?: string; + user: GitHubUser; + created_at: string; + updated_at: string; + html_url: string; + reactions?: GitHubReactions; +} + + interface GitHubPullRequest extends GitHubIssue { + head: { + ref: string; + }; + base: { + ref: string; + }; +} + + interface GitHubCodeSearchResult { + name: string; + path: string; + sha: string; + html_url: string; + score: number; + repository: string; +} + + interface GitHubWorkflow extends GitHubNode { + name: string; + path: string; +} + + interface GitHubPaginationOptions { + /** + * Default number of items to fetch, default is 50. + */ + count?: number; +} + + interface GitHubFile extends WorkspaceFile { + type: "file" | "dir" | "submodule" | "symlink"; + size: number; +} + + interface GitHubUser { + login: string; +} + + interface GitHubRelease { + id: number; + tag_name: string; + name: string; + draft?: boolean; + prerelease?: boolean; + html_url: string; + published_at: string; + body?: string; +} + + interface GitHubGist { + id: string; + description?: string; + created_at?: string; + files: WorkspaceFile[]; +} + + interface GitHubArtifact { + id: number; + name: string; + size_in_bytes: number; + url: string; + archive_download_url: string; + expires_at: string; +} + + interface GitHubIssueUpdateOptions { + title?: string; + body?: string; + assignee?: string; + state?: "open" | "closed"; + assignees?: string[]; + labels?: string[]; +} + + interface GitHubIssueCreateOptions { + labels?: string[]; +} + + interface GitHubLabel { + name: string; + color?: string; + description?: string; +} + + interface GitHub { + /** + * Gets connection information for octokit + */ + info(): Promise; + + /** + * Gets the details of a GitHub workflow + * @param workflowId + */ + workflow(workflowId: number | string): Promise; + + /** + * Lists workflows in a GitHub repository + */ + listWorkflows(options?: GitHubPaginationOptions): Promise; + + /** + * Lists workflow runs for a given workflow + * @param workflowId + * @param options + */ + listWorkflowRuns( + workflow_id: string | number, + options?: { + branch?: string; + event?: string; + status?: GitHubWorkflowRunStatus; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub Action workflow run + * @param runId + */ + workflowRun(runId: number | string): Promise; + + /** + * List artifacts for a given workflow run + * @param runId + */ + listWorkflowRunArtifacts( + runId: number | string, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub Action workflow run artifact + * @param artifactId + */ + artifact(artifactId: number | string): Promise; + + /** + * Downloads and unzips archive files from a GitHub Action Artifact + * @param artifactId + */ + downloadArtifactFiles(artifactId: number | string): Promise; + + /** + * Downloads a GitHub Action workflow run log + * @param runId + */ + listWorkflowJobs(runId: number, options?: GitHubPaginationOptions): Promise; + + /** + * Downloads a GitHub Action workflow run log + * @param jobId + */ + downloadWorkflowJobLog(jobId: number, options?: { llmify?: boolean }): Promise; + + /** + * Diffs two GitHub Action workflow job logs + */ + diffWorkflowJobLogs(job_id: number, other_job_id: number): Promise; + + /** + * List labels in repository + */ + listIssueLabels(issueNumber?: string | number): Promise; + + /** + * Lists issues for a given repository + * @param options + */ + listIssues( + options?: { + state?: "open" | "closed" | "all"; + labels?: string; + sort?: "created" | "updated" | "comments"; + direction?: "asc" | "desc"; + creator?: string; + assignee?: string; + since?: string; + mentioned?: string; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Lists gists for a given user + */ + listGists(): Promise; + + /** + * Gets the files of a gist + * @param gist_id + */ + getGist(gist_id: string): Promise; + + /** + * Gets the details of a GitHub issue + * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable. + */ + getIssue(issueNumber?: number | string): Promise; + + /** + * Assigns an existing issue to a bot user. Defaults to copilot user. + */ + assignIssueToBot( + issue_number: number | string, + options?: { bot?: string }, + ): Promise<{ id: string; title: string }>; + + /** + * Creates a new issue or pull request on GitHub + */ + createIssue( + title: string, + body: string, + options?: GitHubIssueCreateOptions, + ): Promise; + + /** + * Updates an issue or pull request on GitHub + * @param issueNumber + * @param options + */ + updateIssue( + issueNumber: number | string, + options: GitHubIssueUpdateOptions, + ): Promise; + + /** + * Create a GitHub issue comment + * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable. + * @param body the body of the comment as Github Flavored markdown + */ + createIssueComment(issueNumber: number | string, body: string): Promise; + + /** + * Lists comments for a given issue + * @param issue_number + * @param options + */ + listIssueComments( + issue_number: number | string, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Updates a comment on a GitHub issue + * @param comment_id + * @param body the updated comment body + */ + updateIssueComment( + comment_id: number | string, + body: string, + options?: GitHubAIDisclaimerOptions, + ): Promise; + + createReaction( + type: "issue" | "issueComment" | "pullRequestReviewComment", + id: number | string, + reaction: GitHubReactionType, + ): Promise; + + /** + * Lists pull requests for a given repository + * @param options + */ + listPullRequests( + options?: { + state?: "open" | "closed" | "all"; + sort?: "created" | "updated" | "popularity" | "long-running"; + direction?: "asc" | "desc"; + } & GitHubPaginationOptions, + ): Promise; + + /** + * Gets the details of a GitHub pull request + * @param pull_number pull request number. Default resolves the pull request for the current branch. + */ + getPullRequest(pull_number?: number | string): Promise; + + /** + * Lists comments for a given pull request + * @param pull_number + * @param options + */ + listPullRequestReviewComments( + pull_number: number, + options?: GitHubPaginationOptions, + ): Promise; + + /** + * Gets the content of a file from a GitHub repository + * @param filepath + * @param options + */ + getFile( + filepath: string, + /** + * commit sha, branch name or tag name + */ + ref: string, + ): Promise; + + /** + * Searches code in a GitHub repository + */ + searchCode(query: string, options?: GitHubPaginationOptions): Promise; + + /** + * Lists branches in a GitHub repository + */ + listBranches(options?: GitHubPaginationOptions): Promise; + + /** + * Lists tags in a GitHub repository + */ + listRepositoryLanguages(): Promise>; + + /** + * List latest releases in a GitHub repository + * @param options + */ + listReleases(options?: GitHubPaginationOptions): Promise; + + /** + * Lists tags in a GitHub repository + */ + getRepositoryContent( + path?: string, + options?: { + ref?: string; + glob?: string; + downloadContent?: boolean; + maxDownloadSize?: number; + type?: GitHubFile["type"]; + }, + ): Promise; + + /** + * Uploads a file to an orphaned branch in the repository and returns the raw url + * Uploads a single copy of the file using hash as the name. + * @param file file or data to upload + * @param options + */ + uploadAsset( + file: BufferLike, + options?: { + branchName?: string; + }, + ): Promise; + + /** + * Resolves user uploaded assets to a short lived URL with access token. Returns undefined if the asset is not found. + */ + resolveAssetUrl(url: string): Promise; + + /** + * Executes a GraphQL query against the GitHub API. By default, injects the `owner`, `repo`, `ref` variables. + * @param query + * @param variables + */ + graphql(query: string, variables?: Record): Promise; + + /** + * Gets the underlying Octokit client + */ + api(): Promise; + + /** + * Opens a client to a different repository + * @param owner + * @param repo + */ + client(owner: string, repo: string): GitHub; + + /** + * Create a worktree for a specific GitHub pull request + * @param pullNumber pull request number + * @param path path where the worktree should be created + * @param options additional options + * @returns Git client opened at the worktree path + */ + addWorktreeForPullRequest( + pullNumber: number | string, + path?: string, + options?: GitWorktreeAddOptions, + ): Promise; +} + + interface MDObject { + /** + * Parses front matter from markdown + * @param text + */ + frontmatter(text: string | WorkspaceFile, format?: "yaml" | "json" | "toml" | "text"): any; + + /** + * Removes the front matter from the markdown text + */ + content(text: string | WorkspaceFile): string; + + /** + * Merges frontmatter with the existing text + * @param text + * @param frontmatter + * @param format + */ + updateFrontmatter(text: string, frontmatter: unknown, format?: "yaml" | "json"): string; + + /** + * Attempts to chunk markdown in text section in a way that does not splitting the heading structure. + * @param text + * @param options + */ + chunk( + text: string | WorkspaceFile, + options?: { maxTokens?: number; model?: string; pageSeparator?: string }, + ): Promise; + + /** + * Pretty prints object to markdown + * @param value + */ + stringify( + value: unknown, + options?: { + quoteValues?: boolean; + headings?: number; + headingLevel?: number; + }, + ): string; +} + + interface GitHubAIDisclaimerOptions extends Record {} + + interface JSONLObject { + /** + * Parses a JSONL string to an array of objects + * @param text + */ + parse(text: string | WorkspaceFile): any[]; + /** + * Converts objects to JSONL format + * @param objs + */ + stringify(objs: unknown[]): string; + + /** + * Appends an object to a JSONL file + * @param filename + * @param obj + */ + append(name: string, objs: ElementOrArray, meta?: any): Promise; +} + + interface INIObject { + /** + * Parses a .ini file + * @param text + */ + parse(text: string | WorkspaceFile): any; + + /** + * Converts an object to.ini string + * @param value + */ + stringify(value: any): string; +} + + interface JSON5Object { + /** + * Parses a JSON/YAML/XML string to an object + * @param text + */ + parse(text: string | WorkspaceFile): any; + + /** + * Renders an object to a JSON5-LLM friendly string + * @param value + */ + stringify(value: any): string; +} + + interface CSVStringifyOptions { + delimiter?: string; + header?: boolean; +} + +/** + * Interface representing CSV operations. + */ + interface CSVObject { + /** + * Parses a CSV string to an array of objects. + * + * @param text - The CSV string to parse. + * @param options - Optional settings for parsing. + * @param options.delimiter - The delimiter used in the CSV string. Defaults to ','. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the first row. + * @returns An array of objects representing the parsed CSV data. + */ + parse(text: string | WorkspaceFile, options?: CSVParseOptions): object[]; + + /** + * Converts an array of objects to a CSV string. + * + * @param csv - The array of objects to convert. + * @param options - Optional settings for stringifying. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys. + * @returns A CSV string representing the data. + */ + stringify(csv: object[], options?: CSVStringifyOptions): string; + + /** + * Converts an array of objects that represents a data table to a markdown table. + * + * @param csv - The array of objects to convert. + * @param options - Optional settings for markdown conversion. + * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys. + * @returns A markdown string representing the data table. + */ + markdownify(csv: object[], options?: { headers?: string[] }): string; + + /** + * Splits the original array into chunks of the specified size. + * @param csv + * @param rows + */ + chunk(csv: object[], size: number): { chunkStartIndex: number; rows: object[] }[]; +} + +/** + * Provide service for responsible. + */ + interface ContentSafety { + /** + * Service identifier + */ + id: string; + + /** + * Scans text for the risk of a User input attack on a Large Language Model. + * If not supported, the method is not defined. + */ + detectPromptInjection?( + content: Awaitable | ElementOrArray>, + ): Promise<{ attackDetected: boolean; filename?: string; chunk?: string }>; + /** + * Analyzes text for harmful content. + * If not supported, the method is not defined. + * @param content + */ + detectHarmfulContent?( + content: Awaitable | ElementOrArray>, + ): Promise<{ + harmfulContentDetected: boolean; + filename?: string; + chunk?: string; + }>; +} + + interface HighlightOptions { + maxLength?: number; +} + + interface WorkspaceFileIndex { + /** + * Gets the index name + */ + name: string; + /** + * Uploads or merges files into the index + */ + insertOrUpdate: (file: ElementOrArray) => Promise; + /** + * Searches the index + */ + search: ( + query: string, + options?: { topK?: number; minScore?: number }, + ) => Promise; +} + + interface VectorIndexOptions extends EmbeddingsModelOptions { + /** + * Type of database implementation. + * - `local` uses a local database using embeddingsModel + * - `azure_ai_search` uses Azure AI Search + */ + type?: "local" | "azure_ai_search"; + version?: number; + deleteIfExists?: boolean; + chunkSize?: number; + chunkOverlap?: number; + + /** + * Max tokens in a request + */ + maxTokens?: number; + + /** + * Embeddings vector size + */ + vectorSize?: number; + /** + * Override default embeddings cache name + */ + cacheName?: string; + /** + * Cache salt to invalidate cache entries + */ + cacheSalt?: string; +} + + interface VectorSearchOptions extends VectorIndexOptions { + /** + * Maximum number of embeddings to use + */ + topK?: number; + /** + * Minimum similarity score + */ + minScore?: number; + /** + * Index to use + */ + indexName?: string; +} + + interface FuzzSearchOptions { + /** + * Controls whether to perform prefix search. It can be a simple boolean, or a + * function. + * + * If a boolean is passed, prefix search is performed if true. + * + * If a function is passed, it is called upon search with a search term, the + * positional index of that search term in the tokenized search query, and the + * tokenized search query. + */ + prefix?: boolean; + /** + * Controls whether to perform fuzzy search. It can be a simple boolean, or a + * number, or a function. + * + * If a boolean is given, fuzzy search with a default fuzziness parameter is + * performed if true. + * + * If a number higher or equal to 1 is given, fuzzy search is performed, with + * a maximum edit distance (Levenshtein) equal to the number. + * + * If a number between 0 and 1 is given, fuzzy search is performed within a + * maximum edit distance corresponding to that fraction of the term length, + * approximated to the nearest integer. For example, 0.2 would mean an edit + * distance of 20% of the term length, so 1 character in a 5-characters term. + * The calculated fuzziness value is limited by the `maxFuzzy` option, to + * prevent slowdown for very long queries. + */ + fuzzy?: boolean | number; + /** + * Controls the maximum fuzziness when using a fractional fuzzy value. This is + * set to 6 by default. Very high edit distances usually don't produce + * meaningful results, but can excessively impact search performance. + */ + maxFuzzy?: number; + /** + * Maximum number of results to return + */ + topK?: number; + /** + * Minimum score + */ + minScore?: number; +} + + interface Retrieval { + /** + * Executers a web search with Tavily or Bing Search. + * @param query + */ + webSearch( + query: string, + options?: { + count?: number; + provider?: "tavily" | "bing"; + /** + * Return undefined when no web search providers are present + */ + ignoreMissingProvider?: boolean; + }, + ): Promise; + + /** + * Search using similarity distance on embeddings + */ + vectorSearch( + query: string, + files: (string | WorkspaceFile) | (string | WorkspaceFile)[], + options?: VectorSearchOptions, + ): Promise; + + /** + * Loads or creates a file index using a vector index + * @param options + */ + index(id: string, options?: VectorIndexOptions): Promise; + + /** + * Performs a fuzzy search over the files + * @param query keywords to search + * @param files list of files + * @param options fuzzing configuration + */ + fuzzSearch( + query: string, + files: WorkspaceFile | WorkspaceFile[], + options?: FuzzSearchOptions, + ): Promise; +} + + interface ArrayFilter { + /** + * Selects the first N elements from the data + */ + sliceHead?: number; + /** + * Selects the last N elements from the data + */ + sliceTail?: number; + /** + * Selects the a random sample of N items in the collection. + */ + sliceSample?: number; +} + + interface DataFilter extends ArrayFilter { + /** + * The keys to select from the object. + * If a key is prefixed with -, it will be removed from the object. + */ + headers?: ElementOrArray; + /** + * Removes items with duplicate values for the specified keys. + */ + distinct?: ElementOrArray; + /** + * Sorts the data by the specified key(s) + */ + sort?: ElementOrArray; +} + + interface DefDataOptions + extends Omit, + FenceFormatOptions, + DataFilter, + ContentSafetyOptions { + /** + * Output format in the prompt. Defaults to Markdown table rendering. + */ + format?: "json" | "yaml" | "csv"; + + /** + * GROQ query to filter the data + * @see https://groq.dev/ + */ + query?: string; +} + + interface DefSchemaOptions { + /** + * Output format in the prompt. + */ + format?: "typescript" | "json" | "yaml"; +} + + type ChatFunctionArgs = { context: ToolCallContext } & Record; + type ChatFunctionHandler = (args: ChatFunctionArgs) => Awaitable; + type ChatMessageRole = "user" | "assistant" | "system"; + + interface HistoryMessageUser { + role: "user"; + content: string; +} + + interface HistoryMessageAssistant { + role: "assistant"; + name?: string; + content: string; +} + + interface WriteTextOptions extends ContextExpansionOptions { + /** + * Append text to the assistant response. This feature is not supported by all models. + * @deprecated + */ + assistant?: boolean; + /** + * Specifies the message role. Default is user + */ + role?: ChatMessageRole; +} + + type PromptGenerator = (ctx: ChatGenerationContext) => Awaitable; + + interface PromptGeneratorOptions + extends ModelOptions, + PromptSystemOptions, + ContentSafetyOptions, + SecretDetectionOptions, + MetadataOptions { + /** + * Label for trace + */ + label?: string; + + /** + * Write file edits to the file system + */ + applyEdits?: boolean; + + /** + * Throws if the generation is not successful + */ + throwOnError?: boolean; +} + + interface FileOutputOptions { + /** + * Schema identifier to validate the generated file + */ + schema?: string; +} + + interface FileOutput { + pattern: string[]; + description?: string; + options?: FileOutputOptions; +} + + interface ImportTemplateOptions { + /** + * Ignore unknown arguments + */ + allowExtraArguments?: boolean; + + /** + * Template engine syntax + */ + format?: "mustache" | "jinja"; +} + + interface PromptTemplateString { + /** + * Set a priority similar to CSS z-index + * to control the trimming of the prompt when the context is full + * @param priority + */ + priority(value: number): PromptTemplateString; + /** + * Sets the context layout flex weight + */ + flex(value: number): PromptTemplateString; + /** + * Applies jinja template to the string lazily + * @param data jinja data + */ + jinja(data: Record): PromptTemplateString; + /** + * Applies mustache template to the string lazily + * @param data mustache data + */ + mustache(data: Record): PromptTemplateString; + /** + * Sets the max tokens for this string + * @param tokens + */ + maxTokens(tokens: number): PromptTemplateString; + + /** + * Updates the role of the message + */ + role(role: ChatMessageRole): PromptTemplateString; + + /** + * Configure the cacheability of the prompt. + * @param value cache control type + */ + cacheControl(value: PromptCacheControlType): PromptTemplateString; +} + + type ImportTemplateArgumentType = + | Awaitable + | (() => Awaitable); + +/** + * Represents the context for generating a chat turn in a prompt template. + * Provides methods for importing templates, writing text, adding assistant responses, + * creating template strings, fencing code blocks, defining variables, and logging. + */ + interface ChatTurnGenerationContext { + importTemplate( + files: ElementOrArray, + templateArguments?: Record, + options?: ImportTemplateOptions, + ): void; + writeText(body: Awaitable, options?: WriteTextOptions): void; + assistant(text: Awaitable, options?: Omit): void; + $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString; + fence(body: StringLike, options?: FenceOptions): void; + def( + name: string, + body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult, + options?: DefOptions, + ): string; + defImages(files: ElementOrArray, options?: DefImagesOptions): void; + defData(name: string, data: Awaitable, options?: DefDataOptions): string; + defDiff( + name: string, + left: T, + right: T, + options?: DefDiffOptions, + ): string; + console: PromptGenerationConsole; +} + + interface FileUpdate { + before: string; + after: string; + validation?: FileEditValidation; +} + + interface RunPromptResultPromiseWithOptions extends Promise { + options(values?: PromptGeneratorOptions): RunPromptResultPromiseWithOptions; +} + + interface DefToolOptions extends ContentSafetyOptions { + /** + * Maximum number of tokens per tool content response + */ + maxTokens?: number; + + /** + * Suffix to identify the variant instantiation of the tool + */ + variant?: string; + + /** + * Updated description for the variant + */ + variantDescription?: string; + + /** + * Intent of the tool that will be used for LLM judge validation of the output. + * `description` uses the tool description as the intent. + * If the intent is a function, it must build a LLM-as-Judge prompt that emits OK/ERR categories. + */ + intent?: + | OptionsOrString<"description"> + | ((options: { + tool: ToolDefinition; + args: any; + result: string; + generator: ChatGenerationContext; + }) => Awaitable); +} + + interface DefAgentOptions extends Omit, DefToolOptions { + /** + * Excludes agent conversation from agent memory + */ + disableMemory?: boolean; + + /** + * Disable memory query on each query (let the agent call the tool) + */ + disableMemoryQuery?: boolean; +} + + type ChatAgentHandler = ( + ctx: ChatGenerationContext, + args: ChatFunctionArgs, +) => Awaitable; + + interface McpToolSpecification { + /** + * Tool identifier + */ + id: string; + /** + * The high level intent of the tool, which can be used for LLM judge validation. + * `description` uses the tool description as the intent. + */ + intent?: DefToolOptions["intent"]; +} + + interface McpServerConfig extends ContentSafetyOptions { + /** + * The executable to run to start the server. + * Required for stdio transport, not used for URL-based transports. + */ + command?: OptionsOrString<"npx" | "uv" | "uvx" | "dotnet" | "docker" | "cargo">; + /** + * Command line arguments to pass to the executable. + * Required for stdio transport, not used for URL-based transports. + */ + args?: string[]; + /** + * The URL to connect to for HTTP/WebSocket/SSE transports. + * When provided, command and args are ignored. + */ + url?: string; + /** + * The transport type to use. If not specified, will be inferred from the configuration. + * - "stdio": Use StdioClientTransport (requires command and args) + * - "http": Use StreamableHTTPClientTransport (requires url) + * - "sse": Use SSEClientTransport (requires url) + */ + type?: "stdio" | "http" | "sse"; + /** + * The server version + */ + version?: string; + /** + * The environment to use when spawning the process. + * + * If not specified, the result of getDefaultEnvironment() will be used. + * Only used for stdio transport. + */ + env?: Record; + /** + * The working directory to use when spawning the process. + * + * If not specified, the current working directory will be inherited. + * Only used for stdio transport. + */ + cwd?: string; + + /** + * Do not prepend client identifier with the tool id. + */ + disableToolIdMangling?: boolean; + + id: string; + options?: DefToolOptions; + + /** + * A list of allowed tools and their specifications. This filtering is applied + * before computing the sha signature. + */ + tools?: ElementOrArray; + + /** + * The sha signature of the tools returned by the server. + * If set, the tools will be validated against this sha. + * This is used to ensure that the tools are not modified by the server. + */ + toolsSha?: string; + + /** + * Validates that each tool has responses related to their description. + */ + intent?: DefToolOptions["intent"]; + + generator?: ChatGenerationContext; +} + + type McpServersConfig = Record>; + + interface McpAgentServerConfig extends McpServerConfig { + description: string; + instructions?: string; + /** + * Maximum number of tokens per tool content response + */ + maxTokens?: number; +} + + type McpAgentServersConfig = Record>; + + type ZodTypeLike = { _def: any; safeParse: any; refine: any }; + + type BufferLike = + | string + | WorkspaceFile + | Buffer + | Blob + | ArrayBuffer + | Uint8Array + | ReadableStream + | SharedArrayBuffer; + + type TranscriptionModelType = OptionsOrString< + "openai:whisper-1" | "openai:gpt-4o-transcribe" | "whisperasr:default" +>; + + interface ImageGenerationOptions extends ImageTransformOptions, RetryOptions { + model?: OptionsOrString; + /** + * The quality of the image that will be generated. + * auto (default value) will automatically select the best quality for the given model. + * high, medium and low are supported for gpt-image-1. + * high is supported for dall-e-3. + * dall-e-2 ignores this flag + */ + quality?: "auto" | "low" | "medium" | "high"; + /** + * Image size. + * For gpt-image-1: 1024x1024, 1536x1024 (landscape), 1024x1536 (portrait), or auto (default value) + * For dall-e: 256x256, 512x512, or 1024x1024 for dall-e-2, and one of 1024x1024, 1792x1024. + */ + size?: OptionsOrString< + | "auto" + | "landscape" + | "portrait" + | "square" + | "1536x1024" + | "1024x1536" + | "256x256" + | "512x512" + | "1024x1024" + | "1024x1792" + | "1792x1024" + >; + /** + * Only used for DALL-E 3 + */ + style?: OptionsOrString<"vivid" | "natural">; + + /** + * For gpt-image-1 only, the type of image format to generate. + */ + outputFormat?: "png" | "jpeg" | "webp"; + + /** + * Generation mode. Defaults to "generate". + * - "generate": Create new images from text prompts + * - "edit": Edit existing images using text prompts and optional masks + */ + mode?: "generate" | "edit"; + + /** + * Input image for edit mode. + * Required for "edit" mode. + */ + image?: BufferLike; + + /** + * Mask image for edit mode (optional). + * Used to specify which parts of the image to edit. + * Only applicable in "edit" mode. + */ + mask?: BufferLike; +} + + interface TranscriptionOptions extends CacheOptions, RetryOptions { + /** + * Model to use for transcription. By default uses the `transcribe` alias. + */ + model?: TranscriptionModelType; + + /** + * Translate to English. + */ + translate?: boolean; + + /** + * Input language in iso-639-1 format. + * @see https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes + */ + language?: string; + + /** + * The sampling temperature, between 0 and 1. + * Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. + */ + temperature?: number; +} + + interface TranscriptionResult { + /** + * Complete transcription text + */ + text: string; + /** + * Error if any + */ + error?: SerializedError; + + /** + * SubRip subtitle string from segments + */ + srt?: string; + + /** + * WebVTT subtitle string from segments + */ + vtt?: string; + + /** + * Individual segments + */ + segments?: (TranscriptionSegment & { + /** + * Seek offset of the segment + */ + seek?: number; + /** + * Temperature used for the generation of the segment + */ + temperature?: number; + })[]; +} + + type SpeechModelType = OptionsOrString< + "openai:tts-1-hd" | "openai:tts-1" | "openai:gpt-4o-mini-tts" +>; + + type SpeechVoiceType = OptionsOrString< + | "alloy" + | "ash" + | "coral" + | "echo" + | "fable" + | "onyx" + | "nova" + | "sage" + | "shimmer" + | "verse" + | "ballad" +>; + + interface SpeechOptions extends CacheOptions, RetryOptions { + /** + * Speech to text model + */ + model?: SpeechModelType; + + /** + * Voice to use (model-specific) + */ + voice?: SpeechVoiceType; + + /** + * Control the voice of your generated audio with additional instructions. Does not work with tts-1 or tts-1-hd. + */ + instructions?: string; +} + + interface SpeechResult { + /** + * Generate audio-buffer file + */ + filename?: string; + /** + * Error if any + */ + error?: SerializedError; +} + + interface ChatGenerationContext extends ChatTurnGenerationContext { + env: ExpansionVariables; + defSchema(name: string, schema: JSONSchema | ZodTypeLike, options?: DefSchemaOptions): string; + defTool( + tool: Omit | McpServersConfig | McpClient, + options?: DefToolOptions, + ): void; + defTool( + name: string, + description: string, + parameters: PromptParametersSchema | JSONSchema, + fn: ChatFunctionHandler, + options?: DefToolOptions, + ): void; + defAgent( + name: string, + description: string, + fn: string | ChatAgentHandler, + options?: DefAgentOptions, + ): void; + defChatParticipant(participant: ChatParticipantHandler, options?: ChatParticipantOptions): void; + defFileOutput( + pattern: ElementOrArray, + description: string, + options?: FileOutputOptions, + ): void; + runPrompt( + generator: string | PromptGenerator, + options?: PromptGeneratorOptions, + ): Promise; + prompt(strings: TemplateStringsArray, ...args: any[]): RunPromptResultPromiseWithOptions; + defFileMerge(fn: FileMergeHandler): void; + defOutputProcessor(fn: PromptOutputProcessorHandler): void; + transcribe( + audio: string | WorkspaceFile, + options?: TranscriptionOptions, + ): Promise; + speak(text: string, options?: SpeechOptions): Promise; + generateImage( + prompt: string, + options?: ImageGenerationOptions, + ): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>; +} + + interface ChatGenerationContextOptions { + /** + * Prompt generation context + */ + generator?: ChatGenerationContext; +} + + interface GenerationOutput { + /** + * full chat history + */ + messages: ChatMessage[]; + + /** + * LLM output. + */ + text: string; + + /** + * Reasoning produced by model + */ + reasoning?: string; + + /** + * Parsed fence sections + */ + fences: Fenced[]; + + /** + * Parsed data sections + */ + frames: DataFrame[]; + + /** + * A map of file updates + */ + fileEdits: Record; + + /** + * Generated annotations + */ + annotations: Diagnostic[]; + + /** + * Schema definition used in the generation + */ + schemas: Record; + + /** + * Output as JSON if parsable + */ + json?: any; + + /** + * Usage stats + */ + usage?: RunPromptUsage; +} + + type Point = { + row: number; + column: number; +}; + + interface DebugLogger { + /** + * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters: + * - `%O` Pretty-print an Object on multiple lines. + * - `%o` Pretty-print an Object all on a single line. + * - `%s` String. + * - `%d` Number (both integer and float). + * - `%j` JSON. Replaced with the string '[Circular]' if the argument contains circular references. + * - `%%` Single percent sign ('%'). This does not consume an argument. + * @param category + * @see https://www.npmjs.com/package/debug + */ + (formatter: any, ...args: any[]): void; + /** + * Indicates if this logger is enabled + */ + enabled: boolean; + /** + * The namespace of the logger provided when calling 'host.logger' + */ + namespace: string; +} + + interface LoggerHost { + /** + * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters: + * - `%O` Pretty-print an Object on multiple lines. + * - `%o` Pretty-print an Object all on a single line. + * - `%s` String. + * - `%d` Number (both integer and float). + * - `%j` JSON. Replaced with the string '[Circular]' if the argument contains circular references. + * - `%%` Single percent sign ('%'). This does not consume an argument. + * @param category + * @see https://www.npmjs.com/package/debug + */ + logger(category: string): DebugLogger; +} + + interface ShellOptions { + cwd?: string; + + stdin?: string; + + /** + * Process timeout in milliseconds, default is 60s + */ + timeout?: number; + /** + * trace label + */ + label?: string; + + /** + * Ignore exit code errors + */ + ignoreError?: boolean; + + /** + * Additional environment variables to set for the process. + */ + env?: Record; + + /** + * Inject the content of 'env' exclusively + */ + isolateEnv?: boolean; +} + + interface ShellOutput { + stdout?: string; + stderr?: string; + exitCode: number; + failed?: boolean; +} + + interface TimeoutOptions { + /** + * Maximum time in milliseconds. Default to no timeout + */ + timeout?: number; +} + + interface ShellSelectOptions {} + + interface ShellSelectChoice { + name?: string; + value: string; + description?: string; +} + + interface ShellInputOptions { + required?: boolean; +} + + interface ShellConfirmOptions { + default?: boolean; +} + + interface ShellHost { + /** + * Executes a shell command + * @param command + * @param args + * @param options + */ + exec(commandWithArgs: string, options?: ShellOptions): Promise; + exec(command: string, args: string[], options?: ShellOptions): Promise; +} + + interface McpToolReference { + name: string; + description?: string; + inputSchema?: JSONSchema; +} + + interface McpResourceReference { + name?: string; + description?: string; + uri: string; + mimeType?: string; +} + + interface McpServerToolResultTextPart { + type: "text"; + text: string; +} + + interface McpServerToolResultImagePart { + type: "image"; + data: string; + mimeType: string; +} + + interface McpServerToolResourcePart { + type: "resource"; + text?: string; + uri?: string; + mimeType?: string; + blob?: string; +} + + type McpServerToolResultPart = + | McpServerToolResultTextPart + | McpServerToolResultImagePart + | McpServerToolResourcePart; + + interface McpServerToolResult { + isError?: boolean; + content: McpServerToolResultPart[]; + text?: string; +} + + interface McpClient extends AsyncDisposable { + /** + * Configuration of the server + */ + readonly config: McpServerConfig; + + /** + * Pings the server + */ + ping(): Promise; + + /** + * List all available MCP tools + */ + listTools(): Promise; + + /** + * Returns a list of tools that can be used in a chat session + */ + listToolCallbacks(): Promise; + + /** + * List resources available in the server + */ + listResources(): Promise; + + /** + * Reads the resource content + */ + readResource(uri: string): Promise; + + /** + * + * @param name Call the MCP tool + * @param args + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + callTool(name: string, args: Record): Promise; + + /** + * Closes clients and server. + */ + dispose(): Promise; +} + + interface McpHost { + /** + * Starts a Model Context Protocol server and returns a client. + */ + mcpServer(config: McpServerConfig): Promise; +} + + interface ResourceReference { + uri: string; // Unique identifier for the resource + name: string; // Human-readable name + description?: string; // Optional description + mimeType?: string; // Optional MIME type +} + + interface ResourceHost { + /** + * Publishes a resource that will be exposed through the MCP server protocol. + * @param content + */ + publishResource( + name: string, + content: BufferLike, + options?: Partial> & SecretDetectionOptions, + ): Promise; + + /** + * List available resource references + */ + resources(): Promise; +} + + interface UserInterfaceHost { + /** + * Asks the user to select between options + * @param message question to ask + * @param options options to select from + */ + select( + message: string, + choices: (string | ShellSelectChoice)[], + options?: ShellSelectOptions, + ): Promise; + + /** + * Asks the user to input a text + * @param message message to ask + */ + input(message: string, options?: ShellInputOptions): Promise; + + /** + * Asks the user to confirm a message + * @param message message to ask + */ + confirm(message: string, options?: ShellConfirmOptions): Promise; +} + + interface ContainerPortBinding { + containerPort: OptionsOrString<"8000/tcp">; + hostPort: string | number; +} + + interface ContainerOptions { + /** + * Container image names. + * @example python:alpine python:slim python + * @see https://hub.docker.com/_/python/ + */ + image?: OptionsOrString<"python:alpine" | "python:slim" | "python" | "node" | "gcc">; + + /** + * Enable networking in container (disabled by default) + */ + networkEnabled?: boolean; + + /** + * Environment variables in container. A null/undefined variable is removed from the environment. + */ + env?: Record; + + /** + * Assign the specified name to the container. Must match [a-zA-Z0-9_-]+. + */ + name?: string; + + /** + * Disable automatic purge of container and volume directory and potentially reuse with same name, configuration. + */ + persistent?: boolean; + + /** + * List of exposed TCP ports + */ + ports?: ElementOrArray; + + /** + * Commands to executes after the container is created + */ + postCreateCommands?: ElementOrArray; +} + + interface PromiseQueue { + /** + * Adds a new promise to the queue + * @param fn + */ + add( + function_: (...arguments_: Arguments) => Awaitable, + ...arguments_: Arguments + ): Promise; + + /** + * Runs all the functions in the queue with limited concurrency + * @param fns + */ + all(fns: (() => Awaitable)[]): Promise; + + /** + * Applies a function to all the values in the queue with limited concurrency + * @param values + * @param fn + */ + mapAll( + values: T[], + fn: (value: T, ...arguments_: Arguments) => Awaitable, + ...arguments_: Arguments + ): Promise; +} + + interface LanguageModelReference { + provider: ModelProviderType; + model: ModelType; + modelId: string; +} + + interface LanguageModelInfo { + id: ModelType; + details?: string; + url?: string; + version?: string; + /** + * Base model name + */ + family?: string; +} + + interface LanguageModelProviderInfo { + id: ModelProviderType; + version?: string; + error?: string; + models: LanguageModelInfo[]; + base?: string; + token?: string; // Optional token for the provider +} + + interface LanguageModelHost { + /** + * Resolve a language model alias to a provider and model based on the current configuration + * @param modelId + */ + resolveLanguageModel(modelId?: ModelType): Promise; + + /** + * Returns the status of the model provider and list of models if available + */ + resolveLanguageModelProvider( + provider: ModelProviderType, + options?: { + // If true, returns the list of models available in the provider + listModels?: boolean; + // If true, return the token + token?: boolean; + }, + ): Promise; +} + + type ContentSafetyProvider = "azure"; + + interface ContentSafetyHost { + /** + * Resolve a content safety client + * @param id safety detection project + */ + contentSafety(id?: ContentSafetyProvider): Promise; +} + + interface RetryOptions { + retryOn?: number[]; // HTTP status codes to retry on + retries?: number; // Number of retry attempts + retryDelay?: number; // Initial delay between retries + maxDelay?: number; // Maximum delay between retries + maxRetryAfter?: number; // Maximum retry-after in milliseconds before giving up +} + + interface CacheOptions { + /** + * By default, LLM queries are not cached. + * If true, the LLM request will be cached. Use a string to override the default cache name + */ + cache?: boolean | string; +} + + type FetchOptions = RequestInit & RetryOptions; + + type FetchTextOptions = Omit & { + convert?: "markdown" | "text" | "tables"; +}; + + interface PromptHost + extends ShellHost, + LoggerHost, + McpHost, + ResourceHost, + UserInterfaceHost, + LanguageModelHost, + ContentSafetyHost { + /** + * A fetch wrapper with proxy, retry and timeout handling. + */ + fetch(input: string | URL | globalThis.Request, init?: FetchOptions): Promise; + + /** + * A function that fetches text from a URL or a file + * @param url + * @param options + */ + fetchText( + url: string | WorkspaceFile, + options?: FetchTextOptions, + ): Promise<{ + ok: boolean; + status: number; + text?: string; + file?: WorkspaceFile; + }>; + + /** + * Opens a in-memory key-value cache for the given cache name. Entries are dropped when the cache grows too large. + * @param cacheName + */ + cache(cacheName: string): Promise>; + + /** + * Starts a container + * @param options container creation options + */ + container(options?: ContainerOptions): Promise; + + /** + * Create a new promise queue to run async functions with limited concurrency + */ + promiseQueue(concurrency: number): PromiseQueue; + + /** + * Gets a client to a Microsoft Teams channel from a share link URL; + * uses `GENAISCRIPT_TEAMS_CHANNEL_URL` environment variable if `shareUrl` is not provided. + * Uses Azure CLI login for authentication. + * @param url + */ + teamsChannel(shareUrl?: string): Promise; +} + + interface WorkspaceFileWithDescription extends WorkspaceFile { + /** + * File description used for videos. + */ + description?: string; +} + +/** + * A client to a messaging channel + */ + interface MessageChannelClient { + /** + * Posts a message with attachments to the channel + * @param message + * @param options + */ + postMessage( + message: string, + options?: { + /** + * File attachments that will be added in the channel folder + */ + files?: (string | WorkspaceFileWithDescription)[]; + /** + * Sets to false to remove AI generated disclaimer + */ + disclaimer?: boolean | string; + }, + ): Promise; +} + + interface ContainerHost extends ShellHost { + /** + * Container unique identifier in provider + */ + id: string; + + /** + * Name assigned to the container. For persistent containers, also contains the sha of the options + */ + name: string; + + /** + * Disable automatic purge of container and volume directory + */ + persistent: boolean; + + /** + * Path to the volume mounted in the host + */ + hostPath: string; + + /** + * Writes a file as text to the container file system + * @param path + * @param content + */ + writeText(path: string, content: string): Promise; + + /** + * Reads a file as text from the container mounted volume + * @param path + */ + readText(path: string): Promise; + + /** + * Copies a set of files into the container + * @param fromHost glob matching files + * @param toContainer directory in the container + */ + copyTo( + fromHost: string | string[], + toContainer: string, + options?: Omit, + ): Promise; + + /** + * List files in a directory in the container + * @param dir + */ + listFiles(dir: string): Promise; + + /** + * Stops and cleans out the container + */ + stop(): Promise; + + /** + * Pause container + */ + pause(): Promise; + + /** + * Resume execution of the container + */ + resume(): Promise; + + /** + * Force disconnect network + */ + disconnect(): Promise; + + /** + * A promise queue of concurrency 1 to run serialized functions against the container + */ + scheduler: PromiseQueue; +} + + interface PromptContext extends ChatGenerationContext { + script(options: PromptArgs): void; + system(options: PromptSystemArgs): void; + path: Path; + retrieval: Retrieval; + workspace: WorkspaceFileSystem; + host: PromptHost; +} + + type RuntimePromptContext = Pick< + PromptContext, + | "host" + | "env" + | "workspace" + | "retrieval" + | "prompt" + | "runPrompt" + | "generateImage" + | "transcribe" + | "speak" +>; +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// keep in sync with PromptContext! + +/** + * Console functions + */ +declare let console: PromptGenerationConsole; + +/** + * Setup prompt title and other parameters. + * Exactly one call should be present on top of .genai.mts file. + */ +declare function script(options: PromptArgs): void; + +/** + * Equivalent of script() for system prompts. + */ +declare function system(options: PromptSystemArgs): void; + +/** + * Imports template prompt file and expands arguments in it. + * @param files + * @param arguments + */ +declare function importTemplate( + files: ElementOrArray, + arguments?: Record, + options?: ImportTemplateOptions, +): void; + +/** + * Append given string to the prompt. It automatically appends "\n". + * Typically best to use `` $`...` ``-templates instead. + */ +declare function writeText(body: Awaitable, options?: WriteTextOptions): void; + +/** + * Append given string to the prompt as an assistant message. + */ +declare function assistant( + text: Awaitable, + options?: Omit, +): void; + +/** + * Append given string to the prompt. It automatically appends "\n". + * `` $`foo` `` is the same as `text("foo")`. + */ +declare function $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString; + +/** + * Appends given (often multi-line) string to the prompt, surrounded in fences. + * Similar to `text(env.fence); text(body); text(env.fence)` + * + * @param body string to be fenced + */ +declare function fence(body: StringLike, options?: FenceOptions): void; + +/** + * Defines `name` to be the (often multi-line) string `body`. + * Similar to `text(name + ":"); fence(body, language)` + * + * @param name name of defined entity, eg. "NOTE" or "This is text before NOTE" + * @param body string to be fenced/defined + * @returns variable name + */ +declare function def( + name: string, + body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult, + options?: DefOptions, +): string; + +/** + * Declares a file that is expected to be generated by the LLM + * @param pattern file name or glob-like path + * @param description description of the file, used by the model to choose when and how to call the function + * @param options expectations about the generated file content + */ +declare function defFileOutput( + pattern: ElementOrArray, + description?: string, + options?: FileOutputOptions, +): void; + +/** + * Declares a tool that can be called from the prompt. + * @param tool Agentic tool function. + * @param name The name of the tool to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64. + * @param description A description of what the function does, used by the model to choose when and how to call the function. + * @param parameters The parameters the tool accepts, described as a JSON Schema object. + * @param fn callback invoked when the LLM requests to run this function + */ +declare function defTool( + tool: Omit | McpServersConfig, + options?: DefToolOptions, +): void; +declare function defTool( + name: string, + description: string, + parameters: PromptParametersSchema | JSONSchema, + fn: ChatFunctionHandler, + options?: DefToolOptions, +): void; + +/** + * Declares a LLM agent tool that can be called from the prompt. + * @param name name of the agent, do not prefix with agent + * @param description description of the agent, used by the model to choose when and how to call the agent + * @param fn prompt generation context + * @param options additional options for the agent LLM + */ +declare function defAgent( + name: string, + description: string, + fn: string | ChatAgentHandler, + options?: DefAgentOptions, +): void; + +/** + * Registers a callback to be called when a file is being merged + * @param fn + */ +declare function defFileMerge(fn: FileMergeHandler): void; + +/** + * Variables coming from the fragment on which the prompt is operating. + */ +declare let env: ExpansionVariables; + +/** + * Path manipulation functions. + */ +declare let path: Path; + +/** + * A set of parsers for well-known file formats + */ +declare let parsers: Parsers; + +/** + * Retrieval Augmented Generation services + */ +declare let retrieval: Retrieval; + +/** + * Access to the workspace file system. + */ +declare let workspace: WorkspaceFileSystem; + +/** + * YAML parsing and stringifying functions. + */ +declare let YAML: YAMLObject; + +/** + * INI parsing and stringifying. + */ +declare let INI: INIObject; + +/** + * CSV parsing and stringifying. + */ +declare let CSV: CSVObject; + +/** + * XML parsing and stringifying. + */ +declare let XML: XMLObject; + +/** + * HTML parsing + */ +declare let HTML: HTMLObject; + +/** + * Markdown and frontmatter parsing. + */ +declare let MD: MDObject; + +/** + * JSONL parsing and stringifying. + */ +declare let JSONL: JSONLObject; + +/** + * JSON5 parsing + */ +declare let JSON5: JSON5Object; + +/** + * JSON Schema utilities + */ +declare let JSONSchema: JSONSchemaUtilities; + +/** + * Diff utilities + */ +declare let DIFF: DIFFObject; + +/** + * Access to current LLM chat session information + */ +declare let host: PromptHost; + +/** + * Access to GitHub queries for the current repository + */ +declare let github: GitHub; + +/** + * Access to Git operations for the current repository + */ +declare let git: Git; + +/** + * Access to ffmpeg operations + */ +declare let ffmpeg: Ffmpeg; + +/** + * Computation around tokens + */ +declare let tokenizers: Tokenizers; + +/** + * @deprecated use `host.fetchText` instead + */ +declare function fetchText( + url: string | WorkspaceFile, + options?: FetchTextOptions, +): Promise<{ ok: boolean; status: number; text?: string; file?: WorkspaceFile }>; + +/** + * Declares a JSON schema variable. + * @param name name of the variable + * @param schema JSON schema instance + * @returns variable name + */ +declare function defSchema( + name: string, + schema: JSONSchema | ZodTypeLike, + options?: DefSchemaOptions, +): string; + +/** + * Adds images to the prompt + * @param files + * @param options + */ +declare function defImages(files: ElementOrArray, options?: DefImagesOptions): void; + +/** + * Renders a table or object in the prompt + * @param name + * @param data + * @param options + * @returns variable name + */ +declare function defData( + name: string, + data: Awaitable, + options?: DefDataOptions, +): string; + +/** + * Renders a diff of the two given values + * @param left + * @param right + * @param options + */ +declare function defDiff( + name: string, + left: T, + right: T, + options?: DefDiffOptions, +): string; + +/** + * Cancels the current prompt generation/execution with the given reason. + * @param reason + */ +declare function cancel(reason?: string): void; + +/** + * Expands and executes prompt + * @param generator + */ +declare function runPrompt( + generator: string | PromptGenerator, + options?: PromptGeneratorOptions, +): Promise; + +/** + * Expands and executes the prompt + */ +declare function prompt( + strings: TemplateStringsArray, + ...args: any[] +): RunPromptResultPromiseWithOptions; + +/** + * Registers a callback to process the LLM output + * @param fn + */ +declare function defOutputProcessor(fn: PromptOutputProcessorHandler): void; + +/** + * Registers a chat participant + * @param participant + */ +declare function defChatParticipant( + participant: ChatParticipantHandler, + options?: ChatParticipantOptions, +): void; + +/** + * Transcribes audio to text. + * @param audio An audio file to transcribe. + * @param options + */ +declare function transcribe( + audio: string | WorkspaceFile, + options?: TranscriptionOptions, +): Promise; + +/** + * Converts text to speech. + * @param text + * @param options + */ +declare function speak(text: string, options?: SpeechOptions): Promise; + +/** + * Generate an image and return the workspace file. + * @param prompt + * @param options + */ +declare function generateImage( + prompt: string, + options?: ImageGenerationOptions, +): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>; diff --git a/packages/api/genaisrc/tsconfig.json b/packages/api/genaisrc/tsconfig.json new file mode 100644 index 0000000000..896f33bbb2 --- /dev/null +++ b/packages/api/genaisrc/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "lib": [ + "ES2024" + ], + "target": "ES2024", + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "nodenext", + "checkJs": true, + "allowJs": true, + "skipLibCheck": true, + "noEmit": true, + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "resolveJsonModule": true, + "erasableSyntaxOnly": true + }, + "include": [ + "**/*.mjs", + "**/*.mts", + "./genaiscript.d.ts" + ] +} \ No newline at end of file diff --git a/packages/cli/dist/package.json b/packages/cli/dist/package.json new file mode 100644 index 0000000000..ee47511cd4 --- /dev/null +++ b/packages/cli/dist/package.json @@ -0,0 +1,100 @@ +{ + "name": "genaiscript", + "version": "2.3.10", + "type": "module", + "bin": "./dist/src/index.js", + "files": [ + "dist/", + "!dist/**/*.map", + "!dist/tsconfig.tsbuildinfo", + "README.md", + "LICENSE" + ], + "publisher": "Microsoft", + "repository": { + "type": "git", + "url": "git+https://github.com/microsoft/genaiscript.git" + }, + "homepage": "https://microsoft.github.io/genaiscript", + "keywords": [ + "genai", + "ai", + "agentic", + "agent", + "cli", + "prompt", + "llm", + "generative ai", + "gpt4", + "chatgpt", + "ollama", + "llamacpp", + "chatgpt" + ], + "description": "A CLI for GenAIScript, a generative AI scripting framework.", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.11.1", + "@fastify/cors": "^11.0.1", + "@fastify/swagger": "^9.5.1", + "@fastify/swagger-ui": "^5.2.3", + "@genaiscript/api": "workspace:*", + "@genaiscript/core": "workspace:*", + "@genaiscript/runtime": "workspace:*", + "@inquirer/prompts": "catalog:", + "@modelcontextprotocol/sdk": "^1.17.0", + "chokidar": "^4.0.3", + "commander": "^14.0.0", + "debug": "catalog:", + "dotenv": "^16.6.1", + "es-toolkit": "catalog:", + "execa": "catalog:", + "fastify": "^5.4.0", + "inflection": "catalog:", + "openai": "^5.10.2", + "replace-ext": "^2.0.0", + "tslib": "catalog:", + "typescript": "catalog:", + "ws": "^8.18.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "devDependencies": { + "@genaiscript/eslint-plugin-genaiscript": "workspace:*", + "@types/debug": "catalog:", + "@types/node": "catalog:", + "@types/papaparse": "^5.3.16", + "@types/prompts": "^2.4.9", + "@types/replace-ext": "^2.0.2", + "@types/ws": "^8.18.1", + "@vitest/coverage-istanbul": "catalog:", + "eslint": "catalog:", + "prettier": "catalog:", + "rimraf": "catalog:", + "vitest": "catalog:" + }, + "scripts": { + "build": "tsc -p . && node ./scripts/fixup.mjs", + "clean": "rimraf dist", + "format:check": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check \"src/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" ", + "format:fix": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write \"src/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\" ", + "lint:check": "eslint src", + "lint:fix": "eslint src --fix --fix-type [problem,suggestion]", + "pack": "npm pack 2>&1", + "prepack": "npm run build", + "test": "vitest --run" + }, + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + } + }, + "./package.json": "./package.json" + }, + "main": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", + "module": "./dist/src/index.js" +} diff --git a/packages/cli/dist/src/action.d.ts b/packages/cli/dist/src/action.d.ts new file mode 100644 index 0000000000..99934495a3 --- /dev/null +++ b/packages/cli/dist/src/action.d.ts @@ -0,0 +1,41 @@ +/** + * Generates GitHub Action files for a given script, including action.yml, Dockerfile, package.json, README.md, and .gitignore, using script metadata and provided options. + * + * If scriptId is not provided, prompts the user for the script name and initializes a new script. If scriptId is given, attempts to load the script from the project. + * + * Parameters: + * scriptId: The identifier or filename of the script for which action files will be generated. If falsy, user will be prompted to enter a name and a new script will be created. + * options: Configuration object with the following optional properties: + * force: If true, overwrite existing files without prompting. + * out: Output directory for generated files. Defaults to action/ under the genaiscript workspace. + * ffmpeg: If true, install ffmpeg in the Docker image. + * python: If true, install python3 and py3-pip in the Docker image. + * playwright: If true, use Playwright Docker image and install Playwright dependencies. + * packageLock: If true, generate a package-lock.json file using npm ci or npm install. + * image: Base Docker image to use. Defaults to Playwright image if playwright flag is set, otherwise node:lts-alpine. + * apks: Additional Alpine packages to install in the Docker image. + * provider: Name of the GenAI provider to use in the start command. + * + * Throws: + * Error if the script cannot be found when scriptId is provided. + * + * Side Effects: + * Writes or overwrites files in the output directory. + * Executes npm or node commands to generate lock files if packageLock is set. + */ +export declare function actionConfigure(scriptId: string, options: { + force?: boolean; + out?: string; + ffmpeg?: boolean; + python?: boolean; + playwright?: boolean; + image?: string; + apks?: string[]; + provider?: string; + pullRequestComment?: string | boolean; + pullRequestDescription?: string | boolean; + pullRequestReviews?: boolean; + event?: string; + interactive?: boolean; +}): Promise; +//# sourceMappingURL=action.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/action.d.ts.map b/packages/cli/dist/src/action.d.ts.map new file mode 100644 index 0000000000..85cc9fb0a9 --- /dev/null +++ b/packages/cli/dist/src/action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"AA+CA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CAgkBf"} \ No newline at end of file diff --git a/packages/cli/dist/src/action.js b/packages/cli/dist/src/action.js new file mode 100644 index 0000000000..0db04cd36d --- /dev/null +++ b/packages/cli/dist/src/action.js @@ -0,0 +1,534 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolve } from "node:path"; +import { snakeCase } from "es-toolkit"; +import { CORE_VERSION, GENAI_ANY_REGEX, GENAI_SRC, GitHubClient, MODEL_PROVIDERS, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_GITHUB, MODEL_PROVIDER_OPENAI, MODEL_PROVIDER_AZURE_AI_INFERENCE, YAMLStringify, YAMLTryParse, createScript as coreCreateScript, dedent, deleteEmptyValues, deleteUndefinedValues, genaiscriptDebug, isCI, logInfo, logVerbose, nodeTryReadPackage, templateIdFromFileName, titleize, tryReadText, tryStat, writeText, resolveRuntimeHost, } from "@genaiscript/core"; +import { buildProject } from "@genaiscript/core"; +import { shellConfirm, shellSelect } from "@genaiscript/runtime"; +const dbg = genaiscriptDebug("cli:action"); +const github = GitHubClient.default(); +/** + * Generates GitHub Action files for a given script, including action.yml, Dockerfile, package.json, README.md, and .gitignore, using script metadata and provided options. + * + * If scriptId is not provided, prompts the user for the script name and initializes a new script. If scriptId is given, attempts to load the script from the project. + * + * Parameters: + * scriptId: The identifier or filename of the script for which action files will be generated. If falsy, user will be prompted to enter a name and a new script will be created. + * options: Configuration object with the following optional properties: + * force: If true, overwrite existing files without prompting. + * out: Output directory for generated files. Defaults to action/ under the genaiscript workspace. + * ffmpeg: If true, install ffmpeg in the Docker image. + * python: If true, install python3 and py3-pip in the Docker image. + * playwright: If true, use Playwright Docker image and install Playwright dependencies. + * packageLock: If true, generate a package-lock.json file using npm ci or npm install. + * image: Base Docker image to use. Defaults to Playwright image if playwright flag is set, otherwise node:lts-alpine. + * apks: Additional Alpine packages to install in the Docker image. + * provider: Name of the GenAI provider to use in the start command. + * + * Throws: + * Error if the script cannot be found when scriptId is provided. + * + * Side Effects: + * Writes or overwrites files in the output directory. + * Executes npm or node commands to generate lock files if packageLock is set. + */ +export async function actionConfigure(scriptId, options) { + options = options || {}; + const { owner, repo } = (await github.info()) || {}; + if (!owner || !repo) + throw new Error("GitHub repository information not found."); + const { force, out = resolve("."), provider, pullRequestComment, pullRequestDescription, pullRequestReviews, interactive, } = options; + scriptId = scriptId || "action"; + dbg(`owner: %s`, owner); + dbg(`repo: %s`, repo); + dbg(`script: %s`, scriptId); + const writeFile = async (name, content) => { + const filePath = resolve(out, name); + if (!force && (await tryStat(filePath))) { + logInfo(`skipping ${filePath} (file already exists), use --force to overwrite`); + } + else { + logVerbose(`writing ${filePath}`); + await writeText(filePath, content); + } + }; + if (!isCI && interactive) { + options.event = + options.event || + (await shellSelect("What event will trigger the action?", [ + "push", + "pull_request", + "issue_comment", + "issue", + ])); + options.python = + options.python === undefined + ? await shellConfirm("Will you use Python?", { + default: false, + }) + : options.python; + if (options.event === "pull_request") { + options.pullRequestDescription = + options.pullRequestDescription === undefined + ? await shellConfirm("Will you publish the output as a pull request description?", { + default: false, + }) + : options.pullRequestDescription; + options.pullRequestComment = + options.pullRequestComment === undefined + ? await shellConfirm("Will you publish the output as a pull request comment?", { + default: false, + }) + : options.pullRequestComment; + options.pullRequestReviews = + options.pullRequestReviews === undefined + ? await shellConfirm("Will you publish diagnostics as a pull request review comments?", { + default: false, + }) + : options.pullRequestReviews; + } + options.playwright = + options.playwright === undefined + ? await shellConfirm("Will you use Playwright? (browse(...)", { + default: false, + }) + : options.playwright; + options.ffmpeg = + options.ffmpeg === undefined + ? await shellConfirm("Will you use ffmpeg?", { + default: false, + }) + : options.ffmpeg; + } + const event = options.event ?? + (pullRequestComment || pullRequestDescription || pullRequestReviews ? "pull_request" : "push"); + const issue = event === "issue" || event === "issue_comment"; + const pullRequest = event === "pull_request"; + logVerbose(`event: ${event}`); + const prj = await buildProject(); // Build the project to get script templates + let script = prj.scripts.find((t) => t.id === scriptId || + (t.filename && GENAI_ANY_REGEX.test(scriptId) && resolve(t.filename) === resolve(scriptId))); + if (!script) { + script = coreCreateScript(scriptId); + script.id = scriptId; + script.filename = resolve(out, GENAI_SRC, templateIdFromFileName(scriptId) + ".genai.mts"); + // Write the prompt script to the determined path + await writeFile(script.filename, script.jsSource); + } + const accept = script.accept; + const ffmpeg = options.ffmpeg || /ffmpeg$/.test(script.jsSource); + const playwright = options.playwright || /host\.browser/.test(script.jsSource); + const python = options.python; + const image = options.image || + (playwright ? "mcr.microsoft.com/playwright:v1.52.0-noble" : "node:lts-alpine"); + const alpine = /alpine$/.test(image); + logVerbose(`script: ${script.filename}`); + logVerbose(`docker image: ${image}`); + logVerbose(`ffmpeg: ${ffmpeg}`); + logVerbose(`python: ${python}`); + logVerbose(`playwright: ${playwright}`); + const { inputSchema, branding } = script; + const scriptSchema = inputSchema?.properties.script || { + type: "object", + properties: {}, + required: [], + }; + const providers = MODEL_PROVIDERS.filter(({ id }) => [ + MODEL_PROVIDER_GITHUB, + MODEL_PROVIDER_OPENAI, + MODEL_PROVIDER_AZURE_OPENAI, + MODEL_PROVIDER_AZURE_AI_INFERENCE, + ].includes(id)).filter(({ env }) => env); + const inputs = deleteUndefinedValues({ + ...Object.fromEntries(Object.entries(scriptSchema.properties).map(([key, value]) => { + return [ + snakeCase(key), + { + description: value.description || "", + required: scriptSchema.required?.includes(key) || false, + default: value.default ?? undefined, + }, + ]; + })), + files: accept === "none" + ? undefined + : { + description: `Files to process, separated by semi columns (;). ${accept || ""}`, + required: false, + }, + debug: { + description: "Enable debug logging (https://microsoft.github.io/genaiscript/reference/scripts/logging/).", + required: false, + }, + model_alias: { + description: "A YAML-like list of model aliases and model id: `translation: github:openai/gpt-4o`", + required: false, + }, + github_issue: issue || pullRequest + ? { + description: `GitHub ${issue ? "issue" : "pull request"} number to use when generating comments (https://microsoft.github.io/genaiscript/reference/scripts/github/)`, + required: false, + } + : undefined, + }); + for (const pro of providers) { + for (const [key, value] of Object.entries(pro.env)) { + inputs[key.toLowerCase()] = deleteUndefinedValues({ + description: value.description || pro.url || `Configuration for ${pro.id} provider`, + required: false, + }); + } + } + let outputs = deleteUndefinedValues({ + text: { + description: "The generated text output.", + }, + data: script.responseSchema + ? { + description: "The generated data output, parsed and stringified as JSON.", + } + : undefined, + }); + if (!Object.keys(outputs).length) + outputs = undefined; + const pkg = await nodeTryReadPackage(); + const apks = [ + "git", + "github-cli", + python ? "python3" : undefined, + python ? "py3-pip" : undefined, + ffmpeg ? "ffmpeg" : undefined, + ...(options.apks || []), + ].filter(Boolean); + const actionYmlFilename = resolve(out, "action.yml"); + const action = YAMLTryParse(await tryReadText(actionYmlFilename)); + if (action && !force) { + logVerbose(`updating action.yml`); + action.description = script.description || pkg?.description; + action.inputs = inputs; + action.outputs = outputs; + action.branding = branding; + await writeText(actionYmlFilename, YAMLStringify(action)); + } + else { + await writeFile("action.yml", YAMLStringify(deleteEmptyValues({ + name: titleize(repo), + author: pkg?.author, + description: script.title || pkg?.description, + inputs, + outputs, + branding, + runs: { + using: "docker", + image: "Dockerfile", + }, + }))); + } + await writeFile("Dockerfile", dedent `# For additional guidance on containerized actions, see https://docs.github.com/en/actions/sharing-automations/creating-actions/creating-a-docker-container-action +FROM ${image} + +# Install packages +${alpine ? `RUN apk add --no-cache ${apks.join(" ")}` : `RUN apt-get update && apt-get install -y ${apks.join(" ")}`} + +# Set working directory +WORKDIR /genaiscript/action + +# Copy source code +COPY . . + +# Install dependencies +RUN npm ci + +${playwright + ? dedent `# Install playwright dependencies +RUN npx --yes playwright install --with-deps chromium + +` + : ""} +# GitHub Action forces the WORKDIR to GITHUB_WORKSPACE +ENTRYPOINT ["npm", "--prefix", "/genaiscript/action", "start"] +`); + await writeFile("README.md", dedent `# ${script.title || titleize(repo)} + +${script.description || ""} + +> This action uses [GitHub Models](https://github.com/models) for LLM inference. + +## Inputs + +|name|description|required|default| +|----|-----------|--------|-------| +${Object.entries(inputs || {}) + .map(([key, value]) => `| \`${key}\` | ${value.description || ""} | ${value.required ? "true" : "false"} | ${value.default || ""} |`) + .join("\n")} + +${outputs + ? `## Outputs + +|name|description| +|----|-----------| + +${Object.entries(outputs) + .map(([key, value]) => `| \`${key}\` | ${value.description || ""} |`) + .join("\n")} +` + : ""} +## Usage + +Add the following to your step in your workflow file: + +\`\`\`yaml +uses: ${owner}/${repo}@main +with: +${Object.entries(inputs || {}) + .filter(([key, value]) => value.required || key === "github_token") + .map(([key]) => ` ${key}: \${{ ${key === "github_token" ? "secrets.GITHUB_TOKEN" : "..."} }}`) + .join("\n")} +\`\`\` + +## Example + +Save this file in your \`.github/workflows/\` directory as \`${script.id}.yml\`: + +\`\`\`yaml +name: ${titleize(repo)} +on: + ${event}: +permissions: + contents: read + ${!issue ? "# " : ""}issues: write + ${event !== "pull_request" ? "# " : ""}pull-requests: write + models: read +concurrency: + group: \${{ github.workflow }}-\${{ github.ref }} + cancel-in-progress: true +jobs: + ${snakeCase(repo)}: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: .genaiscript/cache/** + key: genaiscript-\${{ github.run_id }} + restore-keys: | + genaiscript- + - uses: ${owner}/${repo}@v0 # update to the major version you want to use + with: +${Object.entries(inputs || {}) + .filter(([key, value]) => value.required || key === "github_token") + .map(([key]) => ` ${key}: \${{ ${key === "github_token" ? "secrets.GITHUB_TOKEN" : "..."} }}`) + .join("\n")} +\`\`\` + +## Development + +This action was automatically generated by [GenAIScript](https://microsoft.github.io/genaiscript/reference/github-actions) from the script metadata. +We recommend updating the script metadata instead of editing the action files directly. + +- the action inputs are inferred from the script parameters +- the action outputs are inferred from the script output schema +- the action description is the script description +- the readme description is the script description +- the action branding is the script branding + +To **regenerate** the action files (\`action.yml\`), run: + +\`\`\`bash +npm run configure +\`\`\` + +To lint script files, run: + +\`\`\`bash +npm run lint +\`\`\` + +To typecheck the scripts, run: +\`\`\`bash +npm run typecheck +\`\`\` + +To build the Docker image locally, run: +\`\`\`bash +npm run docker:build +\`\`\` + +To run the action locally in Docker (build it first), use: +\`\`\`bash +npm run docker:start +\`\`\` + +## Upgrade + +The GenAIScript version is pinned in the \`package.json\` file. To upgrade it, run: + +\`\`\`bash +npm run upgrade +\`\`\` + +## Release + +To release a new version of this action, run the release script on a clean working directory. + +\`\`\`bash +npm run release +\`\`\` + +`); + await writeFile(".devcontainer/devcontainer.json", JSON.stringify({ + name: "GenAIScript GitHub Action Dev Container", + build: { + dockerfile: "Dockerfile", + }, + features: {}, + customizations: { + vscode: { + settings: { + "terminal.integrated.defaultProfile.linux": "ash", + "terminal.integrated.profiles.linux": { + ash: { + path: "/bin/ash", + args: ["-l"], + }, + }, + }, + extensions: [ + "GitHub.vscode-github-actions", + "esbenp.prettier-vscode", + "GitHub.copilot-chat", + "genaiscript.genaiscript-vscode", + ], + }, + }, + postCreateCommand: 'git config --global --add safe.directory "$(pwd)" && npm ci', + }, null, 2)); + await writeFile(".devcontainer/Dockerfile", dedent `# Keep this Dockerfile in sync with the main Dockerfile +FROM ${image} + +# Install packages +${alpine ? `RUN apk add --no-cache ${apks.join(" ")}` : `RUN apt-get update && apt-get install -y ${apks.join(" ")}`} +`); + await writeFile(".nvmrc", "lts/*"); + await writeFile("release.sh", dedent `#!/bin/bash +set -e # exit immediately if a command exits with a non-zero status + +# make sure there's no other changes +git pull + +# genaiscript build +npm run typecheck + +# Step 0: ensure we're in sync +if [ "$(git status --porcelain)" ]; then + echo "❌ Pending changes detected. Commit or stash them first." + exit 1 +fi + +# typecheck test +npm run typecheck + +# Step 1: Bump patch version using npm +NEW_VERSION=$(npm version patch -m "chore: bump version to %s") +echo "version: $NEW_VERSION" + +# Step 2: Push commit and tag +git push origin HEAD --tags + +# Step 3: Create GitHub release +gh release create "$NEW_VERSION" --title "$NEW_VERSION" --notes "Patch release $NEW_VERSION" + +# Step 4: update major tag if any +MAJOR=$(echo "$NEW_VERSION" | cut -d. -f1) +echo "major: $MAJOR" +git tag -f $MAJOR $NEW_VERSION +git push origin $MAJOR --force + +echo "✅ GitHub release $NEW_VERSION created successfully." +`); + await writeFile(".github/workflows/ci.yml", `name: Continuous Integration +on: + pull_request: + branches: + - main + push: + branches: + - main +permissions: + contents: read + models: read +concurrency: + group: \${{ github.workflow }}-\${{ github.ref }} + cancel-in-progress: true +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: npm + - run: npm ci + - run: npm test + test-action: + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./ + with: + github_token: \${{ secrets.GITHUB_TOKEN }} +`); + if (!pkg || force) { + const args = [ + `genaiscript`, + `run`, + scriptId, + provider ? `--provider` : undefined, + provider ? `--provider ${provider}` : undefined, + pullRequestComment ? `--pull-request-comment` : undefined, + typeof pullRequestComment === "string" ? pullRequestComment : undefined, + pullRequestDescription ? `--pull-request-description` : undefined, + typeof pullRequestDescription === "string" ? pullRequestDescription : undefined, + pullRequestReviews ? `--pull-request-reviews` : undefined, + ].filter(Boolean); + await writeFile("package.json", JSON.stringify(deleteUndefinedValues({ + private: true, + version: "0.0.0", + author: pkg?.author, + license: pkg?.license, + description: script.description, + dependencies: deleteUndefinedValues({ + ...(pkg?.dependencies || {}), + genaiscript: CORE_VERSION, + ...(playwright ? { "@genaiscript/plugin-playwright": CORE_VERSION } : {}), + }), + scripts: { + upgrade: "npx -y npm-check-updates -u && npm install && npm run fix", + "docker:build": `docker build -t ${owner}-${repo} .`, + "docker:start": `docker run -e GITHUB_TOKEN ${owner}-${repo}`, + lint: `npx --yes prettier --write genaisrc/`, + fix: "genaiscript scripts fix", + typecheck: `genaiscript scripts compile`, + configure: [`genaiscript configure action`, scriptId].filter(Boolean).join(" "), + test: "echo 'No tests defined.'", + dev: args.join(" "), + start: [ + ...args, + "--github-workspace", + "--no-run-trace", + "--no-output-trace", + "--out-output", + "$GITHUB_STEP_SUMMARY", + ].join(" "), + release: "sh release.sh", + }, + }), null, 2)); + } + // upgrade dependencies + const runtimeHost = resolveRuntimeHost(); + await runtimeHost.exec(undefined, "node", ["run", "upgrade"], { + cwd: out, + }); +} +//# sourceMappingURL=action.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/action.js.map b/packages/cli/dist/src/action.js.map new file mode 100644 index 0000000000..191231ea2a --- /dev/null +++ b/packages/cli/dist/src/action.js.map @@ -0,0 +1 @@ +{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/src/cache.d.ts b/packages/cli/dist/src/cache.d.ts new file mode 100644 index 0000000000..8e48d0408a --- /dev/null +++ b/packages/cli/dist/src/cache.d.ts @@ -0,0 +1,15 @@ +/** + * This module provides a function to clear a specified cache directory. + */ +/** + * Asynchronously clears the specified cache directory. + * + * This function removes all contents within the cache directory. If the 'name' + * parameter is 'tests', it specifically targets and clears a subdirectory named 'tests' + * within the cache directory. + * + * @param name - The name of the subdirectory to clear. + * If 'tests', it targets a specific subdirectory within the cache. + */ +export declare function cacheClear(name: string): Promise; +//# sourceMappingURL=cache.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/cache.d.ts.map b/packages/cli/dist/src/cache.d.ts.map new file mode 100644 index 0000000000..0f485c5aed --- /dev/null +++ b/packages/cli/dist/src/cache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAOA;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,iBAY5C"} \ No newline at end of file diff --git a/packages/cli/dist/src/cache.js b/packages/cli/dist/src/cache.js new file mode 100644 index 0000000000..b644e600d2 --- /dev/null +++ b/packages/cli/dist/src/cache.js @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { join } from "node:path"; +import { dotGenaiscriptPath, sanitizeFilename } from "@genaiscript/core"; +import { rmDir } from "@genaiscript/core"; +/** + * This module provides a function to clear a specified cache directory. + */ +/** + * Asynchronously clears the specified cache directory. + * + * This function removes all contents within the cache directory. If the 'name' + * parameter is 'tests', it specifically targets and clears a subdirectory named 'tests' + * within the cache directory. + * + * @param name - The name of the subdirectory to clear. + * If 'tests', it targets a specific subdirectory within the cache. + */ +export async function cacheClear(name) { + // Get the base cache directory path using the dotGenaiscriptPath utility function. + let dir = dotGenaiscriptPath("cache"); + // If the name is 'tests', adjust the directory path to include the 'tests' subdirectory. + if (["tests"].includes(name)) + dir = join(dir, sanitizeFilename(name)); + // Log the directory being cleared to the console for debugging purposes. + console.log(`removing ${dir}`); + // Clear the contents of the directory asynchronously. + await rmDir(dir); +} +//# sourceMappingURL=cache.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/cache.js.map b/packages/cli/dist/src/cache.js.map new file mode 100644 index 0000000000..9fc2dbdef1 --- /dev/null +++ b/packages/cli/dist/src/cache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;GAEG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,mFAAmF;IACnF,IAAI,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEtC,yFAAyF;IACzF,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAE/B,sDAAsD;IACtD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/packages/cli/dist/src/cli.d.ts b/packages/cli/dist/src/cli.d.ts new file mode 100644 index 0000000000..baab7ae4c9 --- /dev/null +++ b/packages/cli/dist/src/cli.d.ts @@ -0,0 +1,3 @@ +import "node:console"; +export declare function cli(): Promise; +//# sourceMappingURL=cli.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/cli.d.ts.map b/packages/cli/dist/src/cli.d.ts.map new file mode 100644 index 0000000000..9e62c59c4d --- /dev/null +++ b/packages/cli/dist/src/cli.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AA4DA,OAAO,cAAc,CAAC;AAiBtB,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CA2mBzC"} \ No newline at end of file diff --git a/packages/cli/dist/src/cli.js b/packages/cli/dist/src/cli.js new file mode 100644 index 0000000000..73b1254847 --- /dev/null +++ b/packages/cli/dist/src/cli.js @@ -0,0 +1,524 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* eslint-disable n/no-process-exit */ +/** + * CLI entry point for the GenAIScript tool, providing various commands and options + * for interacting with scripts, parsing files, testing, and managing cache. + */ +import { NODE_MIN_VERSION, PROMPTFOO_VERSION, NodeHost } from "@genaiscript/runtime"; +import { Option, program } from "commander"; +import { CORE_VERSION, DEBUG_SCRIPT_CATEGORY, GITHUB_REPO, MODEL_PROVIDERS, OPENAI_MAX_RETRY_COUNT, OPENAI_MAX_RETRY_DELAY, OPENAI_RETRY_DEFAULT_DEFAULT, OPENAI_MAX_RETRY_AFTER_DEFAULT, RUNTIME_ERROR_CODE, SERVER_PORT, TOOL_ID, TOOL_NAME, UNHANDLED_ERROR_CODE, GitClient, errorMessage, genaiscriptDebug, isQuiet, isRequestError, logPerformance, logVerbose, semverSatisfies, serializeError, setConsoleColors, setQuiet, } from "@genaiscript/core"; +import { startServer } from "./server.js"; +import { runScriptWithExitCode } from "./run.js"; +import { retrievalFuzz, retrievalIndex, retrievalSearch } from "./retrieval.js"; +import { helpAll } from "./help.js"; +import { jsonl2json, parseAnyToJSON, parseDOCX, parseFence, parseHTMLToText, parseJinja2, parseMarkdown, parsePDF, parseSecrets, parseTokenize, parseTokens, prompty2genaiscript, } from "./parse.js"; +import { createScript, fixScripts, listScripts, scriptInfo } from "./scripts.js"; +import { envInfo, modelAliasesInfo, modelList, scriptModelInfo, systemInfo } from "./info.js"; +import { scriptTestList, scriptTestsView, scriptsTest } from "./test.js"; +import { cacheClear } from "./cache.js"; +import "node:console"; +import { convertFiles } from "./convert.js"; +import { extractAudio, extractVideoFrames, probeVideo } from "./video.js"; +import { configure } from "./configure.js"; +import { listRuns } from "./runs.js"; +import { startMcpServer } from "./mcpserver.js"; +import { error } from "./log.js"; +import { startOpenAPIServer } from "./openapi.js"; +import { actionConfigure } from "./action.js"; +import { resolve } from "node:path"; +import debug from "debug"; +import { githubActionConfigure } from "./githubaction.js"; +import { uniq } from "es-toolkit"; +import { compileScript } from "./typescript.js"; +import { addRemoteOptions, applyRemoteOptions } from "./remote.js"; +const dbg = genaiscriptDebug("cli"); +export async function cli() { + let nodeHost; // Variable to hold NodeHost instance + // Handle uncaught exceptions globally + process.on("uncaughtException", (err) => { + const se = serializeError(err); // Serialize the error object + error(errorMessage(se)); // Log the error message + if (!isQuiet && se?.stack && nodeHost) + logVerbose(se?.stack); // Log stack trace if not in quiet mode + if (isRequestError(err)) { + const exitCode = err.status; // Use the error status as exit code + process.exit(exitCode); // Exit with the error status code + } + else + process.exit(UNHANDLED_ERROR_CODE); // Exit with a generic error code + }); + // Verify Node.js version compatibility + if (!semverSatisfies(process.version, NODE_MIN_VERSION)) { + console.error(`node.js runtime incompatible, expected ${NODE_MIN_VERSION} got ${process.version}`); + process.exit(RUNTIME_ERROR_CODE); // Exit with runtime error code if version is incompatible + } + program.hook("preAction", async (cmd) => { + dbg(`opts: %O`, cmd.opts()); + let { cwd } = cmd.opts(); + const { env, include, githubWorkspace, remote, } = cmd.opts(); // Get environment options from command + const includes = []; // Array to hold include paths + let ignoreCurrentWorkspace = false; + if (include) + includes.push(resolve(include)); + if (githubWorkspace) { + if (remote) + throw new Error("Cannot use --github-workspace with --remote"); + const { workspaceDir } = githubActionConfigure(); + if (workspaceDir && resolve(workspaceDir) !== resolve(process.cwd())) { + includes.push(resolve(process.cwd(), "genaisrc", "*.genai.mts")); + ignoreCurrentWorkspace = true; + cwd = resolve(workspaceDir); + dbg(`github action workspace: %s`, cwd); + GitClient.default().setGitHubWorkspace(cwd); + } + } + if (remote) { + // needed to run exec + NodeHost.install("", { + include: [], + }); + // clone repo + const remoteDir = await applyRemoteOptions(cmd.opts()); + if (!remoteDir) + throw new Error("Failed to configure remote repository"); + includes.push(resolve(remoteDir, "**", "*.genai.*")); + ignoreCurrentWorkspace = true; + dbg(`remote workspace: %s`, remoteDir); + } + if (cwd) { + dbg(`chdir %s`, cwd); + process.chdir(cwd); + } + nodeHost = await NodeHost.install(env?.length ? env : undefined, { + include: includes.length + ? uniq(includes).map((pattern) => ({ + pattern, + ignoreGitIgnore: true, + })) + : undefined, + ignoreCurrentWorkspace, + }); // Install NodeHost with environment options + dbg(`cwd: %s`, process.cwd()); + dbg(`config: %O`, nodeHost.config); + }); + // Configure CLI program options and commands + program + .name(TOOL_ID) + .version(CORE_VERSION) + .description(`CLI for ${TOOL_NAME} ${GITHUB_REPO}`) + .showHelpAfterError(true) + .option("--cwd ", "Working directory") + .option("--include ", "Add 'include' directory to lookup scripts") + .option("--env ", "paths to .env files, defaults to './.env' if not specified") + .option("--no-colors", "disable color output") + .option("-q, --quiet", "disable verbose output") + .option("--perf", "enable performance logging") + .option("--github-workspace", "Use GitHub Actions workspace directory as cwd"); + addRemoteOptions(program); // Add remote options to the program + program.on("option:no-colors", () => setConsoleColors(false)); + program.on("option:quiet", () => setQuiet(true)); + program.on("option:perf", () => logPerformance()); + program.on("option:debug", (c) => debug.enable(c === DEBUG_SCRIPT_CATEGORY ? c : `genaiscript:${c}`)); + const configureCmd = program.command("configure").description("Configure LLMs or GitHub Actions"); + configureCmd.command("llm", { isDefault: true }).description("Configure LLM providers"); + addProviderOptions(configureCmd).action(configure); + // Define 'run' command for executing scripts + const run = program + .command("run") + .description("Runs a GenAIScript against files.") + .arguments(" + `; + const filePath = join(dirname, "index.html"); + const html = (await readFile(filePath, { encoding: "utf8" })).replace("", csp); + res.write(html); + res.statusCode = 200; + res.end(); + } + else if (method === "GET" && route === "/dist/markdown.css") { + res.setHeader("Content-Type", "text/css"); + res.statusCode = 200; + const filePath = join(dirname, "markdown.css"); + const stream = createReadStream(filePath); + stream.pipe(res); + } + else if (method === "GET" && route === "/dist/codicon.css") { + res.setHeader("Content-Type", "text/css"); + res.statusCode = 200; + const filePath = join(dirname, "codicon.css"); + const stream = createReadStream(filePath); + stream.pipe(res); + } + else if (method === "GET" && route === "/dist/codicon.ttf") { + res.setHeader("Content-Type", "font/ttf"); + res.statusCode = 200; + const filePath = join(dirname, "codicon.ttf"); + const stream = createReadStream(filePath); + stream.pipe(res); + } + else if (method === "GET" && route === "/dist/web.mjs") { + res.setHeader("Content-Type", "application/javascript"); + res.statusCode = 200; + const filePath = join(dirname, "web.mjs"); + const stream = createReadStream(filePath); + stream.pipe(res); + } + else if (method === "GET" && route === "/dist/web.mjs.map") { + const filePath = join(dirname, "web.mjs.map"); + if (await tryStat(filePath)) { + res.setHeader("Content-Type", "text/json"); + res.statusCode = 200; + const stream = createReadStream(filePath); + stream.pipe(res); + } + else { + res.statusCode = 404; + res.end(); + } + } + else if (method === "GET" && route === "/favicon.svg") { + res.setHeader("Content-Type", "image/svg+xml"); + res.statusCode = 200; + const filePath = join(dirname, "favicon.svg"); + const stream = createReadStream(filePath); + stream.pipe(res); + } + else if (method === "GET" && imageRx.test(route)) { + try { + const filePath = await realpath(resolve(ROOT, sanitizeFilename(route))); + if (!filePath.startsWith(ROOT)) + throw new Error(`invalid path ${filePath}`); + const stream = createReadStream(filePath); + res.setHeader("Content-Type", "image/" + extname(route)); + res.statusCode = 200; + stream.pipe(res); + } + catch { + res.statusCode = 404; + res.end(); + } + } + else { + // api, validate apikey + if (!checkApiKey(req)) { + console.debug(`401: missing or invalid api-key`); + res.statusCode = 401; + res.end(); + return; + } + let response; + if (method === "GET" && route === "/api/version") + response = serverVersion(); + else if (method === "GET" && route === "/api/scripts") { + response = await scriptList(); + } + else if (method === "GET" && route === "/api/env") { + response = await serverEnv(); + } + else if (method === "GET" && route === "/api/runs") { + const runs = await collectRuns(); + response = { + ok: true, + runs: runs.map(({ scriptId, runId, creationTme: creationTime }) => ({ + scriptId, + runId, + creationTime, + })), + }; + } + else if (method === "POST" && route === "/v1/chat/completions") { + if (!openAIChatCompletions) { + console.debug(`403: chat completions not enabled`); + res.statusCode = 403; + res.end(); + return; + } + await openaiApiChatCompletions(req, res); + return; + } + else if (method === "GET" && route === "/v1/models") { + await openaiApiModels(req, res); + return; + } + else if (method === "GET" && runRx.test(route)) { + const { runId } = runRx.exec(route).groups; + logVerbose(`run: get ${runId}`); + // shortcut to last run + if (runId === lastRunResult?.runId) + response = { + ok: true, + ...lastRunResult, + }; + else { + const runs = await collectRuns(); + const run = runs.find((r) => r.runId === runId); + if (run) { + const runResult = (await tryReadJSON(join(run.dir, "res.json"))) || {}; + const runTrace = (await tryReadText(join(run.dir, TRACE_FILENAME))) || ""; + response = { + ok: true, + type: "script.end", + runId, + exitCode: runResult.exitCode, + result: runResult, + trace: runTrace, + }; + } + } + } + if (response === undefined) { + console.debug(`404: ${method} ${url}`); + res.statusCode = 404; + res.end(); + } + else { + res.statusCode = 200; + res.setHeader("Content-Type", "application/json"); + res.end(JSON.stringify(response)); + } + } + }); + // Upgrade HTTP server to handle WebSocket connections on the /wss route. + httpServer.on("upgrade", (req, socket, head) => { + const pathname = new URL(req.url, `http://${req.headers.host}`).pathname; + if (pathname === "/" && checkApiKey(req)) { + wss.handleUpgrade(req, socket, head, (ws) => { + wss.emit("connection", ws, req); + }); + } + else + socket.destroy(); + }); + // Start the HTTP server on the specified port. + const serverHash = apiKey ? `#api-key:${encodeURIComponent(apiKey)}` : ""; + httpServer.listen(port, serverHost, () => { + console.log(`GenAIScript server v${CORE_VERSION}`); + if (remote) + console.log(`│ Remote: ${remote}${options.remoteBranch ? `#${options.remoteBranch}` : ""}`); + console.log(`│ Local http://${serverHost}:${port}/${serverHash}`); + if (options.network) { + console.log(`│ Host http://localhost:${port}/${serverHash}`); + const interfaces = networkInterfaces(); + for (const ifaces of Object.values(interfaces)) { + for (const iface of ifaces) { + if (iface.family === "IPv4" && !iface.internal) { + console.log(`│ Network http://${iface.address}:${port}/${serverHash}`); + } + } + } + } + }); +} +//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/server.js.map b/packages/cli/dist/src/server.js.map new file mode 100644 index 0000000000..ff757347da --- /dev/null +++ b/packages/cli/dist/src/server.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/src/test.d.ts b/packages/cli/dist/src/test.d.ts new file mode 100644 index 0000000000..e103e02738 --- /dev/null +++ b/packages/cli/dist/src/test.d.ts @@ -0,0 +1,64 @@ +import type { CancellationOptions, PromptScriptTestRunOptions, PromptScriptTestRunResponse } from "@genaiscript/core"; +/** + * Runs prompt script tests based on provided IDs and options, returns the test results. + * @param ids - Array of script IDs to run tests on. + * @param options - Options to configure the test run, including output paths, CLI settings, caching, verbosity, concurrency, redteam mode, promptfoo version, output summary, test delay, test timeout, max concurrency, and cancellation options. + * @returns A Promise resolving to the test run response, including results, status, and error details if applicable. + */ +export declare function runPromptScriptTests(ids: string[], options: PromptScriptTestRunOptions & { + out?: string; + cli?: string; + removeOut?: boolean; + cache?: boolean; + verbose?: boolean; + write?: boolean; + redteam?: boolean; + promptfooVersion?: string; + outSummary?: string; + testDelay?: string; + maxConcurrency?: string; + testTimeout?: string; + random?: boolean; + promptfoo?: boolean; +} & CancellationOptions): Promise; +/** + * Executes prompt script tests, outputs the results, and exits the process with a status code. + * @param ids - Array of script IDs to run tests on. + * @param options - Options to configure the test run, including output paths, CLI settings, verbosity, caching, test delay, groups, concurrency settings, and redteam mode. + */ +export declare function scriptsTest(ids: string[], options: PromptScriptTestRunOptions & { + out?: string; + cli?: string; + removeOut?: boolean; + cache?: boolean; + verbose?: boolean; + write?: boolean; + redteam?: boolean; + promptfooVersion?: string; + outSummary?: string; + testDelay?: string; + groups?: string[]; + maxConcurrency?: string; +}): Promise; +/** + * Lists available test scripts and prints their IDs and filenames. + * Filters the scripts based on the provided options. + * + * @param options - Options to filter the scripts by groups or redteam flag. + * Filters the scripts by groups and whether they are for redteam testing. + */ +export declare function scriptTestList(options: { + groups?: string[]; + redteam?: boolean; +}): Promise; +/** + * Launches a server to view promptfoo test results. + * Ensures necessary directories are created before starting the server. + * Logs a debug message before launching the server. + * Executes the command to start the server using the specified or default promptfoo version. + * @param options - Options to specify the promptfoo version. + */ +export declare function scriptTestsView(options: { + promptfooVersion?: string; +}): Promise; +//# sourceMappingURL=test.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/test.d.ts.map b/packages/cli/dist/src/test.d.ts.map new file mode 100644 index 0000000000..291caa694c --- /dev/null +++ b/packages/cli/dist/src/test.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"AAoEA,OAAO,KAAK,EAEV,mBAAmB,EAKnB,0BAA0B,EAC1B,2BAA2B,EAM5B,MAAM,mBAAmB,CAAC;AA0D3B;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,EAAE,0BAA0B,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,mBAAmB,GACtB,OAAO,CAAC,2BAA2B,CAAC,CAItC;AA0cD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,EAAE,0BAA0B,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,iBAcF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,iBAGrF;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,iBAgB3E"} \ No newline at end of file diff --git a/packages/cli/dist/src/test.js b/packages/cli/dist/src/test.js new file mode 100644 index 0000000000..a16aba9074 --- /dev/null +++ b/packages/cli/dist/src/test.js @@ -0,0 +1,493 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides functionality to test prompt scripts, including running, +// listing, and viewing results. It handles configuration setup, execution logic, +// and result processing. +import { PROMPTFOO_VERSION } from "@genaiscript/runtime"; +import { delay, shuffle } from "es-toolkit"; +import { BOX_RIGHT, BOX_UP_AND_RIGHT, createCancellationController, dataTryParse, evaluateTestResult, genaiscriptDebug, generateId, getTestDir, isCancelError, logError, prettyDuration, prettyTokens, randomHex, rmDir, toWorkspaceFile, tryStat, } from "@genaiscript/core"; +import { execa } from "execa"; +import { appendFile, readFile, writeFile } from "node:fs/promises"; +import { dirname, join, resolve } from "node:path"; +import { CORE_VERSION, EMOJI_FAIL, EMOJI_SUCCESS, FILES_NOT_FOUND_ERROR_CODE, GENAI_ANY_REGEX, GENAISCRIPT_FOLDER, PROMPTFOO_CACHE_PATH, PROMPTFOO_CONFIG_DIR, PROMPTFOO_REMOTE_API_PORT, TEST_RUNS_DIR_NAME, JSON5TryParse, MarkdownTrace, YAMLStringify, applyModelOptions, arrayify, checkCancelled, dotGenaiscriptPath, ensureDir, filterScripts, generatePromptFooConfiguration, headersToMarkdownTableHead, headersToMarkdownTableSeparator, link, logInfo, logVerbose, normalizeFloat, normalizeInt, objectToMarkdownTableRow, promptFooDriver, resolveModelConnectionInfo, roundWithPrecision, resolveRuntimeHost, serializeError, toStringList, getModulePaths, buildProject, } from "@genaiscript/core"; +import { run } from "@genaiscript/api"; +const dbg = genaiscriptDebug("test"); +const dbgConfig = genaiscriptDebug("test:config"); +const dbgRun = genaiscriptDebug("test:run"); +const { __filename } = typeof module !== "undefined" && module.filename + ? getModulePaths(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + getModulePaths(import.meta); +/** + * Parses model specifications from a string and returns a ModelOptions object. + * @param m - The string representation of the model specification. + * @returns A ModelOptions object with model, temperature, and topP fields if applicable. + */ +function parseModelSpec(m) { + const values = m + .split(/&/g) + .map((kv) => kv.split("=", 2)) + .reduce((acc, [key, value]) => { + acc[key] = decodeURIComponent(value); + return acc; + }, {}); + if (Object.keys(values).length > 1) + return { + model: values["m"], + smallModel: values["s"], + visionModel: values["v"], + temperature: normalizeFloat(values["t"]), + topP: normalizeFloat(values["p"]), + reasoningEffort: values["r"], + }; + else + return { model: m }; +} +/** + * Creates an environment object for execution with defaults and optional overrides. + * @returns An environment object with necessary configurations. + */ +function createEnv() { + const env = process.env; + return { + ...process.env, + PROMPTFOO_CACHE_PATH: env.PROMPTFOO_CACHE_PATH ?? PROMPTFOO_CACHE_PATH, + PROMPTFOO_CONFIG_DIR: env.PROMPTFOO_CONFIG_DIR ?? PROMPTFOO_CONFIG_DIR, + PROMPTFOO_DISABLE_TELEMETRY: env.PROMPTFOO_DISABLE_TELEMETRY ?? "true", + PROMPTFOO_DISABLE_UPDATE: env.PROMPTFOO_DISABLE_UPDATE ?? "true", + PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION: env.PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION ?? "true", + }; +} +/** + * Runs prompt script tests based on provided IDs and options, returns the test results. + * @param ids - Array of script IDs to run tests on. + * @param options - Options to configure the test run, including output paths, CLI settings, caching, verbosity, concurrency, redteam mode, promptfoo version, output summary, test delay, test timeout, max concurrency, and cancellation options. + * @returns A Promise resolving to the test run response, including results, status, and error details if applicable. + */ +export async function runPromptScriptTests(ids, options) { + const { promptfoo } = options || {}; + if (promptfoo) + return await promptFooRunPromptScriptTests(ids, options); + return await apiRunPromptScriptTests(ids, options); +} +async function resolveTests(script) { + const tests = arrayify(script.tests || []); + const res = []; + for (const test of tests) { + if (typeof test === "string") { + dbgConfig(`resolving tests: %s`, test); + const data = arrayify((await dataTryParse(toWorkspaceFile(test)))); + if (data?.length) { + dbgConfig(`imported %d tests`, data.length); + res.push(...data); + } + } + else { + res.push(test); + } + } + return res; +} +async function apiRunPromptScriptTests(ids, options) { + applyModelOptions(options, "cli"); + const { cancellationToken, random } = options || {}; + const scripts = await listTests({ ids, ...(options || {}) }); + if (!scripts.length) + return { + ok: false, + status: FILES_NOT_FOUND_ERROR_CODE, + error: serializeError(new Error("no tests found")), + }; + const runId = randomHex(6); + const out = options.out || getTestDir(runId); + const testDelay = normalizeInt(options?.testDelay); + //const maxConcurrency = normalizeInt(options?.maxConcurrency); + const runStart = new Date(); + logVerbose(`out: ${out}`); + if (options?.removeOut) + await rmDir(out); + await ensureDir(out); + let outSummary = options.outSummary ? resolve(options.outSummary) : undefined; + if (!outSummary) { + outSummary = dotGenaiscriptPath(TEST_RUNS_DIR_NAME, `${new Date().toISOString().replace(/[:.]/g, "-")}.trace.md`); + } + // Prepare test configurations for each script + const optionsModels = Object.freeze(options.models?.map(parseModelSpec)); + dbg(`options models: %o`, optionsModels); + let configurations = []; + for (const script of scripts) { + dbg(`script: %s`, script.id); + checkCancelled(cancellationToken); + const testModels = arrayify(script.testModels).map((m) => typeof m === "string" ? parseModelSpec(m) : m); + if (testModels.length) + dbgConfig(`test models: %o`, testModels); + const models = arrayify(testModels?.length ? testModels : optionsModels?.slice(0)); + if (!models.length) + models.push({}); + const tests = await resolveTests(script); + dbg(`tests: %d, models: %d`, tests.length, models.length); + for (const model of models) { + for (const test of tests) { + const options = { + out: join(out, `${generateId()}.trace.json`), + ...model, + }; + configurations.push({ script, test, options }); + } + } + } + dbg(`configurations: %d`, configurations.length); + if (random) { + dbg(`shuffling configurations`); + configurations = shuffle(configurations); + } + const stats = { + prompt: 0, + completion: 0, + total: 0, + }; + const headers = ["status", "script", "prompt", "completion", "total", "duration", "error"]; + if (outSummary) { + dbg(`summary: %s`, outSummary); + await ensureDir(dirname(outSummary)); + await appendFile(outSummary, [headersToMarkdownTableHead(headers), headersToMarkdownTableSeparator(headers)].join("")); + } + const results = []; + try { + for (const config of configurations) { + checkCancelled(cancellationToken); + const { script, options, test } = config; + logInfo(`test ${script.id} - ${results.length + 1}/${configurations.length}`); + const elapsed = Date.now() - runStart.getTime(); + logVerbose(BOX_UP_AND_RIGHT + + BOX_RIGHT + + toStringList(prettyDuration(elapsed), `${results.filter((r) => !r.ok).length} failed`, `${results.filter((r) => r.ok).length} success`, prettyTokens(stats.total, "both"), prettyTokens(stats.prompt, "prompt"), prettyTokens(stats.completion, "completion"))); + dbgRun(`options: %O`, options); + const { files = [] } = test; + const res = await run(script.id, files, { + ...options, + runTrace: false, + outputTrace: false, + }); + const { usage } = res || { error: { message: "run failed" }, status: "error" }; + const error = await evaluateTestResult(config, res); + const ok = !error; + stats.prompt += usage?.prompt || 0; + stats.completion += usage?.completion || 0; + stats.total += usage?.total || 0; + if (outSummary) { + const row = { + ok, + status: ok ? EMOJI_SUCCESS : EMOJI_FAIL, + script: script.id, + prompt: usage?.prompt, + completion: usage?.completion, + total: usage?.total, + duration: usage?.duration, + error, + }; + await appendFile(outSummary, objectToMarkdownTableRow(row, headers, { skipEscape: true })); + } + results.push({ ok, res, config, error }); + if (testDelay > 0) { + logVerbose(` waiting ${testDelay}s`); + await delay(testDelay * 1000); + } + } + } + catch (e) { + if (isCancelError(e)) + logInfo(`test run cancelled`); + else { + logError(e); + throw e; + } + } + const runEnd = new Date(); + if (outSummary) { + await appendFile(outSummary, [ + objectToMarkdownTableRow({ + status: results.filter((r) => r.ok).length, + prompt: stats.prompt, + completion: stats.completion, + total: stats.total, + duration: roundWithPrecision((runEnd.getTime() - runStart.getTime()) / 1000, 1), + }, headers, { skipEscape: true }), + "\n\n", + `- end: ${runEnd.toISOString()}\n`, + ].join("")); + } + if (outSummary) + logVerbose(`trace: ${outSummary}`); + const ok = results.every((r) => !!r.ok); + return { + ok, + status: ok ? 0 : -1, + value: results.map(({ ok, res, config }) => ({ + ok, + error: res.error, + status: res.status === "success" ? 0 : -1, + script: config.script.id, + })), + error: results.find((r) => r.res.error)?.res.error, + }; +} +async function promptFooRunPromptScriptTests(ids, options) { + const runtimeHost = resolveRuntimeHost(); + applyModelOptions(options, "cli"); + const { cancellationToken, redteam } = options || {}; + const scripts = await listTests({ ids, ...(options || {}) }); + if (!scripts.length) + return { + ok: false, + status: FILES_NOT_FOUND_ERROR_CODE, + error: serializeError(new Error("no tests found")), + }; + const cli = options.cli || resolve(__filename); + const out = options.out || join(GENAISCRIPT_FOLDER, "tests"); + let outSummary = options.outSummary ? resolve(options.outSummary) : undefined; + const provider = join(out, "provider.mjs"); + const port = PROMPTFOO_REMOTE_API_PORT; + const serverUrl = `http://127.0.0.1:${port}`; + const testDelay = normalizeInt(options?.testDelay); + const maxConcurrency = normalizeInt(options?.maxConcurrency); + const timeout = normalizeInt(options?.testTimeout) * 1000 || undefined; + const runStart = new Date(); + logInfo(`writing tests to ${out}`); + if (options?.removeOut) + await rmDir(out); + await ensureDir(out); + await writeFile(provider, promptFooDriver); + if (!outSummary) { + outSummary = dotGenaiscriptPath(TEST_RUNS_DIR_NAME, `${new Date().toISOString().replace(/[:.]/g, "-")}.trace.md`); + } + await ensureDir(PROMPTFOO_CACHE_PATH); + await ensureDir(PROMPTFOO_CONFIG_DIR); + if (outSummary) { + await ensureDir(dirname(outSummary)); + await appendFile(outSummary, `## GenAIScript Test Results + +- start: ${runStart.toISOString()} +- Run this command to launch the promptfoo test viewer. + +\`\`\`sh +npx --yes genaiscript@${CORE_VERSION} test view +\`\`\` + +`); + logVerbose(`trace: ${outSummary}`); + } + // Prepare test configurations for each script + const optionsModels = Object.freeze(options.models?.map(parseModelSpec)); + const configurations = []; + for (const script of scripts) { + checkCancelled(cancellationToken); + const fn = out + ? join(out, `${script.id}.promptfoo.yaml`) + : script.filename.replace(GENAI_ANY_REGEX, ".promptfoo.yaml"); + const { info: chatInfo } = await resolveModelConnectionInfo(script, { + model: runtimeHost.modelAliases.large.model, + }); + if (chatInfo.error) + throw new Error(chatInfo.error); + let { info: embeddingsInfo } = await resolveModelConnectionInfo(script, { + model: runtimeHost.modelAliases.embeddings.model, + }); + if (embeddingsInfo?.error) + embeddingsInfo = undefined; + const testModels = arrayify(script.testModels).map((m) => typeof m === "string" ? parseModelSpec(m) : m); + const models = testModels?.length ? testModels : optionsModels?.slice(0); + const config = await generatePromptFooConfiguration(script, { + out, + cli, + models, + provider: "provider.mjs", + chatInfo, + embeddingsInfo, + redteam, + }); + const yaml = YAMLStringify(config); + await writeFile(fn, yaml); + configurations.push({ script, configuration: fn }); + } + const stats = { + prompt: 0, + completion: 0, + total: 0, + }; + const headers = ["status", "script", "prompt", "completion", "total", "duration", "url"]; + if (outSummary) { + await appendFile(outSummary, [headersToMarkdownTableHead(headers), headersToMarkdownTableSeparator(headers)].join("")); + } + const promptFooVersion = options.promptfooVersion || PROMPTFOO_VERSION; + const results = []; + // Execute each configuration and gather results + for (const config of configurations) { + checkCancelled(cancellationToken); + const { script, configuration } = config; + logInfo(`test ${script.id} (${results.length + 1}/${configurations.length}) - ${configuration}`); + const testStart = new Date(); + const outJson = configuration.replace(/\.yaml$/, ".res.json"); + const cmd = "npx"; + const args = ["--yes", `promptfoo@${promptFooVersion}`]; + if (redteam) + args.push("redteam", "run", "--force"); + else + args.push("eval", "--no-progress-bar"); + args.push("--config", configuration); + if (!isNaN(maxConcurrency)) + args.push("--max-concurrency", String(maxConcurrency)); + if (options.cache) + args.push("--cache"); + if (options.verbose) + args.push("--verbose"); + args.push("--output", outJson); + logVerbose(` ${cmd} ${args.join(" ")}`); + const exec = execa(cmd, args, { + preferLocal: true, + cleanup: true, + stripFinalNewline: true, + buffer: false, + env: createEnv(), + stdio: "inherit", + timeout, + }); + let status; + let error; + let value = undefined; + try { + const res = await exec; + status = res.exitCode; + } + catch (e) { + status = e.errno ?? -1; + error = serializeError(e); + } + if (await tryStat(outJson)) + value = JSON5TryParse(await readFile(outJson, "utf8")); + const ok = status === 0; + stats.prompt += value?.results?.stats?.tokenUsage?.prompt || 0; + stats.completion += value?.results?.stats?.tokenUsage?.completion || 0; + stats.total += value?.results?.stats?.tokenUsage?.total || 0; + const testEnd = new Date(); + if (outSummary) { + const url = value?.evalId + ? " " + + link("result", `${serverUrl}/eval?evalId=${encodeURIComponent(value?.evalId)}`) + + " " + : ""; + const row = { + status: ok ? EMOJI_SUCCESS : EMOJI_FAIL, + script: script.id, + prompt: value?.results?.stats?.tokenUsage?.prompt, + completion: value?.results?.stats?.tokenUsage?.completion, + total: value?.results?.stats?.tokenUsage?.total, + duration: roundWithPrecision((testEnd.getTime() - testStart.getTime()) / 1000, 1), + url, + }; + await appendFile(outSummary, objectToMarkdownTableRow(row, headers, { skipEscape: true })); + } + results.push({ + status, + ok, + error, + script: script.id, + value, + }); + if (testDelay > 0) { + logVerbose(` waiting ${testDelay}s`); + await delay(testDelay * 1000); + } + } + const runEnd = new Date(); + if (outSummary) { + await appendFile(outSummary, [ + objectToMarkdownTableRow({ + status: results.filter((r) => r.ok).length, + prompt: stats.prompt, + completion: stats.completion, + total: stats.total, + duration: roundWithPrecision((runEnd.getTime() - runStart.getTime()) / 1000, 1), + }, headers, { skipEscape: true }), + "\n\n", + `- end: ${runEnd.toISOString()}\n`, + ].join("")); + } + if (outSummary) + logVerbose(`trace: ${outSummary}`); + const ok = results.every((r) => !!r.ok); + return { + ok, + status: ok ? 0 : -1, + value: results, + error: results.find((r) => r.error)?.error, + }; +} +/* + * Lists test scripts based on given options, filtering by IDs and groups. + * @param options - Options to filter the test scripts by IDs or groups. + * @returns A Promise resolving to an array of filtered scripts. + */ +async function listTests(options) { + const prj = await buildProject(); + const scripts = filterScripts(prj.scripts, { + ...(options || {}), + test: options.redteam ? undefined : true, + redteam: options.redteam, + }); + return scripts; +} +/** + * Executes prompt script tests, outputs the results, and exits the process with a status code. + * @param ids - Array of script IDs to run tests on. + * @param options - Options to configure the test run, including output paths, CLI settings, verbosity, caching, test delay, groups, concurrency settings, and redteam mode. + */ +export async function scriptsTest(ids, options) { + const canceller = createCancellationController(); + const cancellationToken = canceller.token; + const { status, value = [] } = await runPromptScriptTests(ids, { ...options, cancellationToken }); + const trace = new MarkdownTrace(); + trace.appendContent(`\n\ntests: ${value.filter((r) => r.ok).length} success, ${value.filter((r) => !r.ok).length} failed\n\n`); + for (const result of value) + trace.resultItem(result.ok, result.script); + console.log(""); + console.log(trace.content); + process.exit(status); +} +/** + * Lists available test scripts and prints their IDs and filenames. + * Filters the scripts based on the provided options. + * + * @param options - Options to filter the scripts by groups or redteam flag. + * Filters the scripts by groups and whether they are for redteam testing. + */ +export async function scriptTestList(options) { + const scripts = await listTests(options); + console.log(scripts.map((s) => toStringList(s.id, s.filename)).join("\n")); +} +/** + * Launches a server to view promptfoo test results. + * Ensures necessary directories are created before starting the server. + * Logs a debug message before launching the server. + * Executes the command to start the server using the specified or default promptfoo version. + * @param options - Options to specify the promptfoo version. + */ +export async function scriptTestsView(options) { + await ensureDir(PROMPTFOO_CACHE_PATH); + await ensureDir(PROMPTFOO_CONFIG_DIR); + const cmd = `npx`; + const args = [ + "--yes", + `promptfoo@${options.promptfooVersion || PROMPTFOO_VERSION}`, + "view", + "-y", + ]; + console.debug(`launching promptfoo result server`); + await execa(cmd, args, { + cleanup: true, + env: createEnv(), + stdio: "inherit", + }); +} +//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/test.js.map b/packages/cli/dist/src/test.js.map new file mode 100644 index 0000000000..19951ee2f5 --- /dev/null +++ b/packages/cli/dist/src/test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/src/typescript.d.ts b/packages/cli/dist/src/typescript.d.ts new file mode 100644 index 0000000000..7815aed7dd --- /dev/null +++ b/packages/cli/dist/src/typescript.d.ts @@ -0,0 +1,11 @@ +/** + * Compiles scripts in specified folders or all if none specified. + * Fixes prompt definitions before compiling. + * Handles both JavaScript and TypeScript compilation based on folder content. + * Logs errors and verbose output during the compilation process. + * Exits process with error code if any compilation fails. + * + * @param folders - An array of folder names to compile. If empty, compiles all available script folders. + */ +export declare function compileScript(folders: string[]): Promise; +//# sourceMappingURL=typescript.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/typescript.d.ts.map b/packages/cli/dist/src/typescript.d.ts.map new file mode 100644 index 0000000000..2d3d09e55d --- /dev/null +++ b/packages/cli/dist/src/typescript.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/typescript.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGpE"} \ No newline at end of file diff --git a/packages/cli/dist/src/typescript.js b/packages/cli/dist/src/typescript.js new file mode 100644 index 0000000000..d294e92a8e --- /dev/null +++ b/packages/cli/dist/src/typescript.js @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This file contains functions to manage and compile project scripts, +// including listing, creating, fixing, and compiling scripts. +import { buildProject, genaiscriptDebug } from "@genaiscript/core"; +import { RUNTIME_ERROR_CODE, collectFolders, fixPromptDefinitions, logInfo, resolveRuntimeHost, logVerbose, } from "@genaiscript/core"; +import { resolve } from "node:path"; +const dbg = genaiscriptDebug("compile"); +/** + * Compiles scripts in specified folders or all if none specified. + * Fixes prompt definitions before compiling. + * Handles both JavaScript and TypeScript compilation based on folder content. + * Logs errors and verbose output during the compilation process. + * Exits process with error code if any compilation fails. + * + * @param folders - An array of folder names to compile. If empty, compiles all available script folders. + */ +export async function compileScript(folders) { + const runtimeHost = resolveRuntimeHost(); + const project = await buildProject(); + await fixPromptDefinitions(project); + const scriptFolders = collectFolders(project); + const foldersToCompile = (folders?.length ? folders : scriptFolders.map((f) => f.dirname)) + .map((f) => scriptFolders.find((sf) => sf.dirname === f)) + .filter((f) => f); + if (!foldersToCompile.length) + return; + const ts = await import("typescript"); + let errors = 0; + for (const folder of foldersToCompile) { + const { dirname, js, ts: isTypeScript } = folder; + if (js) { + logInfo(`compiling ${dirname}/*.js`); + const configPath = resolve(dirname, "jsconfig.json"); + const config = ts.readConfigFile(configPath, ts.sys.readFile); + if (config.error) { + logInfo(config.error.messageText.toString()); + errors++; + continue; + } + const parsed = ts.parseJsonConfigFileContent(config.config, ts.sys, dirname); + if (parsed.errors.length > 0) { + parsed.errors.forEach((error) => logInfo(error.messageText.toString())); + errors++; + continue; + } + parsed.options.noEmit = true; + dbg(`config: %O`, parsed); + const program = ts.createProgram(parsed.fileNames, parsed.options); + const emitResult = program.emit(); + const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); + allDiagnostics.forEach((diagnostic) => { + if (diagnostic.file) { + const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); + const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); + logVerbose(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); + } + else { + logVerbose(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")); + } + }); + if (emitResult.emitSkipped) { + errors++; + } + } + if (isTypeScript) { + logInfo(`compiling ${dirname}/*.{mjs,.mts}`); + const configPath = resolve(dirname, "tsconfig.json"); + const config = ts.readConfigFile(configPath, ts.sys.readFile); + if (config.error) { + logVerbose(config.error.messageText.toString()); + errors++; + continue; + } + const parsed = ts.parseJsonConfigFileContent(config.config, ts.sys, dirname); + if (parsed.errors.length > 0) { + parsed.errors.forEach((error) => logVerbose(error.messageText.toString())); + errors++; + continue; + } + parsed.options.noEmit = true; + dbg(`config: %O`, parsed); + const program = ts.createProgram(parsed.fileNames, parsed.options); + const emitResult = program.emit(); + const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); + allDiagnostics.forEach((diagnostic) => { + if (diagnostic.file) { + const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); + const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); + logVerbose(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); + } + else { + logVerbose(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")); + } + }); + if (emitResult.emitSkipped) { + errors++; + } + } + } + if (errors) + process.exit(RUNTIME_ERROR_CODE); +} +//# sourceMappingURL=typescript.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/typescript.js.map b/packages/cli/dist/src/typescript.js.map new file mode 100644 index 0000000000..ffd61a9c91 --- /dev/null +++ b/packages/cli/dist/src/typescript.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/typescript.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/src/video.d.ts b/packages/cli/dist/src/video.d.ts new file mode 100644 index 0000000000..1782e99d9e --- /dev/null +++ b/packages/cli/dist/src/video.d.ts @@ -0,0 +1,42 @@ +/** + * Extracts audio from a given media file. + * + * @param file - The path to the input media file. + * @param options - Configuration options for audio extraction. + * @param options.force - Whether to force audio conversion regardless of input format. + * @param options.transcription - Whether to enable audio transcription during the extraction process. + * + * Logs the resulting audio file path upon completion. + */ +export declare function extractAudio(file: string, options: { + force: boolean; + transcription: boolean; +}): Promise; +/** + * Extracts video frames based on the specified options and logs the filenames of the extracted frames. + * + * @param file - The path to the video file. + * @param options - An object specifying frame extraction options: + * - timestamps: An array of specific timestamps (in seconds) to extract frames from. + * - count: The number of frames to extract. + * - size: The dimensions of the output frames (e.g., "1920x1080"). + * - format: The format of the extracted frames (e.g., "png", "jpg"). + * - keyframes: Whether to extract keyframes only. + * - sceneThreshold: A threshold value to detect scene changes for frame extraction. + */ +export declare function extractVideoFrames(file: string, options: { + timestamps?: number[]; + count?: number; + size?: string; + format?: string; + keyframes?: boolean; + sceneThreshold?: number; +}): Promise; +/** + * Probes the provided video file and retrieves detailed metadata. + * + * @param file - Path to the video file to be analyzed. + * Logs the metadata of the video file in JSON format. + */ +export declare function probeVideo(file: string): Promise; +//# sourceMappingURL=video.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/video.d.ts.map b/packages/cli/dist/src/video.d.ts.map new file mode 100644 index 0000000000..788acd263f --- /dev/null +++ b/packages/cli/dist/src/video.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GAClD,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D"} \ No newline at end of file diff --git a/packages/cli/dist/src/video.js b/packages/cli/dist/src/video.js new file mode 100644 index 0000000000..da3bc5f939 --- /dev/null +++ b/packages/cli/dist/src/video.js @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { FFmepgClient } from "@genaiscript/core"; +/** + * Extracts audio from a given media file. + * + * @param file - The path to the input media file. + * @param options - Configuration options for audio extraction. + * @param options.force - Whether to force audio conversion regardless of input format. + * @param options.transcription - Whether to enable audio transcription during the extraction process. + * + * Logs the resulting audio file path upon completion. + */ +export async function extractAudio(file, options) { + const { force, transcription } = options || {}; + const ffmpeg = new FFmepgClient(); + const fn = await ffmpeg.extractAudio(file, { + transcription, + forceConversion: force, + }); + console.log(fn); +} +/** + * Extracts video frames based on the specified options and logs the filenames of the extracted frames. + * + * @param file - The path to the video file. + * @param options - An object specifying frame extraction options: + * - timestamps: An array of specific timestamps (in seconds) to extract frames from. + * - count: The number of frames to extract. + * - size: The dimensions of the output frames (e.g., "1920x1080"). + * - format: The format of the extracted frames (e.g., "png", "jpg"). + * - keyframes: Whether to extract keyframes only. + * - sceneThreshold: A threshold value to detect scene changes for frame extraction. + */ +export async function extractVideoFrames(file, options) { + const { ...rest } = options || {}; + const ffmpeg = new FFmepgClient(); + const frames = await ffmpeg.extractFrames(file, { + ...rest, + }); + for (let i = 0; i < frames.length; i++) { + const fn = frames[i]; + console.log(`${fn}`); + } +} +/** + * Probes the provided video file and retrieves detailed metadata. + * + * @param file - Path to the video file to be analyzed. + * Logs the metadata of the video file in JSON format. + */ +export async function probeVideo(file) { + const ffmpeg = new FFmepgClient(); + const res = await ffmpeg.probe(file); + console.log(JSON.stringify(res, null, 2)); +} +//# sourceMappingURL=video.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/video.js.map b/packages/cli/dist/src/video.js.map new file mode 100644 index 0000000000..0a7c48051a --- /dev/null +++ b/packages/cli/dist/src/video.js.map @@ -0,0 +1 @@ +{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,OAAmD;IAEnD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACzC,aAAa;QACb,eAAe,EAAE,KAAK;KACvB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAOC;IAED,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAC9C,GAAG,IAAI;KACR,CAAC,CAAC;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC"} \ No newline at end of file diff --git a/packages/cli/dist/src/watch.d.ts b/packages/cli/dist/src/watch.d.ts new file mode 100644 index 0000000000..b7a1e104cd --- /dev/null +++ b/packages/cli/dist/src/watch.d.ts @@ -0,0 +1,34 @@ +import type { CancellationOptions, ElementOrArray, Project, PromptScript, ScriptFilterOptions } from "@genaiscript/core"; +interface ProjectWatcherOptions extends ScriptFilterOptions { + paths: ElementOrArray; + cwd: string; +} +export declare class ProjectWatcher extends EventTarget { + readonly options: ProjectWatcherOptions & CancellationOptions; + private _watcher; + private _project; + private _scripts; + constructor(options: ProjectWatcherOptions & CancellationOptions); + get cwd(): string; + open(): Promise; + private refresh; + project(): Promise; + scripts(): Promise; + close(): Promise; +} +/** + * Starts a file watcher for a project, monitoring specified paths and reacting to changes. + * + * @param options - Optional configuration object: + * - paths: One or more paths to watch. Defaults to the current directory. + * - cwd: The current working directory for the watcher. Defaults to the resolved current directory. + * - cancellationToken: A token to signal cancellation of the watcher. + * - rest: Additional options including script filtering options. + * @returns An initialized ProjectWatcher instance. + */ +export declare function startProjectWatcher(options?: ScriptFilterOptions & { + paths?: ElementOrArray; + cwd?: string; +} & CancellationOptions): Promise; +export {}; +//# sourceMappingURL=watch.d.ts.map \ No newline at end of file diff --git a/packages/cli/dist/src/watch.d.ts.map b/packages/cli/dist/src/watch.d.ts.map new file mode 100644 index 0000000000..254b9ce611 --- /dev/null +++ b/packages/cli/dist/src/watch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/watch.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,OAAO,EACP,YAAY,EACZ,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAK3B,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,cAAe,SAAQ,WAAW;IAKjC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,mBAAmB;IAJzE,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAiB;gBAEZ,OAAO,EAAE,qBAAqB,GAAG,mBAAmB;IAMzE,IAAI,GAAG,IAAI,MAAM,CAEhB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA8Cb,OAAO;IAIf,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ3B,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,mBAAmB,GAAG;IAC9B,KAAK,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,mBAAmB,GACtB,OAAO,CAAC,cAAc,CAAC,CAKzB"} \ No newline at end of file diff --git a/packages/cli/dist/src/watch.js b/packages/cli/dist/src/watch.js new file mode 100644 index 0000000000..08d02fab80 --- /dev/null +++ b/packages/cli/dist/src/watch.js @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { watch } from "chokidar"; +import { basename, resolve } from "node:path"; +import { CHANGE, CLOSE, GENAI_ANY_REGEX, OPEN, createGitIgnorer, filterScripts, logError, toSignal, } from "@genaiscript/core"; +import { genaiscriptDebug } from "@genaiscript/core"; +import { buildProject } from "@genaiscript/core"; +const dbg = genaiscriptDebug("watch"); +export class ProjectWatcher extends EventTarget { + options; + _watcher; + _project; + _scripts; + constructor(options) { + super(); + this.options = options; + const signal = toSignal(this.options.cancellationToken); + signal?.addEventListener("abort", this.close.bind(this)); + } + get cwd() { + return this.options.cwd; + } + async open() { + if (this._watcher) + return; + dbg(`starting`); + await this.refresh(); + const { paths, cwd } = this.options; + const gitIgnorer = await createGitIgnorer(); + // Initialize watcher. + this._watcher = watch(paths, { + ignored: (path, stats) => { + if (!stats) + return false; + if (stats.isDirectory()) { + const b = basename(path); + if (/^\./.test(b)) + return true; + } + else if (stats.isFile() && !GENAI_ANY_REGEX.test(path)) { + return true; + } + const filtered = gitIgnorer([path]); + if (filtered.length === 0) + return true; + return false; + }, + persistent: false, + ignoreInitial: true, + awaitWriteFinish: { + stabilityThreshold: 2000, + pollInterval: 1000, + }, + atomic: true, + interval: 1000, + binaryInterval: 5000, + depth: 30, + cwd, + }); + const changed = () => { + dbg(`changed`); + this.dispatchEvent(new Event(CHANGE)); + }; + this._watcher + .on("error", (error) => logError(`watch: ${error}`)) + .on("add", changed) + .on("change", changed) + .on("unlink", changed); + this.addEventListener(CHANGE, this.refresh.bind(this)); + this.dispatchEvent(new Event(OPEN)); + } + async refresh() { + this._project = undefined; + } + async project() { + if (!this._project) { + dbg(`building project`); + this._project = await buildProject(); + } + return this._project; + } + async scripts() { + if (!this._scripts) { + const project = await this.project(); + this._scripts = filterScripts(project.scripts, this.options); + } + return this._scripts?.slice(0); + } + async close() { + dbg(`closing`); + await this._watcher?.close(); + this._watcher = undefined; + this.dispatchEvent(new Event(CLOSE)); + } +} +/** + * Starts a file watcher for a project, monitoring specified paths and reacting to changes. + * + * @param options - Optional configuration object: + * - paths: One or more paths to watch. Defaults to the current directory. + * - cwd: The current working directory for the watcher. Defaults to the resolved current directory. + * - cancellationToken: A token to signal cancellation of the watcher. + * - rest: Additional options including script filtering options. + * @returns An initialized ProjectWatcher instance. + */ +export async function startProjectWatcher(options) { + const { paths = ".", cwd = resolve("."), ...rest } = options || {}; + const watcher = new ProjectWatcher({ paths, cwd, ...rest }); + await watcher.open(); + return watcher; +} +//# sourceMappingURL=watch.js.map \ No newline at end of file diff --git a/packages/cli/dist/src/watch.js.map b/packages/cli/dist/src/watch.js.map new file mode 100644 index 0000000000..3efca69055 --- /dev/null +++ b/packages/cli/dist/src/watch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/watch.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/cli/dist/tsconfig.tsbuildinfo b/packages/cli/dist/tsconfig.tsbuildinfo new file mode 100644 index 0000000000..4540103036 --- /dev/null +++ b/packages/cli/dist/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.mts","../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.mts","../../core/dist/esm/types.d.ts","../../core/dist/esm/cancellation.d.ts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.mts","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.mts","../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.mts","../../core/dist/esm/chattypes.d.ts","../../core/dist/esm/traceparser.d.ts","../../core/dist/esm/trace.d.ts","../../core/dist/esm/promptdom.d.ts","../../core/dist/esm/server/messages.d.ts","../../core/dist/esm/chat.d.ts","../../core/dist/esm/usage.d.ts","../../core/dist/esm/generation.d.ts","../../core/dist/esm/agent.d.ts","../../core/dist/esm/annotations.d.ts","../../core/dist/esm/anthropic.d.ts","../../core/dist/esm/assert.d.ts","../../core/dist/esm/ast.d.ts","../../core/dist/esm/azureaiinference.d.ts","../../core/dist/esm/azureaisearch.d.ts","../../core/dist/esm/azurecontentsafety.d.ts","../../core/dist/esm/azuredevops.d.ts","../../core/dist/esm/azureopenai.d.ts","../../core/dist/esm/progress.d.ts","../../core/dist/esm/hostconfiguration.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialplugin.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/authtoken.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/iuri.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/constants.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/logger/logger.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/storeincache.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/scopeset.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authority.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizeresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/baseclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/urlstring.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/protocol/authorize.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/servererror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/networkerror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/packagemetadata.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-common.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/clientassertionutils.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/apptokenprovider.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativerequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativesignoutrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/broker/nativebroker/inativebrokerplugin.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonclientcredentialrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commononbehalfofrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/devicecoderesponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commondevicecoderequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonusernamepasswordrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/iguidgenerator.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-node-only.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index-node.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializertypes.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializer.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/deserializer.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/internals.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationcoderequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationurlrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/devicecoderequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/refreshtokenrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/silentflowrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/usernamepasswordrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/nodestorage.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/itokencache.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/tokencache.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/network/iloopbackclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/interactiverequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/signoutrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/ipublicclientapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/clientcredentialrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/onbehalfofrequest.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/iconfidentialclientapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/icacheclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/ipartitionmanager.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/ihttpretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/defaultmanagedidentityretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/imdsretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/utils/constants.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/managedidentityid.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/configuration.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/crypto/cryptoprovider.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientassertion.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/publicclientapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/confidentialclientapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientcredentialclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/devicecodeclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/onbehalfofclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/managedidentityrequestparams.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/managedidentityapplication.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/usernamepasswordclient.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/distributedcacheplugin.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/packagemetadata.d.ts","../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/index.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/provider.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/consumer.d.ts","../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/aborterror.d.ts","../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/abortsignallike.d.ts","../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/aborterutils.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/createabortablepromise.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/delay.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/error.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/typeguards.d.ts","../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/keycredential.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurekeycredential.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurenamedkeycredential.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azuresascredential.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tracing.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tokencredential.d.ts","../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/errors.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/types.d.ts","../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/util/logging.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/msal.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/utils.d.ts","../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts","../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts","../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/tracingclient.d.ts","../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/useragentpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/createpipelinefromoptions.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/defaulthttpclient.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/httpheaders.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipelinerequest.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/resterror.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressresponsepolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setclientrequestidpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemerrorretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retrypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultretrypolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlspolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formdatapolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearertokenauthenticationpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndjsonpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/interfaces.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializer.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serviceclient.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/deserializationpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializationpolicy.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/pipeline.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestonclaimchallenge.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestontenantchallenge.d.ts","../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/index.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokencredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/multitenanttokencredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorityvalidationoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/brokeroptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/brokerauthoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/chainedtokencredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/credentialpersistenceoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialmodels.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/browsercustomizationoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/options.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/index.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredentialoptions.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredential.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/constants.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokenprovider.d.ts","../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/index.d.ts","../../core/dist/esm/mcpclient.d.ts","../../core/dist/esm/mcpresource.d.ts","../../core/dist/esm/host.d.ts","../../core/dist/esm/azuretoken.d.ts","../../core/dist/esm/base64.d.ts","../../core/dist/esm/binary.d.ts","../../core/dist/esm/bufferlike.d.ts","../../core/dist/esm/cache.d.ts","../../core/dist/esm/changelog.d.ts","../../core/dist/esm/chatcache.d.ts","../../core/dist/esm/chatrender.d.ts","../../core/dist/esm/chatrenderterminal.d.ts","../../core/dist/esm/chunkers.d.ts","../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../core/dist/esm/ci.d.ts","../../core/dist/esm/cleaners.d.ts","../../core/dist/esm/clone.d.ts","../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../core/dist/esm/concurrency.d.ts","../../core/dist/esm/config.d.ts","../../core/dist/esm/consolecolor.d.ts","../../core/dist/esm/llmsdata.d.ts","../../core/dist/esm/constants.d.ts","../../core/dist/esm/contentsafety.d.ts","../../core/dist/esm/copy.d.ts","../../core/dist/esm/crypto.d.ts","../../core/dist/esm/csv.d.ts","../../core/dist/esm/data.d.ts","../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../core/dist/esm/debug.d.ts","../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../core/dist/esm/diff.d.ts","../../core/dist/esm/dispose.d.ts","../../core/dist/esm/docx.d.ts","../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../core/dist/esm/dotenv.d.ts","../../core/dist/esm/echomodel.d.ts","../../core/dist/esm/encoders.d.ts","../../core/dist/esm/env.d.ts","../../core/dist/esm/error.d.ts","../../core/dist/esm/evalprompt.d.ts","../../core/dist/esm/expander.d.ts","../../core/dist/esm/features.d.ts","../../core/dist/esm/fence.d.ts","../../core/dist/esm/fetch.d.ts","../../core/dist/esm/fetchtext.d.ts","../../core/dist/esm/ffmpeg.d.ts","../../core/dist/esm/file.d.ts","../../core/dist/esm/filebytes.d.ts","../../core/dist/esm/filecache.d.ts","../../core/dist/esm/fileedits.d.ts","../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../core/dist/esm/filetype.d.ts","../../core/dist/esm/frontmatter.d.ts","../../core/dist/esm/fs.d.ts","../../core/dist/esm/fscache.d.ts","../../core/dist/esm/fuzzsearch.d.ts","../../core/dist/esm/git.d.ts","../../core/dist/esm/github.d.ts","../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../core/dist/esm/githubclient.d.ts","../../core/dist/esm/gitignore.d.ts","../../core/dist/esm/glob.d.ts","../../core/dist/esm/global.d.ts","../../core/dist/esm/globals.d.ts","../../core/dist/esm/grep.d.ts","../../core/dist/esm/html.d.ts","../../core/dist/esm/htmlescape.d.ts","../../core/dist/esm/id.d.ts","../../core/dist/esm/image.d.ts","../../core/dist/esm/importprompt.d.ts","../../core/dist/esm/indent.d.ts","../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../core/dist/esm/inflection.d.ts","../../core/dist/esm/ini.d.ts","../../core/dist/esm/jinja.d.ts","../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../core/dist/esm/json5.d.ts","../../core/dist/esm/jsonl.d.ts","../../core/dist/esm/memcache.d.ts","../../core/dist/esm/jsonlinecache.d.ts","../../core/dist/esm/liner.d.ts","../../core/dist/esm/llmdiff.d.ts","../../core/dist/esm/llms.d.ts","../../core/dist/esm/lm.d.ts","../../core/dist/esm/lmstudio.d.ts","../../core/dist/esm/levenshtein.d.ts","../../core/dist/esm/logging.d.ts","../../core/dist/esm/logprob.d.ts","../../core/dist/esm/markdown.d.ts","../../core/dist/esm/math.d.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../core/dist/esm/mcpsampling.d.ts","../../core/dist/esm/mdchunk.d.ts","../../core/dist/esm/mddiff.d.ts","../../core/dist/esm/mdstringify.d.ts","../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../core/dist/esm/merge.d.ts","../../core/dist/esm/metadata.d.ts","../../core/dist/esm/mime.d.ts","../../core/dist/esm/mkmd.d.ts","../../core/dist/esm/modelalias.d.ts","../../core/dist/esm/models.d.ts","../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.mts","../../core/dist/esm/mustache.d.ts","../../core/dist/esm/net.d.ts","../../core/dist/esm/nodepackage.d.ts","../../core/dist/esm/nonemodel.d.ts","../../core/dist/esm/ollama.d.ts","../../core/dist/esm/openai.d.ts","../../core/dist/esm/packagemanagers.d.ts","../../core/dist/esm/parameters.d.ts","../../core/dist/esm/parser.d.ts","../../core/dist/esm/path.d.ts","../../core/dist/esm/parsers.d.ts","../../core/dist/esm/pathutils.d.ts","../../core/dist/esm/pdf.d.ts","../../core/dist/esm/perf.d.ts","../../core/dist/esm/performance.d.ts","../../core/dist/esm/plugin.d.ts","../../core/dist/esm/precision.d.ts","../../core/dist/esm/pretty.d.ts","../../core/dist/esm/runpromptcontext.d.ts","../../core/dist/esm/promptcontext.d.ts","../../core/dist/esm/promptfoo.d.ts","../../core/dist/esm/promptrunner.d.ts","../../core/dist/esm/prompty.d.ts","../../core/dist/esm/markdownscript.d.ts","../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../core/dist/esm/proxy.d.ts","../../core/dist/esm/quiet.d.ts","../../core/dist/esm/resources.d.ts","../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../core/dist/esm/sanitize.d.ts","../../core/dist/esm/schema.d.ts","../../core/dist/esm/scriptresolver.d.ts","../../core/dist/esm/scripts.d.ts","../../core/dist/esm/secretscanner.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../core/dist/esm/semver.d.ts","../../core/dist/esm/shell.d.ts","../../core/dist/esm/stdio.d.ts","../../core/dist/esm/systems.d.ts","../../core/dist/esm/tags.d.ts","../../core/dist/esm/teams.d.ts","../../core/dist/esm/template.d.ts","../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../core/dist/esm/terminal.d.ts","../../core/dist/esm/testschema.d.ts","../../core/dist/esm/textsplitter.d.ts","../../core/dist/esm/think.d.ts","../../core/dist/esm/testeval.d.ts","../../core/dist/esm/tidy.d.ts","../../core/dist/esm/tokens.d.ts","../../core/dist/esm/toml.d.ts","../../core/dist/esm/tools.d.ts","../../core/dist/esm/transcription.d.ts","../../core/dist/esm/unwrappers.d.ts","../../core/dist/esm/url.d.ts","../../core/dist/esm/log.d.ts","../../core/dist/esm/util.d.ts","../../core/dist/esm/vars.d.ts","../../core/dist/esm/vectorsearch.d.ts","../../core/dist/esm/vectra.d.ts","../../core/dist/esm/version.d.ts","../../core/dist/esm/websearch.d.ts","../../core/dist/esm/whisperasr.d.ts","../../core/dist/esm/workdir.d.ts","../../core/dist/esm/workerlm.d.ts","../../core/dist/esm/workspace.d.ts","../../core/dist/esm/xlsx.d.ts","../../core/dist/esm/xml.d.ts","../../core/dist/esm/yaml.d.ts","../../core/dist/esm/zip.d.ts","../../core/dist/esm/zod.d.ts","../../core/dist/esm/testhost.d.ts","../../core/dist/esm/build.d.ts","../../core/dist/esm/sarif.d.ts","../../core/dist/esm/tracefile.d.ts","../../core/dist/esm/stdin.d.ts","../../core/dist/esm/server/wsclient.d.ts","../../core/dist/esm/server/client.d.ts","../../core/dist/esm/default_prompts.d.ts","../../core/dist/esm/index.d.ts","../../runtime/dist/esm/version.d.ts","../../runtime/dist/esm/docker.d.ts","../../runtime/dist/esm/input.d.ts","../../runtime/dist/esm/log.d.ts","../../runtime/dist/esm/nodehost.d.ts","../../runtime/dist/esm/classify.d.ts","../../runtime/dist/esm/makeitbetter.d.ts","../../runtime/dist/esm/cast.d.ts","../../runtime/dist/esm/filetree.d.ts","../../runtime/dist/esm/markdownifypdf.d.ts","../../runtime/dist/esm/runtime.d.ts","../../runtime/dist/esm/extras.d.ts","../../runtime/dist/esm/mapreduce.d.ts","../../runtime/dist/esm/index.d.ts","../src/action.ts","../src/cache.ts","../../../node_modules/.pnpm/commander@14.0.0/node_modules/commander/typings/index.d.ts","../../../node_modules/.pnpm/commander@14.0.0/node_modules/commander/typings/esm.d.mts","../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.mts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/utils.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/transform/normalize.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/stdio/type.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/ipc.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/arguments/fd-options.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/arguments/specific.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/final-error.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/stdio/array.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/stdio/option.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/transform/object-mode.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/stdio/direction.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/ignore.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/arguments/encoding-option.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/result-stdout.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/result-all.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/result-stdio.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/result-ipc.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/return/result.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/verbose.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/arguments/options.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/template.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/pipe.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/convert.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/subprocess/stdout.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/subprocess/stdio.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/subprocess/all.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/subprocess/subprocess.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/main-async.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/main-sync.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/command.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/script.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/types/methods/node.d.ts","../../../node_modules/.pnpm/execa@9.6.0/node_modules/execa/index.d.ts","../../api/dist/esm/api.d.ts","../../api/dist/esm/run.d.ts","../../api/dist/esm/index.d.ts","../src/test.ts","../src/port.ts","../src/remote.ts","../../../node_modules/.pnpm/readdirp@4.1.2/node_modules/readdirp/esm/index.d.ts","../../../node_modules/.pnpm/chokidar@4.0.3/node_modules/chokidar/esm/handler.d.ts","../../../node_modules/.pnpm/chokidar@4.0.3/node_modules/chokidar/esm/index.d.ts","../src/watch.ts","../src/runs.ts","../src/openaiapi.ts","../src/server.ts","../../../node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/summary.d.ts","../../../node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/path-utils.d.ts","../../../node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/platform.d.ts","../../../node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/core.d.ts","../src/githubaction.ts","../src/run.ts","../src/retrieval.ts","../src/help.ts","../../../node_modules/.pnpm/@types+replace-ext@2.0.2/node_modules/@types/replace-ext/index.d.ts","../src/parse.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/typescript.d.ts","../src/typescript.ts","../src/scripts.ts","../src/info.ts","../src/convert.ts","../src/video.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/key.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/errors.d.ts","../../../node_modules/.pnpm/@inquirer+type@3.0.8_@types+node@22.15.28/node_modules/@inquirer/type/dist/esm/inquirer.d.ts","../../../node_modules/.pnpm/@inquirer+type@3.0.8_@types+node@22.15.28/node_modules/@inquirer/type/dist/esm/utils.d.ts","../../../node_modules/.pnpm/@inquirer+type@3.0.8_@types+node@22.15.28/node_modules/@inquirer/type/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/theme.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-prefix.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-state.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-effect.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-memo.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-ref.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/use-keypress.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/make-theme.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/create-prompt.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/lib/separator.d.ts","../../../node_modules/.pnpm/@inquirer+core@10.1.15_@types+node@22.15.28/node_modules/@inquirer/core/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+checkbox@4.2.0_@types+node@22.15.28/node_modules/@inquirer/checkbox/dist/esm/index.d.ts","../../../node_modules/.pnpm/external-editor@3.1.0/node_modules/external-editor/main/errors/createfileerror.d.ts","../../../node_modules/.pnpm/external-editor@3.1.0/node_modules/external-editor/main/errors/launcheditorerror.d.ts","../../../node_modules/.pnpm/external-editor@3.1.0/node_modules/external-editor/main/errors/readfileerror.d.ts","../../../node_modules/.pnpm/external-editor@3.1.0/node_modules/external-editor/main/errors/removefileerror.d.ts","../../../node_modules/.pnpm/external-editor@3.1.0/node_modules/external-editor/main/index.d.ts","../../../node_modules/.pnpm/@inquirer+editor@4.2.15_@types+node@22.15.28/node_modules/@inquirer/editor/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+confirm@5.1.14_@types+node@22.15.28/node_modules/@inquirer/confirm/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+input@4.2.1_@types+node@22.15.28/node_modules/@inquirer/input/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+number@3.0.17_@types+node@22.15.28/node_modules/@inquirer/number/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+expand@4.0.17_@types+node@22.15.28/node_modules/@inquirer/expand/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+rawlist@4.1.5_@types+node@22.15.28/node_modules/@inquirer/rawlist/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+password@4.0.17_@types+node@22.15.28/node_modules/@inquirer/password/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+search@3.1.0_@types+node@22.15.28/node_modules/@inquirer/search/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+select@4.3.1_@types+node@22.15.28/node_modules/@inquirer/select/dist/esm/index.d.ts","../../../node_modules/.pnpm/@inquirer+prompts@7.8.0_@types+node@22.15.28/node_modules/@inquirer/prompts/dist/esm/index.d.ts","../src/configure.ts","../../../node_modules/.pnpm/fast-uri@3.0.6/node_modules/fast-uri/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/datatype.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/json-schema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/error.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/type.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/values.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/jtd/index.d.ts","../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/jtd.d.ts","../../../node_modules/.pnpm/@fastify+ajv-compiler@4.0.2/node_modules/@fastify/ajv-compiler/types/index.d.ts","../../../node_modules/.pnpm/@fastify+error@4.2.0/node_modules/@fastify/error/types/index.d.ts","../../../node_modules/.pnpm/fast-json-stringify@6.0.1/node_modules/fast-json-stringify/types/index.d.ts","../../../node_modules/.pnpm/@fastify+fast-json-stringify-compiler@5.0.3/node_modules/@fastify/fast-json-stringify-compiler/types/index.d.ts","../../../node_modules/.pnpm/find-my-way@9.3.0/node_modules/find-my-way/index.d.ts","../../../node_modules/.pnpm/light-my-request@6.6.0/node_modules/light-my-request/types/index.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/utils.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/schema.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/type-provider.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/reply.d.ts","../../../node_modules/.pnpm/pino-std-serializers@7.0.0/node_modules/pino-std-serializers/index.d.ts","../../../node_modules/.pnpm/sonic-boom@4.2.0/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/.pnpm/pino@9.7.0/node_modules/pino/pino.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/logger.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/plugin.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/register.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/instance.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/hooks.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/route.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/context.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/request.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/content-type-parser.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/errors.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/types/serverfactory.d.ts","../../../node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/fastify.d.ts","../../../node_modules/.pnpm/@fastify+cors@11.0.1/node_modules/@fastify/cors/types/index.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamablehttp.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts","../src/mcpserver.ts","../src/log.ts","../../../node_modules/.pnpm/openapi-types@12.1.3/node_modules/openapi-types/dist/index.d.ts","../../../node_modules/.pnpm/@fastify+swagger@9.5.1/node_modules/@fastify/swagger/index.d.ts","../../../node_modules/.pnpm/@fastify+swagger-ui@5.2.3/node_modules/@fastify/swagger-ui/types/index.d.ts","../src/openapi.ts","../src/cli.ts","../src/google_generative_ai.d.ts","../src/index.ts","../package.json"],"fileIdsList":[[255,261,1188,1189,1190],[255,261],[255,261,311],[255,261,650,651],[255,261,659],[255,261,658,659,660,661,662,663,664],[255,261,652,658,663],[255,261,703],[255,261,703,704],[255,261,704,705,706,707,708,709,710,711],[255,261,652,675,703],[255,261,665,703,707,708],[255,261,704],[255,261,665,703,704],[255,261,676,677,678,679,680],[255,261,676],[255,261,658,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702],[255,261,652,658,675],[255,261,652,658,675,676],[255,261,676,677],[255,261,665,668,677],[255,261,665,668,676,677],[255,261,677],[255,261,668,677],[255,261,668,676,677,685],[255,261,672,673,674],[255,261,672],[255,261,652],[255,261,653],[255,261,653,654,655,656,657],[255,261,665,745],[255,261,714,715],[255,261,665,732],[255,261,714],[255,261,665,734],[255,261,665,703,743],[255,261,714,715,720],[255,261,665,747],[255,261,716],[255,261,665,669],[255,261,665,730],[255,261,665,667,727,728],[255,261,665,721],[255,261,492],[255,261,665,719,723],[255,261,665,667,741],[255,261,718,720],[255,261,665,725],[255,261,665,667,737],[255,261,717,718,720,736],[255,261,667,714,715],[255,261,665,713,739],[255,261,713],[255,261,665,714,720,749],[255,261,665,750],[255,261,493,665,752],[255,261,665,755],[255,261,665],[255,261,492,648,649,665,666,667,669,671,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758],[255,261,647],[255,261,665,667,668,669,670],[255,261,648],[255,261,492,493,647],[255,261,703,712],[255,261,668],[255,261,494],[255,261,496,497,498,500,501,503,507,509,523,526,532,541],[255,261,500,503,509,523,541,542],[255,261,501,504,506,508],[255,261,505],[255,261,507],[255,261,502],[255,261,311,516,532,554,589,590],[255,261,503,509,511,512,513,514,515,516,517,518,519,520,523,536,537,538,540,541],[255,261,502,510],[255,261,494,496,503,516,537,542],[255,261,511,512,513,514,538],[255,261,510],[255,261,511,512,513,514,515,516,517,518,519,520,538,540],[255,261,529],[255,261,528],[255,261,497,502,507,510,511,512,513,514,519],[255,261,502,511,512,513,514,516,517,518,519,538,539],[255,261,523,532,552,553,554,555,556],[255,261,499,500,503,523,524,527,532,536,537,542,549,550,551],[255,261,523,532,552,554,558,559],[255,261,502,523,532,552,554,559],[255,261,500,503,509,524,527,528,530,531,537,542],[255,261,535,536],[255,261,503,523,537],[255,261,534],[255,261,571],[255,261,572,577],[255,261,572,579],[255,261,572,581],[255,261,572,573],[255,261,572],[255,261,521,522,523,534,535,622,623,624,625],[255,261,494,495,496,498,499,500,501,502,503,504,505,506,509,510,511,512,513,514,515,516,517,518,519,520,524,525,527,532,533,536,537,538,539,540,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,572,574,575,576,578,580,582,583,584,585],[255,261,528,529,530,531,587,588,589,590,591,592,593,594,595,596,597],[255,261,586,598],[255,261,586,598,626],[255,261,532],[255,261,499],[255,261,502,535,536],[255,261,499,524,536,549,550],[255,261,503,523,532,533,542,546,556,565],[255,261,502,520,532,533,535],[255,261,536,551],[255,261,502,516,533,536],[255,261,505,531,536],[255,261,533,536,594],[255,261,516,533],[255,261,536],[255,261,516,536],[255,261,533],[255,261,502,523,527,532,533,562],[255,261,516],[255,261,549],[255,261,494,503,515,523,524,528,530,536,537,538,542,549,554,556,568],[255,261,521,522],[255,261,503,521,522,523,532],[255,261,521,522,523],[255,261,502,517,524,525,526],[255,261,498],[255,261,531],[255,261,503,523],[255,261,537],[255,261,533,546],[255,261,599,620,621],[255,261,599],[255,261,599,600],[255,261,599,600,610,611],[255,261,599,604,605,607,608,609,610,612,633,634,635],[255,261,634],[255,261,599,633],[255,261,599,617,618,619,633,636],[255,261,599,604,605,607,608,609,612,617,618],[255,261,599,604,605,606,607,608,609,612,614,615],[255,261,599,631,633,642],[255,261,599,606,608,614,615,616,633,636],[255,261,276,278,311,599,632],[255,261,631,633],[255,261,599,600,603,604,605,606,607,608,609,611,612,613,614,615,616,617,618,619,620,621,631,633,634,635,636,637,638,639,640,641,642,643,644,645,646],[255,261,601,602],[255,261,311,599,613],[255,261,276,311,627,628],[255,261,276,311,627],[255,261,627,628],[255,261,629,630],[255,261,1278,1282,1291],[255,261,311,1316],[255,261,1294],[255,261,1316,1322,1323],[255,261,1316,1322,1323,1324],[255,261,1208,1220],[255,261,1204,1205,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219],[255,261,1208],[255,261,1208,1209],[255,261,1204,1208],[255,261,1209],[255,261,1208,1220,1226],[255,261,1221,1227,1228,1229,1230,1231,1232,1233,1234,1235],[255,261,1206,1207],[255,261,293],[255,261,925,927,929],[255,261,293,927,928],[255,261,276,926,927,928],[255,261,925,926,927,928],[255,261,927],[255,261,925,926],[255,261,838,861,864,867],[255,261,860,866,868],[255,261,860,862],[255,261,861,862,863],[255,261,860],[255,261,870],[255,261,868,870,871,872],[255,261,869],[255,261,860,868,869],[255,261,860,874],[255,261,868,874,876],[255,261,860,875],[255,261,860,865],[255,261,868,873,877],[255,261,844,845,847,850,854],[255,261,839,840,843,844],[255,261,844,848,849,850,852],[255,261,839,840,844],[255,261,842,843,847,851],[255,261,839,840,841,842,843,844,845,846,847,848,849,850,852,853,854,855,856,857,858,859],[255,261,840,846],[255,261,844,847,850,852,853],[255,261,839,840,842,843],[255,261,840,842,843],[255,261,841],[255,261,855],[255,261,994,995,998,1000,1003,1004,1005,1007,1008],[255,261,994,995,997,998,999,1004,1005,1006,1008],[255,261,999,1004,1005,1007],[255,261,994],[255,261,1007],[255,261,994,995],[255,261,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010],[255,261,993,1004],[255,261,994,995,1004,1005],[255,261,995,1000,1001,1003,1004,1008],[255,261,999,1004,1007,1008],[255,261,994,995,999,1004,1007],[255,261,994,995,999,1001,1003,1004,1008,1011],[255,261,994,995,997,998,1004,1005,1007,1008],[255,261,994,998,999,1001,1003,1005,1007],[255,261,995,996,1002,1008],[255,261,788],[255,261,942],[255,258,261],[255,260,261],[261],[255,261,266,296],[255,261,262,267,273,274,281,293,304],[255,261,262,263,273,281],[250,251,252,255,261],[255,261,264,305],[255,261,265,266,274,282],[255,261,266,293,301],[255,261,267,269,273,281],[255,260,261,268],[255,261,269,270],[255,261,271,273],[255,260,261,273],[255,261,273,274,275,293,304],[255,261,273,274,275,288,293,296],[255,261,346],[255,261,269,273,276,281,293,304,346],[255,261,273,274,276,277,281,293,301,304],[255,261,276,278,293,301,304],[253,254,255,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310],[255,261,273,279],[255,261,280,304],[255,261,269,273,281,293],[255,261,282],[255,261,283],[255,260,261,284],[255,258,259,260,261,262,263,264,265,266,267,268,269,270,271,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310],[255,261,286],[255,261,287],[255,261,273,288,289],[255,261,288,290,305,307],[255,261,273,293,294,296],[255,261,295,296],[255,261,293,294],[255,261,296],[255,261,297],[255,258,261,293],[255,261,273,299,300],[255,261,299,300],[255,261,266,281,293,301],[255,261,302],[255,261,281,303],[255,261,276,287,304],[255,261,266,305],[255,261,293,306],[255,261,280,307],[255,261,308],[255,261,273,275,284,293,296,304,307,309],[255,261,293,310],[255,261,1038,1077],[255,261,1038,1062,1077],[255,261,1077],[255,261,1038],[255,261,1038,1063,1077],[255,261,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076],[255,261,1063,1077],[255,261,273,276,278,281,293,301,304,310,311],[255,261,276,278,293,311],[255,261,276,281,293,301,311,970],[255,261,1241,1242,1246,1273,1274,1276,1277,1278,1280,1281],[255,261,1239,1240],[255,261,1239],[255,261,1241,1281],[255,261,1241,1242,1278,1279,1281],[255,261,1281],[255,261,1238,1281,1282],[255,261,1241,1242,1280,1281],[255,261,1241,1242,1244,1245,1280,1281],[255,261,1241,1242,1243,1280,1281],[255,261,1241,1242,1246,1273,1274,1275,1276,1277,1280,1281],[255,261,1241,1246,1275,1276,1277,1278,1280,1281,1290],[255,261,1238,1241,1242,1246,1278,1280],[255,261,1246,1281],[255,261,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1281],[255,261,1271,1281],[255,261,1247,1258,1266,1267,1268,1269,1270,1272],[255,261,1271,1281,1283],[255,261,1281,1283],[255,261,1281,1284,1285,1286,1287,1288,1289],[255,261,1246,1281,1283],[255,261,1251,1281],[255,261,1259,1260,1261,1262,1263,1264,1265,1281],[255,261,293,301,311,981,983,984,985],[255,261,281,301,311,982],[255,261,981,982,983,985,986,987],[255,261,981],[255,261,281,311],[255,261,293,311,983,984],[255,261,274,1181,1183],[255,261,273,274,1181,1182],[255,261,1139],[255,261,307,311,992,1011],[255,261,992,1012],[255,261,304,311],[84,255,261],[71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,255,261],[255,261,1144,1145,1148,1159,1160,1161,1162,1168,1169,1170,1171,1172,1173],[255,261,282,293,1142,1144,1145,1147,1154,1160],[255,261,1146],[255,261,1146,1154,1161],[255,261,1161],[255,261,1159,1161,1162,1168],[255,261,1161,1162,1168],[255,261,1159,1161,1162],[255,261,1159],[255,261,1146,1159,1161,1162,1168],[255,261,1159,1161],[255,261,1144,1147,1150,1152,1161],[255,261,1147,1151,1153,1155,1161],[255,261,1145,1147,1161],[255,261,1149,1155,1161],[255,261,1147,1151,1153,1154,1161],[255,261,282,1142,1148,1155,1156,1157,1158,1161],[255,261,1144,1161],[255,261,1142,1144,1150,1161],[255,261,1144,1149,1161],[255,261,293,296,1142,1143],[255,261,293,1153,1161],[255,261,1149,1161,1165],[255,261,293,1152,1153,1161],[255,261,262,282,293,1145,1159,1161,1163,1164,1165,1166,1167],[255,261,293,296,1142],[255,261,1143,1144,1150,1161],[255,261,1147,1159,1161],[255,261,1222,1223,1224,1225],[255,261,1282],[255,261,276,277,278,281,1292,1293,1295,1296,1297,1298,1299,1300,1301,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315],[255,261,1298,1299,1300,1310,1312],[255,261,1298,1310],[255,261,1293],[255,261,293,1293,1298,1299,1300,1301,1305,1306,1307,1308,1310,1312],[255,261,276,281,1293,1296,1297,1298,1299,1300,1301,1305,1307,1309,1310,1312,1313],[255,261,1293,1298,1299,1300,1301,1304,1308,1310,1312],[255,261,1298,1300,1305,1308],[255,261,1298,1305,1306,1308,1316],[255,261,1298,1299,1300,1305,1308,1310,1312],[255,261,1292,1298,1299,1300,1305,1308,1310,1311],[255,261,1293,1296,1298,1299,1300,1301,1305,1308,1309,1311,1312],[255,261,1292,1295,1316],[255,261,276,277,278,1298],[255,261,1298,1299,1310],[255,261,276,277,278],[255,261,296,828],[255,261,293,828,829],[255,261,276,277],[255,261,293,311,991],[255,261,274,293,311,991],[255,261,293,311,988,991],[255,261,276,278,293,311,991],[255,261,293,311,979,980,989,990],[255,261,276,281,301,304,311,971],[255,261,895,896],[255,261,276,293],[255,261,304,318,322],[255,261,293,304,318],[255,261,313],[255,261,301,304,315,318],[255,261,281,301],[255,261,311,313],[255,261,281,304,315,318],[248,249,255,261,273,293,304,314,317],[255,261,318,325],[248,255,261,316],[255,261,318,339,340],[255,261,296,304,311,314,318],[255,261,311,339],[255,261,311,312,313],[255,261,318],[255,261,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,340,341,342,343,344,345],[255,261,318,333],[255,261,318,325,326],[255,261,316,318,326,327],[255,261,317],[248,255,261,313,318],[255,261,318,322,326,327],[255,261,322],[255,261,304,316,318,321],[248,255,261,315,318,325],[255,261,309,311,313,318,339],[255,261,386],[255,261,304,353,356,359,360],[255,261,293,304,356],[255,261,304,356,360],[255,261,350],[255,261,354],[255,261,304,352,353,356],[255,261,311,350],[255,261,281,304,352,356],[255,261,273,293,304,347,348,349,351,355],[255,261,356,364,371],[255,261,348,354],[255,261,356,380,381],[255,261,296,304,311,348,351,356],[255,261,356],[255,261,304,352,356],[255,261,347],[255,261,350,351,352,354,355,356,357,358,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385],[255,261,269,356,373,376],[255,261,356,364,365,366],[255,261,354,356,365,367],[255,261,355],[255,261,348,350,356],[255,261,356,360,365,367],[255,261,360],[255,261,304,354,356,359],[255,261,348,352,356,364],[255,261,356,373],[255,261,296,309,311,350,356,380],[246,255,261,389,392,469],[246,255,261,388,389,392,393,394,397,398,401,404,416,422,423,428,429,439,442,443,447,448,456,457,458,459,460,462,466,467,468],[255,261,388,396,469],[255,261,392,396,397,469],[255,261,469],[255,261,390,469],[255,261,399,400],[255,261,394],[255,261,394,397,398,401,469,470],[255,261,392,395,469],[246,255,261,388,389,391],[246,255,261],[255,261,346,387],[246,255,261,392,469],[255,261,392,469],[255,261,392,404,407,409,418,420,421,471],[255,261,390,392,409,430,431,433,434,435],[255,261,407,410,417,420,471],[255,261,390,392,407,410,422,471],[255,261,390,407,410,411,417,420,471],[255,261,408],[255,261,403,407,416],[255,261,416],[255,261,392,409,412,413,416,471],[255,261,407,416,417],[255,261,418,419,421],[255,261,398],[255,261,402,425,426,427],[255,261,392,397,402],[255,261,391,392,397,401,402,426,428],[255,261,392,397,401,402,426,428],[255,261,392,397,398,402,403,429],[255,261,392,397,398,402,403,430,431,432,433,434],[255,261,402,434,435,438],[255,261,402,403,436,437,438],[255,261,392,397,398,402,403,435],[255,261,391,392,397,398,402,403,430,431,432,433,434,435],[255,261,392,397,398,402,403,431],[255,261,391,392,397,402,403,430,432,433,434,435],[255,261,402,403,422],[255,261,406],[255,261,391,392,397,398,402,403,404,405,410,411,417,418,420,421,422],[255,261,405,422],[255,261,392,398,402,422],[255,261,406,423],[255,261,391,392,397,402,404,422],[255,261,392,397,398,402,441],[255,261,392,397,398,401,402,440],[255,261,392,397,398,402,403,416,444,446],[255,261,392,397,398,402,446],[255,261,392,397,398,402,403,416,422,445],[255,261,392,397,398,401,402],[255,261,402,450],[255,261,392,397,402,444],[255,261,402,452],[255,261,392,397,398,402],[255,261,402,449,451,453,455],[255,261,392,398,402],[255,261,392,397,398,402,403,449,454],[255,261,402,444],[255,261,402,416],[255,261,391,392,397,401,402,458],[255,261,403,404,416,424,428,429,439,442,443,447,448,456,457,458,459,460,462,466,467],[255,261,392,398,402,416],[255,261,391,392,397,398,402,403,412,414,415,416],[255,261,392,397,401,402],[255,261,392,397,402,448,461],[255,261,392,397,398,402,463,464,466],[255,261,392,397,398,402,463,466],[255,261,392,397,398,402,403,464,465],[255,261,389,402],[255,261,401],[255,261,276,281,293,304,311,971,972,973,978,991,1026],[255,261,311,1011,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025],[255,261,1026],[255,261,276,311],[255,261,273,309,1302,1303],[255,261,276,311,969,971,972,973,978,1027],[255,261,274,293],[255,261,276,281,304,311,971,977],[255,261,273,293,311,974,975],[255,261,281,293,311],[255,261,974],[255,261,976],[255,261,273,311],[255,261,812,813],[255,261,813,814],[255,261,293,812,813,814,822,823,824,825],[255,261,275,813,814],[255,261,293,812,823,826,827],[255,261,813,814,822],[255,261,815,816,817,819,820,821],[255,261,293,816],[255,261,818],[255,261,816],[255,261,296,819,820],[255,261,812],[255,261,924],[255,261,915,916],[255,261,912,913,915,917,918,923],[255,261,913,915],[255,261,923],[255,261,915],[255,261,912,913,915,918,919,920,921,922],[255,261,912,913,914],[255,261,1122],[255,261,1175,1176],[243,255,261,283,1122,1136],[255,261,283,1122],[243,255,261,264,283,789,1122,1136,1137,1138,1140,1178,1180,1185,1187,1192,1193,1194,1195,1197,1199,1200,1201,1202,1203,1237,1320,1321,1325],[255,261,275,304,795,1122,1177,1236],[255,261,283,1122,1177],[255,261,789,1122,1191],[255,261,1140],[255,261,1122,1326],[255,261,264,1122],[255,261,927,930,1122,1177,1179,1180,1184,1316,1317,1318,1319],[255,261,276,1122],[243,255,261,1122,1177,1179,1180,1184,1316,1317,1323,1324],[255,261,275,283,1122,1196],[255,261,1122,1140],[243,255,261,1122,1177,1192],[255,261,275,283,1122],[255,261,283,1122,1136,1199],[255,261,274,275,276,282,283,304,1122,1136,1141,1177,1178,1179,1180,1184,1185,1186],[243,255,261,275,283,1122,1136,1174,1177],[255,261,283,1122,1198],[255,261,283,1122,1183],[244,255,261,474,479],[244,255,261],[255,261,477],[244,255,261,476],[244,245,255,261,474],[255,261,762],[244,255,261,474],[244,245,255,261],[244,245,255,261,472,474,475,476,479],[244,255,261,472,476],[244,245,255,261,472],[255,261,472],[244,255,261,471],[255,261,773],[244,255,261,777],[245,255,261,476,491],[244,255,261,781],[255,261,789],[244,255,261,791],[255,261,795],[245,255,261,474,476],[244,255,261,403,472,475,476,479],[255,261,781],[255,261,830],[244,255,261,274],[244,245,255,261,472,474,478],[244,245,255,261,474,478,873,878],[244,245,255,261,474,476,477,490,491,759,760,761],[244,245,255,261,474,477],[244,245,255,261,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,760,761,762,763,764,765,766,767,768,769,770,771,772,774,775,776,778,779,780,782,783,784,785,786,787,790,792,793,794,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,831,832,833,834,835,836,837,879,880,881,882,883,884,885,886,887,888,889,890,892,893,894,898,899,900,901,902,903,904,905,906,907,908,909,910,911,931,932,933,934,936,937,938,939,940,941,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,1029,1030,1031,1033,1034,1035,1036,1037,1078,1079,1080,1081,1082,1083,1084,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121],[255,261,891],[255,261,897],[255,261,767,900],[244,255,261,472],[245,255,261],[255,261,474],[245,255,261,472,474,930],[244,255,261,767,789],[255,261,935],[244,245,255,261,472,474,476,762],[244,255,261,943],[244,245,255,261,472,474,476,477],[244,255,261,476,479,962],[244,245,255,261,472,474],[244,245,255,261,474,941],[244,255,261,476,479],[255,261,387,1028],[244,245,255,261,304,474],[244,245,255,261,474,475,476,479],[255,261,1032],[245,255,261,474],[244,255,261,472,474,476,1119],[255,261,476],[255,261,1085],[244,245,255,261,474,476,477,760,761,762],[244,245,255,261,472,473],[255,261,304],[255,261,472,474,477],[255,261,1098],[244,255,261,472,477],[243,255,261,925,1122],[255,261,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135],[255,261,1122,1124]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":99},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":99},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":99},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":99},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":99},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":99},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":99},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":99},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":99},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":99},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":99},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":99},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":99},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":99},{"version":"37ebb37fdfb5ba642138f4caf66dcd65c16a380b054553cf10110e21f570e527","impliedFormat":99},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":99},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":99},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":99},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":99},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":99},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":99},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":99},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":99},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":99},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":99},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":99},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":99},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":99},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":99},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":99},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":99},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":99},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":99},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":99},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":99},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":99},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":99},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":99},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":99},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":99},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":99},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":99},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":99},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":99},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":99},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":99},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":99},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":99},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":99},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":99},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":99},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":99},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":99},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":99},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":99},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":99},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":99},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":99},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":99},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":99},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":99},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":99},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":99},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":99},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":99},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":99},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":99},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":99},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":99},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":99},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":99},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":99},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":99},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":99},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":99},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":99},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":99},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":99},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":99},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":99},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":99},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":99},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":99},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":99},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":99},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":99},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":99},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":99},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":99},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":99},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":99},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":99},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":99},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":99},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":99},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":99},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":99},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":99},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":99},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":99},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":99},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":99},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":99},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":99},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":99},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":99},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":99},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":99},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":99},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":99},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":99},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":99},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":99},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":99},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":99},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":99},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":99},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":99},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":99},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":99},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":99},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":99},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":99},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":99},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":99},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":99},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":99},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":99},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":99},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":99},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":99},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":99},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":99},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":99},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":99},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":99},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":99},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":99},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":99},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":99},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":99},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":99},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":99},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":99},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":99},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":99},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":99},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":99},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":99},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":99},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":99},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":99},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":99},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":99},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":99},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":99},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":99},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":99},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":99},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":99},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":99},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":99},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":99},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":99},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":99},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":99},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":99},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":99},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":99},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":99},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":99},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":99},{"version":"e45c27159f906b280b931c5f6d60933cee4af26704662790f74c190219e21922","impliedFormat":99},{"version":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":99},{"version":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":99},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"ed9680d6573920c3f1588fdb732d2469324e16b4795e2bec5f196a613e66030f","impliedFormat":99},{"version":"804e73c5236db118192cf774837ecf6d37013470832dc0ed9aaecfb4c93fb88b","impliedFormat":99},{"version":"91c093343733c2c2d40bee28dc793eff3071af0cb53897651f8459ad25ad01da","impliedFormat":99},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":99},{"version":"e1c58879ba7cfcb2a70f4ec69831f48eef47b7a356f15ab9f4fce03942d9f21a","impliedFormat":99},{"version":"f4fc36916b3eac2ea0180532b46283808604e4b6ff11e5031494d05aa6661cc6","impliedFormat":99},{"version":"82e23a5d9f36ccdac5322227cd970a545b8c23179f2035388a1524f82f96d8d0","impliedFormat":99},{"version":"5a5703de2fe655aa091dfb5b30a5a249295af3ab189b800c92f8e2bc434fb8db","impliedFormat":99},{"version":"bfce32506c0d081212ff9d27ec466fa6135a695ba61d5a02738abd2442566231","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"493c39c5f9e9c050c10930448fda1be8de10a0d9b34dcd24ff17a1713c282162","impliedFormat":99},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":99},{"version":"fb5a2c398c5d06e25ae7b12ad15a921f1b980a63fa2a7e4fab133b4e2a812016","impliedFormat":99},{"version":"ba3df48971907e524e144d82ed8f02d79729234b659307f8ea6c53b40821c021","impliedFormat":99},{"version":"01667d68efa44dff300acf4c59dd32da24ef2a5e60f22ab0a2453e78384313c4","impliedFormat":99},{"version":"e6ad9376e7d088ce1dc6d3183ba5f0b3fb67ee586aa824cc8519b52f2341307a","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"d62b09cb6f1ceb87ec6c26f3789bc38f8be9fb0ce3126fd0bf89b003d0cba371","impliedFormat":99},{"version":"f1814fe671a8c89958dc5c6bbba86886a5e240d4b5dc67d5fe0230a1453173aa","impliedFormat":99},{"version":"093c715953724a40a662c88333a643328eb31bc8c677a75a132fc91cac5374eb","impliedFormat":99},{"version":"491d5f012b1de793c45e75a930f5cdef1ff0e7875968e743fa6bd5dd7d31cb3b","impliedFormat":99},{"version":"53c86b81daa463deacb0046fee490b6d589438ac71311050b74dcee99afca0f6","impliedFormat":99},{"version":"70587241a4cc2e08ffc30e60c20f3eb38bd5af7e3d99640568ffe2993f933485","impliedFormat":99},{"version":"25eae186ba15de27b0d3100df3b30998ad63eaacf9e3d8ca953c3ad120a84c22","impliedFormat":99},{"version":"437bd33cd28dbf6eccc49404feb45896f2b16a5999a6f302568bdaa43b36c517","impliedFormat":99},{"version":"2210cc7bbaf78e3cbaf26c9ccfd22906fb9d4db9de2157c05bf22ba11384aec6","impliedFormat":99},{"version":"29c4e9ce50026f15c4e58637d8668ced90f82ce7605ca2fd7b521667caa4a12c","impliedFormat":99},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":99},{"version":"3b56bc74e48ec8704af54db1f6ecfee746297ee344b12e990ba5f406431014c1","impliedFormat":99},{"version":"9e4991da8b398fa3ee9b889b272b4fe3c21e898d873916b89c641c0717caed10","impliedFormat":99},{"version":"71725d35a48bc9a5ae7ae3ef4823c25c8913470913d97fcb9247ebdca14d63f6","impliedFormat":99},{"version":"575d3752baaacf5d34ae1fe3840a3a7acb782f0b670b2e0385af58dabba9ae12","impliedFormat":99},{"version":"dccadbf7c7a1a95c6ce5627765dc1c603f33fb928ddc39092f589476bca7965f","impliedFormat":99},{"version":"dfb1f442faf045df05149751d29131b68726cae26c6e9cb2eeb132acee59e6e0","impliedFormat":99},{"version":"09fe9b15282a073c2cd0ef426704e0baea167c2270fc5c46bc932deee440a071","impliedFormat":99},{"version":"ee02719d72e35d2816bd9052ad2a35f148ac54aa4ffb5d2ad2ef0229a17fc3ae","impliedFormat":99},{"version":"eac029dfd99082efdc6854f4f23932fe54be7eb9bb5debd03c2f6ebd1be502f7","impliedFormat":99},{"version":"38d3c5eb27acab967299ad6aa835c944301501392c5056d9976842e4a4259623","impliedFormat":99},{"version":"924abf8e5bf12cc08323ce731f7c8215953755d53fdd509886ef321137b1fdf3","impliedFormat":99},{"version":"af12948563d3973b5f4c9a4ceda63c362758edb8c64412410ebd9c145b85611b","impliedFormat":99},{"version":"4a5d9348012a3e46c03888e71b0d318cda7e7db25869731375f90edad8dcea02","impliedFormat":99},{"version":"41ae8b7e49e35f92ace79c1f30e48b2938c97f774a4163b24765abe9fb84085d","impliedFormat":99},{"version":"0ed362e8185765e6ab2e251f9da6d0db15d6f9042d1dc69cdd6ecd0433c0dc8e","impliedFormat":99},{"version":"935a4d16a9559f0832c5f32852872c5bea91fa0f6ad63c89dd4461029b6f294c","impliedFormat":99},{"version":"75a6adb9a4ee5df5192fad33566b5eea99cc4dd0685f713e4f4a4d4c7555103b","impliedFormat":99},{"version":"e88c9554eb7f5f8e7ada1653e98612a1c77afadf953757b8c08c8fe2c993b462","impliedFormat":99},{"version":"2480b9275023f19d0b53c8858feda680a92fb1a98ea1e43c8570f1fb28930aa3","impliedFormat":99},{"version":"bccef2e4035020788934f608255058fc234b3ccc67bf9b888b7eb1ef3285e521","impliedFormat":99},{"version":"4ecb0eb653de7093f2eb589cea5b35fdea6e2bbd62bc3d9fafdc5702850f7714","impliedFormat":99},{"version":"69ed52603ad6430aaffbc9dec25e0d01df733aaa32ab4d57d37987aedc94c349","impliedFormat":99},{"version":"323420ca2dd68ae9922913d7c5ca44f36b1db0e5d58e4a9316d4121d5da88664","impliedFormat":99},{"version":"584cbaebe5928714465942169a1820461276944ac1e97c2062855b14b498b546","impliedFormat":99},{"version":"2d2e14e426fbae030b971ca08931afaa3cd36babd63482351e957ce404bd4dcd","impliedFormat":99},{"version":"96fa3b7fc7a6199abe026fa8456c6c2b5fa4baef96473fb7c924ee16c349dc36","impliedFormat":99},{"version":"2942e902cb59989e45f2a924357e73011f531d71972d0159efd557e16b1b150d","impliedFormat":99},{"version":"b6120275cc4fc44b151af141c6a5c41c9557b4b9d551454812d10713ddb63847","impliedFormat":99},{"version":"534408204925f12d5d3e43457f87f89fdfd062b7ce4f4496ea36b072423d56d5","impliedFormat":99},{"version":"953ee863def1b11f321dcb17a7a91686aa582e69dd4ec370e9e33fbad2adcfd3","impliedFormat":99},{"version":"c6fcf55644bb1ee497dbe1debb485d5478abd8e8f9450c3134d1765bff93d141","impliedFormat":99},{"version":"e452b617664fc3d2db96f64ef3addadb8c1ef275eff7946373528b1d6c86a217","impliedFormat":99},{"version":"434a60088d7096cd59e8002f69e87077c620027103d20cd608a240d13881fba7","impliedFormat":99},{"version":"40d9502a7af4ad95d761c849dd6915c9c295b3049faca2728bff940231ca81d3","impliedFormat":99},{"version":"792d1145b644098c0bb411ffb584075eadcfbbd41d72cd9c85c7835212a71079","impliedFormat":99},{"version":"30d0ecf1c23d75cba9e57457703695a25003c4328f6d048171e91b20d1012aa2","impliedFormat":99},{"version":"f216cb46ebeff3f767183626f70d18242307b2c3aab203841ae1d309277aad6b","impliedFormat":99},{"version":"fa9c695ac6e545d4f8a416fb190e4a5e8c5bc2d23388b83f5ae1b765fff5add5","impliedFormat":99},{"version":"fe69ad9a4b9c61fa429e252aaf63ba4bd330bfd169432de7afbd45a8bf2f50a1","impliedFormat":99},{"version":"f294be0ee8508d25d0ea14b5170a056cae0439a6d555a23d7779e3c5c28430ae","impliedFormat":99},{"version":"99b487d1ed8af24e01c427b9837fd7230366ad661d389dc7f142e1c1c8c33b5e","impliedFormat":99},{"version":"a384b0ea68d5a8c2ab6ad5fbd3ce1480e752e153dd23feb03d143e7ecc1ac2c7","impliedFormat":99},{"version":"e79760097ef8fd7afd8db7b11a374fd44921deb417cebf497962127b44ec9a37","impliedFormat":99},{"version":"afad82addd1d9ee6e361606205bbda03e97cb3850f948e53fdbb82f160dc43c7","impliedFormat":99},{"version":"5ee44a60fe09b4c21f71506f6697107f19a01c9842980c7145a4f2938d4dafc4","impliedFormat":99},{"version":"3729454e7f755d54f08bad759e29cc87453323f90ffcbb3f425c4ede7224cfd3","impliedFormat":99},{"version":"04fd41edfc690bb3735e61ee7d53f513cc30d2fc9080d4ca108fff642e91e0ce","impliedFormat":99},{"version":"c1cb04d8bc056dd78a2a463062cd44a3ae424a6351e5649736640e72697e42fc","impliedFormat":99},{"version":"c6c06d1932ee8445fcc00726917a51cf18fcb53d5a97697551542caa62906318","impliedFormat":99},{"version":"54dc4a604b09975a5c90b9e75864897c028ecc284c27fc2dbea68685a6526f74","impliedFormat":99},{"version":"3d971255e2e8aca864a90e1953f21c119b3b717aa484747a19f7834d1b2102f0","impliedFormat":99},{"version":"7b6261a4407295b1057feba24a1333923dee852f67fe3c329c990ddcfa20adce","impliedFormat":99},{"version":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":99},{"version":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":99},{"version":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":99},{"version":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":99},{"version":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":99},{"version":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":99},{"version":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":99},{"version":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":99},{"version":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":99},{"version":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":99},{"version":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":99},{"version":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":99},{"version":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":99},{"version":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":99},{"version":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":99},{"version":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":99},{"version":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":99},{"version":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":99},{"version":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":99},{"version":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":99},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":99},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":99},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":99},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":99},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":99},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":99},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":99},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":99},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":99},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":99},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":99},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":99},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":99},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":99},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":99},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":99},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":99},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":99},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":99},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":99},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":99},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":99},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":99},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":99},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":99},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":99},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":99},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":99},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":99},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":99},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":99},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":99},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":99},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":99},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":99},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":99},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":99},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":99},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":99},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":99},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":99},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":99},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":99},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":99},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":99},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":99},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":99},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":99},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":99},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":99},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":99},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":99},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":99},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":99},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":99},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":99},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":99},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":99},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":99},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":99},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":99},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":99},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":99},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":99},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":99},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":99},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":99},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":99},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":99},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":99},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":99},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":99},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":99},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":99},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":99},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":99},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":99},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":99},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":99},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":99},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":99},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":99},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":99},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":99},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":99},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":99},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":99},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":99},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":99},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":99},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":99},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":99},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":99},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":99},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":99},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":99},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":99},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":99},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":99},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":99},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":99},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":99},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":99},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":99},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":99},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":99},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":99},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":99},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":99},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":99},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":99},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":99},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":99},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":99},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":99},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":99},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":99},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":99},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":99},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":99},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":99},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":99},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":99},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":99},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":99},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":99},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":99},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":99},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":99},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":99},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":99},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":99},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":99},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":99},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":99},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":99},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":99},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":99},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":99},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":99},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":99},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":99},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":99},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":99},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":99},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":99},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":99},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":99},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":99},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":99},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":99},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":99},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":99},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":99},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":99},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":99},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":99},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":99},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":99},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":99},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":99},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":99},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":99},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":99},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":99},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":99},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":99},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":99},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":99},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":99},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":99},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":99},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":99},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":99},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":99},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":99},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":99},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":99},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":99},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":99},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":99},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":99},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":99},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":99},{"version":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":99},{"version":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":99},{"version":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":99},{"version":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":99},{"version":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":99},{"version":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":99},{"version":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":99},{"version":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":99},{"version":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":99},{"version":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":99},{"version":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":99},{"version":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":99},{"version":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":99},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":99},{"version":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":99},{"version":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":99},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":99},{"version":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":99},{"version":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":99},{"version":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":99},{"version":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":99},{"version":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":99},{"version":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":99},{"version":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":99},{"version":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":99},{"version":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":99},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":99},{"version":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":99},{"version":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":99},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":99},{"version":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":99},{"version":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":99},{"version":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":99},{"version":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":99},{"version":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":99},{"version":"ab012885c91b77e85a32d6dac2a3758f81f0cdac5127745d3d23432ccbb95fc0","impliedFormat":99},{"version":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":99},{"version":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":99},{"version":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":99},{"version":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":99},{"version":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":99},{"version":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":99},{"version":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":99},{"version":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":99},{"version":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":99},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"9ea2b1188610ac5bfd0bab8c5ce454ec09d402e0a7c7a8c52fac937783fea36f","impliedFormat":99},{"version":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":99},{"version":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":99},{"version":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":99},{"version":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":99},{"version":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":99},{"version":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":99},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":99},{"version":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":99},{"version":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":99},{"version":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":99},{"version":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":99},{"version":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":99},{"version":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":99},{"version":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":99},{"version":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":99},{"version":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":99},{"version":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":99},{"version":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":99},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":99},{"version":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":99},{"version":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":99},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":99},{"version":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":99},{"version":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":99},{"version":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":99},{"version":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":99},{"version":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":99},{"version":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":99},{"version":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":99},{"version":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":99},{"version":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":99},{"version":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":99},{"version":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":99},{"version":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":99},{"version":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":99},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":99},{"version":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":99},{"version":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":99},{"version":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":99},{"version":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":99},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":99},{"version":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":99},{"version":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":99},{"version":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":99},{"version":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":99},{"version":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":99},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"361685e1b13e75583717b22dfec48705646a4a465fc8eaa4c14660ef321f722d","impliedFormat":99},{"version":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":99},{"version":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":99},{"version":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":99},{"version":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":99},{"version":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":99},{"version":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":99},{"version":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":99},{"version":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":99},{"version":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":99},{"version":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":99},{"version":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":99},{"version":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":99},{"version":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":99},{"version":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":99},{"version":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":99},{"version":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":99},{"version":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":99},{"version":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":99},{"version":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":99},{"version":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":99},{"version":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":99},{"version":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":99},{"version":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":99},{"version":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":99},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"2f3ee083529edd701ea0d830dac5099770afac93b436814d16cb4425983c0e09","impliedFormat":99},{"version":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":99},{"version":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":99},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":99},{"version":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":99},{"version":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":99},{"version":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":99},{"version":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":99},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":99},{"version":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":99},{"version":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":99},{"version":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":99},{"version":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":99},{"version":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":99},{"version":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":99},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":99},{"version":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":99},{"version":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":99},{"version":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":99},{"version":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":99},{"version":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":99},{"version":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":99},{"version":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":99},{"version":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":99},{"version":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":99},{"version":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":99},{"version":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":99},{"version":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":99},{"version":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":99},{"version":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":99},{"version":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":99},{"version":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":99},{"version":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":99},{"version":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":99},{"version":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":99},{"version":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":99},{"version":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":99},{"version":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":99},{"version":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":99},{"version":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":99},{"version":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":99},{"version":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":99},{"version":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":99},{"version":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":99},{"version":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":99},{"version":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":99},{"version":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":99},{"version":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":99},{"version":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":99},{"version":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":99},{"version":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":99},{"version":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":99},{"version":"a5f6790e6a665106689b9e8002325af896f998b952e4f921211377a18486ad6d","impliedFormat":99},{"version":"d1e91aab87ce77300dee6b313016ab9c9fd5dc09c90c3addae6c49d9aafdd48e","impliedFormat":99},{"version":"615dbc206e24cb2a1a1e8c64fe1935ca38fb4b6df1b8ff4c9e3cc5627a22b51e","impliedFormat":99},{"version":"b3e4bab9b85fda13110141f0f8fd3f206ceba4ecf98707e35604df4f0747eea8","impliedFormat":99},{"version":"ab6993a5648ac4c15f42e5bb63c827bc0421ef5b12e4da4e5ec4154c0375258a","impliedFormat":99},{"version":"15fd6d0d064f2ce287af6ba467006d4e33e1fe6c8122b8199232421fac57c7c3","impliedFormat":99},{"version":"11e798d729f260243f71129017c4e15e5ab72a2ba583ed885262e1d71f51a236","impliedFormat":99},{"version":"069e2b2cb21346ac8e6ae696579f88ad9af324948aed8b5c5250db198cd70098","impliedFormat":99},{"version":"32c4d13096ab2f3fc9e420996f0ba9eed018001c4e3f7f502367af6add5ee211","impliedFormat":99},{"version":"2bc5dd5c7c30908ad4505e5a9b650a2c7bf44d302b6dad241b7645133a1f254d","impliedFormat":99},{"version":"9d8edb0a08a2d7f86d57f733b3cf4ea60049e29cf8f59a2d3d6e30d7afeee5bf","affectsGlobalScope":true,"impliedFormat":99},{"version":"d83862bfac5368d613e9171c45333f6cc754a25e15c155855f3da97bfb673956","impliedFormat":99},{"version":"a5e1beb9e64a11772ad82cf21d969ad0ceff38bc18e879fd7173683d2e86e333","impliedFormat":99},{"version":"103c63f7abbefd916b6aa2b17d302e8574a017f66142ea75cfa2a952cddcd64a","impliedFormat":99},{"version":"67f69abf74c7a948e1a89bec573c0bf33f546b001f5977e7c0d3ad4d9eee56af","signature":"b034e1ac8f0829189e3a62f3517e2444365a1142eeaa72076179e97ed0b6c0d6","impliedFormat":99},{"version":"0be0c70fd13b4549eb6e272d75e8eff9ab2331288a315d57acb57c150fe9e14a","signature":"9af7dd75dafec7ca1fda5a036fc240f1971d5aff6976b6cdca02479c8bcc213e","impliedFormat":99},{"version":"1a2ae3df505891912038749a39e434643cf1f91a578475ae049f36e35c870c58","impliedFormat":1},{"version":"b124c0624b15412ace7d54644ade38d7a69db7e25488a1a4d2a8df6e11696538","impliedFormat":99},{"version":"316f1486e15cbf7896425f0a16dfe12d447dd57cfb3244b8b119c77df870858f","impliedFormat":99},{"version":"6b1d838981b5606f4c958d98800e318314e71f0dd1d087196350d189362b69c9","impliedFormat":99},{"version":"eecab4c87fadc3a8c5fa35f659a4f5c480208ab80f0f36d9761c2bb427908fcb","impliedFormat":99},{"version":"b8dd1d513057d0320e4d5473be58c7161fb50ca2d5ad5c0e6e81b417aad36f61","impliedFormat":99},{"version":"73465f19e61e23f551639909f94147b4211e1331d3699bce6fcc972203423b20","impliedFormat":99},{"version":"929746f886d166cee5d20d109e816f527c709a00cc90c8fd7c52c66e72e31805","impliedFormat":99},{"version":"9ffa740c1a384e68eca1c3e530ee6911ed42fbc0010570d2effb375eaaa4dceb","impliedFormat":99},{"version":"6f2cc41dae1386fc57a4980d3aba6115e879479821ea78a2d4e3a3c2fd5cb786","impliedFormat":99},{"version":"bd236ec30223eaced7fed2c84ffc5933ad23061314c4b9874d4d7c88f2d841f4","impliedFormat":99},{"version":"97adcdc3cd8c7fbcaf7e1f60a4ea05972da21b0e0b1ef71ab96c20c9c65ffe88","impliedFormat":99},{"version":"3dcf393cb7c87561367ae539f1462b15b48af0bac86cb6892bbf6c617e9e1872","impliedFormat":99},{"version":"86413ef25968db827f5d8ca68a3ae8a7fd91f8cbe4f654053ff32454b3f6e2e8","impliedFormat":99},{"version":"3ef8337f4df30d8d6978651ae95632bb7dd229ac4dfa7006c2aa4e2006ea6453","impliedFormat":99},{"version":"09e0d46e3d2fcc6c5d7a2afbd1a22809dafd50f1f3f8b1d2e327ed21c7c6fa5f","impliedFormat":99},{"version":"ac5b06a39925ae9c5344c84e2e24d7b61c22b4176fcbb96de5f8e45986f2331e","impliedFormat":99},{"version":"d829826b1dc3a0d84174e03b009afe4677e36a84904863f6318b7243c3644b44","impliedFormat":99},{"version":"c61e4cede8cf73fb4dbff3cad8fd57902eab1ebc62f20d9aeb105c3257f5a906","impliedFormat":99},{"version":"ebdf90aea74d99b9fc1a639433c3458604b5db3571b7954b8317dd1a1fa71bdd","impliedFormat":99},{"version":"9c1de355ef73132bba24da0e616cb67867e4b7f85689bd95b9638395cbb81a6d","impliedFormat":99},{"version":"46c4ec0878833d2ae63e24e2389a8145babdcab72297e18581af97d7e62c0511","impliedFormat":99},{"version":"df92b0948e17e54e60e2b7bbc525d06b35d404a1a3c1ea48e4071262002f7d3d","impliedFormat":99},{"version":"7c9e187838a0e665cac719dc03b215dfc29da9caa30af79a78531e7256a1d6d2","impliedFormat":99},{"version":"1eb292fabe901c9fa80732c87cf7b42b5f790f5af48bc36d8371272fa80427f2","impliedFormat":99},{"version":"c34decddf18283ad1811981c06a07208aaef29010c55a7b810ba5c96e3d89a6b","impliedFormat":99},{"version":"694adea51eea8d8981ce771b52c5e5a2d524886e6397fc9431424325ecf42eb1","impliedFormat":99},{"version":"15036d0d6ec1d21354542a670696edea4a344baeed6718cb553aa8fe619e8069","impliedFormat":99},{"version":"3c6ce563b69aa0a196f2373c5ee96472ca1aeb232a9611981bdff9b3bc48e02a","impliedFormat":99},{"version":"45a6de331708ab2a4f98fbb5d68d0a91b887802d277b37573a26ecb0036f1e7e","impliedFormat":99},{"version":"8743f6147ba8d5e9cff0076f0a016d183df75a0796c25e096ee3fa19d06acfc5","impliedFormat":99},{"version":"812651dab7b19c7fe9cfea34fdb7a059093aff0c1cfa5dbfe979b57e7d7627ab","impliedFormat":99},{"version":"e329923a93fce350f89d04facf9053fa20b789cae18fe3340527ccd9a61275ed","impliedFormat":99},{"version":"a008ee16379994ecad644e0e543bcd0ec790fc51e9ee2632008f241872cbcfce","impliedFormat":99},{"version":"3cf28c9c5653662986136d2ffb17e5e1ea6d933aaee20ec64de184b19284ffda","impliedFormat":99},{"version":"3d25e4112b03e9a3549ab85ff56e3f2d7264f74dcf5308549c81609c31ab2aa3","impliedFormat":99},{"version":"bdb5216b0543bc930a522a44fb5d0aa5543ff1bb96b7691d4eb3c1fbe3d72db9","impliedFormat":99},{"version":"977cd72d913d528341afeb6db5e8e03da0140aa7dfebd48f4a5a4ec78205518f","impliedFormat":99},{"version":"4660318f1fbea19e845217e9d537127570826d886e728d9352a998abea06138f","impliedFormat":99},{"version":"16d518646d7b0e95103d6269fb44a983e9892afb48ecc5924e7cc95062af692a","signature":"50c9f74a30a4c81ebd9b717bd949843a0ca9659a89f318bf0df9a2ce501a4de8","impliedFormat":99},{"version":"c57c653b2b06f3ed55d5e011cd527952c750abcaed3d573e4b5d3b1a45963a33","signature":"23655f97809c3993b0b014ad5b913cbdbc9b70dab08184ac363216c8e720e80d","impliedFormat":99},{"version":"0b494bc687fe3f5cd6020c1fee0f115ee8548f8b0b660a78118ddfb01cee9f01","signature":"d5debe25c5f14159ca8d963381fcbcef2361fddc1c9be7170b5ad6e1be0ae543","impliedFormat":99},{"version":"d3a6e1ff56a0a760b1b36eb34925042a8148d8e0ab4c2d28fcbdbf40fb5a8acc","impliedFormat":99},{"version":"839114ddc4236b8304df6a6c7cc6784913b7c69a63afd4ecb36fc5c9c57276fc","impliedFormat":99},{"version":"cc4ecb6238b32248c6b58577a2ac2a6223c002c1a9e3f1f9424a89f44aa84f0a","impliedFormat":99},{"version":"fc05ee36b34aa3bc07766c7e15bc131b86450e09b858171f17c667b48882208c","signature":"484e9137df39b3b2640fa992da2a128bad7b05d2105769102790196a486b030f","impliedFormat":99},{"version":"b39e0c44b5d1bd8e378f5f946f96bd984b5acbdd7b443d8bf4bbc73faf8917fe","signature":"26eba70feaa3511df2425d3a62df5c263676c9c23efe9c51107517fe07f36811","impliedFormat":99},{"version":"d302703f79822dac249f6978a33b7b64f1225c11c1b4f0f1a7f5a194834f0731","signature":"deead5ab76b218c9ffee84b9f4092fcf078872cc473e0f7793eed37da5a257a3","impliedFormat":99},{"version":"7e764b1a048790ff9d3fdb54a11f3bc884be7f63843982a5401184b474bdda52","signature":"07ccb1b5897c9503ec33714d64b63d744d79231f32cefe383ef6a753a8fa4b7f","impliedFormat":99},{"version":"832a15510655d720e145f804b39ea017c134f9b0ae540238dd70c2648bd43d2f","impliedFormat":1},{"version":"23fd835a9acf15c4b1b6ea8bba1c1cc0c6625d2b6c396cbd32106afd5b77da8f","impliedFormat":1},{"version":"3329eb143f16b15b1156da172d60cb82763818f94d6a457b4e8926575d122deb","impliedFormat":1},{"version":"f464588f6d0b0c56a0e9d81d8a667b9fad6f5c7a6432c8886b3397a3ca6eeb76","impliedFormat":1},{"version":"da8e08d5823ecf9d22cb86f20547d64c66b4b52b7245d402a2a096225f97098b","signature":"b60b9f0fb27cb52c831e3e674d00bde75fdf9a07fb1381e99bd57e80cf73d0ca","impliedFormat":99},{"version":"d881a56429f8b93ce04c4f4747aef46558d3c453602fbe54fc3cc0537d60f22b","signature":"d87f178c5d46f0f02598b122abf76dc1d51e0e7018e38876d76f0ec9c82a1136","impliedFormat":99},{"version":"8dd2a60f0bc8593f7495ac55de8fdaa1f9b025b2501b21decb64c958188fd5f2","signature":"de0ff6b9e270f7f026543e2f288df758576e5bddf56aa1d7973eaf293567009f","impliedFormat":99},{"version":"ebcac9005eaf6f8593399d1d2a196b39b2a6372da359d65dfaaa3b500590e52a","signature":"785588b69527d7f13002594736ad19624a9fd94da38e209e1bf711c5a34705fa","impliedFormat":99},{"version":"d72872210758c63bee60c6a062030ee00ed9a083c26d9706f1fcd086f9e06ae9","impliedFormat":1},{"version":"35b42c81d391107d76439cd5cbe25eef38eceac8f707b4e7ec10b8f725a7e147","signature":"2e257076846a7327005f13fdbe6741d531a27f6b1c0e6cea7822132d2f3aeb0b","impliedFormat":99},{"version":"c302df1d6f371c6064cb5f4d0b41165425b682b287a3b8625527b2752eb433ee","impliedFormat":1},{"version":"923d119c48b1b2aa2accdae23f766e91c56a4d8d6569d3e36fd04bb66171d0c1","signature":"86eaf0bb4c2d1fa13d920019e2769ac19ce29bc6e1d71524822883fda66f2197","impliedFormat":99},{"version":"b3de895b080cfedac5c5ac7e43ccc2b85493121bf530efd8e7934b54082ee851","signature":"ef459d78f787af573c9002efe7d4e253e0d908a823b1ed0508af90f47ec9dd6d","impliedFormat":99},{"version":"d7380276714a0dd73edb5799e3a7f719146abef2848faa2c4ec8f64f96b31a74","signature":"6625bd07fcbf046582979dff79c4dc211a6ba65cc5ae9e63a30ca058bb51812e","impliedFormat":99},{"version":"7f8eaf70bfff1a593993f32ad7c72bf609f066af1c446804cb09f1e967d4bc17","signature":"315ba2e55519b4d4bff349ad0789bacc41066c0604f5365808913ea3a7bcdc00","impliedFormat":99},{"version":"f584fce713457ae91439cf150b0f6145a91c375d35d5923b6cac558853459c34","signature":"7f2884399d6e7c947c4762840cb5956232993bda524794b83ab994f8012f2397","impliedFormat":99},{"version":"730009d668e5b6906dd5b552f5d89904b8ec36f314a2f3fa8367607d28d2abed","impliedFormat":99},{"version":"cc2d9ba9d5434882cfb9bc2954fe433b5538fa78a40be504c9833a45d1a732ad","impliedFormat":99},{"version":"f4fa7e6424786df98e362cfe4eefa908d6110bc4dcc50235d4d05a97939bb1d3","impliedFormat":99},{"version":"e8ff455f7ee74b0a6ea20a465bd95a1ebf41538e06f7874c7934dc1ae42bd10a","impliedFormat":99},{"version":"4e3592aed54bd51d840e6d078794b45a8388d0accf38efa3267a16742ce88041","impliedFormat":99},{"version":"878abe377ce7ed67901e97ca558cab1411f19ba83a5ec9d372d78a382beec334","impliedFormat":99},{"version":"988be2b47c162ddfc4ac289de0bc50b52fd425d4408cb4bc40fcc9b81f4957c6","impliedFormat":99},{"version":"85cc8408b227080f73a2571c87c66ad3aa624753d599f08ba9906f607c744eb9","impliedFormat":99},{"version":"8da95d257be3f2d83c21c555dedda9c96869e5f855652523cf52dc98ca8c57de","impliedFormat":99},{"version":"aa9494cb36743567c0f6ce385ce869358b59193c9b61612e0d70e4de500424c3","impliedFormat":99},{"version":"904964129f1ef4797282d4ea4411eaf26d4b22bb481b8b8ab3e920d4cfc79ecf","impliedFormat":99},{"version":"ce6ada7f4eb4cda3ccfe28a0201608828fc6ee2d3204101976831100d9550d47","impliedFormat":99},{"version":"5a7fe6ef136e88ee70d3cd0b1aa0d6875178b2682542ca340875a2711c81d779","impliedFormat":99},{"version":"dc30228a4d8faa78799c535a32dcb2a456bccd67a152b7fae0797198476b091f","impliedFormat":99},{"version":"9a1fcfc15915ffb2b16416763898a07aca46ef4ea620c5d5f26793e76f714485","impliedFormat":99},{"version":"ab37b1199441c7ecb602defe46f72099d3d4555f7911bd865f51657f419779ab","impliedFormat":99},{"version":"82b10e97d141910eab0f2a331b69b88e160d1435e8cc35d40c45c8533bbc0c0f","impliedFormat":99},{"version":"44e2419e4abff168e564a6c25b3e3bd6f7bad3c66e5e4560d91f3777a3926426","impliedFormat":99},{"version":"3c656ad2c834314314439f331445e5ba5d178fb67776e69c7b0c0746884450bc","impliedFormat":1},{"version":"8804b8ad255545dadc2e4d4039d45b3c0bfb5c1a103cf68c7a8712877ce7bae0","impliedFormat":1},{"version":"f6468b2c5528cb0e63ba5c2072a66711d7d8b53d0d79ba51633fdd7caaec8366","impliedFormat":1},{"version":"362276986f99951a4f4e99530a5a1804c290b0ea5efb380070ffdad36ad8f65f","impliedFormat":1},{"version":"bf7825c221fbb7874ace691afc4257386bf4c74d1c0ed7f908354476920ce2a4","impliedFormat":1},{"version":"0526edae260370da3cf97cc993387c4e2dc603c64120879e598a35fa7be23178","impliedFormat":99},{"version":"cffa607eb95c25b119f9aad3c2e4db80384267cd35d398b537a90aee5c5dfa5e","impliedFormat":99},{"version":"9a710119dd285b73683cdbedaa3798e30aa028e5488b28c1b444f119d0d7b39d","impliedFormat":99},{"version":"c0064198c128285cf5b4f16ca3be43c117d0ef5bfa99aeb415c668ccb01a961c","impliedFormat":99},{"version":"1c23e9084091ec02fe4d3666a22b6e0df02fd64cf9d48fcacc56f22f5cfcb8ab","impliedFormat":99},{"version":"f5a8ed3184cd25bbf61ac2b00f322b1325ecc67e6c5323388ee41a7fbb985be0","impliedFormat":99},{"version":"be2ee1cbe2dd84188fa4e296c5bc19b7af8b9d9511381226884d12bdb5285ab7","impliedFormat":99},{"version":"edacf4223ac6d11361a607880e88012d2da04c27aba76f52c08e9167ba34ed2e","impliedFormat":99},{"version":"f21eedef257a2e149e7da0e610ebc2a811f7507f444f8c959c398fbf36804e55","impliedFormat":99},{"version":"736a3485c9e96b87b11fe6e55b5455e9f85ef59edc09bff1eb2f114ef661d1e5","impliedFormat":99},{"version":"da9fa6a9eeb0a0176d7cafe0eb2f8a7f61d23de4580f0916596e806e116080d6","signature":"6ad2e90a6d45d15a09a65af2ce74d5e163714663b160b07d692128486c5ab5bf","impliedFormat":99},{"version":"c68eb17ea7b2ff7f8bcfe1a9e82b8210c3112820d9e74b56b0fbecaab5ce8866","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"a6613ee552418429af38391e37389036654a882c342a1b81f2711e8ddac597f2","impliedFormat":1},{"version":"da47cb979ae4a849f9b983f43ef34365b7050c4f5ae2ebf818195858774e1d67","impliedFormat":1},{"version":"ac3bcb82d7280fc313a967f311764258d18caf33db6d2b1a0243cde607ff01a0","impliedFormat":1},{"version":"c9b5632d6665177030428d02603aeac3e920d31ec83ac500b55d44c7da74bd84","impliedFormat":1},{"version":"46456824df16d60f243a7e386562b27bac838aaba66050b9bc0f31e1ab34c1f2","impliedFormat":1},{"version":"b91034069e217212d8dda6c92669ee9f180b4c36273b5244c3be2c657f9286c7","impliedFormat":1},{"version":"0697277dd829ac2610d68fe1b457c9e758105bb52d40e149d9c15e5e2fe6dca4","impliedFormat":1},{"version":"b0d06dbb409369169143ede5df1fb58b2fca8d44588e199bd624b6f6d966bf08","impliedFormat":1},{"version":"88dfdb2a44912a28aea3ebb657dc7fcec6ba59f7233005e3405824995b713dac","impliedFormat":1},{"version":"ad5811dc0f71e682e2528d367de9726f1b5f155c8a3197c8fa7339609fef6093","impliedFormat":1},{"version":"cc2d5d5687bdf9d7c49b6946b8769ac7abcbdcd1701d9bb9ca70a8bc1b003e8b","impliedFormat":1},{"version":"6f1fabd39b8c9a66a3232030a4b28ed4fb4f857dcffef0add3220dab4bbba77a","impliedFormat":1},{"version":"9c0623d67471ddc5b9d82b4e06252c746d54f7ae8ccff8701cd51c249f7e7694","impliedFormat":1},{"version":"71b12e1550980f780af85ebf350c9cd449e9789bc38b34e3ef63397e27745bd0","impliedFormat":1},{"version":"f69b484edf398d636992757d587e7e38ea91844a66dbca9d682c9cf7858b77cf","impliedFormat":1},{"version":"37d852b3e6b30b974178674dbf2a7974a1ea4bbdbec26d0bdb8f34632cab94a2","impliedFormat":1},{"version":"83c98fd5eb2d4121b5a03e3d23a9c61af0d271c124758b565ff7b9a44dec0ef1","impliedFormat":1},{"version":"2887d3051b18f3e282cd043f9a180bd76bb7af85d1607d02020703094d86be05","impliedFormat":1},{"version":"482f7efd696da67bb9194731555455019c126bcbe2cd0a193e9e636d7b3f95f5","impliedFormat":1},{"version":"4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","impliedFormat":1},{"version":"9eb1d2dceae65d1c82fc6be7e9b6b19cf3ca93c364678611107362b6ad4d2d41","impliedFormat":1},{"version":"cf1dc1d2914dd0f9462bc04c394084304dff5196cce7b725029c792e4e622a5b","impliedFormat":1},{"version":"effbfadeecef78d95eeb8a032f8c9b66777414d8b6d6d64a6ef67f023fadb2ad","impliedFormat":1},{"version":"479a021fec9328c8ab37f9372dcdc1022d79aeedde6febf03942b4456d1591c9","impliedFormat":1},{"version":"68d25a0614893e256a9e6fe18e2b125dbdad694381b57e63320de6a7518e47fc","impliedFormat":1},{"version":"4ebef8542a4ce522a589af1a5e39d74ed2a4c99d611544dc0b87a9e05776a10e","impliedFormat":1},{"version":"997b9da323c97be26e61b930788c5c317a876d94979c6837f6e0f05de94753ea","impliedFormat":1},{"version":"af7cfe3f859bd980d09f008b41bff896fcfb77473f53a162438fae49c6a3baa6","impliedFormat":1},{"version":"64102e00cb41de7f423608037d17dff83954904383e5c45f1054c2246cf5e184","impliedFormat":1},{"version":"0721d2a27bcb10c815a0df1ab95a54e3a765ffe4b8d0794a47ee85d0e4dd9f29","impliedFormat":1},{"version":"05e29a500e59cc5697947ee0fa9390e88ff008ec76be1f859152bda8ec01f13d","impliedFormat":1},{"version":"6d1901530e1c37c1f61bf1f08dae8db452d57477037e54e3a0a19c9b8c147ab7","impliedFormat":1},{"version":"44b227ad122395768f07a8f1b84041b096220335b34ff7af3b8caa61731b294d","impliedFormat":1},{"version":"c429aba5f84cbfcb26ab33d2b501ce95f8e97ebe47f5bf4814d500b1c326efe7","impliedFormat":1},{"version":"76f0c7a57db199f87ac3cfb03c571ff679facbe25a80e243c4e17ff23d42fe0b","impliedFormat":1},{"version":"29c38144521dae1058ee55bfe54d077b17b707b64715c85cec44823622b21a50","impliedFormat":99},{"version":"c9409ea389b2733ad153decd98696090ad2b37e610c9a23b360eb4330cd7c72f","impliedFormat":99},{"version":"32ad5ea07251b34e433c9e0f768f3e8eb5bfbdb6d71a870092b31eff8815acb2","signature":"aa84f039353f8d3896ea3b9e8819f9f8a14d10d54ee7e6a0aa2a46fa1bae0b0d","impliedFormat":99},{"version":"c2564c3f8c5efadf314a629e45bfdc5ddd31be6f66fa3a400eeef899fa656049","signature":"b3e4bab9b85fda13110141f0f8fd3f206ceba4ecf98707e35604df4f0747eea8","impliedFormat":99},{"version":"2df62cd6db7d86f765cfc05606bbd27b38ed7bae502b5c4d927996bcf3638d64","impliedFormat":1},{"version":"7e73ec2e023fada5031982509cc6b86cd1840bb1d94060af7330d88e04e271bc","impliedFormat":1},{"version":"fcb441a70b0f252685d49415002fe9a174e9d0682e610bfb79ac2baea2c436d8","impliedFormat":1},{"version":"9f2169db49a3f5d37a6bc1fac2cb194d9ce0df2c3118075b1d76a73ff39c7690","signature":"dcb70288862737e46c630b962744862a2632612a784ac58b7f3d5a4cbd6bdd3b","impliedFormat":99},{"version":"f0280df15ce3f15d50b81d6201a5d6c65cb67a84230aae878853dc3d41b89f0d","signature":"75cd76173613623221409a2dc506a4ef5c2e91643b0ae938cfeee53fac0d00de","impliedFormat":99},{"version":"b51a7ec5d9d3c2e8d7903998b39c873ce1a05647c585f907688124f2e8ed2ec1","impliedFormat":99},{"version":"b50e6b7af9d94c19b1aba55b1d8ebd3366af495a74edd7124ef0947fa6aaf62c","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},"1e45a7757b390be6ad3337d47758d79f5dff23522ff8d037831b5b62c54952b1"],"root":[1137,1138,[1178,1180],[1184,1187],[1192,1195],1197,[1199,1203],1237,1320,1321,[1325,1329]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"./","preserveConstEnums":true,"rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[1191,1],[1189,2],[1190,3],[1188,2],[650,2],[651,2],[652,4],[660,5],[661,2],[662,2],[665,6],[659,2],[664,7],[663,2],[710,8],[711,8],[707,9],[712,10],[704,11],[709,12],[708,9],[705,13],[706,14],[681,15],[682,16],[683,16],[703,17],[676,18],[677,16],[684,19],[701,20],[700,21],[698,22],[686,23],[695,20],[687,23],[697,23],[678,24],[689,23],[699,23],[690,20],[679,23],[693,25],[688,23],[691,23],[692,23],[696,20],[694,23],[680,23],[685,16],[702,2],[675,26],[673,27],[672,2],[674,27],[653,28],[654,29],[655,29],[656,2],[658,30],[657,2],[757,2],[715,2],[746,31],[745,32],[733,33],[732,34],[735,35],[734,34],[744,36],[743,37],[748,38],[747,34],[717,39],[736,2],[719,40],[731,41],[730,37],[729,42],[728,2],[727,37],[722,43],[721,37],[720,44],[724,45],[723,32],[742,46],[741,47],[726,48],[725,32],[738,49],[737,50],[718,51],[740,52],[739,53],[714,53],[754,54],[749,37],[751,55],[750,37],[753,56],[752,34],[493,2],[756,57],[755,32],[666,58],[759,59],[670,60],[716,2],[492,2],[667,2],[671,61],[649,62],[648,63],[713,64],[758,58],[669,65],[668,2],[516,66],[495,66],[551,2],[531,2],[562,2],[494,2],[542,67],[543,68],[509,69],[496,2],[505,2],[506,70],[507,2],[508,71],[504,72],[497,2],[501,2],[526,72],[591,73],[524,74],[512,75],[538,76],[514,2],[519,2],[515,77],[510,72],[511,78],[513,78],[517,2],[518,2],[541,79],[530,80],[528,2],[529,81],[544,82],[540,83],[557,84],[552,85],[560,86],[561,87],[588,2],[532,88],[548,2],[537,89],[597,2],[534,72],[625,90],[535,91],[572,92],[571,2],[578,93],[577,2],[580,94],[579,2],[582,95],[581,2],[574,96],[573,2],[576,97],[575,97],[626,98],[586,99],[598,100],[599,101],[627,102],[503,103],[500,104],[499,2],[550,105],[563,106],[585,2],[566,107],[570,2],[536,108],[553,109],[565,110],[592,111],[595,112],[555,113],[593,114],[558,109],[559,115],[596,114],[589,116],[590,2],[567,117],[539,2],[520,2],[554,118],[556,2],[546,2],[594,2],[622,119],[569,120],[549,72],[523,121],[522,2],[623,122],[521,2],[624,123],[527,124],[525,2],[498,2],[564,125],[587,126],[502,2],[584,127],[533,2],[568,128],[583,2],[545,2],[547,129],[645,130],[620,2],[621,131],[611,131],[610,132],[602,132],[601,132],[600,131],[612,133],[636,134],[635,135],[639,136],[638,137],[640,131],[619,138],[616,139],[643,140],[641,131],[637,141],[644,131],[633,142],[632,143],[634,131],[647,144],[603,145],[613,131],[646,2],[604,131],[605,131],[617,131],[606,131],[614,146],[642,2],[618,131],[607,131],[615,131],[608,131],[609,131],[629,147],[628,148],[630,149],[631,150],[1292,151],[1317,152],[1293,2],[1295,153],[1324,154],[1323,155],[1221,156],[1228,156],[1220,157],[1218,158],[1205,2],[1204,2],[1216,159],[1217,158],[1219,2],[1209,158],[1212,158],[1215,160],[1213,2],[1210,161],[1214,2],[1211,2],[1227,162],[1231,156],[1229,156],[1230,156],[1233,156],[1236,163],[1232,156],[1234,156],[1235,156],[1208,164],[1206,165],[1207,2],[926,2],[930,166],[1319,167],[1318,168],[929,169],[928,170],[927,171],[868,172],[867,173],[863,174],[864,175],[862,176],[851,2],[871,177],[869,176],[873,178],[872,179],[870,180],[875,181],[874,176],[877,182],[876,183],[866,184],[865,176],[861,176],[878,185],[855,186],[848,187],[853,188],[845,189],[841,2],[852,190],[859,2],[860,191],[847,192],[856,2],[843,2],[854,193],[839,2],[849,194],[844,195],[842,196],[846,2],[850,2],[857,197],[840,2],[858,2],[812,2],[993,2],[1001,198],[1007,199],[1006,200],[995,201],[1009,202],[996,203],[1011,204],[1005,205],[997,206],[1002,207],[1010,208],[1008,209],[1000,210],[999,211],[994,2],[1004,212],[1003,213],[998,2],[789,214],[788,2],[943,215],[942,2],[258,216],[259,216],[260,217],[255,218],[261,219],[262,220],[263,221],[250,2],[253,222],[251,2],[252,2],[264,223],[265,224],[266,225],[267,226],[268,227],[269,228],[270,228],[272,2],[271,229],[273,230],[274,231],[275,232],[257,233],[254,2],[276,234],[277,235],[278,236],[311,237],[279,238],[280,239],[281,240],[282,241],[283,242],[284,243],[285,244],[286,245],[287,246],[288,247],[289,247],[290,248],[291,2],[292,2],[293,249],[295,250],[294,251],[296,252],[297,253],[298,254],[299,255],[300,256],[301,257],[302,258],[303,259],[304,260],[305,261],[306,262],[307,263],[308,264],[309,265],[310,266],[1196,2],[1062,267],[1063,268],[1038,269],[1041,269],[1060,267],[1061,267],[1051,267],[1050,270],[1048,267],[1043,267],[1056,267],[1054,267],[1058,267],[1042,267],[1055,267],[1059,267],[1044,267],[1045,267],[1057,267],[1039,267],[1046,267],[1047,267],[1049,267],[1053,267],[1064,271],[1052,267],[1040,267],[1077,272],[1076,2],[1071,271],[1073,273],[1072,271],[1065,271],[1066,271],[1068,271],[1070,271],[1074,273],[1075,273],[1067,273],[1069,273],[1141,274],[970,275],[971,276],[1282,277],[1239,2],[1241,278],[1240,279],[1245,280],[1280,281],[1277,282],[1279,283],[1242,282],[1243,284],[1247,284],[1246,285],[1244,286],[1278,287],[1291,288],[1276,282],[1281,289],[1274,2],[1275,2],[1248,290],[1253,282],[1255,282],[1250,282],[1251,290],[1257,282],[1258,291],[1249,282],[1254,282],[1256,282],[1252,282],[1272,292],[1271,282],[1273,293],[1267,282],[1288,294],[1286,295],[1285,282],[1283,280],[1290,296],[1287,297],[1284,295],[1289,295],[1269,282],[1268,282],[1264,282],[1270,298],[1265,282],[1266,299],[1259,282],[1260,282],[1261,282],[1262,282],[1263,282],[986,300],[981,2],[983,301],[988,302],[987,303],[984,304],[982,2],[985,305],[838,2],[247,2],[1182,306],[1183,307],[773,2],[1140,308],[1139,2],[1012,309],[992,2],[1013,310],[795,311],[71,2],[72,2],[73,2],[74,2],[75,2],[76,2],[77,2],[78,2],[79,2],[80,2],[81,2],[82,2],[83,2],[85,312],[86,2],[84,2],[87,2],[88,2],[89,2],[90,2],[91,2],[92,2],[93,2],[94,2],[95,2],[96,2],[97,2],[98,2],[99,2],[100,2],[101,2],[102,2],[103,2],[104,2],[105,2],[106,2],[107,2],[108,2],[109,2],[110,2],[111,2],[112,2],[113,2],[114,2],[115,2],[116,2],[117,2],[118,2],[119,2],[120,2],[121,2],[122,2],[123,2],[124,2],[125,2],[126,2],[127,2],[128,2],[129,2],[130,2],[131,2],[132,2],[133,2],[134,2],[135,2],[136,2],[137,2],[138,2],[139,2],[140,2],[141,2],[142,2],[143,2],[144,2],[145,2],[146,2],[147,2],[148,2],[149,2],[150,2],[151,2],[152,2],[153,2],[243,313],[154,2],[155,2],[156,2],[157,2],[158,2],[159,2],[160,2],[161,2],[162,2],[163,2],[164,2],[165,2],[166,2],[167,2],[168,2],[169,2],[170,2],[171,2],[172,2],[173,2],[174,2],[175,2],[176,2],[177,2],[178,2],[179,2],[180,2],[181,2],[182,2],[183,2],[184,2],[185,2],[186,2],[187,2],[188,2],[189,2],[190,2],[191,2],[192,2],[193,2],[194,2],[195,2],[196,2],[197,2],[198,2],[199,2],[200,2],[201,2],[202,2],[203,2],[204,2],[205,2],[206,2],[207,2],[208,2],[209,2],[210,2],[211,2],[212,2],[213,2],[214,2],[215,2],[216,2],[217,2],[218,2],[219,2],[220,2],[221,2],[222,2],[223,2],[224,2],[225,2],[226,2],[227,2],[228,2],[229,2],[230,2],[231,2],[232,2],[233,2],[234,2],[235,2],[236,2],[237,2],[238,2],[239,2],[240,2],[241,2],[242,2],[1174,314],[1154,2],[1146,2],[1161,315],[1147,316],[1164,317],[1145,318],[1171,319],[1169,320],[1170,321],[1173,320],[1172,319],[1162,322],[1163,323],[1148,324],[1153,325],[1156,326],[1158,327],[1157,328],[1155,329],[1159,330],[1149,331],[1152,332],[1150,333],[1144,334],[1167,335],[1166,336],[1165,337],[1168,338],[1143,339],[1151,340],[1142,2],[1160,341],[1222,2],[1223,2],[1224,2],[1225,2],[1226,342],[1294,343],[1238,2],[1316,344],[1313,345],[1311,346],[1314,347],[1309,348],[1308,349],[1305,350],[1306,351],[1307,352],[1301,353],[1312,354],[1310,355],[1299,356],[1315,357],[1300,358],[1298,359],[829,360],[830,361],[1296,362],[979,363],[980,364],[989,365],[990,366],[991,367],[972,368],[973,368],[891,2],[897,369],[895,2],[896,2],[1297,370],[969,2],[935,2],[325,371],[335,372],[324,371],[345,373],[316,374],[315,375],[344,3],[338,376],[343,377],[318,378],[332,379],[317,380],[341,381],[313,382],[312,3],[342,383],[314,384],[319,385],[320,2],[323,385],[248,2],[346,386],[336,387],[327,388],[328,389],[330,390],[326,391],[329,392],[339,3],[321,393],[322,394],[331,395],[249,165],[334,387],[333,385],[337,2],[340,396],[387,397],[364,398],[375,399],[362,400],[376,165],[385,401],[353,402],[354,403],[352,375],[384,3],[379,404],[383,405],[356,406],[372,407],[355,408],[382,409],[350,410],[351,404],[357,411],[358,2],[363,412],[361,411],[348,413],[386,414],[377,415],[367,416],[366,411],[368,417],[370,418],[365,419],[369,420],[380,3],[359,421],[360,422],[371,423],[349,165],[374,424],[373,411],[378,2],[347,2],[381,425],[470,426],[469,427],[397,428],[394,2],[398,429],[402,430],[391,431],[401,432],[408,433],[471,434],[246,2],[389,2],[396,435],[392,436],[390,252],[400,437],[388,438],[399,439],[393,440],[410,441],[432,442],[421,443],[411,444],[418,445],[409,446],[419,2],[417,447],[413,448],[414,449],[412,450],[420,451],[395,452],[428,453],[425,454],[426,455],[427,456],[429,457],[435,458],[439,459],[438,460],[436,454],[437,454],[430,461],[433,462],[431,463],[434,464],[423,465],[407,466],[422,467],[406,468],[405,469],[424,470],[404,471],[442,472],[440,454],[441,473],[443,454],[447,474],[445,475],[446,476],[448,477],[451,478],[450,479],[453,480],[452,481],[456,482],[454,483],[455,484],[449,485],[444,486],[457,485],[458,487],[468,488],[459,481],[460,454],[415,489],[416,490],[403,2],[461,491],[462,492],[465,493],[464,494],[466,495],[467,496],[463,497],[1322,2],[777,2],[1027,498],[1014,2],[1015,2],[1016,2],[1017,2],[1026,499],[1018,2],[1019,2],[1020,2],[1021,2],[1022,2],[1023,2],[1024,2],[1025,500],[791,2],[1302,501],[1304,502],[1028,503],[1181,504],[1032,2],[978,505],[976,506],[974,507],[975,508],[977,509],[1303,510],[814,511],[825,512],[824,512],[826,513],[827,514],[828,515],[823,516],[816,2],[815,2],[822,517],[817,518],[819,519],[820,520],[818,520],[821,521],[813,522],[1085,2],[69,2],[70,2],[12,2],[14,2],[13,2],[2,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[3,2],[23,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[58,2],[57,2],[59,2],[60,2],[10,2],[61,2],[62,2],[63,2],[11,2],[64,2],[65,2],[66,2],[67,2],[68,2],[1,2],[1198,2],[256,386],[968,397],[925,523],[917,524],[924,525],[919,2],[920,2],[918,526],[921,527],[912,2],[913,2],[914,523],[916,528],[922,2],[923,529],[915,530],[1175,531],[1177,532],[1176,531],[1329,2],[1137,533],[1138,534],[1326,535],[1237,536],[1202,537],[1192,538],[1327,2],[1195,539],[1328,540],[1201,537],[1321,541],[1320,542],[1186,543],[1325,544],[1197,545],[1179,531],[1180,546],[1194,531],[1193,547],[1185,548],[1200,549],[1187,550],[1178,551],[1199,552],[1203,531],[1184,553],[480,554],[481,555],[482,556],[483,2],[484,557],[485,556],[486,556],[487,558],[488,555],[489,556],[763,559],[764,2],[765,2],[766,560],[1115,531],[767,561],[245,2],[768,2],[477,562],[769,563],[770,564],[771,565],[472,566],[772,2],[774,567],[775,555],[776,2],[778,568],[779,569],[780,2],[782,570],[783,558],[784,555],[785,555],[786,560],[787,560],[790,571],[1121,2],[792,572],[793,560],[794,560],[796,573],[797,556],[798,555],[799,574],[800,555],[801,555],[802,575],[803,576],[804,555],[805,558],[806,558],[807,555],[808,558],[809,558],[810,558],[811,560],[831,577],[832,555],[833,578],[834,555],[835,558],[479,579],[836,555],[837,556],[879,580],[880,555],[881,555],[882,2],[883,555],[884,558],[762,581],[491,559],[885,558],[886,2],[887,2],[888,582],[889,560],[890,2],[1122,583],[892,584],[893,2],[894,565],[898,585],[899,555],[901,586],[907,2],[902,2],[903,2],[904,559],[781,2],[905,556],[906,556],[1098,555],[908,2],[909,587],[910,588],[967,555],[911,589],[760,558],[761,560],[931,590],[932,555],[933,2],[934,2],[900,591],[936,592],[937,555],[938,2],[939,2],[940,557],[941,593],[944,594],[945,2],[946,2],[947,556],[948,556],[949,595],[950,2],[951,555],[952,557],[954,555],[953,555],[955,2],[956,558],[957,2],[958,2],[959,555],[960,2],[961,565],[490,2],[963,596],[475,597],[964,598],[965,599],[966,555],[1029,600],[1030,2],[1031,601],[962,602],[1033,603],[1116,555],[1034,560],[1035,604],[1036,557],[1037,589],[1078,269],[1120,605],[476,587],[1119,606],[1079,2],[1118,555],[1080,2],[1081,599],[1082,2],[1083,558],[1084,555],[1086,607],[1090,557],[1114,608],[1087,2],[1088,555],[1089,2],[1091,555],[1092,555],[1093,555],[1094,2],[474,609],[1117,589],[473,2],[1095,555],[244,2],[1096,555],[1097,610],[478,611],[1099,612],[1100,557],[1101,582],[1102,556],[1103,2],[1104,560],[1105,556],[1106,2],[1107,613],[1108,555],[1109,555],[1110,555],[1111,555],[1112,555],[1113,555],[1130,531],[1128,531],[1124,531],[1134,614],[1131,531],[1136,615],[1125,531],[1126,2],[1129,531],[1135,531],[1132,531],[1127,616],[1133,531],[1123,2]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/core/.tshy-build/.tshy/browser.tsbuildinfo b/packages/core/.tshy-build/.tshy/browser.tsbuildinfo new file mode 100644 index 0000000000..cbbf8a1dda --- /dev/null +++ b/packages/core/.tshy-build/.tshy/browser.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../src/llmsdata.ts","../../src/types.ts","../../src/constants.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/typed-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/basic.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/observable-like.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-intersection.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/keys-of-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-omit.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/optional-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-required-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/characters.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-float.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-integer.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-literal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/trim.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/and.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/or.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/index.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-at-least-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-record.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-set.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-map.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-tail.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/enforce-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-exclusive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-exactly-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-all-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-one-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/single-key-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/subtract.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/paths.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-splice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/undefined-on-partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/promisable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/arrayable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/invariant-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-readonly.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/value-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/async-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/stringified.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/join.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/sum.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/fixed-length-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/iterable-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entry.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entries.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-parameter-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/asyncify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonifiable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/find-global-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/structured-cloneable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/schema.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-key-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/exact.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/override-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-optional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-readonly-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-writable-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/spread.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-closed-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-indices.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-values.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-field-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/all-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/words.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/screaming-snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/split.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/replace.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-repeat.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/includes.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/get.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/last-array-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/global-this.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/package-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tsconfig-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/index.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/error-constructors.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/index.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../src/error.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/line-counter.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/errors.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/applyreviver.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/log.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/tojs.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/collection.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/types.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/map.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/seq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/string.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/util.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/identity.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/schema.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/createnode.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/pair.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/tags.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/options.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/node.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/alias.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/document.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/directives.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/compose/composer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/lexer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/parser.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/public-api.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/index.d.ts","../../src/cleaners.ts","../../src/unwrappers.ts","../../../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/dist/index.d.ts","../../src/indent.ts","../../src/yaml.ts","../../src/log.ts","../../src/util.ts","../../src/cancellation.ts","../../src/precision.ts","../../src/mkmd.ts","../../src/html-escaper.d.ts","../../src/htmlescape.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/lib/index.d.ts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/lib/sync.d.ts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/lib/index.d.ts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/lib/sync.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.mts","../../src/csv.ts","../../../../node_modules/.pnpm/@types+ini@4.1.1/node_modules/@types/ini/index.d.ts","../../src/ini.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.mts","../../src/chattypes.ts","../../src/traceparser.ts","../../../../node_modules/.pnpm/fetch-retry@6.0.0/node_modules/fetch-retry/index.d.ts","../../src/debug.ts","../../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../src/proxy.ts","../../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/index.d.ts","../../../../node_modules/.pnpm/pretty-bytes@7.0.0/node_modules/pretty-bytes/index.d.ts","../../src/annotations.ts","../../src/think.ts","../../src/pretty.ts","../../src/utf8.ts","../../src/fetch.ts","../../src/base64.ts","../../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/mime.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/index.d.ts","../../src/mime.ts","../../src/filebytes.ts","../../src/filetype.ts","../../src/bufferlike.ts","../../src/pathutils.ts","../../src/version.ts","../../src/crypto.ts","../../../../node_modules/.pnpm/ignore@7.0.5/node_modules/ignore/index.d.ts","../../src/gitignore.ts","../../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../src/sanitize.ts","../../src/workdir.ts","../../src/filecache.ts","../../../../node_modules/.pnpm/nanoid@5.1.5/node_modules/nanoid/index.d.ts","../../src/id.ts","../../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/types.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/base.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/character.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/word.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/line.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/sentence.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/css.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/json.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/array.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/apply.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/parse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/reverse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/create.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/dmp.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/xml.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/index.d.ts","../../src/diff.ts","../../src/trace.ts","../../src/turndown-plugin-gfm.d.ts","../../../../node_modules/.pnpm/tabletojson@4.1.6/node_modules/tabletojson/@typings/tabletojson.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/lib/block-text-builder.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/index.d.ts","../../../../node_modules/.pnpm/@types+turndown@5.0.5/node_modules/@types/turndown/index.d.ts","../../src/html.ts","../../../../node_modules/.pnpm/pretty-ms@9.2.0/node_modules/pretty-ms/index.d.ts","../../src/performance.ts","../../../../node_modules/.pnpm/mammoth@1.9.1/node_modules/mammoth/lib/index.d.ts","../../src/docx.ts","../../src/binary.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/display_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/optional_content_config.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_storage.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/metadata.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/pdf_objects.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/util.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/message_handler.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api.d.ts","../../src/global.ts","../../../../node_modules/.pnpm/@napi-rs+canvas@0.1.74/node_modules/@napi-rs/canvas/index.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/tools.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/toolbar.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/editor.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/freetext.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/highlight.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/draw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/outline.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/inkdraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/ink.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/signature.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/stamp.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/text_accessibility.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/interfaces.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/struct_tree_layer_builder.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/draw_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/annotation_editor_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/color_picker.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/svg_factory.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/worker_options.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/signaturedraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/text_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/touch_manager.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/xfa_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/pdf.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/legacy/build/pdf.d.mts","../../src/pdf.ts","../../../../node_modules/.pnpm/xlsx@https+++cdn.sheetjs.com+xlsx-0.20.2+xlsx-0.20.2.tgz/node_modules/xlsx/types/index.d.ts","../../src/xlsx.ts","../../../../node_modules/.pnpm/ts-toolbelt@8.4.0/node_modules/ts-toolbelt/out/index.d.ts","../../../../node_modules/.pnpm/@tidyjs+tidy@2.5.2/node_modules/@tidyjs/tidy/dist/tidy.d.ts","../../src/tidy.ts","../../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../src/assert.ts","../../../../node_modules/.pnpm/@types+shell-quote@1.7.5/node_modules/@types/shell-quote/index.d.ts","../../src/shell.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/ast.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/escape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/unescape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/index.d.ts","../../src/glob.ts","../../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../src/concurrency.ts","../../src/llmdiff.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/regular/jsonrepair.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/utils/jsonrepairerror.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/index.d.ts","../../src/json5.ts","../../src/tokens.ts","../../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/shared/package-manager-detector.puyrhiou.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/commands.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/constants.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/detect.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/index.d.mts","../../src/packagemanagers.ts","../../src/git.ts","../../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.d.mts","../../src/zip.ts","../../src/url.ts","../../src/server/messages.ts","../../src/models.ts","../../src/usage.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/bottleneck.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/index.d.ts","../../src/githubclient.ts","../../src/resources.ts","../../src/file.ts","../../src/liner.ts","../../../../node_modules/.pnpm/fast-uri@3.0.6/node_modules/fast-uri/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/datatype.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/json-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.d.ts","../../src/parameters.ts","../../src/schema.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/constants.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelschatenabled.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelsmap.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/models.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/models.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/mapping.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/bytepairencodingcore.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modeltypes.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelparams.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/gptencoding.d.ts","../../src/textsplitter.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/specialtokens.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/model/gpt-4o.d.ts","../../src/encoders.ts","../../../../node_modules/.pnpm/toml@3.0.0/node_modules/toml/index.d.ts","../../src/toml.ts","../../src/frontmatter.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.mts","../../../../node_modules/.pnpm/@huggingface+jinja@0.5.1/node_modules/@huggingface/jinja/dist/index.d.ts","../../src/jinja.ts","../../src/mustache.ts","../../src/prompty.ts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/any.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/errormessages.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/array.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/bigint.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/boolean.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/number.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/date.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/enum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/intersection.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/literal.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/string.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/record.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/map.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nativeenum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/never.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/null.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nullable.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/object.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/set.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/tuple.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/undefined.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/union.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/unknown.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsetypes.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/refs.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/options.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/getrelativepath.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsedef.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/branded.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/catch.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/default.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/effects.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/optional.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/pipeline.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/promise.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/readonly.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/selectparser.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/zodtojsonschema.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/index.d.ts","../../src/zod.ts","../../../../node_modules/.pnpm/groq-js@1.17.3/node_modules/groq-js/dist/index.d.mts","../../src/groq.ts","../../src/secretscanner.ts","../../src/features.ts","../../src/tools.ts","../../src/stdio.ts","../../src/consolecolor.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/types.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/decoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/encoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+types@1.6.0/node_modules/@jimp/types/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-bmp@1.6.0/node_modules/@jimp/js-bmp/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-gif@1.6.0/node_modules/@jimp/js-gif/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-jpeg@1.6.0/node_modules/@jimp/js-jpeg/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-tiff@1.6.0/node_modules/@jimp/js-tiff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-blit@1.6.0/node_modules/@jimp/plugin-blit/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-circle@1.6.0/node_modules/@jimp/plugin-circle/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-color@1.6.0/node_modules/@jimp/plugin-color/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-contain@1.6.0/node_modules/@jimp/plugin-contain/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-cover@1.6.0/node_modules/@jimp/plugin-cover/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-crop@1.6.0/node_modules/@jimp/plugin-crop/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-displace@1.6.0/node_modules/@jimp/plugin-displace/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-fisheye@1.6.0/node_modules/@jimp/plugin-fisheye/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-flip@1.6.0/node_modules/@jimp/plugin-flip/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-mask@1.6.0/node_modules/@jimp/plugin-mask/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/image-bitmap.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/constants.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/composite.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/measure-text.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-rotate@1.6.0/node_modules/@jimp/plugin-rotate/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-threshold@1.6.0/node_modules/@jimp/plugin-threshold/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-quantize@1.6.0/node_modules/@jimp/plugin-quantize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-hash@1.6.0/node_modules/@jimp/plugin-hash/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/load-font.d.ts","../../../../node_modules/.pnpm/@jimp+diff@1.6.0/node_modules/@jimp/diff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+utils@1.6.0/node_modules/@jimp/utils/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jimp@1.6.0/node_modules/jimp/dist/esm/index.d.ts","../../src/image.ts","../../src/promptdom.ts","../../src/generation.ts","../../src/dispose.ts","../../src/fence.ts","../../../../node_modules/.pnpm/@types+object-inspect@1.13.0/node_modules/@types/object-inspect/index.d.ts","../../src/logging.ts","../../src/chatrender.ts","../../src/systems.ts","../../src/tags.ts","../../src/ast.ts","../../src/websearch.ts","../../../../node_modules/.pnpm/minisearch@7.1.2/node_modules/minisearch/dist/es/index.d.ts","../../src/fuzzsearch.ts","../../src/jsonl.ts","../../../../node_modules/.pnpm/@lvce-editor+ripgrep@2.1.0/node_modules/@lvce-editor/ripgrep/src/index.d.ts","../../src/grep.ts","../../src/vectra/types.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/types.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/max.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/nil.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/parse.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/stringify.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v1tov6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v35.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v3.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v4.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v5.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v6tov1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v7.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/validate.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/version.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/index.d.ts","../../src/vectra/itemselector.ts","../../src/vectra/localindex.ts","../../src/vectra/localdocument.ts","../../src/vectra/localdocumentresult.ts","../../src/vectra/localdocumentindex.ts","../../src/vectra.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepaliveoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/extendedclient.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestpolicyfactorypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/disablekeepalivepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/httpclientadapter.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/models.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/getpagedasynciterator.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+search-documents@12.1.0/node_modules/@azure/search-documents/types/search-documents.d.ts","../../src/azureaisearch.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/parse.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/pagination.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/shared.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/resource.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/messagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/betamessagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/completions.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/abort.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/auth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/identity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoint.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/logger.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/uri.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/response.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/util.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/middleware.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/exact.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/crypto.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/command.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/client.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/config.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transfer.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/manager.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/pool.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/eventstream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/encode.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/shapes.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/pagination.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/profile.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/serde.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/signature.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/stream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/waiter.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/index.d.mts","../../src/anthropic.ts","../../src/fetchtext.ts","../../src/openai-responses.ts","../../src/logprob.ts","../../src/openai-chatcompletion.ts","../../src/openai.ts","../../src/ollama.ts","../../src/github.ts","../../src/lmstudio.ts","../../src/whisperasr.ts","../../src/azureopenai.ts","../../src/echomodel.ts","../../src/nonemodel.ts","../../src/azureaiinference.ts","../../src/lm.ts","../../src/vectorsearch.ts","../../src/vars.ts","../../src/teams.ts","../../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../src/hostconfiguration.ts","../../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../src/merge.ts","../../src/configschema.ts","../../src/configjson.ts","../../src/env.ts","../../src/config.ts","../../src/promptcontext.ts","../../../../node_modules/.pnpm/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.es.d.mts","../../src/evalprompt.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/types-cxp8y2tl.d.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/esm/api/index.d.mts","../../src/importprompt.ts","../../../../node_modules/.pnpm/fast-xml-parser@5.2.5/node_modules/fast-xml-parser/src/fxp.d.ts","../../src/xml.ts","../../../../node_modules/.pnpm/@types+fluent-ffmpeg@2.1.27/node_modules/@types/fluent-ffmpeg/index.d.ts","../../../../node_modules/.pnpm/@plussub+srt-vtt-parser@2.0.5/node_modules/@plussub/srt-vtt-parser/dist/index.d.ts","../../src/transcription.ts","../../src/ffmpeg.ts","../../src/mdchunk.ts","../../src/inflection.ts","../../src/mdstringify.ts","../../src/dotenv.ts","../../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.d.ts","../../../../node_modules/.pnpm/fraction.js@5.2.2/node_modules/fraction.js/fraction.d.ts","../../../../node_modules/.pnpm/mathjs@14.6.0/node_modules/mathjs/types/index.d.ts","../../src/math.ts","../../../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/mod.d.ts","../../src/levenshtein.ts","../../src/parsers.ts","../../src/globals.ts","../../src/nodepackage.ts","../../src/metadata.ts","../../src/expander.ts","../../src/changelog.ts","../../../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts","../../../../node_modules/.pnpm/@types+mdast@4.0.4/node_modules/@types/mdast/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/lib/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/lib/index.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/index.d.ts","../../../../node_modules/.pnpm/micromark-util-types@2.0.2/node_modules/micromark-util-types/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/lib/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/index.d.ts","../../src/markdownscript.ts","../../src/template.ts","../../src/parser.ts","../../src/fileedits.ts","../../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../src/terminal.ts","../../src/runpromptcontext.ts","../../src/chatcache.ts","../../src/chatrenderterminal.ts","../../src/quiet.ts","../../src/contentsafety.ts","../../src/chat.ts","../../src/progress.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/authtoken.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/iuri.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/logger/logger.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/storeincache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/scopeset.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authority.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizeresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/baseclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/urlstring.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/protocol/authorize.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/servererror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/networkerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-common.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/clientassertionutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/apptokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativerequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativesignoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/broker/nativebroker/inativebrokerplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonclientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commononbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/devicecoderesponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commondevicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonusernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/iguidgenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-node-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index-node.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializertypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/deserializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/internals.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/devicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/refreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/silentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/usernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/nodestorage.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/itokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/tokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/network/iloopbackclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/interactiverequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/signoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/ipublicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/clientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/onbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/iconfidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/icacheclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/ipartitionmanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/ihttpretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/defaultmanagedidentityretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/imdsretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/managedidentityid.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/configuration.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/crypto/cryptoprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientassertion.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/publicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/confidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientcredentialclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/devicecodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/onbehalfofclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/managedidentityrequestparams.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/managedidentityapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/usernamepasswordclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/distributedcacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/provider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/consumer.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/errors.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/types.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/util/logging.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/msal.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/utils.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/multitenanttokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorityvalidationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/brokeroptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/brokerauthoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/chainedtokencredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/credentialpersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialmodels.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/browsercustomizationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/options.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamablehttp.d.ts","../../../../node_modules/.pnpm/eventsource@3.0.7/node_modules/eventsource/dist/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts","../../src/mcpclient.ts","../../src/mcpresource.ts","../../src/host.ts","../../src/fs.ts","../../src/fscache.ts","../../src/memcache.ts","../../src/jsonlinecache.ts","../../src/cache.ts","../../src/agent.ts","../../src/chunkers.ts","../../src/azurecontentsafety.ts","../../src/azuredevops.ts","../../src/azuretoken.ts","../../src/build.ts","../../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../src/ci.ts","../../src/clone.ts","../../src/copy.ts","../../src/data.ts","../../src/default_prompts.ts","../../src/llms.ts","../../src/markdown.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../src/mcpsampling.ts","../../src/mddiff.ts","../../src/modelalias.ts","../../src/net.ts","../../src/path.ts","../../src/perf.ts","../../src/plugin.ts","../../src/testschema.ts","../../src/promptfoo.ts","../../src/promptrunner.ts","../../src/scriptresolver.ts","../../src/scripts.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../src/semver.ts","../../src/testeval.ts","../../src/workerlm.ts","../../src/workspace.ts","../../src/testhost.ts","../../../../node_modules/.pnpm/@types+sarif@2.1.7/node_modules/@types/sarif/index.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/types/node-sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-result-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-run-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-rule-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/index.d.ts","../../src/sarif.ts","../../src/tracefile.ts","../../src/stdin.ts","../../src/server/wsclient.ts","../../src/server/client.ts","../../src/index.ts","../../src/optional-deps.d.ts","../../src/types/prompt_type.d.ts","../../src/base64-browser.mts","../../src/index-browser.mts","../../src/queries/treesitterqueries.json","../../src/schemas/hostconfiguration.schema.json"],"fileIdsList":[[302,345,1298,1299,1367,1368],[302,345,1364,1365],[302,345,1369],[302,345],[302,345,1301,1302,1366,1367],[302,345,1266,1267,1268,1271,1272,1273,1275,1276,1279,1291,1295,1296,1297,1298],[302,345,1267,1274,1299],[302,345,1271,1274,1275,1299],[302,345,1299],[302,345,1269],[302,345,1277,1278],[302,345,1273],[302,345,1273,1275,1276,1279,1299],[302,345,1285],[302,345,1271,1276,1299],[302,345,1266,1267,1268,1270],[302,345,380],[302,345,1266],[302,345,1266,1271,1299],[302,345,1271,1299],[302,345,1271,1284,1294],[302,345,1271,1284,1289],[302,345,1281,1282,1283,1294],[302,345,1271,1275,1276,1279,1281,1295],[302,345,1271,1275,1276,1281,1286,1294,1295],[302,345,1270,1271,1275,1281,1291,1292,1293,1294,1295],[302,345,1271,1275,1276,1281,1295],[302,345,1270,1271,1275,1281,1291,1295,1296],[302,345,1280,1291,1295,1296,1297],[302,345,1288],[302,345,1271,1275,1276,1280,1281,1286,1291],[302,345,1287,1291],[302,345,1270,1271,1275,1281,1287,1290,1291],[302,345,1270],[302,345,1194,1195],[302,345,1178,1179],[302,345,1203],[302,345,1202,1203,1204,1205,1206,1207,1208],[302,345,1196,1202,1207],[302,345,1187],[302,345,1186,1187,1188,1189,1190,1191,1192],[302,345,1180,1186,1191],[302,345,1244],[302,345,1244,1245],[302,345,1245,1246,1247,1248,1249,1250,1251,1252],[302,345,1196,1215,1244],[302,345,1209,1244,1248,1249],[302,345,1245],[302,345,1209,1244,1245],[302,345,1675],[302,345,1675,1676],[302,345,1676,1677,1678,1679,1680,1681,1682,1683],[302,345,1180,1647,1675],[302,345,1193,1675,1679,1680],[302,345,1676],[302,345,1193,1675,1676],[302,345,1210,1211,1253],[302,345,1244,1257],[302,345,1210,1211,1254,1255,1256,1257,1258,1259],[302,345,1244,1255,1256],[302,345,1244,1253,1255],[302,345,1196,1244],[302,345,1261],[302,345,1261,1262],[302,345,1216,1217,1219,1220,1221],[302,345,1216],[302,345,1202,1216,1217,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243],[302,345,1196,1202,1215],[302,345,1196,1202,1215,1216],[302,345,1216,1217],[302,345,1209,1217,1218],[302,345,1209,1216,1217,1218],[302,345,1217],[302,345,1217,1218],[302,345,1216,1217,1218,1226],[302,345,1648,1649,1650,1651,1652],[302,345,1648],[302,345,1186,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674],[302,345,1180,1186,1647],[302,345,1180,1186,1647,1648],[302,345,1648,1649],[302,345,1193,1640,1649],[302,345,1193,1640,1648,1649],[302,345,1649],[302,345,1640,1649],[302,345,1640,1648,1649,1657],[302,345,1212,1213,1214],[302,345,1212],[302,345,1644,1645,1646],[302,345,1644],[302,345,1196],[302,345,1197],[302,345,1197,1198,1199,1200,1201],[302,345,1180],[302,345,1181],[302,345,1181,1182,1183,1184,1185],[302,345,1193,1717],[302,345,1686,1687],[302,345,1193,1704],[302,345,1686],[302,345,1193,1706],[302,345,1193,1675,1715],[302,345,1686,1687,1692],[302,345,1193,1719],[302,345,1688],[302,345,1193,1641],[302,345,1193,1702],[302,345,1193,1639,1699,1700],[302,345,1193,1693],[302,345,1480],[302,345,1193,1691,1695],[302,345,1193,1639,1713],[302,345,1690,1692],[302,345,1193,1697],[302,345,1193,1639,1709],[302,345,1689,1690,1692,1708],[302,345,1639,1686,1687],[302,345,1193,1685,1711],[302,345,1685],[302,345,1193,1686,1692,1721],[302,345,1193,1722],[302,345,1193,1481,1724],[302,345,1193,1727],[302,345,1193],[302,345,1193,1480,1636,1637,1638,1639,1641,1643,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730],[302,345,1635],[302,345,1193,1639,1640,1641,1642],[302,345,1636],[302,345,1480,1481,1635],[302,345,1675,1684],[302,345,1640],[302,345,1482],[302,345,1484,1485,1486,1488,1489,1491,1495,1497,1511,1514,1520,1529],[302,345,1488,1491,1497,1511,1529,1530],[302,345,1489,1492,1494,1496],[302,345,1493],[302,345,1495],[302,345,1490],[302,345,395,1504,1520,1542,1577,1578],[302,345,1491,1497,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1511,1524,1525,1526,1528,1529],[302,345,1490,1498],[302,345,1482,1484,1491,1504,1525,1530],[302,345,1499,1500,1501,1502,1526],[302,345,1498],[302,345,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1526,1528],[302,345,1517],[302,345,1516],[302,345,1485,1490,1495,1498,1499,1500,1501,1502,1507],[302,345,1490,1499,1500,1501,1502,1504,1505,1506,1507,1526,1527],[302,345,1511,1520,1540,1541,1542,1543,1544],[302,345,1487,1488,1491,1511,1512,1515,1520,1524,1525,1530,1537,1538,1539],[302,345,1511,1520,1540,1542,1546,1547],[302,345,1490,1511,1520,1540,1542,1547],[302,345,1488,1491,1497,1512,1515,1516,1518,1519,1525,1530],[302,345,1523,1524],[302,345,1491,1511,1525],[302,345,1522],[302,345,1559],[302,345,1560,1565],[302,345,1560,1567],[302,345,1560,1569],[302,345,1560,1561],[302,345,1560],[302,345,1509,1510,1511,1522,1523,1610,1611,1612,1613],[302,345,1482,1483,1484,1486,1487,1488,1489,1490,1491,1492,1493,1494,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1512,1513,1515,1520,1521,1524,1525,1526,1527,1528,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1560,1562,1563,1564,1566,1568,1570,1571,1572,1573],[302,345,1516,1517,1518,1519,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585],[302,345,1574,1586],[302,345,1574,1586,1614],[302,345,1520],[302,345,1487],[302,345,1490,1523,1524],[302,345,1487,1512,1524,1537,1538],[302,345,1491,1511,1520,1521,1530,1534,1544,1553],[302,345,1490,1508,1520,1521,1523],[302,345,1524,1539],[302,345,1490,1504,1521,1524],[302,345,1493,1519,1524],[302,345,1521,1524,1582],[302,345,1504,1521],[302,345,1524],[302,345,1504,1524],[302,345,1521],[302,345,1490,1511,1515,1520,1521,1550],[302,345,1504],[302,345,1537],[302,345,1482,1491,1503,1511,1512,1516,1518,1524,1525,1526,1530,1537,1542,1544,1556],[302,345,1509,1510],[302,345,1491,1509,1510,1511,1520],[302,345,1509,1510,1511],[302,345,1490,1505,1512,1513,1514],[302,345,1486],[302,345,1519],[302,345,1491,1511],[302,345,1525],[302,345,1521,1534],[302,345,1587,1608,1609],[302,345,1587],[302,345,1587,1588],[302,345,1587,1588,1598,1599],[302,345,1587,1592,1593,1595,1596,1597,1598,1600,1621,1622,1623],[302,345,1622],[302,345,1587,1621],[302,345,1587,1605,1606,1607,1621,1624],[302,345,1587,1592,1593,1595,1596,1597,1600,1605,1606],[302,345,1587,1592,1593,1594,1595,1596,1597,1600,1602,1603],[302,345,1587,1619,1621,1630],[302,345,1587,1594,1596,1602,1603,1604,1621,1624],[302,345,360,362,395,1587,1620],[302,345,1619,1621],[302,345,1587,1588,1591,1592,1593,1594,1595,1596,1597,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1619,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634],[302,345,1589,1590],[302,345,395,1587,1601],[302,345,360,395,1615,1616],[302,345,360,395,1615],[302,345,1615,1616],[302,345,1617,1618],[302,345,1209,1244,1253,1260,1263],[302,345,1102,1122,1123,1124,1125],[302,345,1102,1123],[302,345,1102],[302,345,1101,1102],[302,345,1102,1105],[302,345,1102,1107],[302,345,1050,1102],[302,345,1050,1102,1114],[302,345,1050,1102,1125,1126,1127],[302,345,1102,1108,1125,1126],[302,345,1126],[302,345,1050,1102,1113],[302,345,1050],[302,345,1734,1738,1739],[302,345,1050,1733,1734,1735],[302,345,1733,1734,1740,1742],[302,345,346,377,1733,1734],[302,345,1733,1734,1740],[302,345,1738],[302,345,1050,1733,1735],[302,345,1050,1732,1733,1734],[302,345,1733],[302,345,1050,1732],[302,345,360,377,380],[302,345,886,909,912,915],[302,345,908,914,916,962],[302,345,908,910,962],[302,345,909,910,911],[302,345,908,962],[302,345,918],[302,345,916,918,919,920,962],[302,345,917],[302,345,908,916,917,962],[302,345,908,955,962],[302,345,916,955,957,962],[302,345,908,956,962],[302,345,908,916,961,962],[302,345,908,916,960,962],[302,345,908,913,962],[302,345,916,921,958,962],[302,345,892,893,895,898,902],[302,345,887,888,891,892],[302,345,892,896,897,898,900],[302,345,887,888,892],[302,345,890,891,895,899],[302,345,887,888,889,890,891,892,893,894,895,896,897,898,900,901,902,903,904,905,906,907],[302,345,888,894],[302,345,892,895,898,900,901],[302,345,887,888,890,891],[302,345,888,890,891],[302,345,889],[302,345,903],[302,345,1306,1313,1314,1315],[302,345,1313,1316],[302,345,1306,1310],[302,345,1306,1316],[302,345,1304,1305,1314,1315,1316,1317],[302,345,377,395,1320],[302,345,1322],[302,345,1311,1312,1313,1324],[302,345,1311,1313],[302,345,1326,1328,1329],[302,345,1326,1327],[302,345,1331],[302,345,1304],[302,345,1307,1333],[302,345,1333],[302,345,1333,1334,1335,1336,1337],[302,345,1336],[302,345,1308],[302,345,1333,1334,1335],[302,345,1310,1311,1313],[302,345,1322,1323],[302,345,1339],[302,345,1339,1343],[302,345,1339,1340,1343,1344],[302,345,1312,1342],[302,345,1319],[302,345,1303,1309],[302,345,360,362,395],[302,345,1306],[302,345,1306,1347,1348,1349],[302,345,1303,1307,1308,1309,1310,1311,1312,1313,1318,1321,1322,1323,1324,1325,1327,1330,1331,1332,1338,1341,1342,1345,1346,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1361,1362,1363],[302,345,1304,1307,1308,1312],[302,345,1325],[302,345,1341],[302,345,1310,1312,1327],[302,345,1310,1311],[302,345,1310,1331],[302,345,1312,1322,1323],[302,345,360,377,395,1320,1353],[302,345,1311,1324,1358,1359],[302,345,360,361,395,1310,1325,1353,1357,1359,1360],[302,345,1310],[302,345,1303],[302,345,883],[302,345,733,734,737,739,742,743,744,746,747],[302,345,733,734,736,737,738,743,744,745,747],[302,345,738,743,744,746],[302,345,733],[302,345,746],[302,345,733,734],[302,345,737,738,739,740,741,742,743,744,745,746,747,748,749],[302,345,732,743],[302,345,733,734,743,744],[302,345,734,739,740,742,743,747],[302,345,738,743,746,747],[302,345,733,734,738,743,746],[302,345,733,734,738,740,742,743,747,750],[302,345,733,734,736,737,743,744,746,747],[302,345,733,737,738,740,742,744,746],[302,345,734,735,741,747],[241,302,345],[302,345,357,377,395],[302,345,834],[302,345,835],[302,345,1425],[302,345,1031],[302,342,345],[302,344,345],[345],[302,345,350,380],[302,345,346,351,357,358,365,377,388],[302,345,346,347,357,365],[297,298,299,302,345],[302,345,348,389],[302,345,349,350,358,366],[302,345,350,377,385],[302,345,351,353,357,365],[302,344,345,352],[302,345,353,354],[302,345,355,357],[302,344,345,357],[302,345,357,358,359,377,388],[302,345,357,358,359,372,377,380],[302,340,345],[302,340,345,353,357,360,365,377,388],[302,345,357,358,360,361,365,377,385,388],[302,345,360,362,377,385,388],[300,301,302,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,357,363],[302,345,364,388],[302,345,353,357,365,377],[302,345,366],[302,345,367],[302,344,345,368],[302,342,343,344,345,346,347,348,349,350,351,352,353,354,355,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,370],[302,345,371],[302,345,357,372,373],[302,345,372,374,389,391],[302,345,357,377,378,380],[302,345,379,380],[302,345,377,378],[302,345,381],[302,342,345,377],[302,345,357,383,384],[302,345,383,384],[302,345,350,365,377,385],[302,345,386],[302,345,365,387],[302,345,360,371,388],[302,345,350,389],[302,345,377,390],[302,345,364,391],[302,345,392],[302,345,357,359,368,377,380,388,391,393],[302,345,377,394],[302,345,1779,1818],[302,345,1779,1803,1818],[302,345,1818],[302,345,1779],[302,345,1779,1804,1818],[302,345,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817],[302,345,1804,1818],[302,345,360,362,377,395],[302,345,360,365,377,385,395,709],[302,345,970,971,975,1002,1003,1005,1006,1007,1009,1010],[302,345,968,969],[302,345,968],[302,345,970,1010],[302,345,970,971,1007,1008,1010],[302,345,1010],[302,345,967,1010,1011],[302,345,970,971,1009,1010],[302,345,970,971,973,974,1009,1010],[302,345,970,971,972,1009,1010],[302,345,970,971,975,1002,1003,1004,1005,1006,1009,1010],[302,345,967,970,971,975,1007,1009],[302,345,975,1010],[302,345,977,978,979,980,981,982,983,984,985,986,1010],[302,345,1000,1010],[302,345,976,987,995,996,997,998,999,1001],[302,345,980,1010],[302,345,988,989,990,991,992,993,994,1010],[302,345,377,385,395,720,722,723,724],[302,345,365,385,395,721],[302,345,720,721,722,724,725,726],[302,345,720],[302,345,365,395],[302,345,377,395,722,723],[302,345,395,1098],[302,345,395,1098,1099,1100],[302,345,395],[302,345,377,395],[302,345,396],[302,345,398],[302,345,391,395,731,750],[302,345,731,751],[302,345,814],[302,345,814,815],[302,345,814,815,818],[302,345,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828],[302,345,388,395],[302,345,413],[302,345,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571],[302,345,380,793],[302,345,377,793,794],[302,345,377,395,730],[302,345,358,377,395,730],[302,345,377,395,727,730],[302,345,360,362,377,395,730],[302,345,377,395,718,719,728,729],[302,345,1014,1019,1021,1022],[302,345,1015,1016,1018],[302,345,1014,1021,1023,1025],[302,345,1019,1020,1021],[302,345,1017],[302,345,360,365,385,388,395,710],[302,345,1102,1103,1104,1106,1108,1109,1110,1111,1112,1114,1115,1116,1117,1118,1119,1120,1121,1125,1128,1129,1130,1131,1132,1133,1134,1135],[302,345,933,934],[302,345,936,937],[302,345,1413,1414],[302,345,1436,1437,1438,1439],[302,345,1426,1436,1437,1439],[302,345,1426,1436,1439],[302,345,1442,1443,1463],[302,345,1426,1464],[302,345,1426],[302,345,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462],[302,345,1425,1426],[302,345,796],[302,345,928],[302,345,925,926,927],[302,345,1826,1827,1828,1829],[302,345,1824,1825,1827],[302,345,1824,1825],[302,345,1824,1825,1826,1830],[302,345,1824],[302,306,307,308,309,310,311,312,313,314,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,334,335,336,337,338,339,345],[302,345,617],[302,345,388,584,587,590,591],[302,345,377,388,587],[302,345,388,587,591],[302,345,377],[302,345,581],[302,345,585],[302,345,388,583,584,587],[302,345,365,385],[302,345,395,581],[302,345,365,388,583,587],[302,345,357,377,388,578,579,580,582,586],[302,345,587,595,602],[302,345,579,585],[302,345,587,611,612],[302,345,380,388,395,579,582,587],[302,345,587],[302,345,388,583,587],[302,345,578],[302,345,581,582,583,585,586,587,588,589,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,614,615,616],[302,345,353,587,604,607],[302,345,587,595,596,597],[302,345,585,587,596,598],[302,345,586],[302,345,579,581,587],[302,345,587,591,596,598],[302,345,591],[302,345,388,585,587,590],[302,345,579,583,587,595],[302,345,587,604],[302,345,380,393,395,581,587,611],[302,345,576,620,623,700],[302,345,576,619,620,623,624,625,628,629,632,635,647,653,654,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698,699],[302,345,619,627,700],[302,345,623,627,628,700],[302,345,700],[302,345,621,700],[302,345,630,631],[302,345,625],[302,345,625,628,629,632,700,701],[302,345,623,626,700],[302,345,576,619,620,622],[302,345,576],[302,340,345,618],[302,345,576,623,700],[302,345,623,700],[302,345,623,635,638,640,649,651,652,702],[302,345,621,623,640,661,662,664,665,666],[302,345,638,641,648,651,702],[302,345,621,623,638,641,653,702],[302,345,621,638,641,642,648,651,702],[302,345,639],[302,345,634,638,647],[302,345,647],[302,345,623,640,643,644,647,702],[302,345,638,647,648],[302,345,649,650,652],[302,345,629],[302,345,633,656,657,658],[302,345,623,628,633],[302,345,622,623,628,632,633,657,659],[302,345,623,628,632,633,657,659],[302,345,623,628,629,633,634,660],[302,345,623,628,629,633,634,661,662,663,664,665],[302,345,633,665,666,669],[302,345,633,634,667,668,669],[302,345,623,628,629,633,634,666],[302,345,622,623,628,629,633,634,661,662,663,664,665,666],[302,345,623,628,629,633,634,662],[302,345,622,623,628,633,634,661,663,664,665,666],[302,345,633,634,653],[302,345,637],[302,345,622,623,628,629,633,634,635,636,641,642,648,649,651,652,653],[302,345,636,653],[302,345,623,629,633,653],[302,345,637,654],[302,345,622,623,628,633,635,653],[302,345,623,628,629,633,672],[302,345,623,628,629,632,633,671],[302,345,623,628,629,633,634,647,675,677],[302,345,623,628,629,633,677],[302,345,623,628,629,633,634,647,653,676],[302,345,623,628,629,632,633],[302,345,633,681],[302,345,623,628,633,675],[302,345,633,683],[302,345,623,628,629,633],[302,345,633,680,682,684,686],[302,345,623,629,633],[302,345,623,628,629,633,634,680,685],[302,345,633,675],[302,345,633,647],[302,345,622,623,628,632,633,689],[302,345,634,635,647,655,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698],[302,345,623,629,633,647],[302,345,622,623,628,629,633,634,643,645,646,647],[302,345,623,628,632,633],[302,345,623,628,633,679,692],[302,345,623,628,629,633,694,695,697],[302,345,623,628,629,633,694,697],[302,345,623,628,629,633,634,695,696],[302,345,620,633],[302,345,632],[302,345,360,365,377,388,395,710,711,712,717,730,765],[302,345,395,750,752,753,754,755,756,757,758,759,760,761,762,763,764],[302,345,765],[302,345,942],[302,345,942,943,944,945],[302,345,878],[302,345,843,845,850,864,865,866],[302,345,843,844,845,846,847,849],[302,345,843,853,855,856,857,861,862,863,864,865,867,868],[302,345,855],[302,345,859],[302,345,860],[302,345,853,854,869],[302,345,855,869],[302,345,858,860],[302,345,843,850],[302,345,843,845,865],[302,345,843,848,850,853,867,868,869,870,871,872,873,874,875,876,877],[302,345,848],[302,345,850],[302,345,360,395,708,710,711,712,717,766],[302,345,1426,1435,1436,1439,1440,1441,1466],[302,345,1426,1430,1435,1439,1441,1466],[302,345,1426,1435,1441,1464,1465,1466],[302,345,1426,1430,1435,1441,1464,1466],[238,239,302,345],[302,345,360,365,388,395,710,716],[302,345,357,377,395,713,714],[302,345,365,377,395],[302,345,713],[302,345,715],[302,345,777,778],[302,345,778,779],[302,345,377,777,778,779,787,788,789,790],[302,345,359,778,779],[302,345,377,777,788,791,792],[302,345,778,779,787],[302,345,780,781,782,784,785,786],[302,345,377,781],[302,345,783],[302,345,781],[302,345,380,784,785],[302,345,777],[302,345,1432],[302,345,393,1400],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,108,109,110,111,112,116,117,118,119,120,121,122,123,124,125,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,302,345],[79,89,108,115,208,302,345],[98,302,345],[95,98,99,101,102,115,142,170,171,302,345],[89,102,115,139,302,345],[89,115,302,345],[180,302,345],[115,212,302,345],[89,115,213,302,345],[115,213,302,345],[116,164,302,345],[88,302,345],[82,98,115,120,126,165,302,345],[164,302,345],[96,111,115,212,302,345],[89,115,212,216,302,345],[115,212,216,302,345],[79,302,345],[108,302,345],[178,302,345],[74,79,98,115,147,302,345],[98,115,302,345],[115,140,143,190,229,302,345],[101,302,345],[95,98,99,100,115,302,345],[84,302,345],[196,302,345],[85,302,345],[195,302,345],[92,302,345],[82,302,345],[87,302,345],[146,302,345],[147,302,345],[170,203,302,345],[115,139,302,345],[88,89,302,345],[90,91,104,105,106,107,113,114,302,345],[92,96,105,302,345],[87,89,95,105,302,345],[79,84,85,88,89,98,105,106,108,111,112,113,302,345],[91,95,97,104,302,345],[89,95,101,103,302,345],[74,87,92,302,345],[93,95,115,302,345],[74,87,88,95,115,302,345],[88,89,112,115,302,345],[76,302,345],[75,76,82,87,89,92,95,115,147,302,345],[115,212,216,220,302,345],[115,212,216,218,302,345],[78,302,345],[102,302,345],[109,188,302,345],[74,302,345],[89,109,110,111,115,120,126,127,128,129,130,302,345],[108,109,110,302,345],[98,139,302,345],[86,117,302,345],[93,94,302,345],[87,89,98,115,130,140,142,143,144,302,345],[111,302,345],[76,143,302,345],[87,115,302,345],[111,115,148,302,345],[115,213,222,302,345],[82,89,92,101,115,139,302,345],[78,87,89,108,115,140,302,345],[115,302,345],[88,112,115,302,345],[88,112,115,116,302,345],[88,112,115,133,302,345],[115,212,216,225,302,345],[108,115,302,345],[89,108,115,140,144,160,302,345],[108,115,116,302,345],[89,115,147,302,345],[89,92,115,130,138,140,144,158,302,345],[84,89,108,115,116,302,345],[87,89,115,302,345],[87,89,108,115,302,345],[115,126,302,345],[83,115,302,345],[96,99,100,115,302,345],[85,108,302,345],[95,96,302,345],[115,169,172,302,345],[75,185,302,345],[95,103,115,302,345],[95,115,139,302,345],[89,112,200,302,345],[78,87,302,345],[108,116,302,345],[302,312,316,345,388],[302,312,345,377,388],[302,307,345],[302,309,312,345,385,388],[302,307,345,395],[302,309,312,345,365,388],[302,304,305,308,311,345,357,377,388],[302,312,319,345],[302,304,310,345],[302,312,333,334,345],[302,308,312,345,380,388,395],[302,333,345,395],[302,306,307,345,395],[302,312,345],[302,312,327,345],[302,312,319,320,345],[302,310,312,320,321,345],[302,311,345],[302,304,307,312,345],[302,312,316,320,321,345],[302,316,345],[302,310,312,315,345,388],[302,304,309,312,319,345],[302,307,312,333,345,393,395],[302,345,1430,1434],[302,345,1425,1430,1431,1433,1435,1441,1466],[302,345,1155,1156,1157,1158,1159,1160,1161,1163,1164,1165,1166,1167,1168,1169,1170],[302,345,1155],[302,345,1155,1162],[302,345,1427],[302,345,1428,1429],[302,345,1425,1428,1430],[245,268,269,273,275,276,302,345],[253,263,269,275,302,345],[275,302,345],[245,249,252,261,262,263,266,268,269,274,276,302,345],[244,302,345],[244,245,249,252,253,261,262,263,266,267,268,269,273,274,275,277,278,279,280,281,282,283,302,345],[248,261,266,302,345],[248,249,250,252,261,269,273,275,302,345],[262,263,269,302,345],[249,252,261,266,269,274,275,302,345],[248,249,250,252,261,262,268,273,274,275,302,345],[248,250,262,263,264,265,269,273,302,345],[248,269,273,302,345],[269,275,302,345],[248,249,250,251,260,263,266,269,273,302,345],[248,249,250,251,263,264,266,269,273,302,345],[244,246,247,249,253,263,266,267,269,276,302,345],[245,249,269,273,302,345],[273,302,345],[270,271,272,302,345],[246,268,269,275,277,302,345],[253,302,345],[253,262,266,268,302,345],[253,268,302,345],[249,250,252,261,263,264,268,269,302,345],[248,252,253,260,261,263,302,345],[248,249,250,253,260,261,263,266,302,345],[268,274,275,302,345],[249,302,345],[249,250,302,345],[247,248,250,254,255,256,257,258,259,261,264,266,302,345],[302,345,1074,1075],[302,345,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088],[302,345,1050,1074,1075],[302,345,1075],[302,345,1050,1052,1074,1075],[302,345,1050,1052,1075],[302,345,1050,1052,1056,1075,1076],[302,345,1050,1075],[302,345,1050,1062,1074,1075],[302,345,1051,1075],[302,345,1050,1066,1074,1075],[302,345,1050,1059,1074,1075],[302,345,1050,1058,1061,1074,1075],[302,345,1051,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073],[302,345,1050,1074,1076],[302,345,1049],[302,345,1040,1041],[302,345,1037,1038,1040,1042,1043,1048],[302,345,1038,1040],[302,345,1048],[302,345,1040],[302,345,1037,1038,1040,1043,1044,1045,1046,1047],[302,345,1037,1038,1039],[72,73,242,243,291,296,302,345,773,831,1139,1751],[72,73,285,286,302,345],[72,73,242,243,285,291,302,345,618,703,768,775,831,939,940,952,953,1027,1094,1300,1370,1478],[242,302,345],[72,73,285,302,345,367,952,1146],[73,302,345,1376,1478],[72,285,291,292,302,345,706,804,831,952,965,1027,1193,1264,1478,1746],[72,73,285,289,292,302,345,706,775,831,952,1372,1746,1751,1753],[72,291,302,345,706,773,775,963],[73,242,243,302,345,775,1376,1478,1746],[72,73,243,291,292,302,345,706,952,1731,1746],[72,302,345,367,706,799,800,831],[73,285,302,345,367,572,706,802,1469,1746],[72,242,292,302,345,808,1746,1748,1749,1750],[243,291,302,345],[286,302,345],[72,73,243,285,289,291,292,293,294,296,302,345,572,703,706,771,772,773,810,831,839,922,939,940,952,953,1012,1013,1027,1093,1094,1096,1138,1139,1140,1141,1144,1374,1470,1473,1474,1475,1476,1477,1746],[72,73,302,345,703,952,1751],[72,284,285,286,292,294,302,345,703,772,939],[73,289,291,292,302,345,703,706,773,799,1013,1097,1137,1472],[72,302,345,702],[302,345,922],[302,345,1758],[72,302,345],[285,302,345],[72,73,285,302,345,930,1746],[72,73,243,285,289,292,302,345,366,367,572,706,939,952,1013,1385,1389,1390,1392,1393,1394,1395,1746,1747],[302,345,1096],[71,72,302,345],[72,292,302,345,706,831,1746],[72,73,302,345,1746,1747],[72,291,302,345,350,358,774,803],[72,285,286,302,345,397,399,572,831],[72,73,289,302,345,573,575,776,831,882,939,965,1013,1029,1030,1151,1404,1746],[72,242,243,285,302,345,367,813,829],[72,285,291,302,345,831],[72,73,243,286,289,291,302,345,359,367,799,804,809,831,837,839,840,1746,1747],[291,302,345,1389],[73,285,302,345,1144,1478],[72,302,345,367,706,922,953,965,966,1023,1024,1026,1746],[73,285,289,292,302,345,388,706,831,951,952,953,1746],[72,240,242,302,345],[72,302,345,367,706,1398,1746],[72,73,243,285,302,345,703,706,831,839,922,952,1138,1139,1140,1145,1147,1387,1397,1399,1402,1420,1421,1422,1478,1746],[73,302,345],[72,73,285,286,289,302,345,939,966],[72,73,243,285,291,292,302,345,705,706,768,769,773,774,831],[72,285,291,292,302,345,706,773,774,775,776,800,831,837,842,951,1746],[72,73,242,243,285,286,291,293,302,345,359,367,770,776,798,800,804,809,831,839,930,1405,1407,1747],[72,73,292,302,345,573,706,773,775,776,798,800,831,841,842,880,882,885,964,1746,1747],[72,292,302,345,706,775,776,795,798,831,1746],[72,73,286,292,302,345,359,367,706,773,801,804,809,831,1747],[72,243,286,289,291,302,345,367,573,830,831,929,932,939,1013,1424,1469,1746,1747],[302,345,795],[72,286,289,302,345,939,1029],[72,73,302,345,359,366,367,706,939,1746],[72,73,242,243,302,345,359,367,804,809,930,1747],[72,292,302,345,804,831,965,1149],[72,292,302,345,703,831,954],[72,73,285,291,302,345,359,572,706,809,924,932,940,941,947,965,1746,1747],[72,73,243,285,302,345,706,775,1376,1478],[72,73,243,285,288,291,292,294,302,345,350,706,771,773,775,800,801,830,831,916,921,922,924,929,931,932,939,948,950,951,954,959,962,1746,1747],[72,73,286,291,302,345,367,706,805,1746,1747],[72,285,302,345,928],[72,242,243,289,302,345,573,575,830,837,851,939,940,948,963,1012,1013,1027,1030,1151,1404,1408,1409,1411,1419],[72,285,292,302,345,572,706,806,831,965,966,1151,1746,1747,1837],[302,345,1091],[72,73,292,302,345,706,831,851,952,1390,1478,1479,1731,1744,1745],[302,345,1746],[72,292,295,302,345,831,832,833,835,836],[295,302,345],[302,345,811],[72,73,291,292,302,345,348,706,773,801,831,930,954,1097,1136,1478],[72,243,291,302,345,367,388,706,802,831,839,1401,1746],[287,302,345],[72,73,302,345,703,776,952,1760,1834],[72,73,243,285,286,288,289,290,291,292,293,294,296,302,345,573,575,703,704,706,768,771,772,773,775,776,798,799,800,801,802,803,804,806,808,809,810,812,830,831,837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,950,951,952,953,954,963,964,965,966,1012,1013,1024,1027,1029,1030,1034,1035,1036,1090,1093,1094,1095,1096,1097,1137,1138,1139,1140,1141,1143,1144,1145,1146,1147,1148,1150,1151,1153,1177,1265,1371,1372,1374,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1390,1392,1395,1396,1397,1399,1402,1404,1407,1408,1409,1410,1411,1412,1416,1418,1419,1420,1421,1422,1423,1424,1467,1468,1469,1470,1472,1473,1474,1475,1476,1477,1478,1479,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1759,1760,1761,1762,1763,1764,1765,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1819,1820,1821,1822,1823,1831,1832,1833,1834,1835],[302,345,941],[286,291,302,345,574],[291,302,345,703,1033],[286,302,345,772,935,938],[72,285,291,302,345,774,939,1746],[302,345,809,1151,1746,1747,1749,1751],[302,345,1417],[73,302,345,830,932],[302,345,830,922],[71,73,285,302,345,572,1746],[73,302,345,1094,1371,1376,1377,1378,1379,1380,1381,1382,1383,1384,1478,1746],[73,291,302,345,1376,1478,1746],[72,243,289,302,345,1746],[302,345,1142],[72,285,293,295,302,345,703],[73,292,302,345,367,706,799],[72,285,289,302,345,706,939,1030,1426,1435,1441,1466],[302,345,831,1415],[72,243,285,289,291,292,302,345,706,804,809,810,831,1477,1733,1735,1736,1737,1741,1743],[72,73,242,302,345,800,801,804,831,965,1093],[73,285,292,302,345,703,706,831,953,1733,1766],[294,302,345,829],[294,302,345,1410],[72,73,242,302,345,804,1751],[302,345,1391],[72,285,291,302,345,706],[73,302,345,797],[72,73,242,302,345,952,1094,1141,1746],[72,73,242,243,285,291,292,293,302,345,572,703,831,952,1746],[72,302,345,1030,1032,1034],[302,345,365],[242,302,345,1747],[73,243,302,345,1478],[72,73,243,291,302,345,775,1096,1151,1376,1478],[72,73,243,285,302,345,575,703,706,774,775,939,940,952,953,1027,1094,1372,1374,1478],[243,285,291,292,302,345,702,703,706,775,1478],[72,73,243,285,291,292,302,345,703,706,770,775,776,801,831,952,1372,1373,1375,1478],[302,345,706,946],[72,285,302,345],[72,73,291,302,345,359,367,572,706,952,1145,1387,1468,1747],[72,285,286,288,289,302,345,573,575,771,772,804,806,830,837,841,880,882,885,932,939,950,965,1013,1029,1030,1034,1035,1036,1092,1141,1151,1404,1407,1412,1416,1418,1746],[72,302,345,367,388,808,1747],[302,345,364,367,388],[72,73,243,285,289,291,292,302,345,359,366,367,388,389,706,802,804,809,831,839,850,851,852,879,1746,1747],[291,302,345,368,838],[73,285,286,293,302,345,703,770,771,772],[72,73,242,285,296,302,345,367,706,775,804,809,810,922,924,931,952,953,965,1139,1148,1150,1153,1372,1386,1387,1388,1396,1473,1746,1751],[72,73,242,243,285,286,288,289,291,292,302,345,573,703,804,830,831,839,885,922,940,953,965,966,1012,1013,1027,1034,1035,1036,1090,1092,1093,1094,1095,1137,1478,1746,1747],[72,73,285,288,291,292,302,345,572,831,953,1013,1402,1746,1774],[72,73,242,243,285,291,292,302,345,573,706,772,803,922,952,953,965,1139,1140,1141,1144,1385,1387,1423,1478,1746,1747],[72,285,289,302,345,703,939,1030],[243,302,345,618,706,767],[72,73,243,285,292,302,345,367,388,706,775,831,842,948,951,963,1747],[72,73,242,243,285,288,289,291,292,302,345,572,703,706,773,776,800,801,804,809,831,839,885,922,929,931,952,953,1012,1034,1035,1096,1097,1137,1138,1139,1143,1144,1145,1147,1385,1387,1407,1408,1423,1470,1472,1478,1746,1751,1752],[302,345,807],[72,73,302,345,367,803,1830],[72,243,289,302,345,706,831,939,1011,1012],[73,292,302,345,367,706,804,809,831,964,1746],[72,73,285,291,302,345,367,706,806,809,952,1147,1746,1747,1763],[291,302,345,706,831,1746],[72,73,243,291,302,345,703,812,831,952,1834],[72,302,345,703],[73,302,345,952],[302,345,923],[72,73,285,291,302,345,770,776,795,842],[72,285,302,345,572,706,952,1095,1139],[72,73,285,286,288,291,292,296,302,345,367,775,799,800,831,1030,1746],[72,73,285,302,345,367,939,1410,1422,1467],[302,345,1471],[72,285,302,345,706,952,1092,1418],[72,243,292,302,345,346,359,367,706,831,851,924,952,1420,1478,1744,1745,1746,1747,1764,1771],[72,302,345,348,706,1027],[73,285,302,345],[72,285,302,345,884],[72,73,291,302,345,706,839],[72,286,302,345,1028],[242,302,345,953,1094],[72,73,243,284,288,289,291,292,293,294,296,302,343,345,367,388,573,575,703,704,773,774,810,812,830,1746],[73,291,302,345,358,359,367,831,839,1747],[294,302,345],[72,285,302,345,1406],[302,345,388],[73,291,294,302,345,573,703,706,773,831,953,1478],[73,290,302,345,1746],[72,73,285,289,291,302,345,572,706,952,1012,1141,1145,1147],[72,73,292,302,345,706,831,922,953,965,1177,1265,1385,1478,1746,1751],[72,285,291,292,302,345,706,809,831,952,965,1027,1154,1176,1478],[302,345,1154],[302,345,359,367,1154,1176],[72,243,302,345,348,359,367,706,770,1024,1154,1171,1173,1174,1175],[72,302,345,1154,1174,1176],[302,345,359,367,706,1154,1171,1172],[302,345,358,367,802],[72,73,242,285,291,302,345,775,831,1746],[72,73,240,243,291,292,302,345,706,773,831,952,1372,1375,1478],[73,302,345,367,706,804,806,808,1746,1747],[72,302,345,393,703,706,812,831,952,1478],[72,73,242,243,285,289,302,345,359,367,573,575,939,965,1013,1404,1746,1747,1751,1762],[72,291,302,345,1837],[72,286,302,345,706,1403],[72,284,286,288,302,345],[72,302,345,774,776,798,842,929,949],[72,302,345,1089]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"ca2bdfe9e12361ed4daa6cede7d76db71a599d7cada3f308530783c9edd5a505","signature":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":99},{"version":"6197ea0b13d17cd68df40851a05b4bd0be92aa01570c7c6d812aa86b6e1df7cd","signature":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":99},{"version":"3aea4b48223098d8a8b119c6b4ab7e5617070c9bdf908dbfe60c43a9f867a3b1","signature":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":99},{"version":"cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","impliedFormat":1},{"version":"1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","impliedFormat":1},{"version":"130ec22c8432ade59047e0225e552c62a47683d870d44785bee95594c8d65408","impliedFormat":1},{"version":"4f24c2781b21b6cd65eede543669327d68a8cf0c6d9cf106a1146b164a7c8ef9","affectsGlobalScope":true,"impliedFormat":1},{"version":"928f96b9948742cbaec33e1c34c406c127c2dad5906edb7df08e92b963500a41","impliedFormat":1},{"version":"56613f2ebdd34d4527ca1ee969ab7e82333c3183fc715e5667c999396359e478","impliedFormat":1},{"version":"d9720d542df1d7feba0aa80ed11b4584854951f9064232e8d7a76e65dc676136","impliedFormat":1},{"version":"d0fb3d0c64beba3b9ab25916cc018150d78ccb4952fac755c53721d9d624ba0d","impliedFormat":1},{"version":"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","impliedFormat":1},{"version":"ba93f0192c9c30d895bee1141dd0c307b75df16245deef7134ac0152294788cc","impliedFormat":1},{"version":"fca7cd7512b19d38254171fb5e35d2b16ac56710b7915b7801994612953da16c","impliedFormat":1},{"version":"7e43693f6ea74c3866659265e0ce415b4da6ed7fabd2920ad7ea8a5e746c6a94","impliedFormat":1},{"version":"eb31477c87de3309cbe4e9984fa74a052f31581edb89103f8590f01874b4e271","impliedFormat":1},{"version":"4e251317bb109337e4918e5d7bcda7ef2d88f106cac531dcea03f7eee1dd2240","impliedFormat":1},{"version":"0f2c77683296ca2d0e0bee84f8aa944a05df23bc4c5b5fef31dda757e75f660f","impliedFormat":1},{"version":"1a67ba5891772a62706335b59a50720d89905196c90719dad7cec9c81c2990e6","impliedFormat":1},{"version":"cf41091fcbf45daff9aba653406b83d11a3ec163ff9d7a71890035117e733d98","impliedFormat":1},{"version":"aa514fadda13ad6ddadc2342e835307b962254d994f45a0cb495cc76eca13eff","impliedFormat":1},{"version":"ce92e662f86a36fc38c5aaa2ec6e6d6eed0bc6cf231bd06a9cb64cc652487550","impliedFormat":1},{"version":"3821c8180abb683dcf4ba833760764a79e25bc284dc9b17d32e138c34ada1939","impliedFormat":1},{"version":"0ef2a86ec84da6b2b06f830b441889c5bb8330a313691d4edbe85660afa97c44","impliedFormat":1},{"version":"b2a793bde18962a2e1e0f9fa5dce43dd3e801331d36d3e96a7451727185fb16f","impliedFormat":1},{"version":"9d8fc1d9b6b4b94127eec180183683a6ef4735b0e0a770ba9f7e2d98dd571e0c","impliedFormat":1},{"version":"8504003e88870caa5474ab8bd270f318d0985ba7ede4ee30fe37646768b5362a","impliedFormat":1},{"version":"892abbe1081799073183bab5dc771db813938e888cf49eb166f0e0102c0c1473","impliedFormat":1},{"version":"65465a64d5ee2f989ad4cf8db05f875204a9178f36b07a1e4d3a09a39f762e2e","impliedFormat":1},{"version":"2878f694f7d3a13a88a5e511da7ac084491ca0ddde9539e5dad76737ead9a5a9","impliedFormat":1},{"version":"d21c5f692d23afa03113393088bcb1ef90a69272a774950a9f69c58131ac5b7e","impliedFormat":1},{"version":"0915ce92bb54e905387b7907e98982620cb7143f7b44291974fb2e592602fe00","impliedFormat":1},{"version":"9dfb317a36a813f4356dc1488e26a36d95e3ac7f38a05fbf9dda97cfd13ef6ea","impliedFormat":1},{"version":"7c0a4d3819fb911cdb5a6759c0195c72b0c54094451949ebaa89ffceadd129ca","impliedFormat":1},{"version":"4733c832fb758f546a4246bc62f2e9d68880eb8abf0f08c6bec484decb774dc9","impliedFormat":1},{"version":"58d91c410f31f4dd6fa8d50ad10b4ae9a8d1789306e73a5fbe8abea6a593099b","impliedFormat":1},{"version":"3aea7345c25f1060791fc83a6466b889924db87389e5c344fa0c27b75257ebe4","impliedFormat":1},{"version":"a8289d1d525cf4a3a2d5a8db6b8e14e19f43d122cc47f8fb6b894b0aa2e2bde6","impliedFormat":1},{"version":"e6804515ba7c8f647e145ecc126138dd9d27d3e6283291d0f50050700066a0ea","impliedFormat":1},{"version":"9420a04edbe321959de3d1aab9fa88b45951a14c22d8a817f75eb4c0a80dba02","impliedFormat":1},{"version":"6927ceeb41bb451f47593de0180c8ff1be7403965d10dc9147ee8d5c91372fff","impliedFormat":1},{"version":"d9c6f10eebf03d123396d4fee1efbe88bc967a47655ec040ffe7e94271a34fc7","impliedFormat":1},{"version":"f2a392b336e55ccbeb8f8a07865c86857f1a5fc55587c1c7d79e4851b0c75c9a","impliedFormat":1},{"version":"fd53e2a54dae7bb3a9c3b061715fff55a0bb3878472d4a93b2da6f0f62262c9f","impliedFormat":1},{"version":"1f129869a0ee2dcb7ea9a92d6bc8ddf2c2cdaf2d244eec18c3a78efeb5e05c83","impliedFormat":1},{"version":"554962080d3195cae300341a8b472fb0553f354f658344ae181b9aa02d351dbd","impliedFormat":1},{"version":"89cd9ab3944b306e790b148dd0a13ca120daf7379a98729964ea6288a54a1beb","impliedFormat":1},{"version":"28fa41063a242eafcf51e1a62013fccdd9fd5d6760ded6e3ff5ce10a13c2ab31","impliedFormat":1},{"version":"e53a8b6e43f20fa792479f8069c41b1a788a15ffdfd56be1ab8ef46ea01bd43e","impliedFormat":1},{"version":"ada60ff3698e7fd0c7ed0e4d93286ee28aed87f648f6748e668a57308fde5a67","impliedFormat":1},{"version":"f65e0341f11f30b47686efab11e1877b1a42cf9b1a232a61077da2bdeee6d83e","impliedFormat":1},{"version":"e6918b864e3c2f3a7d323f1bb31580412f12ab323f6c3a55fb5dc532c827e26d","impliedFormat":1},{"version":"5d6f919e1966d45ea297c2478c1985d213e41e2f9a6789964cdb53669e3f7a6f","impliedFormat":1},{"version":"d7735a9ccd17767352ab6e799d76735016209aadd5c038a2fc07a29e7b235f02","impliedFormat":1},{"version":"843e98d09268e2b5b9e6ff60487cf68f4643a72c2e55f7c29b35d1091a4ee4e9","impliedFormat":1},{"version":"ef4c9ef3ec432ccbf6508f8aa12fbb8b7f4d535c8b484258a3888476de2c6c36","impliedFormat":1},{"version":"77ff2aeb024d9e1679c00705067159c1b98ccac8310987a0bdaf0e38a6ca7333","impliedFormat":1},{"version":"8f9effea32088f37d15858a890e1a7ccf9af8d352d47fea174f6b95448072956","impliedFormat":1},{"version":"952c4a8d2338e19ef26c1c0758815b1de6c082a485f88368f5bece1e555f39d4","impliedFormat":1},{"version":"1d953cb875c69aeb1ec8c58298a5226241c6139123b1ff885cedf48ac57b435c","impliedFormat":1},{"version":"1a80e164acd9ee4f3e2a919f9a92bfcdb3412d1fe680b15d60e85eadbaa460f8","impliedFormat":1},{"version":"f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","impliedFormat":1},{"version":"019c29de7d44d84684e65bdabb53ee8cc08f28b150ac0083d00e31a8fe2727d8","impliedFormat":1},{"version":"e35738485bf670f13eab658ea34d27ef2b875f3aae8fc00fb783d29e5737786d","impliedFormat":1},{"version":"bcd951d1a489d00e432c73760ce7f39adb0ef4e6a9c8ffef5dd7f093325a8377","impliedFormat":1},{"version":"672c1ebc4fa15a1c9b4911f1c68de2bc889f4d166a68c5be8f1e61f94014e9d8","impliedFormat":1},{"version":"b0378c1bc3995a1e7b40528dcd81670b2429d8c1dcc1f8d1dc8f76f33d3fc1b8","impliedFormat":1},{"version":"5a0d920468aa4e792285943cadad77bcb312ba2acf1c665e364ada1b1ee56264","impliedFormat":1},{"version":"c27c5144d294ba5e38f0cd483196f911047500a735490f85f318b4d5eb8ac2cc","impliedFormat":1},{"version":"900d1889110107cea3e40b30217c6e66f19db8683964a57afd9a72ecc821fe21","impliedFormat":1},{"version":"a2e4333bf0c330ae26b90c68e395ad0a8af06121f1c977979c75c4a5f9f6bc29","impliedFormat":1},{"version":"08c027d3d6e294b5607341125d1c4689b4fece03bdb9843bd048515fe496a73e","impliedFormat":1},{"version":"2cbf557a03f80df74106cb7cfb38386db82725b720b859e511bdead881171c32","impliedFormat":1},{"version":"918956b37f3870f02f0659d14bba32f7b0e374fd9c06a241db9da7f5214dcd79","impliedFormat":1},{"version":"260e6d25185809efc852e9c002600ad8a85f8062fa24801f30bead41de98c609","impliedFormat":1},{"version":"dd9694eecd70a405490ad23940ccd8979a628f1d26928090a4b05a943ac61714","impliedFormat":1},{"version":"42ca885a3c8ffdffcd9df252582aef9433438cf545a148e3a5e7568ca8575a56","impliedFormat":1},{"version":"309586820e31406ed70bb03ea8bca88b7ec15215e82d0aa85392da25d0b68630","impliedFormat":1},{"version":"db436ca96e762259f14cb74d62089c7ca513f2fc725e7dcfbac0716602547898","impliedFormat":1},{"version":"1410d60fe495685e97ed7ca6ff8ac6552b8c609ebe63bd97e51b7afe3c75b563","impliedFormat":1},{"version":"c6843fd4514c67ab4caf76efab7772ceb990fbb1a09085fbcf72b4437a307cf7","impliedFormat":1},{"version":"03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","impliedFormat":1},{"version":"956618754d139c7beb3c97df423347433473163d424ff8248af18851dd7d772a","impliedFormat":1},{"version":"7d8f40a7c4cc81db66ac8eaf88f192996c8a5542c192fdebb7a7f2498c18427d","impliedFormat":1},{"version":"c69ecf92a8a9fb3e4019e6c520260e4074dc6cb0044a71909807b8e7cc05bb65","impliedFormat":1},{"version":"07d0370c85ac112aa6f1715dc88bafcee4bcea1483bc6b372be5191d6c1a15c7","impliedFormat":1},{"version":"7fb0164ebb34ead4b1231eca7b691f072acf357773b6044b26ee5d2874c5f296","impliedFormat":1},{"version":"9e4fc88d0f62afc19fa5e8f8c132883378005c278fdb611a34b0d03f5eb6c20c","impliedFormat":1},{"version":"cc9bf8080004ee3d8d9ef117c8df0077d6a76b13cb3f55fd3eefbb3e8fcd1e63","impliedFormat":1},{"version":"1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","impliedFormat":1},{"version":"b6aa8c6f2f5ebfb17126492623691e045468533ec2cc7bd47303ce48de7ab8aa","impliedFormat":1},{"version":"18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","impliedFormat":1},{"version":"68434152ef6e484df25a9bd0f4c9abdfb0d743f5a39bff2b2dc2a0f94ed5f391","impliedFormat":1},{"version":"b848b40bfeb73dfe2e782c5b7588ef521010a3d595297e69386670cbde6b4d82","impliedFormat":1},{"version":"aa79b64f5b3690c66892f292e63dfe3e84eb678a886df86521f67c109d57a0c5","impliedFormat":1},{"version":"a692e092c3b9860c9554698d84baf308ba51fc8f32ddd6646e01a287810b16c6","impliedFormat":1},{"version":"18076e7597cd9baa305cd85406551f28e3450683a699b7152ce7373b6b4a1db7","impliedFormat":1},{"version":"1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","impliedFormat":1},{"version":"d2e3a1de4fde9291f9fb3b43672a8975a83e79896466f1af0f50066f78dbf39e","impliedFormat":1},{"version":"d0d03f7d2ba2cf425890e0f35391f1904d0d152c77179ddfc28dfad9d4a09c03","impliedFormat":1},{"version":"e37650b39727a6cf036c45a2b6df055e9c69a0afdd6dbab833ab957eb7f1a389","impliedFormat":1},{"version":"c58d6d730e95e67a62ebd7ba324e04bcde907ef6ba0f41922f403097fe54dd78","impliedFormat":1},{"version":"0f5773d0dd61aff22d2e3223be3b4b9c4a8068568918fb29b3f1ba3885cf701f","impliedFormat":1},{"version":"31073e7d0e51f33b1456ff2ab7f06546c95e24e11c29d5b39a634bc51f86d914","impliedFormat":1},{"version":"9ce0473b0fbaf7287afb01b6a91bd38f73a31093e59ee86de1fd3f352f3fc817","impliedFormat":1},{"version":"6f0d708924c3c4ee64b0fef8f10ad2b4cb87aa70b015eb758848c1ea02db0ed7","impliedFormat":1},{"version":"6addbb18f70100a2de900bace1c800b8d760421cdd33c1d69ee290b71e28003d","impliedFormat":1},{"version":"37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","impliedFormat":1},{"version":"e0ef70ca30cdc08f55a9511c51a91415e814f53fcc355b14fc8947d32ce9e1aa","impliedFormat":1},{"version":"14be139e0f6d380a3d24aaf9b67972add107bea35cf7f2b1b1febac6553c3ede","impliedFormat":1},{"version":"23195b09849686462875673042a12b7f4cd34b4e27d38e40ca9c408dae8e6656","impliedFormat":1},{"version":"ff1731974600a4dad7ec87770e95fc86ca3d329b1ce200032766340f83585e47","impliedFormat":1},{"version":"91bc53a57079cf32e1a10ccf1a1e4a068e9820aa2fc6abc9af6bd6a52f590ffb","impliedFormat":1},{"version":"8dd284442b56814717e70f11ca22f4ea5b35feeca680f475bfcf8f65ba4ba296","impliedFormat":1},{"version":"a304e0af52f81bd7e6491e890fd480f3dc2cb0541dec3c7bd440dba9fea5c34e","impliedFormat":1},{"version":"c60fd0d7a1ba07631dfae8b757be0bffd5ef329e563f9a213e4a5402351c679f","impliedFormat":1},{"version":"02687b095a01969e6e300d246c9566a62fa87029ce2c7634439af940f3b09334","impliedFormat":1},{"version":"e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","impliedFormat":1},{"version":"ceb2c0bc630cca2d0fdd48b0f48915d1e768785efaabf50e31c8399926fee5b1","impliedFormat":1},{"version":"f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","impliedFormat":1},{"version":"12aeda564ee3f1d96ac759553d6749534fafeb2e5142ea2867f22ed39f9d3260","impliedFormat":1},{"version":"4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","impliedFormat":1},{"version":"85d63aaff358e8390b666a6bc68d3f56985f18764ab05f750cb67910f7bccb1a","impliedFormat":1},{"version":"0a0bf0cb43af5e0ac1703b48325ebc18ad86f6bf796bdbe96a429c0e95ca4486","impliedFormat":1},{"version":"563573a23a61b147358ddee42f88f887817f0de1fc5dbc4be7603d53cbd467ad","impliedFormat":1},{"version":"dd0cad0db617f71019108686cf5caabcad13888b2ae22f889a4c83210e4ba008","impliedFormat":1},{"version":"f08d2151bd91cdaa152532d51af04e29201cfc5d1ea40f8f7cfca0eb4f0b7cf3","impliedFormat":1},{"version":"b9c889d8a4595d02ebb3d3a72a335900b2fe9e5b5c54965da404379002b4ac44","impliedFormat":1},{"version":"a3cd30ebae3d0217b6b3204245719fc2c2f29d03b626905cac7127e1fb70e79c","impliedFormat":1},{"version":"bd56c2399a7eadccfca7398ca2244830911bdbb95b8ab7076e5a9210e9754696","impliedFormat":1},{"version":"f52fb387ac45e7b8cdc98209714c4aedc78d59a70f92e9b5041309b6b53fc880","impliedFormat":1},{"version":"1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","impliedFormat":1},{"version":"5faa3d4b828440882a089a3f8514f13067957f6e5e06ec21ddd0bc2395df1c33","impliedFormat":1},{"version":"f0f95d40b0b5a485b3b97bd99931230e7bf3cbbe1c692bd4d65c69d0cdd6fa9d","impliedFormat":1},{"version":"380b4fe5dac74984ac6a58a116f7726bede1bdca7cec5362034c0b12971ac9c1","impliedFormat":1},{"version":"00de72aa7abede86b016f0b3bfbf767a08b5cff060991b0722d78b594a4c2105","impliedFormat":1},{"version":"965759788855797f61506f53e05c613afb95b16002c60a6f8653650317870bc3","impliedFormat":1},{"version":"f70a315e029dacf595f025d13fa7599e8585d5ccfc44dd386db2aa6596aaf553","impliedFormat":1},{"version":"f385a078ad649cc24f8c31e4f2e56a5c91445a07f25fbdc4a0a339c964b55679","impliedFormat":1},{"version":"08599363ef46d2c59043a8aeec3d5e0d87e32e606c7b1acf397e43f8acadc96a","impliedFormat":1},{"version":"4f5bbef956920cfd90f2cbffccb3c34f8dfc64faaba368d9d41a46925511b6b0","impliedFormat":1},{"version":"0ae9d5bbf4239616d06c50e49fc21512278171c1257a1503028fc4a95ada3ed0","impliedFormat":1},{"version":"cba49e77f6c1737f7a3ce9a50b484d21980665fff93c1c64e0ee0b5086ea460a","impliedFormat":1},{"version":"9c686df0769cca468ebf018749df4330d5ff9414e0d226c1956ebaf45c85ff61","impliedFormat":1},{"version":"89d5970d28f207d30938563e567e67395aa8c1789c43029fe03fe1d07893c74c","impliedFormat":1},{"version":"869e789f7a8abcc769f08ba70b96df561e813a4001b184d3feb8c3d13b095261","impliedFormat":1},{"version":"392f3eb64f9c0f761eb7a391d9fbef26ffa270351d451d11bd70255664170acc","impliedFormat":1},{"version":"f829212a0e8e4fd1b079645d4e97e6ec73734dd21aae4dfc921d2958774721d0","impliedFormat":1},{"version":"5e20af039b2e87736fd7c9e4b47bf143c46918856e78ce21da02a91c25d817e8","impliedFormat":1},{"version":"f321514602994ba6e0ab622ef52debd4e9f64a7b4494c03ee017083dc1965753","impliedFormat":1},{"version":"cc8734156129aa6230a71987d94bdfac723045459da707b1804ecec321e60937","impliedFormat":1},{"version":"bb89466514349b86260efdee9850e497d874e4098334e9b06a146f1e305fca3f","impliedFormat":1},{"version":"fc0ee9d0476dec3d1b37a0f968e371a3d23aac41742bc6706886e1c6ac486749","impliedFormat":1},{"version":"f7da03d84ce7121bc17adca0af1055021b834e861326462a90dbf6154cf1e106","impliedFormat":1},{"version":"fed8c2c205f973bfb03ef3588750f60c1f20e2362591c30cd2c850213115163b","impliedFormat":1},{"version":"32a2b99a3aacda16747447cc9589e33c363a925d221298273912ecf93155e184","impliedFormat":1},{"version":"07bfa278367913dd253117ec68c31205825b2626e1cb4c158f2112e995923ee8","impliedFormat":1},{"version":"6a76e6141ff2fe28e88e63e0d06de686f31184ab68b04ae16f0f92103295cc2a","impliedFormat":1},{"version":"f05d5d16d85abe57eb713bc12efefc00675c09016e3292360e2de0790f51fa48","impliedFormat":1},{"version":"2e3ceed776a470729c084f3a941101d681dd1867babbaf6e1ca055d738dd3878","impliedFormat":1},{"version":"3d9fb85cc7089ca54873c9924ff47fcf05d570f3f8a3a2349906d6d953fa2ccf","impliedFormat":1},{"version":"d82c245bfb76da44dd573948eca299ff75759b9714f8410468d2d055145a4b64","impliedFormat":1},{"version":"6b5b31af3f5cfcf5635310328f0a3a94f612902024e75dc484eb79123f5b8ebe","impliedFormat":1},{"version":"db08c1807e3ae065930d88a3449d926273816d019e6c2a534e82da14e796686d","impliedFormat":1},{"version":"9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","impliedFormat":1},{"version":"ef83477cca76be1c2d0539408c32b0a2118abcd25c9004f197421155a4649c37","impliedFormat":1},{"version":"2c3936b0f811f38ab1a4f0311993bf599c27c2da5750e76aa5dfbed8193c9922","impliedFormat":1},{"version":"c253c7ea2877126b1c3311dc70b7664fe4d696cb09215857b9d7ea8b7fdce1f0","impliedFormat":1},{"version":"445af8e071b13ba018e01778c7c6d1c6e73fc38632c8bcb209f39aa2de789627","impliedFormat":99},{"version":"5db57cae5a31571fd14812ddc96af0174ba58b8b282bde6c135b02e254aabad1","impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"b0429a80a40145644a85690c68da1d66d6a71b7744acab8af0340fe4dd1755cb","signature":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":99},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"e15690c41dbe9b9b3bbe973158dfca873afe779c8ed31d0d61c009f006d9733f","signature":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":99},{"version":"aaa4d676b9d202bb1dab976ea85bf70242a3039094cbd5adb931513c4ca0f55c","signature":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":99},{"version":"c555e7e9fdd3304839d04401a0034c82c9826f473dd5a081038611b666fd9a23","impliedFormat":1},{"version":"1bac6ed68b61b9debc92eddf194989d6595655b24bc1ee78bf05c14eb6e2869b","signature":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":99},{"version":"83c791951174955ababfceb36ae31e5a0435f1d1dc4e8e313bb8436e173c4517","signature":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":99},{"version":"e48eb9e136ca68bb32412ed99c292cfe3839351854d9bb0b1057dd311548b216","signature":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":99},{"version":"153d00b83bd029258afdc46ed4ad8fea631b83d929881805e190e823c0e3f598","signature":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":99},{"version":"2618dd01325caa5f79aea570e5b01cf4251ab840e1c804f6ef1e12596fe9a048","signature":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":99},{"version":"e6509f8ed0f96428b884d014d05298566301e6872fc7466daf2e5386fc4eb1f4","signature":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":99},{"version":"aa0a75148c05002950f40f2bf00bec499603f070a25d2b64ff2f51682de526e3","signature":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":99},{"version":"1d96b00da8ab52510ebf83f6218a44ee7b35d4fb406973a5fa59c2932d44ab47","impliedFormat":99},{"version":"c85375e232498985931c082be76315cdc794bd6884466bb269fab958c987df18","signature":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"54495480ae5dde36bef1a11d1e3bd30ea5f12371265ebe6602b873574b747949","impliedFormat":99},{"version":"b00c9417e14c16bab467bf36adc1fa1bf559a2380d981be15dc03cf775ac1338","impliedFormat":99},{"version":"2cd932a8d4f1f620df509a375a24374993087f6a755efd508b2f005c4c398399","impliedFormat":99},{"version":"dd8b6b955c7fa741ee30dde24893b93cab7f89d79311214bccb608d6eb5b84f0","impliedFormat":99},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":99},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":99},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":99},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":99},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":99},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":99},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":99},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":99},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":99},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":99},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":99},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":99},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":99},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":99},{"version":"37ebb37fdfb5ba642138f4caf66dcd65c16a380b054553cf10110e21f570e527","impliedFormat":99},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":99},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":99},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":99},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":99},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":99},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":99},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":99},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":99},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":99},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":99},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":99},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":99},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":99},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":99},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":99},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":99},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":99},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":99},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":99},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":99},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":99},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":99},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":99},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":99},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":99},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":99},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":99},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":99},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":99},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":99},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":99},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":99},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":99},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":99},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":99},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":99},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":99},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":99},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":99},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":99},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":99},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":99},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":99},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":99},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":99},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":99},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":99},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":99},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":99},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":99},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":99},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":99},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":99},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":99},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":99},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":99},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":99},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":99},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":99},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":99},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":99},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":99},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":99},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":99},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":99},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":99},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":99},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":99},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":99},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":99},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":99},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":99},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":99},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":99},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":99},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":99},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":99},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":99},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":99},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":99},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":99},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":99},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":99},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":99},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":99},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":99},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":99},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":99},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":99},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":99},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":99},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":99},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":99},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":99},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":99},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":99},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":99},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":99},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":99},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":99},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":99},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":99},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":99},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":99},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":99},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":99},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":99},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":99},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":99},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":99},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":99},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":99},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":99},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":99},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":99},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":99},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":99},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":99},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":99},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":99},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":99},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":99},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":99},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":99},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":99},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":99},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":99},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":99},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":99},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":99},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":99},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":99},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":99},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":99},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":99},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":99},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":99},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":99},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":99},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":99},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":99},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":99},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":99},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":99},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":99},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":99},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":99},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":99},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":99},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":99},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":99},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":99},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":99},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":99},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":99},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":99},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":99},{"version":"e45c27159f906b280b931c5f6d60933cee4af26704662790f74c190219e21922","impliedFormat":99},{"version":"26b75196806f5d2d35951372abe6e9a8abe6ba2909b56427b83e01f2dd055f5d","signature":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":99},{"version":"b8cc9a40e2e90937dcf15804eb1df783e0841ab73c2d1c7c6be00189a38454bf","impliedFormat":1},{"version":"6cb35dd63cb77bb311590818c641219201324809c204f6f6f3e8b2dd020fc103","signature":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":99},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"ed9680d6573920c3f1588fdb732d2469324e16b4795e2bec5f196a613e66030f","impliedFormat":99},{"version":"804e73c5236db118192cf774837ecf6d37013470832dc0ed9aaecfb4c93fb88b","impliedFormat":99},{"version":"91c093343733c2c2d40bee28dc793eff3071af0cb53897651f8459ad25ad01da","impliedFormat":99},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":99},{"version":"e1c58879ba7cfcb2a70f4ec69831f48eef47b7a356f15ab9f4fce03942d9f21a","impliedFormat":99},{"version":"f4fc36916b3eac2ea0180532b46283808604e4b6ff11e5031494d05aa6661cc6","impliedFormat":99},{"version":"82e23a5d9f36ccdac5322227cd970a545b8c23179f2035388a1524f82f96d8d0","impliedFormat":99},{"version":"5a5703de2fe655aa091dfb5b30a5a249295af3ab189b800c92f8e2bc434fb8db","impliedFormat":99},{"version":"bfce32506c0d081212ff9d27ec466fa6135a695ba61d5a02738abd2442566231","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"493c39c5f9e9c050c10930448fda1be8de10a0d9b34dcd24ff17a1713c282162","impliedFormat":99},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":99},{"version":"fb5a2c398c5d06e25ae7b12ad15a921f1b980a63fa2a7e4fab133b4e2a812016","impliedFormat":99},{"version":"ba3df48971907e524e144d82ed8f02d79729234b659307f8ea6c53b40821c021","impliedFormat":99},{"version":"01667d68efa44dff300acf4c59dd32da24ef2a5e60f22ab0a2453e78384313c4","impliedFormat":99},{"version":"e6ad9376e7d088ce1dc6d3183ba5f0b3fb67ee586aa824cc8519b52f2341307a","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"d62b09cb6f1ceb87ec6c26f3789bc38f8be9fb0ce3126fd0bf89b003d0cba371","impliedFormat":99},{"version":"f1814fe671a8c89958dc5c6bbba86886a5e240d4b5dc67d5fe0230a1453173aa","impliedFormat":99},{"version":"093c715953724a40a662c88333a643328eb31bc8c677a75a132fc91cac5374eb","impliedFormat":99},{"version":"491d5f012b1de793c45e75a930f5cdef1ff0e7875968e743fa6bd5dd7d31cb3b","impliedFormat":99},{"version":"53c86b81daa463deacb0046fee490b6d589438ac71311050b74dcee99afca0f6","impliedFormat":99},{"version":"70587241a4cc2e08ffc30e60c20f3eb38bd5af7e3d99640568ffe2993f933485","impliedFormat":99},{"version":"25eae186ba15de27b0d3100df3b30998ad63eaacf9e3d8ca953c3ad120a84c22","impliedFormat":99},{"version":"437bd33cd28dbf6eccc49404feb45896f2b16a5999a6f302568bdaa43b36c517","impliedFormat":99},{"version":"2210cc7bbaf78e3cbaf26c9ccfd22906fb9d4db9de2157c05bf22ba11384aec6","impliedFormat":99},{"version":"29c4e9ce50026f15c4e58637d8668ced90f82ce7605ca2fd7b521667caa4a12c","impliedFormat":99},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":99},{"version":"3b56bc74e48ec8704af54db1f6ecfee746297ee344b12e990ba5f406431014c1","impliedFormat":99},{"version":"9e4991da8b398fa3ee9b889b272b4fe3c21e898d873916b89c641c0717caed10","impliedFormat":99},{"version":"71725d35a48bc9a5ae7ae3ef4823c25c8913470913d97fcb9247ebdca14d63f6","impliedFormat":99},{"version":"575d3752baaacf5d34ae1fe3840a3a7acb782f0b670b2e0385af58dabba9ae12","impliedFormat":99},{"version":"dccadbf7c7a1a95c6ce5627765dc1c603f33fb928ddc39092f589476bca7965f","impliedFormat":99},{"version":"dfb1f442faf045df05149751d29131b68726cae26c6e9cb2eeb132acee59e6e0","impliedFormat":99},{"version":"09fe9b15282a073c2cd0ef426704e0baea167c2270fc5c46bc932deee440a071","impliedFormat":99},{"version":"ee02719d72e35d2816bd9052ad2a35f148ac54aa4ffb5d2ad2ef0229a17fc3ae","impliedFormat":99},{"version":"eac029dfd99082efdc6854f4f23932fe54be7eb9bb5debd03c2f6ebd1be502f7","impliedFormat":99},{"version":"38d3c5eb27acab967299ad6aa835c944301501392c5056d9976842e4a4259623","impliedFormat":99},{"version":"924abf8e5bf12cc08323ce731f7c8215953755d53fdd509886ef321137b1fdf3","impliedFormat":99},{"version":"af12948563d3973b5f4c9a4ceda63c362758edb8c64412410ebd9c145b85611b","impliedFormat":99},{"version":"4a5d9348012a3e46c03888e71b0d318cda7e7db25869731375f90edad8dcea02","impliedFormat":99},{"version":"41ae8b7e49e35f92ace79c1f30e48b2938c97f774a4163b24765abe9fb84085d","impliedFormat":99},{"version":"0ed362e8185765e6ab2e251f9da6d0db15d6f9042d1dc69cdd6ecd0433c0dc8e","impliedFormat":99},{"version":"935a4d16a9559f0832c5f32852872c5bea91fa0f6ad63c89dd4461029b6f294c","impliedFormat":99},{"version":"75a6adb9a4ee5df5192fad33566b5eea99cc4dd0685f713e4f4a4d4c7555103b","impliedFormat":99},{"version":"e88c9554eb7f5f8e7ada1653e98612a1c77afadf953757b8c08c8fe2c993b462","impliedFormat":99},{"version":"2480b9275023f19d0b53c8858feda680a92fb1a98ea1e43c8570f1fb28930aa3","impliedFormat":99},{"version":"bccef2e4035020788934f608255058fc234b3ccc67bf9b888b7eb1ef3285e521","impliedFormat":99},{"version":"4ecb0eb653de7093f2eb589cea5b35fdea6e2bbd62bc3d9fafdc5702850f7714","impliedFormat":99},{"version":"69ed52603ad6430aaffbc9dec25e0d01df733aaa32ab4d57d37987aedc94c349","impliedFormat":99},{"version":"323420ca2dd68ae9922913d7c5ca44f36b1db0e5d58e4a9316d4121d5da88664","impliedFormat":99},{"version":"584cbaebe5928714465942169a1820461276944ac1e97c2062855b14b498b546","impliedFormat":99},{"version":"2d2e14e426fbae030b971ca08931afaa3cd36babd63482351e957ce404bd4dcd","impliedFormat":99},{"version":"96fa3b7fc7a6199abe026fa8456c6c2b5fa4baef96473fb7c924ee16c349dc36","impliedFormat":99},{"version":"2942e902cb59989e45f2a924357e73011f531d71972d0159efd557e16b1b150d","impliedFormat":99},{"version":"b6120275cc4fc44b151af141c6a5c41c9557b4b9d551454812d10713ddb63847","impliedFormat":99},{"version":"534408204925f12d5d3e43457f87f89fdfd062b7ce4f4496ea36b072423d56d5","impliedFormat":99},{"version":"953ee863def1b11f321dcb17a7a91686aa582e69dd4ec370e9e33fbad2adcfd3","impliedFormat":99},{"version":"c6fcf55644bb1ee497dbe1debb485d5478abd8e8f9450c3134d1765bff93d141","impliedFormat":99},{"version":"e452b617664fc3d2db96f64ef3addadb8c1ef275eff7946373528b1d6c86a217","impliedFormat":99},{"version":"434a60088d7096cd59e8002f69e87077c620027103d20cd608a240d13881fba7","impliedFormat":99},{"version":"40d9502a7af4ad95d761c849dd6915c9c295b3049faca2728bff940231ca81d3","impliedFormat":99},{"version":"792d1145b644098c0bb411ffb584075eadcfbbd41d72cd9c85c7835212a71079","impliedFormat":99},{"version":"30d0ecf1c23d75cba9e57457703695a25003c4328f6d048171e91b20d1012aa2","impliedFormat":99},{"version":"f216cb46ebeff3f767183626f70d18242307b2c3aab203841ae1d309277aad6b","impliedFormat":99},{"version":"fa9c695ac6e545d4f8a416fb190e4a5e8c5bc2d23388b83f5ae1b765fff5add5","impliedFormat":99},{"version":"fe69ad9a4b9c61fa429e252aaf63ba4bd330bfd169432de7afbd45a8bf2f50a1","impliedFormat":99},{"version":"f294be0ee8508d25d0ea14b5170a056cae0439a6d555a23d7779e3c5c28430ae","impliedFormat":99},{"version":"99b487d1ed8af24e01c427b9837fd7230366ad661d389dc7f142e1c1c8c33b5e","impliedFormat":99},{"version":"a384b0ea68d5a8c2ab6ad5fbd3ce1480e752e153dd23feb03d143e7ecc1ac2c7","impliedFormat":99},{"version":"e79760097ef8fd7afd8db7b11a374fd44921deb417cebf497962127b44ec9a37","impliedFormat":99},{"version":"afad82addd1d9ee6e361606205bbda03e97cb3850f948e53fdbb82f160dc43c7","impliedFormat":99},{"version":"5ee44a60fe09b4c21f71506f6697107f19a01c9842980c7145a4f2938d4dafc4","impliedFormat":99},{"version":"3729454e7f755d54f08bad759e29cc87453323f90ffcbb3f425c4ede7224cfd3","impliedFormat":99},{"version":"04fd41edfc690bb3735e61ee7d53f513cc30d2fc9080d4ca108fff642e91e0ce","impliedFormat":99},{"version":"c1cb04d8bc056dd78a2a463062cd44a3ae424a6351e5649736640e72697e42fc","impliedFormat":99},{"version":"c6c06d1932ee8445fcc00726917a51cf18fcb53d5a97697551542caa62906318","impliedFormat":99},{"version":"54dc4a604b09975a5c90b9e75864897c028ecc284c27fc2dbea68685a6526f74","impliedFormat":99},{"version":"3d971255e2e8aca864a90e1953f21c119b3b717aa484747a19f7834d1b2102f0","impliedFormat":99},{"version":"7b6261a4407295b1057feba24a1333923dee852f67fe3c329c990ddcfa20adce","impliedFormat":99},{"version":"c0fb891700244aada784a70d4cb8ebc93f3f608c9b87efe3858dcd575f101083","signature":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":99},{"version":"d12f4e875036b137e215f41e6da22bfee624bcf404a9f0524e54b074b0de5658","signature":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":99},{"version":"0e2f2eb3f6230f219dd724434f9199b1ed19f984e6a716eb4d1497a580969dfc","impliedFormat":1},{"version":"bd7a3221e25d06a9e26403a9c7e04a64bb69bf067d7e911b4d4f5b422858f136","signature":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":99},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"7507a53958042412220620101ad54d0b271474f0b629bc8b4e3f691f8b842222","signature":"2f3ee083529edd701ea0d830dac5099770afac93b436814d16cb4425983c0e09","impliedFormat":99},{"version":"409cf8770fbb9f099124e9ca744282ebfd85df2fd3650ae05c4ee3d03af66714","affectsGlobalScope":true,"impliedFormat":1},{"version":"78861dc70207b13b7719702e5b9bd7fa13f1ea0c7e9f5ba9be5ae647adc07f3b","impliedFormat":99},{"version":"28e3927aa156157a53385cb317959a4334467ee9f8c309f0266dc93d11602753","signature":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":99},{"version":"750fcc34e6bca3670e27bd6a39be8293a71fcc050ff8efcde8c9e07f08f94200","signature":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":99},{"version":"091b0f9115dea8db1e5c137406829f24946c781e34b3524266f105c6b82298d7","signature":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":99},{"version":"fbf5e3a058932600148d65c6612a236118e34c5f8b9c83fd43d5b7af95c6af22","signature":"07393678b7564af263c7a05c22d27f680194eb2f8be1835a727412cb2c9bcf77","impliedFormat":99},{"version":"1ca8b99461a8c9ff306e5a234bc12fa1ac6667a5d5b561e320c3efd77fbb24bf","signature":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":99},{"version":"e2858deea0a7b30e26f33e1909852b8e28efd9f377117b5b6470df18ed7c5a71","signature":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":99},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"110956b19835a8846be8b753107aa7628fba37a2a89dfa11eddfd57c60cb7a05","signature":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":99},{"version":"5adf68d61070988dfaf4969adcb11c70c4a1e4f9603e9dea5607ca580536314e","signature":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":99},{"version":"e301e812392f8d70297f8ef4fb2796bebdabd2bd2555dc6382e3e1704bc07062","signature":"9ea2b1188610ac5bfd0bab8c5ce454ec09d402e0a7c7a8c52fac937783fea36f","impliedFormat":99},{"version":"d65ebb2a088e41543f6f1e31862fa452cec5644f8380c1d1c43a3cb145620e74","signature":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":99},{"version":"552070ededf911a610a485163a2c104bc7d85fd2e114710d7bf8b3d824abbd27","signature":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":99},{"version":"4b19ba6f8326d4730365be35ea7f6103fe587c36603bfc667ea3dc467208ceb8","signature":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":99},{"version":"24675edeeffe1bdffa660e3fe8ce3caf89a2e1218036ed86cc57258e503deffa","signature":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":99},{"version":"8b61608c154f87e13c88b21b5208a3acb906ddcee5e3001f3b27ef13703b61e8","impliedFormat":1},{"version":"11396dc31389eee63c305d3838c396a0b524ce07f882432f5f51eaf8b044470e","signature":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":99},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"1f08154732cbb895c1193433fa77e792982b3901b36d9306e89effc1244534b7","signature":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":99},{"version":"9a5ab184c8267d64d301e59dc7f0f3ab2618c01a34ad1921cc9cfa460fa2850d","signature":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":99},{"version":"c9e920fa42a89fe77c85a0652d270c26f7acf4ff42ad3164f4ab9f3b230fc12f","signature":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":99},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"5ae7eedc370f165c800ce7f31676c273a51716ea0848d69823e308baf6a0b9b4","signature":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":99},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"1fd918d079f726c54a077d886967ca2ec8108f453189d9ef66bf1d4e72236743","impliedFormat":99},{"version":"5f31f61b497fd98b889a67865516a339b52a846c3e1e15406b1137864a6c444f","impliedFormat":99},{"version":"3d46e269720a54a3348bb4495a4f4f520f1e1b23f5c9a017f98fc87810de6c16","impliedFormat":99},{"version":"d9518fe8e1e265b1088352b9117628910a9f251974a2abc2aa904f7f4f71fa53","impliedFormat":99},{"version":"7ea29ad18f6242a9f51f3003df2323030d3830f7a2dbda788f52fd1da71bfe36","impliedFormat":99},{"version":"129a1cd246cb69ece363ac69ae257d426bf471cce3cc5a978397d5143cde8c2d","impliedFormat":99},{"version":"04848d258a86d4bfaef951ad304251f6c917408f89fad419e28ce6c84f0a1674","impliedFormat":99},{"version":"e44a9c7bbbfb42ee61b76c1a9041113d758ca8d8b41cefb0c4524689766e5a9f","impliedFormat":99},{"version":"1e9b3e4e3d802df7b85f23318ab4dde8e9a83fbae6e197441d815147067d2fa4","impliedFormat":99},{"version":"0affed2881f6bc1652807c4cb53c87b51255995fe30a68dbcb7127114ff426b3","impliedFormat":99},{"version":"46b2bff13c747143a9a39614cfebc8972c8e1ef3a140139314f454a04580327d","impliedFormat":99},{"version":"23b03a7cf8d6a63de30d7f104f6367127dde524181017e1d8879c00d999dca05","impliedFormat":99},{"version":"5c489290b1db424ecb914ebb7dcc88280ddb7f4dbd1a1a7a16c1559e7d98f195","impliedFormat":99},{"version":"69018d625163e38107ac82f8a9ef723b601b600d3ca0140a35a9c6eb94b552a3","impliedFormat":99},{"version":"867c654176fa4def1058ee8f50c055e58d6a15dedfb0567439986e836070cf00","impliedFormat":99},{"version":"9402092f0d7dc8552149b21e3cc5f4010040c8b73b6cee2ca5bc930ddc2e0f10","impliedFormat":99},{"version":"74dd04af9bbe8c6fdfed2b51563c3cba2c13137b0268e02a48e9c6cf81bd804c","signature":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":99},{"version":"24e644e0c0efd97329b245d8def25c49faa97e64204ff3841e886f77cc707613","signature":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":99},{"version":"5bfc8b4482b0ebaa2a6dcfb82cb260b28f1ea9ee3e631370f57e6bdcd9bf4e70","impliedFormat":99},{"version":"1bc2c129f1a06adc1790adb22c13c8e71c2ead456c0a98e72f1e2d7f27047a0c","impliedFormat":1},{"version":"52842ede098f0b8a89c12c7513eedf5e6eb562574192956d342b70821799cbaa","impliedFormat":1},{"version":"0cbdcca7c3520ca6ec3f9a75acbf3830e8cfaac71059dfbdd770db8f1764f95d","impliedFormat":1},{"version":"f64094fd4216e94abe989e65f7d3250b66137279451439777a8fddb04fac771e","impliedFormat":1},{"version":"32935a7707e31e7d5741b4811d9afa0cb95153e508c05b96dd3675bcd4d57321","signature":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":99},{"version":"2ec851d31eda764a1c9446542f730c8398329baec30b94ca6775db75d1088253","impliedFormat":99},{"version":"c5d4b5694ca97080a2c6ae206b879c8f579f81971396494370a4b4edaee264aa","signature":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":99},{"version":"86fbffcecd36078df1aba97634b5e05b670c2d3fdf88cda28af363235341c498","impliedFormat":1},{"version":"0bcc3c16704b4de46a314377f51fbb9597c0c7582b627a1cd057694e21e1fb36","signature":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":99},{"version":"b0ca84f52f51453c41f50fb75468487aa831b21b03cb3fd58acc6ff1441664c9","signature":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":99},{"version":"39089579500c24efe2d519a14d5ac61cd060fb4fac145e153bd4698069285fc9","impliedFormat":1},{"version":"e82a51d5498c34f37bf96981223d5aa0b5051ced754d34b9747b1aa8a4f2174f","impliedFormat":1},{"version":"7dca1745afe35b6aa588e0de49d9e1059fc2ecbc4279e8ae0f5b64d83c05251e","impliedFormat":1},{"version":"83e01ec16b5a8424ba35047471fe772e4fdeba7dfa7884d9ced04dd84c01a26c","impliedFormat":1},{"version":"2873f7d3fc801d897c9177e8bcc417d348e96c76490f55cd7237e87859af8f12","impliedFormat":1},{"version":"2f2b201944cde220c32c5241cc9cabf11916031f521a281045ca224de6dc6a3f","impliedFormat":1},{"version":"ede088b09b00760b9ce0997bc1669e25bd155241f369faacf09f3d810dc0ede3","impliedFormat":1},{"version":"f1eeaedee293c60b9db75b7cbe374963f7875602645193d94673a369bd06ba8c","impliedFormat":1},{"version":"4c8e3ac2ef84ebeee736b4a712f8d418168872ff428d16b17d7872f3e8f7768b","signature":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":99},{"version":"fdd43ee468482642745df98fefc6cb6a2e43a31820c73ca5374859f1f9697cf4","impliedFormat":1},{"version":"a8067ba70f56a1bc61cfc53a0e6bf0395d84c6a4b592a5462ad60acf7b9f60d1","impliedFormat":1},{"version":"716922a8d29406d301d37c2bef6565bd17e3abc071a44ba5a0d52397fe6ef4bd","impliedFormat":1},{"version":"c7dcc33644fa9b33ac1a6ddf20463decf4c720289af8539e584718cb5f4597fd","impliedFormat":1},{"version":"e1531f64774c07cb25a541bca4fa42cc563ad7e21944c41845195bcf20f5032a","impliedFormat":1},{"version":"ba2e93d22cfdc1569b7953d9d467151e2d2eccb490bee74317f1f4f2333b13c7","impliedFormat":1},{"version":"44d63aa3fef04a23e467d73eb8c1e4974e9027a56a67581e4e15b4024af0667d","impliedFormat":1},{"version":"32b789a883704fb6be047f8a8f600685933eeda17f1ca9898ec42af0951bc5b1","impliedFormat":1},{"version":"b0f25d7f2e82edf76b2c8a4423defa26747483d6e1e772ac8476d5b78f69fe4d","impliedFormat":1},{"version":"51e4a1da037eac1dbb909891d7db4860ba80866159dc6813f737fe1eb33ca9bf","impliedFormat":1},{"version":"4c39806d4d0cf15b0fe29a74d0c3645508ccd51bc4a33fee7782a843f3f0e4b3","impliedFormat":1},{"version":"d82c4d30bf153c88224df1ee76b595ba52b0dd6bc3f09c8d31a52ef751ef0052","impliedFormat":1},{"version":"1705b40e0698ec8a6e844ba21fecec6b2fa5ecd6d126dbf7bfa8bf69e77b741c","impliedFormat":1},{"version":"b72123b1d2bc40c98869b15dda3af4afa153dfeec5c1984ec3fc37b19b2138bf","impliedFormat":1},{"version":"42a1a75a5b70388825e244af4ab7c268f052a021310385fe191e8ee12ed6d696","impliedFormat":1},{"version":"fe9706a96369dbcf8064a5a670e70112db672b17b5ac0e609a7379871db4b564","impliedFormat":1},{"version":"09d9166970b3c0a143ce39bbab9260823baceb8a24743ed55c9414aa4367a141","impliedFormat":1},{"version":"97f2eb8221e407a79c3c25a748592e1ed63b601236fb4eec8480a186c5471ae2","impliedFormat":1},{"version":"120d183567e622fcaf1654355cf3ef6b2162e45b39389916e82bdd82444da76c","impliedFormat":1},{"version":"22759dfadc7f47badde31230a0a34ba6810f88b29ff314fb5e0ffd5fe91ba379","impliedFormat":1},{"version":"1789bd0284be2a33aeb0e2a1dfd818d11cef707e06359928ff545c0f92fc08fc","impliedFormat":1},{"version":"c81a187472459f2e3dd935a2eebd77cca096f5159c6b877c2eadfcebe946d795","impliedFormat":1},{"version":"97d48f5c823e3c84ae30f8de0525afe256b5af9cd2df5fde8a1d96f93b93776e","impliedFormat":1},{"version":"080993c948d0c440310586c45f5b37544ee9323306b7df0a41384ed55061313b","impliedFormat":1},{"version":"4764e86784bb88b8f3573279db3856c50a03e2b8bc184c06a40f897bff9d7e83","impliedFormat":1},{"version":"027a4481143e6e6e28440b7f79e34ec1fd7bb0ddfced3d701694a1940c19672e","impliedFormat":1},{"version":"49baa46f3bbffe0cca4177d5feddd98ba3b25d929d02cc41705d758b1e7f2472","impliedFormat":1},{"version":"dc11ac5030092409dd3183dbb24174beaf35739b9b5c90f268b3cf82b9453708","impliedFormat":99},{"version":"47a2d2c4865b43051a4eca4fbb40bb9fdd5ef81656de8f70267ac31f09f95499","signature":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":99},{"version":"d5886b9467c8dda8ed0821612dcc6fca9f2d832512a8b937b3484d93f3636d1a","impliedFormat":1},{"version":"53847fd61407f64b298303c3dacc61c5ebe3879c03be8f4a2facd1380d59d563","signature":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":99},{"version":"f406b9f28e270b8efe5b3a8c207e762b543a6dec477c2ade3c7ec6f291567800","impliedFormat":1},{"version":"dedeab999d03fdfde33bf1c111c323de619d091691c00f5fd6b685ceb91d8fca","impliedFormat":1},{"version":"9e73494038a8349e540c4117bb4a323a5c05890e131242a49d08d4a158d1204b","signature":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":99},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"378ad00f3ab6e8aeb7fa5003fd5320be7aa0e5bc9f9d63cc2f9ab03db0c0f426","signature":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":99},{"version":"a315a141f52f92232e0e7756f77cfed8e3ecb031317166711fb5d906e404a2ac","impliedFormat":1},{"version":"73a3d78b99633e9bdd1c325289268e714e1bef4ebf9d596eb20365cdb78f37a4","signature":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":99},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":99},{"version":"5bd0f306b4a9dc65bccf38d9295bc52720d2fa455e06f604529d981b5eb8d9dc","impliedFormat":99},{"version":"f30992084e86f4b4c223c558b187cb0a9e83071592bd830d8ff2a471ee2bf2d4","impliedFormat":99},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":99},{"version":"a8c78b87e93320a306dd9ae810dad6493b912553ca36432fe5002f06d3fa49a5","signature":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":99},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"b463566a97071e04a5e82e28574512769cbbc7248a57607c5e4da8ef8936496d","signature":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":99},{"version":"f5d85030552240ab7188ec76510c200677e62e4f32adfdeb008dccaafcf46eac","signature":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":99},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"2315674631123ab12c9869c9f9621a4d90d3d5de60ca5d469eb66e908a836c2c","impliedFormat":99},{"version":"acf8ad22752301247864f14024924665dfdbe0b8414696676c4d8a39321d63bc","impliedFormat":99},{"version":"4c7f6be76cccefccf0d639f0d5edd365c881ecf386dc0d852d111105bc432067","impliedFormat":99},{"version":"0fd3fbc2c8d11873d75aa933569299294a212e24f8e07f2606fe4554e9708da2","signature":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":99},{"version":"b7d4cdb253532e6a4d9fad633190f30a866495f27a142d878ee4dc8d7e732036","signature":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":99},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"4ca0057c2803cd59ff8cc3f23dc879cdcf1e694898b0b396028a112bcf6150ed","impliedFormat":99},{"version":"1f3bd4b5fa06f1c7cc7da3f0bb09d111bf2bb50242d41f56a0cdfc5f042d3c8f","impliedFormat":99},{"version":"08adb105ef060445029c540b67ff1c5fc9654945f119c20889543663535b422a","impliedFormat":99},{"version":"06f24c39cb33b45c5854d88964c7ac97acfc33970dbc8393b52d6aba6d996f24","impliedFormat":99},{"version":"96412abfa516228b7c365e16153b1bf01f8fe0115166c907af7f8de82ab99b24","impliedFormat":99},{"version":"732dc3edc2ab006e9e02dd7fcb3935a83ae11ed7058b7bbd3720a585cae59889","signature":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":99},{"version":"c27e732d38889b693247e1de37d0b59aa19206666c60197af53e5dffa04306d5","signature":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":99},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","impliedFormat":99},{"version":"4f745bbc5a0f8b98da40e48cfe714370c315084b603b3d62ffe4286162c8fab5","signature":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":99},{"version":"28c0439c4559ab72880e3af969d5b2707beb257fa0afe40689c543774fa3c1c1","signature":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":99},{"version":"d3c18a71ea870377f5943d765774b73d0ad5c6f2f6aa64630d864370bf4cc3cc","signature":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":99},{"version":"39c842feead8063841390a224f214938eac642cb84f374482a12345976e101b4","signature":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":99},{"version":"5aa5598f4de93ad253cbd314a7c470da4fb796adeb832f3cb9ac752e867b173b","signature":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":99},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"5f808ff2bf2dcbd57cc17074ee1da5d958704be942b0a7ac126aae49aa453c14","impliedFormat":1},{"version":"0cb9b8a024cfd688404753f22172b72129f366e3fc23d1a73d072698cfbb3572","impliedFormat":99},{"version":"3cb92b03358a7758156d08e7335f6d8989e7d2ad0484d940d1d159e719bec6fd","impliedFormat":99},{"version":"db2d78cb15bf3448525c97ebee086c8032249015fe483c7ba0d17922e54c3204","signature":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":99},{"version":"6cbd71f9696f4ca2bf196759d831dfc188f35c9d048a795891289e4ddebc0431","signature":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":99},{"version":"911f5c06cfd1a397cf9c1ff5a7b2f9d67ca6df852a7c1f472fda34708f049049","signature":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":99},{"version":"41c141589971f1d393db7bfc7cc37212b75e4eff94b8c3c68ea7b3117064879f","signature":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":99},{"version":"c68eb17ea7b2ff7f8bcfe1a9e82b8210c3112820d9e74b56b0fbecaab5ce8866","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"a2d9f1cd1d9cbafdb2d808b8b823e7e2bb1a5e0d4be381f352985ef35aba2a83","signature":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":99},{"version":"a50d1b1999acbabf53356fdf59a87f9f19668fa899455f1ced93848eda010f0e","signature":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":99},{"version":"4acb7490f65fb1a129b89bb5a4d4cbbb350ade630ab2bc0c274233cc8b322f9f","impliedFormat":99},{"version":"5aabdd8954b113593293fbb5df7c1d359b0c9e5ecfb9c3b5e7857548f0180326","impliedFormat":99},{"version":"f2fe033eb7a514819c240b9b94e20397b658402386fc0074244813a05446ee96","impliedFormat":99},{"version":"da83f0cbaaa8719d0d496a36efe871e609329eb54e03603a27c0c3ee5d2315a8","impliedFormat":99},{"version":"3899995b17f1b37baf3f5733f69910af170ba6de932de0e155a99d6f1c2d3f6c","impliedFormat":99},{"version":"c81a7cb743a6905675f5e1fdee46d05a0a958e10579350d06c390614034f83de","impliedFormat":99},{"version":"8d6570e5997ac57cfa535f8a26edc967388699033315e301b5a1e03c2f88741f","impliedFormat":99},{"version":"a625467141ccc971a2a0b4edf41bc4cde7375d9369d1ede7366792d328d1fd2f","impliedFormat":99},{"version":"7c20b6004a1bd4f6934cee8b85f51897018fed52a64b166400f5c25ee3fdfbde","impliedFormat":99},{"version":"43aa9b96bd6d8d2a6931fa18a6395efe988d54e3433bbce292c2504085bf2a78","impliedFormat":99},{"version":"006fa561643ce29dcccd8e1ab4ad1f1c20144db09b7a68758b03369259dc756f","signature":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":99},{"version":"142211080daa08b9b55e623a1cd25e5700b4791a3dfbb3fc7cef01fe8ea525b8","impliedFormat":99},{"version":"0385cc1a19feefba283a4ebf3d218ca4b4da3d2377c14bd4bee231fdb5651122","impliedFormat":99},{"version":"5a631dd1e7d47386d9d9d4885ecfd91c81473599ec21e4e85dde53d7606ac61a","signature":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":99},{"version":"a7fe7e88c50608567af53c49d3c59ea5f33bf5f59126d67b2a25f85eb41297ba","impliedFormat":1},{"version":"80559fc72ab564f9b61c24e61b049d8c6ae1e269bd3aa97b10b269d1d6e32afd","signature":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":99},{"version":"ffa08aa6d8afb732ce007e5a56eab72377d47fec3cb00f257fea5d5d587d81c3","signature":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":99},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"361685e1b13e75583717b22dfec48705646a4a465fc8eaa4c14660ef321f722d","impliedFormat":99},{"version":"64e3abf739734d8cde8004b9f54264cd31322e2c34ea812e6c0f41bb4d22f8aa","impliedFormat":99},{"version":"be90405159d49371fc69c9ab170184b07370b938a725eebdcabb8215d3cf200b","signature":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":99},{"version":"ddbff04edde6235b674b1b7787b6e6b51e68f82b273c9e8a1f4f5483999eca12","signature":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":99},{"version":"6e17e5e9d06b2070521b5734d58f147a85d75d4b7c34f5710cb1e7550aa9b08a","signature":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"ef38456e22b0bffcd9ff28dc1a7138e84918a212e6960dd620cc3000341c0ebe","impliedFormat":1},{"version":"07a1cea63a067c0845029ea6e1933af842783efa3006510f504b1f09bd2ebff0","impliedFormat":1},{"version":"48ce8d49a17cdd6dbb687c406af1caf4bed54fbe40ff14c6c505ccca6176cd21","impliedFormat":1},{"version":"3cd6ca36b5729325dd2eb0359eb1e2aed4f8cc73c3b8341e1733dfeee99fbeeb","impliedFormat":1},{"version":"0e8edbe744dfc3ce65e9fa2283f1f0eb2c0aaaec4df19765f51c346e45452cda","impliedFormat":1},{"version":"e8f32bdfbcbddd21331a469193a5c63c7b5e0d80025e649d91f833869bf5b7aa","impliedFormat":1},{"version":"1bea3584ffe75ae8fa970d651b8bbd7c67a75d21df6bd1762dc2abea73012b66","impliedFormat":1},{"version":"bf0e009524b9b436156b4a326cc3e92f1fdcd16ce51d119c94e4addc910e645e","impliedFormat":1},{"version":"52e0c1007dea40e9a588f22425a80250020ef0cd9b4a9deb36f315e075d1ab40","impliedFormat":1},{"version":"2c6ecd1f21dc339d42cecf914e1b844cef3cb68e3ec6f0ed5a9c4f6a588beb92","impliedFormat":1},{"version":"653672db5220ac24c728958a680b0db84c8d0d0f7ade5d78dbac72035d9ea70b","impliedFormat":1},{"version":"3e689acc1789753818d875db16406686afb5b5e689dcc76d8106a960016f6352","impliedFormat":1},{"version":"d7a7229e7c12bf013834713f569d122a43056a5f34391b8388a582895b02c9e8","impliedFormat":1},{"version":"b811d082368e5b7f337d08f3e80be3d7e4c0c7f0249b00f8224acba9f77087e9","impliedFormat":1},{"version":"c26c383b08e47dfbd741193ef1e7f8f002ac3b0d2f6bf3d4b6b9a99ee2d9378e","impliedFormat":1},{"version":"75473b178a514d8768d6ead4a4da267aa6bedeeb792cd9437e45b46fa2dcf608","impliedFormat":1},{"version":"a75457a1e79e2bc885376b11f0a6c058e843dcac1f9d84c2293c75b13fa8803b","impliedFormat":1},{"version":"0e776b64bf664fffad4237b220b92dccd7cc1cf60b933a7ce01fb7a9b742b713","impliedFormat":1},{"version":"97fe820ad369ce125b96c8fadd590addae19e293d5f6dc3833b7fd3808fea329","impliedFormat":1},{"version":"4e8a7cea443cbce825d1de249990bd71988cf491f689f5f4ada378c1cb965067","impliedFormat":1},{"version":"acca4486b08bf5dc91c23d65f47181bd13f82571969c85e8df474fa6bc5c2a88","impliedFormat":1},{"version":"47244c79b80aee467a62c420ef5c2a58837236d9bf0087e9d6b43e278a71a46f","impliedFormat":1},{"version":"971dc452ac09307ee049acb21bbd30a82d1c163377465d6b33fd4d677ed2385d","impliedFormat":1},{"version":"226b58896f4f01f4c669d908f32c657bcab1a83f3aebb2f3d711a4fe7ba2a2d6","impliedFormat":1},{"version":"171df77317ddf15dd165eafd18800f722ba0f774802545187f78629d3210be16","impliedFormat":1},{"version":"5d85ddf06bed9df0a9b75ec83723575d16343727ee5ce3df1b3a914b95358cf8","impliedFormat":1},{"version":"9a447607a90667c6db7737f30d2429f6f06efde55a47a2a3eeebc52e866d153e","impliedFormat":1},{"version":"95b74ccaa6228d938036d13a96a47645f9c3d3b707c0b6989a18d77fd62447cb","impliedFormat":1},{"version":"856b83248d7e9a1343e28e8f113b142bd49b0adece47c157ab7adf3393f82967","impliedFormat":1},{"version":"bd987883be09d8ebe7aafed2e79a591d12b5845ac4a8a0b5601bdb0367c124c0","impliedFormat":1},{"version":"75ceb3dc5530c9b0797d8d6f6cbb883bb2b1add64f630c3c6d6f847aae87482e","impliedFormat":1},{"version":"efb2b9333117561dd5fc803927c1a212a8bf1dd1a5bd4549cc3c049d4a78ec63","impliedFormat":1},{"version":"ef17d2b0d94e266d4ec8caa84010b8a7b71e476c9cfa17e3db366f873d28445e","impliedFormat":1},{"version":"604a4451df97c7bfc75846cd1ed702129db0bee0f753658e0964d67619eea825","impliedFormat":1},{"version":"b9dfc4e6c69b1d60c7c060fb7d18951ca50f01fcdb46cf4eed23ca7f16471350","impliedFormat":1},{"version":"6911b52e74e60b6f3b79fc36d22a5d9537a807e16ec2e03fd594008c83981ab5","impliedFormat":1},{"version":"2551daa9cd45fb05ee16cee6282892c14a92e49a2d592b29fc9ff6d4ceef7dc2","impliedFormat":1},{"version":"5ba862c2b8f6fc41d95b417b19ed28111a685554ba2bac5bcf30680a92a46f26","impliedFormat":1},{"version":"449babe88138e129aef94c1696b527898f9e13ab62bce129daee0e85266e48a7","impliedFormat":1},{"version":"051fcc83efe52405a750b576b5aedffcd32db3f88b354c31e9a76e87446e5ab8","signature":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":99},{"version":"f81ff6704eaac628b003f30a95f3e389557705f7f98e713b64f8ca9d0932c731","impliedFormat":99},{"version":"46978e49fed98a0cf4d492952a6c4c51a62dc6a67e0215f050782b95a8be975f","signature":"19e7990fe2e1e0111f6bd9cb5dd921c0db9cccc8a435b314eeb1c2ea8b8b8425","impliedFormat":99},{"version":"30fcf5a01a69a33f236aaea7ec1cadfa40578cd10e22b2ce3de79bce0494c73f","signature":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":99},{"version":"1b52c84fb8bce45b4addd8c9e68f5c46affd9cae1b3c37fe2110bb998f594ffa","signature":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":99},{"version":"d745002b281b6391345fc4e2ae1f75d7ebc30331f35f43e45ac6ead0947a0ae5","signature":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":99},{"version":"904ce043e49929bc608ac6bd2b45936dc3941bc01509173e461acdfbf564db91","signature":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":99},{"version":"d639d85e94bbf437e5668f6e6ebeb90cbf64f1afbb59df296b93b6654582910e","signature":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":99},{"version":"b700806e86a2c044b67334a3f51923ece81d9c679d422b6abe1699137000c2bc","impliedFormat":99},{"version":"62183689a38a3cde5880373d8310098c414a8640dc057215b68506232a637421","impliedFormat":99},{"version":"73904d20e02ca3794be6a05f3e63d27222f9168b2124116fb34ffe54047f94ba","impliedFormat":99},{"version":"17c0d4e79776d9b9d9eed51c44f5e584444c21f992d22866d6b4434d286a8d31","impliedFormat":99},{"version":"8a0e7ea4ffd59d904080127df9efaea6a5bf1beea50c469b8880a17bb5d4dc47","impliedFormat":99},{"version":"0cc5f3673dfdd4de175355666f84ff033f0974ce7d2331cfe39116a630d355f7","impliedFormat":99},{"version":"0174d48a0005affed0c6fa1aa35757732fa9e5802f082704fa9f0bec251ab391","impliedFormat":99},{"version":"3d9450c6a13228a5264fc4057e374a8128674fae1e8a7ed6813ee9d636751212","impliedFormat":1},{"version":"7e818b2ee0941eafb351ed6c7580f3e042d0319d7766510eceabb6fd7a812e70","impliedFormat":99},{"version":"3c8387341da109d7b4770e672f10e9fcc151413af1c96fe0cc54d8b8de1755d7","impliedFormat":99},{"version":"740dc918da44408780199b5611b4b9c800ba690b31a18f32b38af286d5e2ff45","impliedFormat":99},{"version":"ae93a198a53e617cacb40708f2c78d7291a618c6794ee2011040f3ac47cbedeb","impliedFormat":99},{"version":"d1178ed103c371b486cd0e50d8f3944a35ecdde80dc04f8dc284754a643a9220","impliedFormat":99},{"version":"eccac2091ab74472cfc3cb2ca3eb14f7c78b6dce9808dcdc5ec8977b919e8933","impliedFormat":99},{"version":"216a61b49fc97b8dad1bb456870f927df8ff12e25307b343f19aca5c0bcb8060","impliedFormat":99},{"version":"d740b9dc0696feaad081e29ad9cbf4d5b8d16c50910c5d3bde2f048d2b89120f","impliedFormat":99},{"version":"41984cb85e4297f84e32c89236d2c8d2431d83dfabb9ac1e928d3222bddda998","impliedFormat":99},{"version":"52044bf0ea4d3a38e3393359c0e9d2ff791d353d88fff3b9049839196e1d8254","impliedFormat":99},{"version":"79d95d8a86c0244ce8087d01d8cfcfeb2b3fa3e23a6767eefdda3819f16fc7ea","impliedFormat":99},{"version":"3d9ee67d9168fc1ac4810d250fcc280f4165a9f1df1d936685b0734242f471c3","impliedFormat":99},{"version":"f7636abd6184039cac4fdda16e8d04eb9b3de4cfa5c766fac1180d0b258e7927","impliedFormat":99},{"version":"0a53c00231d30716ff431731bcb424e318b1f9829ed90203e14c8b97a1e946dc","impliedFormat":99},{"version":"9dd2fb90fd77b881f2d691880bbebe0c0e963d51f28b3beb029da43c2979347e","impliedFormat":99},{"version":"0cc4306c37e7b23d7a06863ec79051588f000263d7369a1d7fab8806b48b8444","impliedFormat":99},{"version":"9798640514d64279f8efa6cbdee6d60acae872c897ca7bb5aa9f4f5dc91a8349","impliedFormat":99},{"version":"7789df8c14b52039bc312ed321381091265b689c59782afb29e9d448b67539d0","impliedFormat":99},{"version":"5b71580a337dd56aee4fe3af7622bbb61f6274973ef9d4da175cf99860232dba","impliedFormat":99},{"version":"6899e0447596c759a68a1662f0c021f0975890daba35b1e39e89483700fdb261","impliedFormat":99},{"version":"90b3b486152c8d174395cafe14ed99370cc1bb6ca18259f92764ffab622752fa","impliedFormat":99},{"version":"b00b9639023977c5ad220738df760dd3e71313758d8296b40b4679b55190ec13","impliedFormat":99},{"version":"71aa5b558ee187eb95ad91ed2f3b4fa46b80f7057065c6b1a4c4a67381b89c45","impliedFormat":99},{"version":"23880d881af2c07702f0c9172476a8a4eac30c5f6529e8dddd999354ea7af9f7","impliedFormat":99},{"version":"cfa1883eb9f79a776b0188f0985fe250bdcdc4ea1da304e4a8f8a577a02fc293","impliedFormat":99},{"version":"f0df1db171b29575cafe8a41566d9e4ae1202bf0a6c7346e57870e1fc877d4bd","impliedFormat":99},{"version":"ca8e41c4c03f4b4e246c4b8a94a295bc34533b15756d18ff875bfe48336ef02e","impliedFormat":99},{"version":"bc1893451b0d4091c1267502aa0cde0719cbe00a108453bb70ed1a4244734d97","impliedFormat":99},{"version":"d73a5bcbafc2804700c17760be1807f601bad71a97e482a8f7eb44472e0cc69d","impliedFormat":99},{"version":"8a5c11af0db727cfd9b4fe0397bcf35b40729b4fa21c6f091fc0395c668d5166","impliedFormat":99},{"version":"4de0b7c895d6b8760f0d10a8a36758af730efc6a6c1434d7d9d17beb4bcea21f","impliedFormat":99},{"version":"fe10d356b9b2fafbec4a34f2e582450f069c4288f95da70213dd13db09b3074a","signature":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":99},{"version":"6070a17ce3ddb9c6615693b6beed6576940395c37fc36893311540f4923dc6d5","signature":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":99},{"version":"0782c58a411b4a934e11a389c09cef811876da5c7c768c1548648a4d5ffd0a1c","signature":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":99},{"version":"d10c31a6538d25bfde96067874e1dcda7be4731b267c3cb3510ab9498c6c076c","signature":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":99},{"version":"a3f5f1a31c490086b6bb8582de2ddce8d37332c6c85ba1c0cd868c08d1a8c7d8","signature":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":99},{"version":"b3370b7c2545cdcfaaa814f1690dee974fe2a818f27d9bd88f9fe6f4dcd86479","impliedFormat":1},{"version":"c9f05ebdbcba03c600fe70369829f3d7db3833ef5c81466d72b1f398e5ef65b2","signature":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":99},{"version":"1275ca930740bcf85b0122be6ebbf6583f9de8b608ab9f48f1ef6afac8e59288","signature":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":99},{"version":"cf99e01e761f57f68443ca3953892884f617776b4447ef48f692dbc1aaeee34a","signature":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":99},{"version":"1d3587915a10cfcaa110429363a3aad515bea565051ddca80d6db538e1327280","signature":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":99},{"version":"45320cf06821afd28917fcf19bc63dbafd88b57a81e9bb27af8e06a607b15f0e","signature":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":99},{"version":"1660f8f6635f9b5fc999af6f9c979beaa324c44638596323e15226e91c35b428","signature":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":99},{"version":"c9ceb2af8fd88b21d548e8b1a35e7d336f806fc8071677e5f0e91c99320c61a7","impliedFormat":99},{"version":"2d0abfdf9b8a84c31c0728f351993da5238366d7206785336d7fd8b1f751a4af","signature":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":99},{"version":"115b314fa690280fef66dd579fe82fe301e999c933b038c98908e5622bc71c0e","signature":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":99},{"version":"daccdfb58da4a8cd4098134fab5a01f88d8e5a064330de47757d9be8b07fdc88","impliedFormat":99},{"version":"04a50464661fb0a629486fe4e8a7cd8df740ad4a3aa3d36cb7272fcaf37248c6","signature":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":99},{"version":"c0717bd55569bc1c588edd862b6d76e94f4c6cc95021aea78382338209ece379","signature":"de736d948b57d9751dae087c64545629be50b695695945dee3a0f122000d809e","impliedFormat":99},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"318dcdbb8fe0120b19dcbbda95e6ed53f7898901d00e42c006e8f21eeb09af73","signature":"15b8576006de6329b84266bb1e59fa138a53389770fb1bd7d295cbab3a283304","impliedFormat":99},{"version":"7b139df2366e1b6671356404cb22aa2fe5bb0a65f8e477229e33cf9cabfa6b65","signature":"e5cc1245441aaa2db511ed3a913a9b7e2a40f11364eec71e9a7543372cf2204c","impliedFormat":99},{"version":"d37853b20dbdde61d7200c5b7a186224a39deb15ec3ee9ee7baa52b33cbfb3dd","signature":"89728b933a73003bafdfb6027441bdee818fb08973197e3e81d0c4253c83824a","impliedFormat":99},{"version":"34c5a4cd69bf69726f9b7207eefe86880d3b5474a010b603adee62159917d343","signature":"f4db962be62f10a5a0ce4d1566b30e71b6f13bdb7f83cbbe7ece304d8cce3029","impliedFormat":99},{"version":"3012fbde7048d7aa90abc408f313fb21bb5299a2632a75aef085e85f1e587c6d","signature":"c5e22177c3a9a422990f3c73542a524d90008005f4227b5ea57cd1f78e2a6d68","impliedFormat":99},{"version":"7e348e5601f7ac767a605fd30c2cfbfe9eb06780c70ea3b77dde87f14619b7b7","signature":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":99},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":99},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":99},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":99},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":99},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":99},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":99},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":99},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":99},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":99},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":99},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":99},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":99},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":99},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":99},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":1},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":1},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":1},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":1},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":1},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":1},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":1},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":1},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":1},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":1},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":1},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":1},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":1},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":1},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":1},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":1},{"version":"4e64c49fc225d9e24302f65a6752888b42907ed055ac68d97ca1f5cc56135d48","impliedFormat":1},{"version":"591ac6c3151c941cafeafe26a15af5edebf94c190e3274b46a4f35bd2bed9865","impliedFormat":1},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":1},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":1},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":1},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":1},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":1},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":1},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":1},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":1},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":1},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":1},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":1},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":1},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":1},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":1},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":1},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":1},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":1},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":1},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":1},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":1},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":1},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":1},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":1},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":1},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":1},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":1},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":1},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":1},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":1},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":1},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":1},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":1},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":1},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":1},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":1},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":1},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":1},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":1},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":1},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":1},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":1},{"version":"f9f89ce15a9c4a56f2dceddbad9146711fc2e11f027f94a09a1b7de55da14696","impliedFormat":1},{"version":"ddf892c80b33668602deb58874d4d7f07b8cb9ff8c9b65be7396b435d95b2b10","impliedFormat":1},{"version":"2cdecfe56eadc30512544964ba908ddb9ff0b4a3967f6be424e409d23552cdcc","impliedFormat":1},{"version":"7090b94fc3c6219e214d6b2807b3c650fd6b99467b338aaaf42d36f158eab51f","impliedFormat":1},{"version":"2b383e3969f359b85ec4c3e3af6df1bf5827736f17cd74525daed86b73f8ed12","impliedFormat":1},{"version":"c1238acb0701c57e0f0f936b820eef90ef840bccf951d90c6536199e4cb9a7e7","impliedFormat":1},{"version":"9d11c4d45161f0b1afc74196f2f2bd88e8c82ad54ec057a205f4a2775e72b2c5","impliedFormat":1},{"version":"94a92cc92d97b95a54ed9778722601b48f4b21988eeded3782093d8d7350365a","impliedFormat":1},{"version":"505206881764364a89be881369d183e7f2e8ffaa8c93f773b73ba70799d21fa5","impliedFormat":1},{"version":"c7f210220b620dadecd950fa63dae87fea39b5a7d763d904ec64d0dae6d6c556","impliedFormat":1},{"version":"f85c7d2dd3d62a555f6b4391758b77768d13dafbf249c52d6eeec5dec1742353","impliedFormat":1},{"version":"1e3cc3492cd8d0743f77a5087e412078d8db236873b60332e7c9cf19ebd0f77e","signature":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"f13b3a1249b976d047b9506a95e8f70c016670ddae256583b7a097e14ec1f041","impliedFormat":99},{"version":"014ba72e2add59d6d2d2e82166647982c824639e2902ccd7b3103cf720a0cb65","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"499b85df8e9141de47a8d76961fba4fbd96c17af0883a3ee5b9cba7eb0f26a5f","impliedFormat":99},{"version":"78dd4f51a218aeafaaf00dea4604e37d32791d87fafe1c20b5e1a3e8648c77bd","impliedFormat":99},{"version":"671ccab2e6a253d2516c0e4699b3077fc30cdb70b4436d8c79d76c91266a1a94","impliedFormat":99},{"version":"9b40cdceea5bb43a6e998cc6f8d47480741de5f336d9147653a5d9004175f6c1","impliedFormat":99},{"version":"e760f7860d08e9d42b6ecd7dd341602fbc0c13d60eb30beaf1153f1c7c44d66d","impliedFormat":99},{"version":"fb04e1ca667399e7302c033656cc285e6c1cff9c29f264cf229dd25e3962a762","impliedFormat":99},{"version":"693faddf4c41a29866e95602f444a1399a2f6a7093b6d1d60ba4f2922f8013d0","impliedFormat":99},{"version":"410e798cfb0d71e54d49284d16c7672db89720d017440abae05d547e9351e1cd","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"c2f4c022fd9ba0d424d9a25e34748aab8417b71a655ab65e528a3b00ed90ce6d","impliedFormat":99},{"version":"d76df1670eeb97afbab6c87b8cd31bbd09dbf9026ff0ca533b5d7d3fc0291f79","impliedFormat":99},{"version":"13902404b0a9593a2c2f9c78ac7464820129fe7e5a660ef53a5cc8f3701f8350","impliedFormat":99},{"version":"2484f21803a2f6d8e34230c1c4354288da5d842182d7102a49a004c819c4b8b3","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"cd8a4297d0ab56dc571dadd2845e558c9d979fe1e120a0dec537935bc8a36dd2","impliedFormat":99},{"version":"079a12cb0e0c42655d77da5185e882b4cc94bd5c6c2131171a9289fc1f4287fc","impliedFormat":99},{"version":"5dae1fbefdf74fea1e94193c2974aac846b23bf0e8ff68fed72f6bdf6ebe3200","impliedFormat":99},{"version":"40f42c27f6cf91185a68be52a9ff238a99945ed3f68b334bedd5c678ac4a1104","impliedFormat":99},{"version":"167edfac7664bec77aa2efb2ce9d515c41b5cc4269091a946b3fa6ec4e7e8738","impliedFormat":99},{"version":"e1d65ef0ac1d0f780a061cccf6aedc70622395b0edfd8df1a3bdb92c93a98bea","impliedFormat":99},{"version":"c394a8c3b9348c9c2c0cd0384c465e5c53c050c1512138e4684d626d86cb8f0a","impliedFormat":99},{"version":"e1e837899820897455837d4161c7d8c09c23cbf49a5d0be2259b49c5df254618","impliedFormat":99},{"version":"113f247dd5763bc81d47188f4acb9931de0e6f0103d37e0577f9996cd489f34c","impliedFormat":99},{"version":"a70f42b0cf7a665bbddccb6bc6ec520bf2dd8b6e34589d6a12e012cee8cb51d8","impliedFormat":99},{"version":"be741d3922f8f0e3f861d03e447e3f24a2247ac108ee37e67ec750f63fe7f476","impliedFormat":99},{"version":"7b1615fcfa2397fe944d40c0b64521ebe1afadefa39b3aea6a5552b093c4a461","impliedFormat":99},{"version":"647e1d0a723a7caa54487d50dbfd952f184a110899ce3f331f3c451f6fbd083f","impliedFormat":99},{"version":"effe24c379e404a2122c91ebed98935900169578c80a9751783331aac9d366ba","impliedFormat":99},{"version":"2386a2d632bd750487c7efdb7b624d97207c60f00a7ae4be792805edcec80a5a","impliedFormat":99},{"version":"562640a0449842e1fc2663d2d731740114629a156366a46d26c561811d879600","impliedFormat":99},{"version":"4faebe7671813203eb7fb0fe28ad9b35d5d656b50e137212402876caa82c98ea","impliedFormat":99},{"version":"d7c135a3e73e7fe31aefa39d4001a125f6336ce749cf31c2632b6acab976015a","impliedFormat":99},{"version":"c55ae709f94155174ff63647edd2a7e3acbd02a2909aa2541569e8b8bac9fc40","impliedFormat":1},{"version":"530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","impliedFormat":1},{"version":"1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","impliedFormat":1},{"version":"07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","impliedFormat":1},{"version":"d5f1bbd44ba4f63d8a01fff5e1edc1c1fb50e9caa48a4fa48298a4485d6ff75c","impliedFormat":1},{"version":"4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","impliedFormat":1},{"version":"c70e38e0f30b7c0542af9aa7e0324a23dd2b0c1a64e078296653d1d3b36fa248","impliedFormat":1},{"version":"d12680e217215b37094868d491d00196e80f270ce47e5a4bc50269945ae5554d","impliedFormat":1},{"version":"396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","impliedFormat":1},{"version":"b7b881ced4ed4dee13d6e0ccdb2296f66663ba6b1419767271090b3ff3478bb9","impliedFormat":1},{"version":"06289b9873760aac77aed4035ea6c60b1e0879b8afe47a4530bc8522b9b804b1","impliedFormat":1},{"version":"63c36aa73242aa745fae813c40585111ead225394b0a0ba985c2683baa6b0ef9","impliedFormat":1},{"version":"3e7ffc7dd797e5d44d387d0892bc288480493e73dcab9832812907d1389e4a98","impliedFormat":1},{"version":"db011ec9589fd51995cbd0765673838e38e6485a6559163cc53dcf508b480909","impliedFormat":1},{"version":"e1a4253f0cca15c14516f52a2ad36c3520b140b5dfb3b3880a368cd75d45d6d9","impliedFormat":1},{"version":"159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","impliedFormat":1},{"version":"a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","impliedFormat":1},{"version":"8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","impliedFormat":1},{"version":"0c1aabfd9fb1818afb2e798f91f669edafce59cd7e3423d25b1cfccfaaf2c403","impliedFormat":1},{"version":"017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","impliedFormat":1},{"version":"ab9ea2596cb7800bd79d1526930c785606ec4f439c275adbca5adc1ddf87747d","impliedFormat":1},{"version":"aee8faa433dde04beedb779b3329456a286a966462d666c138c19113ce78c79e","impliedFormat":1},{"version":"d620ec36bfc6f8ed6fdecbe036d55cec81637f32fd34dc7bb7e60eba1764e910","impliedFormat":1},{"version":"4e693235d606287d6b5a4e7d572f190862b93ea4a28df8a63fc328aa8becdc9d","impliedFormat":1},{"version":"e58d1ea2fc84c9c03742b4f56449b7d4602c8c4deb4f0e57c619bab35bbbbf81","impliedFormat":1},{"version":"d82bc1f8fe8eef55aa741373da68b80a8503228c9aa0ec46bdd38fd7e0c02a18","impliedFormat":1},{"version":"d7c7f8a461326507d90d0888efff0c4011a5e69eb08ccb990232aa22334e4dd6","impliedFormat":1},{"version":"5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","impliedFormat":1},{"version":"27deb39ac0921db739b503407dc9aa93a546b015c06738bc8b66bdf0ae593c7c","impliedFormat":1},{"version":"eff5b8bdfe94c0a174484a6de01e802fb66f99f8737a20e4fba4df05c2f24cea","impliedFormat":1},{"version":"52fa3a4f47e30ef266dbda3b69821fe5811be4faad2b266586090d8b4806342e","impliedFormat":1},{"version":"5cb6f9ea4a097094fe624c3513111292690e39e83167a412f8912807be71ca65","impliedFormat":1},{"version":"fa461c83b2adc6b33997a95335d19723bddd4d7aaff41cac6f9f817e3c3ae730","impliedFormat":1},{"version":"d9eed4a308aeb32babee0600d21c3a3ba8452c89e8a4916e5460b45da147c33c","impliedFormat":1},{"version":"fc9bdd9b3d8fb59c913cb3b8dea0d79b38dfe9331ef07e1c6dc6bf363f061ad6","impliedFormat":1},{"version":"e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","impliedFormat":1},{"version":"0c3c4ce6a1884610c99306719f59174d81808c69393c30119f9c2aef0449a2cb","impliedFormat":1},{"version":"219a25474e58a8161b242776856ec5f6960839b63e74809445e51cadbfc18096","impliedFormat":1},{"version":"5a0d1534e9493ae44b08b3055172da38370e2afd2bc3d4bea11f7be78344036f","impliedFormat":1},{"version":"6309a45fc3c03d3c4d56228e995d51974f53009a842374695b34f3607877e5a3","impliedFormat":1},{"version":"bef94eba81ae2c09059c0d9abdb1ae1b7090314f70550f3c8cd5d7ead4a4f212","impliedFormat":1},{"version":"48b787ad458be9b524fa5fdfef34f68798074132d4b8cfe6a6fe9c2bf334c532","impliedFormat":1},{"version":"37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3","impliedFormat":1},{"version":"7281550c523596fd0fd36c6e19aa89075dac93144437ce48490da319b1f4d318","impliedFormat":1},{"version":"3f3f85dc43cb93c5a797f1ff0fa948d0e17843a443ae11a20cc032ccdf1b9997","impliedFormat":1},{"version":"020507cb67b96b0830a8636db03ae004181eee323ba33565cfe8d45aaedc4d1d","impliedFormat":1},{"version":"869010bc679df668137cb3b78a3cb8196e97acf285208a57f6156ceac894a2f7","impliedFormat":1},{"version":"bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","impliedFormat":1},{"version":"29a99d2e57b3e08a997cbc2397bdb251441a545306a74b95ffedc5f03d9bc6b7","impliedFormat":1},{"version":"5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","impliedFormat":1},{"version":"09e811cc1088d9ea3a7ddd7290f6a13767f56c85daf8c3374a06a45a08d55647","impliedFormat":1},{"version":"9da2c58a27fdce871c2eac09d5172b04248bb86ada9b0d10e8b3dfa8470b8dd3","impliedFormat":1},{"version":"5c317403752871838140f70879b09509e37422e92e7364b4363c7b179310ee44","impliedFormat":1},{"version":"7b270dc53f35dd0b44bfa619ad4d351fffd512e14053c3688323ed007eda3f6d","impliedFormat":1},{"version":"6d4e928f232ade7221cffc6e4332ec935baa176415c9bf5d12111bb883a247d2","impliedFormat":1},{"version":"e86ad029224d4f2af3e188be8b5e9badf8c7083247572069bac7bd2193131fc7","impliedFormat":1},{"version":"057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","impliedFormat":1},{"version":"38aa389acf91d77db5a4f8e26e713ed53dc832ed5573def9cd20acd9ba97c1fe","impliedFormat":1},{"version":"e56784be93954f1f86d4dd3ac61b4c9727e75864baf123a1b584b970baed4ba0","impliedFormat":1},{"version":"f878779620c5178d45413b33c214419bb3df2945e703c35e1191188321e3633d","impliedFormat":1},{"version":"b9115605f72b65a662723020b2a1eb696c375a5803d6b401dc01fcbfe49ece90","impliedFormat":1},{"version":"151659e152d71986b8943b9943cd7fbe27a65874655081602de7ea24a0f66e9b","impliedFormat":1},{"version":"0a7a5237b7e20029e53bcc83da62621c04009c91fa76df9563540cd7756d3a6e","impliedFormat":99},{"version":"62d32177e413c3ffe3c4b8f86247724637d7f0b13ddc340c2c7d83ad7ec0cf41","impliedFormat":99},{"version":"5858133b184e01b07c2ddba79844316d02c5fcf9b85703ad3bcd8d4b8417fc6a","impliedFormat":99},{"version":"d8758628dc5b226fa8436180e215df9875a64a9fabc5ae7e9aa1174aaa65ac38","impliedFormat":99},{"version":"a3db0a2479676946a68d3e3f269ad37e378bea6c0de45f56896bd729387a0215","impliedFormat":99},{"version":"e7a61cfe5f4e3620389614e86877785011bf1b0ed19ebdd0de11887a126de36d","impliedFormat":99},{"version":"6108a02bc041426234368f0c6689ce368a64d139c126e0d8cb7fbf791d76fe58","signature":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":99},{"version":"17a6cc4534f16da90b007e46154b41bf275c85d312262ae4a3ddaa29280223a0","signature":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":99},{"version":"63fef2de8fcd42a8ab0812c2bb743c2223560c2e105f26934e87b74d887e8d29","signature":"f8c76d5861f694fb5cf56a3e2569c194e17ad4de26995e1697d31bdd5c4c4b84","impliedFormat":99},{"version":"61cde05eee5d080d5fcdbbd924caca1edd638b1b50ecf3b6d06a4b002802dea8","signature":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":99},{"version":"7fcd90da31aee8eae060e076a2ba063b581527c4a52ed7a0d4d2c54a6e825e80","signature":"a6a218bacf4c9811fe75383db917998147cd2931404eb1ee9242e857a5d58329","impliedFormat":99},{"version":"f84d77e3818b757be8bdbdf012939ac9c2fe911cde3504d024bc61e2be194ffa","signature":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":99},{"version":"e8d58c5be1349361c5baa501fa483d84377afc9a08e41f3b75f83e528daf1a94","signature":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":99},{"version":"71f0e097677cd87e3e9ce263dd693383b79aebce3612425ad258d95dcc215ab4","signature":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":99},{"version":"0737b50b50ca1ab47650af7337f8492009bdee2d4e1939a697336447ea4593f3","signature":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":99},{"version":"8fbff250d0816c359dea0959c7192ffacda169097670c5a3e75ee3a2700656db","signature":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":99},{"version":"e0aff6ceb69ccb2b3125dec72d9d6ba47e934e56df71e73c101029474c843fc6","signature":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":99},{"version":"971382dc52b19f14f3a3c1f2be31815ab6961a5b21a0e0b8e0a11e5e11c738f8","signature":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":99},{"version":"fd457fd0ee10d8e35755575cd79de4908751eb69fe346b79354c012fc9b2b07c","signature":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":99},{"version":"f502f7d6cba1b802b1cbfce283a57b39a615f4118598648442b344733cf6b551","signature":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":99},{"version":"4505fc05a0f3d606ca0885ca3852a047a790013bfb6ee9a184f05e7628a7e63d","signature":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":99},{"version":"4eb0a3a123a07285b5d3eaf46f628bceb2404d78762c32915b186d0abbb9a6b7","signature":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":99},{"version":"b361ff12f949c31baff853004b652439a7acd0af3a2d600a6c6a0c118bf80cf4","signature":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":99},{"version":"b7a77f314ec986ff51448857a5e8bd4a237d9043d954cd588dfa779d61a8ebe1","signature":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":99},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"d6112d2a96173185241e1930dc82717ad6d950b2245fa24b27710d1a0ff58009","signature":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":99},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"4f8310b32282db8bfb9e81821441cd6cc425c8553afa89281bd2a7ed6320bf38","signature":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":99},{"version":"8a8df5249541df0c2b47cf517fd8f44fcc0985a3150042b246a6e47a1c3ff789","signature":"6265b0fcf0aa2372c9f7a4c1c0295936839fc18c1426aec60fd266558364b096","impliedFormat":99},{"version":"b446f0e6359c8815703c23822bc5726f8f8a90c0ac5647df9dd2c1d9a6b33970","signature":"07b48f0afcc74f2f8e4653d2147d57c9f9de60dfd4f2e5d4d4fe9779bc079f1a","impliedFormat":99},{"version":"9340e857c126a4b0e500282677a13dccfbf63fdd4f9108c83542592687764467","signature":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":99},{"version":"80a3fbb76a2084123b306818198f09aa58d1236efd43904f723f957e209f24ea","signature":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":99},{"version":"15114ae3e664e220741bbc4f2b61afc7924d3001e00b983f6cfbdc5c4252785b","signature":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"ddfad2abcd30e1264631138fe262ea3d6925d7f0b84ec3becd9570a7b2e18740","signature":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":99},{"version":"f462b6fc33bc3f82d1551ac0678834dfff89192ce1e848eb0bb8ca5bfe8bc76f","impliedFormat":99},{"version":"eb9096c517da313cbedce8818d9cadb82bbf02cd6f4a65db4cee42ac01f4272c","impliedFormat":99},{"version":"6a01435c878cf34ff47512fae119e010cb64b298cb652cb9ea86b1ca736d3045","signature":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":99},{"version":"72880794974442e60c62611bf4297bb0724548d3f7996146da2bc6e11f911481","impliedFormat":99},{"version":"12ed24d8f6c1d0178b436b2d1b963d099760bddb1ce01025a75a45a866bb8aa3","signature":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":99},{"version":"864d5870ed972b7bec99d2ba72f2dbe0c0e85ea6fe268648f91430efaaf63944","impliedFormat":1},{"version":"e04605852407991c98d4b866417092346d720cdedaeba57ab0029c828d994ca6","impliedFormat":99},{"version":"0b420a401bdf0f0746f48b0555b4ca1bf9e4917467aae388bfc5035c0a6b8d93","signature":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":99},{"version":"5aac374cb4130730bb0fff62b279aabf09671c2333f3efae9605aff9b900d0e1","signature":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":99},{"version":"ca1cad3d252a4bc2c3d163d5594e90d376afeae331d30ab042604e9b3f5ba1a6","signature":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":99},{"version":"509f76c768daac266178142b6ce10c6493e3638cbc3ee5cbcf214b8fd07a3dde","signature":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":99},{"version":"739487536571661bc051b6dc09684f1883220e1881f412c951226e60700c73e7","signature":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":99},{"version":"2ff9c95fcda6a59679f57f6797de15a424421d1252b1ed77b348025cdcfdc1f0","signature":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":99},{"version":"e6cfcf171b5f7ec0cb620eee4669739ad2711597d0ff7fdb79298dfc1118e66a","impliedFormat":1},{"version":"7c36cc571a59a2222ecced151452c6856f4bea77895a61aaf3900362647f6b25","impliedFormat":1},{"version":"ea3780459ddafa381a91a340d082f529cee51395304c89ddba075de889fce076","impliedFormat":99},{"version":"2fcc87b3ccec3380cf418aff1a3c3b518de55a4de55323b1b931b2996e53db00","signature":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":99},{"version":"b7eece07762a9a944f097ee05d6f6b642b1e2dd87e6fc1b09600d881e5475377","impliedFormat":1},{"version":"1ccfe846d5e307fad71bf60b07c35f9daf2bfa070999b8befdfd438b268fedaf","signature":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":99},{"version":"887106db9734fe5d044da0e0d7f87de026c4e49bce1fda22c939dc74453936fb","signature":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":99},{"version":"66972d9c50680a480d4497283557514e53c72a71597e4c9cfe0e3ea3473456fb","signature":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":99},{"version":"584985940e81596ba1a116b4bf9335f7f41949f19b9a00c41c514c3b45dfa7ac","signature":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":99},{"version":"3f69c7cd1c35cf189878315054aba7c99c156b32f09e39ef9ab7429dbaa5e525","signature":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":99},{"version":"2bc7b44fc23649a665752cfd607080d9888ae6b9e7ee0978ee7a3324b2b9e129","signature":"ab012885c91b77e85a32d6dac2a3758f81f0cdac5127745d3d23432ccbb95fc0","impliedFormat":99},{"version":"b696c1297e87f4134fde4cb2de57ce5981521e2d6b3178d4c5cbce7bf1a89336","signature":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":99},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"4f7e6730a707b0d4971d96de3b562819ce304af770723707a58a578dd55a5e52","impliedFormat":99},{"version":"d1c1213e9176398b4d1d9aa543691181fd5ae23ae5415e80ede41f1ec1ccf72a","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"e6274d956641c1cbd5a01a221a85a6671fd85104ed6b530f8d34ad3086804133","impliedFormat":99},{"version":"77516308358982bb05209e8c0ed6f321860e03393587d89f61055941e5bbcdd2","impliedFormat":99},{"version":"32f8d5ce134dc7cffdea9429bca0a31b633f20f612c577614058a2b2094b9c6f","signature":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":99},{"version":"d7a87c6b40cb8b97cbb7002f50c6d0141dc3767903c1a83718c2ec99738e2f35","signature":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":99},{"version":"9d6d2f6e93fc7957adbf0d0ff0132bc047332d06dbfb9d76fcfc7b957b99cc4d","signature":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":99},{"version":"23c80c2645ac2b145f92cb625449bcb2c91f6a68bd308098e8f74f44533b1f56","signature":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":99},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"b04ec149643419a918d68c1bf841b117330a604e245a93f55371864f6e55d6a2","signature":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":99},{"version":"ded318ef35e1443e0a676cb97fd2ae002a8ab37591d3066dca3f19460c3b14a0","signature":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":99},{"version":"6393148f04d79fb4bdf453691c7dc2b993a372745bf5036f078ece37ffa249ee","signature":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":99},{"version":"24b84af1c822230f8b7b0c17560efc7b012e1f80ca93a7e2b6423fa4dbe76e46","signature":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":99},{"version":"f1b6e3f1cb94332ce3d9b5a9fbea5faf8cb4a5121f38ff67a982828842763233","signature":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":99},{"version":"e5498f21bd48526ba95ca570e1c3fea6f8c5d5c0d611f76b729c470a8cd2d4b9","signature":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":99},{"version":"21d9ef17d12ecc8e1fc3524fdfccdabcfa4612b14848bdd753fe20faa8b13ffa","signature":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":99},{"version":"885181104d7a2a737919f4499cf5818428fae91689447deca944f8ed9c3693bf","signature":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":99},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":99},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":99},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":99},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":99},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":99},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":99},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":99},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":99},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":99},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":99},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":99},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":99},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":99},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":99},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":99},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":99},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":99},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":99},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":99},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":99},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":99},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":99},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":99},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":99},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":99},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":99},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":99},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":99},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":99},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":99},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":99},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":99},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":99},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":99},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":99},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":99},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":99},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":99},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":99},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":99},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":99},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":99},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":99},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":99},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":99},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":99},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":99},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":99},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":99},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":99},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":99},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":99},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":99},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":99},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":99},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":99},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":99},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":99},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":99},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":99},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":99},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":99},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":99},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":99},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":99},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":99},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":99},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":99},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":99},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":99},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":99},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":99},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":99},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":99},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":99},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":99},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":99},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":99},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":99},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":99},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":99},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":99},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":99},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":99},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":99},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":99},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":99},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":99},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":99},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":99},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":99},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":99},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":99},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":99},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":99},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":99},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":99},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":99},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":99},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":99},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":99},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":99},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":99},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":99},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":99},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":99},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":99},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":99},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":99},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":99},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":99},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":99},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":99},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":99},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":99},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":99},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":99},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":99},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":99},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":99},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":99},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":99},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":99},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":99},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":99},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":99},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":99},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":99},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":99},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":99},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":99},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":99},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":99},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":99},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":99},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":99},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":99},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":99},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":99},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":99},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":99},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":99},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":99},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":99},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":99},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":99},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":99},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":99},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":99},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":99},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":99},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":99},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":99},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":99},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":99},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":99},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":99},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":99},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":99},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":99},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":99},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":99},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":99},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":99},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":99},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":99},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":99},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":99},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":99},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":99},{"version":"b9e0783285db8fca77f8c20df30b66b201f914bacbfe472b86dcacdba555f360","impliedFormat":99},{"version":"3d21b5209a77dbc6d7010a3e401a1e83e4e7ad651067e4ec949d8d0c2c031d68","impliedFormat":99},{"version":"063ac7ddf1eab0e40841d481837cfee3551cd5c41e5fdd8a0a6652b535111644","impliedFormat":99},{"version":"7eda3321ba012ab61f565cce7627f0241e4f34fefcb50f3d8c1692287a8dd106","impliedFormat":99},{"version":"b5a263f298c34058a311a61008af8e9e6cd74db1e2d763fb2a5128bb5b4d44da","impliedFormat":99},{"version":"cd2208a59f674f506f6cc64d6cc28418ef6f0717f964b446ecbbc7d809638fb7","impliedFormat":99},{"version":"7ae48a41eb14b67618693cd9a9565c932c5685be8ce991372190894ea2ebcd48","impliedFormat":99},{"version":"19b03fdb67fe2049f12cc11c28a5b9d9a0fcc46e94b0a604d5a70cc37a2621ec","impliedFormat":99},{"version":"84845e0214b473a71c62ed983a0bbb0f0799a407e4ac864d7b81aee793594148","signature":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":99},{"version":"e5ec7af9c889b6741a10e19533578edd0fb43be0a720d9e6a9afe4edaa05c5f9","signature":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":99},{"version":"c834b18f2566fd297c640b3e6cc09e3b4d7f136d4fa6dcba5bbdf4f43cd2ba6d","signature":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":99},{"version":"ea8a19f6870d6db123a1c1f73aeb42072cce415ee1ec1bd1d36c397e300de300","signature":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":99},{"version":"836611f8ac2dab5b63027ad264b58de24c79f8cdd9debfa8348ab4ef0a360956","signature":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":99},{"version":"26f645954d730899ca76ae9984d77dfcd71e17378df2d6c92027c664f039cc4e","signature":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":99},{"version":"d1b113a0ddccfa9ed6e56e684a3535b03628189e8b0cf21070694029dbfb6930","signature":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":99},{"version":"8e19497c303a7303de968afc1795abf77aa861fe8697635edadfe6112128c3bf","signature":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":99},{"version":"5ab439d95c7b0578f50754b326a4b19d10463b176338012f12913a702cbbd76e","signature":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":99},{"version":"79505dc347a2fb2f354711e44f91dac706942a0a5cff2d1ce1de3dcfa20ee7ba","signature":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":99},{"version":"45dd8c90527470d208dd93eed619d7de8ce2fecbb911f29715ffcffbe8b139b1","signature":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":99},{"version":"f112cc8bbb552e5bb1c3197a719950108055e97a26508badda10e139bc4de908","signature":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":99},{"version":"0dae29e27c35fb47025834fb9fdb23e7163f1561ce2c514024006392a819bc26","signature":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":99},{"version":"aaffeac20eb7671b9e7a8554e2eaf48321c7e729648cc62285e7bf5c2b04dff5","signature":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":99},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"ba31187e92081ac1c43ae4a27eab076e64b5375156317f088ba8ad6ebc46d7dc","signature":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":99},{"version":"8c1adafdd548933f72a289b37fd900e55074ac82821e2e442b219a13cfb1c189","signature":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":99},{"version":"843de0a73618ec4a1df606529bf5bff337148399eb502db1ac1084354f3697fb","signature":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":99},{"version":"6cd79aa50e6c01858de0b1af7f1dac16ea340d9f5c45f36ec3df84a46b17e0b7","signature":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":99},{"version":"44289af95ccd692c2a6c1ed95b6969e5cc1ff25d92d88f6a6f3f6f11321ec5fa","signature":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":99},{"version":"37d457ed3501e91a40256387823644487fecde5b75563770b0bfbcf82fab76cf","signature":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":99},{"version":"5e2c7ad282c8e3a6520afa06bc36b069ab8323e3729e5b7a00f4e9174b845560","signature":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":99},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":99},{"version":"80325593c750536d23b1c83831886b98becac60c12c16efe24dd7ea01ef2c37e","signature":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":99},{"version":"4f7df2e11d0d3765191a7c3f4d539a687b79938eab3d06c324abe082f0e6c4b3","signature":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":99},{"version":"a00616866147eb099c694bd4eefa66feec6519dde06b0800694fc7609da1e02f","signature":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":99},{"version":"9da6e5efdfc9289fe26bc97fe20d68bdc4bd63959b7171afe65f9895002834a0","signature":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":99},{"version":"dd111cec2db8199513249bb6b8e82ab7aa0cf857535dfb972880dba1d3ab8048","signature":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":99},{"version":"741fe7fa56314c1668de4b4ad95b39ef794c353287d01dd72d04de08303aa0e2","signature":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":99},{"version":"9d756da03d2656d745240b3410dd58446c65d149183144a6c8cc4c406e3d80fe","signature":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":99},{"version":"60f96fb0fb68d37da5ea6679184874cc01df96288128eef945eeb8240333f5af","signature":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":99},{"version":"99e905943a2825f2a4689c923ba93f75c3a1d58e71932c1676aa4944f0a5abe2","signature":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":99},{"version":"c458de9dbc7d01c20858a10b34763a0831cffa63ecbda85aaae2b969ad7f2474","signature":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":99},{"version":"9e454b61ffc65d85d758efe9e20e57295f047b21a206a5d096e53597adcd911f","signature":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":99},{"version":"c700d87bd7c2d4f65628a76e146c630ca4b69166578b33dec93a8754dccff1fd","signature":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":99},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"9bdf90cb3e1ecc98cffaf1a6c22eb6308e714f3ceea50dcc5f6d47c2196b8f8e","signature":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":99},{"version":"39d918e5e6e20d2553799fd5f3e8a0431261cb8e7c4686aced5e9346dba2ff7f","signature":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":99},{"version":"6943a27fc40c4e39cd704b26f3955fc74ee348c8e39ad115b4a69cbc9748803d","signature":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":99},{"version":"c8789ec5946a385da5018611b636879588a37dd5994f59e789bae3d308bdbca2","signature":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":99},{"version":"c2c54ddc217e7a8890f89a9f10a837c4a0b38ad07f77d9a7f3ac3b880f6e078c","signature":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":99},{"version":"d1e9031cfefebb12d6672ef7d85faf2c5a23472f5b5be1909358db426fe82eef","impliedFormat":1},{"version":"cd15492d25fd5856070ea908f54d1af5ebc15cbae65dc56dd4e45b059f14a9d1","impliedFormat":1},{"version":"c8e93c330c6dee62d573dfe67211a2040ff7b737dd11a0a87cc43d74e60c4cc0","impliedFormat":1},{"version":"185367038d4aec329c2d1f39d5fb00cee01db99d098631dea9cb453c03c626c1","impliedFormat":1},{"version":"c50b22d805d8ca84b50dd11356dbdcf8457d1ca782c62d1578c36f83b7e17a9a","impliedFormat":1},{"version":"74578a765068c896816af87f99cc6f1e3952b3e187078afefdd56d3ca89e496d","impliedFormat":1},{"version":"9ba1022a32b054bfdefa44c1461685b53afe27395a81f81152eaf9247e0d9830","impliedFormat":1},{"version":"4a7c3d9fdfe24025098b326a4b7fe8fc5c4aa2ed11fb991b0d16f07db6bf6b04","signature":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":99},{"version":"a68b4c6f13d757bb6377eace3da07ee91dc5e2a78b37f98cafe98569f01832ad","signature":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":99},{"version":"4c359a85e608926740e86b22f6b9a972989ecafc491a57e7e0f0ce2d8d5606a3","signature":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":99},{"version":"ea8867477730534868b1a2ccd069cd7fa11715ab761da0f16f34ce377828a59d","signature":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":99},{"version":"e2853bba551ad4ef1c570186edf3808614a5a4d20ded15d2f9f23604556287c5","signature":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":99},{"version":"9b6ac4958b879dd4870c623a20f2e410f6d920d9cd625f4807f71ca609e76dd9","signature":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":99},{"version":"84ebba52dc2f2827c4b9364a272d4153e0ad6b0790fbd96de4e6ead5f5136923","impliedFormat":99},{"version":"0ad523e60ff15d88c88ab43ec59c18e49593e1d6bf1b4f2feacd35e170d97281","affectsGlobalScope":true,"impliedFormat":99},{"version":"ccfb853fe500a4f106366d01c7a426ec2476a82217a11f8aa6ac7e2b98d9c931","signature":"fb964dab1141a171c5d66b2a160b256ecedc9a39c308cdca8caa0f72690b356f","impliedFormat":99},{"version":"9a41d1cdcee5240c26b0c8385705547f9ef042e6cf7663f3b64023569fb0f9c6","signature":"9c9899482c5953a07bafc86686198d1d8688c2dbf1e6b66b5e9e1d73001d0e25","impliedFormat":99},"a88e687f7ffb0239b7b23c24c2a2c8df034ae5ecbf5772cc629c17fe745aaf94","7e54587826057a5f9fbdd393dd44dc3509cd18ea5621b421ce1eed996214f703"],"root":[[71,73],243,285,286,[288,296],573,575,703,704,706,768,[771,776],[798,804],806,[808,810],812,[830,832],837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,[950,954],[963,966],1012,1013,1024,1027,1029,1030,[1034,1036],1090,[1092,1097],[1137,1141],[1143,1148],1150,1151,1153,1154,[1172,1177],1265,[1371,1388],1390,[1392,1397],1399,1402,1404,[1407,1412],1416,[1418,1424],[1467,1470],[1472,1479],[1744,1757],[1759,1765],[1767,1778],[1819,1823],[1831,1842]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"../browser","preserveConstEnums":true,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[1369,1],[1366,2],[1370,3],[1302,4],[1301,4],[1368,5],[1367,4],[1299,6],[1275,7],[1273,4],[1276,8],[1281,9],[1270,10],[1279,11],[1284,12],[1300,13],[1266,4],[1286,14],[1285,4],[1268,4],[1274,15],[1271,16],[1269,17],[1278,18],[1267,4],[1277,19],[1272,20],[1293,21],[1290,22],[1295,23],[1282,24],[1292,25],[1294,26],[1283,27],[1296,28],[1298,29],[1289,30],[1287,31],[1288,32],[1291,33],[1297,27],[1280,4],[1365,34],[1194,4],[1195,4],[1196,35],[1178,4],[1179,4],[1180,36],[1204,37],[1205,4],[1206,4],[1209,38],[1203,4],[1208,39],[1207,4],[1188,40],[1189,4],[1190,4],[1193,41],[1187,4],[1192,42],[1191,4],[1251,43],[1252,43],[1248,44],[1253,45],[1245,46],[1250,47],[1249,44],[1246,48],[1247,49],[1682,50],[1683,50],[1679,51],[1684,52],[1676,53],[1681,54],[1680,51],[1677,55],[1678,56],[1254,57],[1259,58],[1260,59],[1258,43],[1210,4],[1211,4],[1257,60],[1256,61],[1255,62],[1262,63],[1263,64],[1261,4],[1222,65],[1223,66],[1224,66],[1244,67],[1216,68],[1217,66],[1225,69],[1242,70],[1241,71],[1239,72],[1227,73],[1236,70],[1228,73],[1238,73],[1219,74],[1230,73],[1240,73],[1231,70],[1220,73],[1234,75],[1229,73],[1232,73],[1233,73],[1237,70],[1235,73],[1221,73],[1226,66],[1243,4],[1653,76],[1654,77],[1655,77],[1675,78],[1648,79],[1649,77],[1656,80],[1673,81],[1672,82],[1670,83],[1658,84],[1667,81],[1659,84],[1669,84],[1650,85],[1661,84],[1671,84],[1662,81],[1651,84],[1665,86],[1660,84],[1663,84],[1664,84],[1668,81],[1666,84],[1652,84],[1657,77],[1674,4],[1215,87],[1213,88],[1212,4],[1214,88],[1647,89],[1645,90],[1644,4],[1646,90],[1197,91],[1198,92],[1199,92],[1200,4],[1202,93],[1201,4],[1181,94],[1182,95],[1183,95],[1184,4],[1186,96],[1185,4],[1729,4],[1687,4],[1718,97],[1717,98],[1705,99],[1704,100],[1707,101],[1706,100],[1716,102],[1715,103],[1720,104],[1719,100],[1689,105],[1708,4],[1691,106],[1703,107],[1702,103],[1701,108],[1700,4],[1699,103],[1694,109],[1693,103],[1692,110],[1696,111],[1695,98],[1714,112],[1713,113],[1698,114],[1697,98],[1710,115],[1709,116],[1690,117],[1712,118],[1711,119],[1686,119],[1726,120],[1721,103],[1723,121],[1722,103],[1725,122],[1724,100],[1481,4],[1728,123],[1727,98],[1638,124],[1731,125],[1642,126],[1688,4],[1480,4],[1639,4],[1643,127],[1637,128],[1636,129],[1685,130],[1730,124],[1641,131],[1218,4],[1640,4],[1504,132],[1483,132],[1539,4],[1519,4],[1550,4],[1482,4],[1530,133],[1531,134],[1497,135],[1484,4],[1493,4],[1494,136],[1495,4],[1496,137],[1492,138],[1485,4],[1489,4],[1514,138],[1579,139],[1512,140],[1500,141],[1526,142],[1502,4],[1507,4],[1503,143],[1498,138],[1499,144],[1501,144],[1505,4],[1506,4],[1529,145],[1518,146],[1516,4],[1517,147],[1532,148],[1528,149],[1545,150],[1540,151],[1548,152],[1549,153],[1576,4],[1520,154],[1536,4],[1525,155],[1585,4],[1522,138],[1613,156],[1523,157],[1560,158],[1559,4],[1566,159],[1565,4],[1568,160],[1567,4],[1570,161],[1569,4],[1562,162],[1561,4],[1564,163],[1563,163],[1614,164],[1574,165],[1586,166],[1587,167],[1615,168],[1491,169],[1488,170],[1487,4],[1538,171],[1551,172],[1573,4],[1554,173],[1558,4],[1524,174],[1541,175],[1553,176],[1580,177],[1583,178],[1543,179],[1581,180],[1546,175],[1547,181],[1584,180],[1577,182],[1578,4],[1555,183],[1527,4],[1508,4],[1542,184],[1544,4],[1534,4],[1582,4],[1610,185],[1557,186],[1537,138],[1511,187],[1510,4],[1611,188],[1509,4],[1612,189],[1515,190],[1513,4],[1486,4],[1552,191],[1575,192],[1490,4],[1572,193],[1521,4],[1556,194],[1571,4],[1533,4],[1535,195],[1633,196],[1608,4],[1609,197],[1599,197],[1598,198],[1590,198],[1589,198],[1588,197],[1600,199],[1624,200],[1623,201],[1627,202],[1626,203],[1628,197],[1607,204],[1604,205],[1631,206],[1629,197],[1625,207],[1632,197],[1621,208],[1620,209],[1622,197],[1635,210],[1591,211],[1601,197],[1634,4],[1592,197],[1593,197],[1605,197],[1594,197],[1602,212],[1630,4],[1606,197],[1595,197],[1603,197],[1596,197],[1597,197],[1617,213],[1616,214],[1618,215],[1619,216],[1264,217],[1033,4],[1125,218],[1124,219],[1123,4],[1122,220],[1134,220],[1103,221],[1104,220],[1106,222],[1107,4],[1108,223],[1109,220],[1110,224],[1111,224],[1112,224],[1115,225],[1116,225],[1117,224],[1118,224],[1119,224],[1120,224],[1132,220],[1121,224],[1128,226],[1133,227],[1127,228],[1126,220],[1131,224],[1113,4],[1114,229],[1129,225],[1130,224],[1102,230],[1135,220],[1152,4],[1740,231],[1736,232],[1743,233],[1737,234],[1741,235],[1739,236],[1732,4],[1766,237],[1738,230],[1735,238],[1734,239],[1733,240],[852,241],[916,242],[915,243],[911,244],[912,245],[910,246],[899,4],[919,247],[917,246],[921,248],[920,249],[918,250],[956,251],[955,246],[958,252],[957,253],[962,254],[961,255],[914,256],[913,246],[909,246],[959,257],[903,258],[896,259],[901,260],[893,261],[889,4],[900,262],[907,4],[908,263],[895,264],[904,4],[891,4],[902,265],[887,4],[897,266],[892,267],[890,268],[894,4],[898,4],[905,269],[888,4],[906,4],[1406,4],[1303,4],[1304,4],[1305,4],[1316,270],[1317,271],[1314,272],[1315,273],[1318,274],[1321,275],[1323,276],[1325,277],[1324,278],[1326,4],[1330,279],[1328,280],[1329,4],[1322,4],[1332,281],[1307,282],[1334,283],[1335,284],[1338,285],[1337,286],[1333,287],[1336,288],[1331,289],[1339,290],[1340,291],[1344,292],[1345,293],[1343,294],[1320,295],[1310,296],[1346,297],[1347,298],[1348,298],[1306,4],[1350,299],[1349,298],[1364,300],[1308,4],[1313,301],[1351,302],[1352,4],[1311,4],[1342,303],[1353,304],[1341,305],[1354,306],[1355,307],[1356,275],[1357,275],[1358,308],[1327,4],[1360,309],[1361,310],[1319,4],[1362,302],[1359,4],[1309,311],[1312,289],[1363,312],[884,313],[777,4],[732,4],[740,314],[746,315],[745,316],[734,317],[748,318],[735,319],[750,320],[744,321],[736,322],[741,323],[749,324],[747,325],[739,326],[738,327],[733,4],[743,328],[742,329],[737,4],[242,330],[1405,331],[835,332],[834,333],[574,4],[1426,334],[241,4],[1032,335],[1031,4],[342,336],[343,336],[344,337],[302,338],[345,339],[346,340],[347,341],[297,4],[300,342],[298,4],[299,4],[348,343],[349,344],[350,345],[351,346],[352,347],[353,348],[354,348],[356,4],[355,349],[357,350],[358,351],[359,352],[341,353],[301,4],[360,354],[361,355],[362,356],[395,357],[363,358],[364,359],[365,360],[366,361],[367,362],[368,363],[369,364],[370,365],[371,366],[372,367],[373,367],[374,368],[375,4],[376,4],[377,369],[379,370],[378,371],[380,17],[381,372],[382,373],[383,374],[384,375],[385,376],[386,377],[387,378],[388,379],[389,380],[390,381],[391,382],[392,383],[393,384],[394,385],[1142,4],[1824,4],[1803,386],[1804,387],[1779,388],[1782,388],[1801,386],[1802,386],[1792,386],[1791,389],[1789,386],[1784,386],[1797,386],[1795,386],[1799,386],[1783,386],[1796,386],[1800,386],[1785,386],[1786,386],[1798,386],[1780,386],[1787,386],[1788,386],[1790,386],[1794,386],[1805,390],[1793,386],[1781,386],[1818,391],[1817,4],[1812,390],[1814,392],[1813,390],[1806,390],[1807,390],[1809,390],[1811,390],[1815,392],[1816,392],[1808,392],[1810,392],[923,4],[836,4],[1425,4],[709,393],[710,394],[1011,395],[968,4],[970,396],[969,397],[974,398],[1009,399],[1006,400],[1008,401],[971,400],[972,402],[976,402],[975,403],[973,404],[1007,405],[1005,400],[1010,406],[1003,4],[1004,4],[977,407],[982,400],[984,400],[979,400],[980,407],[986,400],[987,408],[978,400],[983,400],[985,400],[981,400],[1001,409],[1000,400],[1002,410],[996,400],[998,400],[997,400],[993,400],[999,411],[994,400],[995,412],[988,400],[989,400],[990,400],[991,400],[992,400],[725,413],[720,4],[722,414],[727,415],[726,416],[723,417],[721,4],[724,418],[886,4],[1099,419],[1100,419],[1101,420],[1098,421],[960,4],[303,4],[1758,4],[769,4],[396,422],[397,423],[398,422],[399,424],[1413,4],[751,425],[731,4],[752,426],[827,427],[828,427],[822,428],[815,427],[816,428],[820,428],[821,429],[818,428],[819,428],[817,428],[829,430],[823,427],[826,427],[824,427],[825,427],[814,4],[1389,431],[400,4],[401,4],[402,4],[403,4],[404,4],[405,4],[406,4],[407,4],[408,4],[409,4],[410,4],[411,4],[412,4],[414,432],[415,4],[413,4],[416,4],[417,4],[418,4],[419,4],[420,4],[421,4],[422,4],[423,4],[424,4],[425,4],[426,4],[427,4],[428,4],[429,4],[430,4],[431,4],[432,4],[433,4],[434,4],[435,4],[436,4],[437,4],[438,4],[439,4],[440,4],[441,4],[442,4],[443,4],[444,4],[445,4],[446,4],[447,4],[448,4],[449,4],[450,4],[451,4],[452,4],[453,4],[454,4],[455,4],[456,4],[457,4],[458,4],[459,4],[460,4],[461,4],[462,4],[463,4],[464,4],[465,4],[466,4],[467,4],[468,4],[469,4],[470,4],[471,4],[472,4],[473,4],[474,4],[475,4],[476,4],[477,4],[478,4],[479,4],[480,4],[481,4],[482,4],[572,433],[483,4],[484,4],[485,4],[486,4],[487,4],[488,4],[489,4],[490,4],[491,4],[492,4],[493,4],[494,4],[495,4],[496,4],[497,4],[498,4],[499,4],[500,4],[501,4],[502,4],[503,4],[504,4],[505,4],[506,4],[507,4],[508,4],[509,4],[510,4],[511,4],[512,4],[513,4],[514,4],[515,4],[516,4],[517,4],[518,4],[519,4],[520,4],[521,4],[522,4],[523,4],[524,4],[525,4],[526,4],[527,4],[528,4],[529,4],[530,4],[531,4],[532,4],[533,4],[534,4],[535,4],[536,4],[537,4],[538,4],[539,4],[540,4],[541,4],[542,4],[543,4],[544,4],[545,4],[546,4],[547,4],[548,4],[549,4],[550,4],[551,4],[552,4],[553,4],[554,4],[555,4],[556,4],[557,4],[558,4],[559,4],[560,4],[561,4],[562,4],[563,4],[564,4],[565,4],[566,4],[567,4],[568,4],[569,4],[570,4],[571,4],[1742,4],[967,4],[1403,4],[1417,4],[705,4],[949,4],[794,434],[795,435],[1414,4],[718,436],[719,437],[728,438],[729,439],[730,440],[1020,4],[1014,4],[1023,441],[1019,442],[1026,443],[1022,444],[1018,445],[1017,4],[1015,4],[1016,4],[1021,4],[1025,4],[1091,4],[711,446],[712,446],[805,4],[941,4],[1136,447],[1105,4],[935,448],[933,4],[934,4],[938,449],[936,4],[937,4],[708,4],[1398,4],[840,4],[1415,450],[1439,451],[1438,452],[1437,453],[1464,454],[1444,455],[1445,455],[1446,455],[1447,455],[1448,455],[1449,455],[1450,456],[1452,455],[1451,455],[1463,457],[1453,455],[1455,455],[1454,455],[1457,455],[1456,455],[1458,455],[1459,455],[1460,455],[1461,455],[1462,455],[1443,455],[1442,458],[1391,4],[1436,4],[797,459],[796,4],[925,460],[926,460],[928,461],[927,460],[1149,4],[811,4],[1830,462],[1828,463],[1826,464],[1829,464],[1827,465],[1825,466],[577,467],[618,468],[595,469],[606,470],[593,471],[607,472],[616,473],[584,474],[585,475],[583,476],[615,421],[610,477],[614,478],[587,479],[603,480],[586,481],[613,482],[581,483],[582,477],[588,484],[589,4],[594,485],[592,484],[579,486],[617,487],[608,488],[598,489],[597,484],[599,490],[601,491],[596,492],[600,493],[611,421],[590,494],[591,495],[602,496],[580,472],[605,497],[604,484],[609,4],[578,4],[612,498],[701,499],[700,500],[628,501],[625,4],[629,502],[633,503],[622,504],[632,505],[639,506],[702,507],[576,4],[620,4],[627,508],[623,509],[621,17],[631,510],[619,511],[630,512],[624,513],[641,514],[663,515],[652,516],[642,517],[649,518],[640,519],[650,4],[648,520],[644,521],[645,522],[643,523],[651,524],[626,525],[659,526],[656,527],[657,528],[658,529],[660,530],[666,531],[670,532],[669,533],[667,527],[668,527],[661,534],[664,535],[662,536],[665,537],[654,538],[638,539],[653,540],[637,541],[636,542],[655,543],[635,544],[673,545],[671,527],[672,546],[674,527],[678,547],[676,548],[677,549],[679,550],[682,551],[681,552],[684,553],[683,554],[687,555],[685,556],[686,557],[680,558],[675,559],[688,558],[689,560],[699,561],[690,554],[691,527],[646,562],[647,563],[634,4],[692,564],[693,565],[696,566],[695,567],[697,568],[698,569],[694,570],[930,4],[766,571],[753,4],[754,4],[755,4],[756,4],[765,572],[757,4],[758,4],[759,4],[760,4],[761,4],[762,4],[763,4],[764,573],[943,574],[944,574],[945,574],[946,575],[942,4],[813,4],[879,576],[867,577],[845,4],[850,578],[873,4],[843,4],[868,4],[869,579],[870,4],[858,580],[860,581],[859,4],[874,582],[855,583],[856,584],[857,580],[861,585],[862,585],[863,580],[854,4],[853,584],[846,4],[844,4],[847,4],[871,4],[875,586],[876,4],[872,4],[877,587],[878,588],[849,589],[848,4],[865,586],[866,590],[864,4],[770,4],[838,4],[767,591],[1441,592],[1440,593],[1466,594],[1465,595],[807,4],[239,4],[240,596],[717,597],[715,598],[713,599],[714,600],[716,601],[779,602],[790,603],[789,603],[791,604],[792,605],[793,606],[788,607],[781,4],[780,4],[787,608],[782,609],[784,610],[785,611],[783,611],[786,612],[778,613],[833,4],[1471,4],[1028,4],[1433,614],[1432,4],[287,4],[883,313],[1401,615],[1400,4],[238,616],[209,617],[99,618],[205,4],[172,619],[142,620],[128,621],[206,4],[153,4],[163,4],[182,622],[76,4],[213,623],[215,624],[214,625],[165,626],[164,627],[167,628],[166,629],[126,4],[216,630],[220,631],[218,632],[80,633],[81,633],[82,4],[129,634],[179,635],[178,4],[191,636],[116,637],[185,4],[174,4],[233,638],[235,4],[102,639],[101,640],[194,641],[197,642],[86,643],[198,644],[112,645],[83,646],[88,647],[211,648],[148,649],[232,618],[204,650],[203,651],[90,652],[91,4],[115,653],[106,654],[107,655],[114,656],[105,657],[104,658],[113,659],[155,4],[92,4],[98,4],[93,4],[94,660],[96,661],[87,4],[146,4],[200,662],[147,648],[177,4],[169,4],[184,663],[183,664],[217,632],[221,665],[219,666],[79,667],[234,4],[171,639],[103,668],[189,669],[188,4],[143,670],[131,671],[132,4],[111,672],[175,673],[176,673],[118,674],[119,4],[127,4],[95,675],[77,4],[145,676],[109,4],[84,4],[100,618],[193,677],[236,678],[137,679],[149,680],[222,625],[224,681],[223,681],[140,682],[141,683],[110,4],[74,4],[152,4],[151,684],[196,644],[192,4],[230,684],[134,685],[117,686],[133,685],[135,687],[138,684],[85,641],[187,4],[228,688],[207,689],[161,690],[160,4],[156,691],[181,692],[157,691],[159,693],[158,694],[180,649],[210,695],[208,696],[130,697],[108,4],[136,698],[225,632],[227,665],[226,666],[229,699],[199,700],[190,4],[231,701],[173,702],[168,4],[186,703],[139,704],[170,705],[123,4],[154,4],[97,684],[237,4],[201,706],[202,4],[75,4],[150,684],[78,4],[144,707],[89,4],[122,4],[120,4],[121,4],[162,4],[212,684],[125,684],[195,618],[124,708],[69,4],[70,4],[12,4],[14,4],[13,4],[2,4],[15,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[22,4],[3,4],[23,4],[24,4],[4,4],[25,4],[29,4],[26,4],[27,4],[28,4],[30,4],[31,4],[32,4],[5,4],[33,4],[34,4],[35,4],[36,4],[6,4],[40,4],[37,4],[38,4],[39,4],[41,4],[7,4],[42,4],[47,4],[48,4],[43,4],[44,4],[45,4],[46,4],[8,4],[52,4],[49,4],[50,4],[51,4],[53,4],[9,4],[54,4],[55,4],[56,4],[58,4],[57,4],[59,4],[60,4],[10,4],[61,4],[62,4],[63,4],[11,4],[64,4],[65,4],[66,4],[67,4],[68,4],[1,4],[319,709],[329,710],[318,709],[339,711],[310,712],[309,476],[338,421],[332,713],[337,714],[312,715],[326,716],[311,717],[335,718],[307,719],[306,421],[336,720],[308,721],[313,722],[314,4],[317,722],[304,4],[340,467],[330,723],[321,724],[322,725],[324,726],[320,727],[323,728],[333,421],[315,729],[316,730],[325,731],[305,472],[328,723],[327,722],[331,4],[334,732],[707,468],[1435,733],[1431,4],[1434,734],[1171,735],[1156,4],[1157,4],[1158,4],[1159,4],[1155,4],[1160,736],[1161,4],[1163,737],[1162,736],[1164,736],[1165,737],[1166,736],[1167,4],[1168,736],[1169,4],[1170,4],[1428,738],[1427,334],[1430,739],[1429,740],[881,4],[277,741],[246,4],[264,742],[276,743],[275,744],[245,745],[284,746],[247,4],[265,747],[274,748],[251,749],[262,750],[269,751],[266,752],[249,753],[248,754],[261,755],[252,756],[268,757],[270,758],[271,759],[272,759],[273,760],[278,4],[244,4],[279,759],[280,761],[254,762],[255,762],[256,762],[263,763],[267,764],[253,765],[281,766],[282,767],[257,4],[250,768],[258,769],[259,770],[260,771],[283,750],[1052,772],[1077,4],[1089,773],[1076,774],[1078,774],[1051,775],[1053,776],[1054,777],[1055,4],[1079,774],[1080,774],[1057,778],[1081,774],[1082,774],[1058,230],[1059,774],[1060,779],[1063,780],[1064,230],[1065,781],[1066,775],[1067,782],[1056,777],[1068,774],[1083,774],[1084,783],[1085,774],[1086,774],[1062,784],[1069,776],[1061,777],[1070,774],[1071,781],[1072,774],[1073,781],[1074,785],[1075,786],[1087,774],[1088,786],[1050,787],[1042,788],[1049,789],[1044,4],[1045,4],[1043,790],[1046,791],[1037,4],[1038,4],[1039,787],[1041,792],[1047,4],[1048,793],[1040,794],[1752,795],[771,796],[1371,797],[922,798],[1147,799],[1384,800],[1265,801],[1754,802],[1755,803],[1381,804],[1756,805],[1839,4],[776,4],[842,4],[801,806],[1757,807],[1751,808],[292,809],[1424,810],[1478,811],[1474,812],[1144,813],[1475,814],[703,815],[1753,816],[1759,817],[285,818],[1760,819],[931,820],[1396,821],[1394,4],[1393,4],[1097,822],[73,823],[1477,824],[1761,825],[804,826],[573,827],[1762,828],[706,798],[1763,4],[830,829],[1140,830],[841,831],[1412,832],[1382,833],[1027,834],[1395,835],[243,836],[1399,837],[1423,838],[1094,839],[1141,840],[775,841],[1372,842],[1408,843],[965,844],[799,845],[810,846],[1470,847],[800,848],[1030,849],[1747,850],[1748,851],[1150,852],[1139,853],[948,854],[1378,855],[963,856],[806,857],[929,858],[851,4],[1420,859],[1153,860],[1092,861],[1746,862],[1390,863],[295,4],[837,864],[296,865],[812,866],[1137,867],[1402,868],[288,869],[1840,870],[1836,871],[1410,872],[575,873],[1034,874],[939,875],[1151,876],[1750,877],[1418,878],[966,879],[932,880],[1764,881],[71,4],[1385,882],[1379,883],[290,884],[1143,885],[1374,886],[1765,887],[1467,888],[1416,889],[1744,890],[1745,891],[1767,892],[1409,818],[1768,893],[1411,894],[1749,895],[1392,896],[1422,897],[798,898],[294,810],[1769,899],[953,900],[1035,901],[1770,902],[1421,903],[1383,904],[1377,905],[1375,906],[1373,907],[1376,908],[1837,4],[947,909],[1012,910],[1469,911],[1419,912],[1771,913],[802,914],[880,915],[1772,4],[839,916],[1773,818],[293,4],[773,917],[1479,4],[1397,918],[1138,919],[1775,920],[1776,921],[1036,922],[768,923],[1841,4],[1476,4],[964,924],[1473,925],[808,926],[1831,927],[1013,928],[1842,4],[1777,929],[1778,930],[1093,931],[1819,388],[1835,932],[952,933],[1834,934],[924,935],[1833,936],[1096,4],[1145,937],[1146,4],[1388,938],[1468,939],[1472,940],[1820,941],[1823,942],[1774,4],[1024,943],[772,944],[885,945],[940,946],[1029,947],[1095,948],[831,949],[1832,950],[704,951],[1407,952],[832,4],[72,4],[1838,4],[286,910],[951,953],[954,954],[774,863],[291,955],[1387,956],[1386,957],[1177,958],[1172,959],[1174,960],[1176,961],[1175,962],[1173,963],[1154,4],[803,964],[1148,965],[1380,966],[809,967],[1821,968],[1822,969],[882,970],[1404,971],[289,972],[950,973],[1090,974]],"latestChangedDtsFile":"../browser/index-browser.d.mts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/core/.tshy-build/.tshy/commonjs.tsbuildinfo b/packages/core/.tshy-build/.tshy/commonjs.tsbuildinfo new file mode 100644 index 0000000000..05f8c5fd61 --- /dev/null +++ b/packages/core/.tshy-build/.tshy/commonjs.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../src/llmsdata.ts","../../src/types.ts","../../src/constants.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/typed-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/basic.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/observable-like.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-intersection.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/keys-of-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-omit.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/optional-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-required-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/characters.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-float.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-integer.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-literal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/trim.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/and.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/or.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/index.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-at-least-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-record.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-set.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-map.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-tail.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/enforce-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-exclusive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-exactly-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-all-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-one-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/single-key-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/subtract.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/paths.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-splice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/undefined-on-partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/promisable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/arrayable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/invariant-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-readonly.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/value-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/async-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/stringified.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/join.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/sum.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/fixed-length-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/iterable-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entry.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entries.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-parameter-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/asyncify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonifiable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/find-global-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/structured-cloneable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/schema.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-key-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/exact.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/override-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-optional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-readonly-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-writable-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/spread.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-closed-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-indices.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-values.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-field-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/all-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/words.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/screaming-snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/split.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/replace.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-repeat.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/includes.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/get.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/last-array-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/global-this.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/package-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tsconfig-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/index.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/error-constructors.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/index.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../src/error.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/line-counter.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/errors.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/applyreviver.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/log.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/tojs.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/collection.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/types.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/map.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/seq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/string.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/util.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/identity.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/schema.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/createnode.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/pair.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/tags.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/options.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/node.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/alias.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/document.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/directives.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/compose/composer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/lexer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/parser.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/public-api.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/index.d.ts","../../src/cleaners.ts","../../src/unwrappers.ts","../../../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/dist/index.d.ts","../../src/indent.ts","../../src/yaml.ts","../../src/log.ts","../../src/util.ts","../../src/cancellation.ts","../../src/precision.ts","../../src/mkmd.ts","../../src/html-escaper.d.ts","../../src/htmlescape.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/dist/cjs/index.d.cts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/dist/cjs/sync.d.cts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/dist/cjs/index.d.cts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/dist/cjs/sync.d.cts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.ts","../../src/csv.ts","../../../../node_modules/.pnpm/@types+ini@4.1.1/node_modules/@types/ini/index.d.ts","../../src/ini.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.ts","../../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.ts","../../src/chattypes.ts","../../src/traceparser.ts","../../../../node_modules/.pnpm/fetch-retry@6.0.0/node_modules/fetch-retry/index.d.ts","../../src/debug.ts","../../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../src/proxy.ts","../../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/index.d.ts","../../../../node_modules/.pnpm/pretty-bytes@7.0.0/node_modules/pretty-bytes/index.d.ts","../../src/annotations.ts","../../src/think.ts","../../src/pretty.ts","../../src/utf8.ts","../../src/fetch.ts","../../src/base64.ts","../../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/mime.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/index.d.ts","../../src/mime.ts","../../src/filebytes.ts","../../src/filetype.ts","../../src/bufferlike.ts","../../src/pathutils.ts","../../src/version.ts","../../src/crypto.ts","../../../../node_modules/.pnpm/ignore@7.0.5/node_modules/ignore/index.d.ts","../../src/gitignore.ts","../../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../src/sanitize.ts","../../src/workdir.ts","../../src/filecache.ts","../../../../node_modules/.pnpm/nanoid@5.1.5/node_modules/nanoid/index.d.ts","../../src/id.ts","../../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/types.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/base.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/character.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/word.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/line.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/sentence.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/css.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/json.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/diff/array.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/patch/apply.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/patch/parse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/patch/reverse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/patch/create.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/convert/dmp.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/convert/xml.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libcjs/index.d.ts","../../src/diff.ts","../../src/trace.ts","../../src/turndown-plugin-gfm.d.ts","../../../../node_modules/.pnpm/tabletojson@4.1.6/node_modules/tabletojson/@typings/tabletojson.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/lib/block-text-builder.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/index.d.ts","../../../../node_modules/.pnpm/@types+turndown@5.0.5/node_modules/@types/turndown/index.d.ts","../../src/html.ts","../../../../node_modules/.pnpm/pretty-ms@9.2.0/node_modules/pretty-ms/index.d.ts","../../src/performance.ts","../../../../node_modules/.pnpm/mammoth@1.9.1/node_modules/mammoth/lib/index.d.ts","../../src/docx.ts","../../src/binary.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/display_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/optional_content_config.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_storage.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/metadata.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/pdf_objects.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/util.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/message_handler.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api.d.ts","../../src/global.ts","../../../../node_modules/.pnpm/@napi-rs+canvas@0.1.74/node_modules/@napi-rs/canvas/index.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/tools.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/toolbar.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/editor.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/freetext.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/highlight.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/draw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/outline.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/inkdraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/ink.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/signature.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/stamp.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/text_accessibility.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/interfaces.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/struct_tree_layer_builder.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/draw_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/annotation_editor_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/color_picker.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/svg_factory.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/worker_options.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/signaturedraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/text_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/touch_manager.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/xfa_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/pdf.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/legacy/build/pdf.d.mts","../../src/pdf.ts","../../../../node_modules/.pnpm/xlsx@https+++cdn.sheetjs.com+xlsx-0.20.2+xlsx-0.20.2.tgz/node_modules/xlsx/types/index.d.ts","../../src/xlsx.ts","../../../../node_modules/.pnpm/ts-toolbelt@8.4.0/node_modules/ts-toolbelt/out/index.d.ts","../../../../node_modules/.pnpm/@tidyjs+tidy@2.5.2/node_modules/@tidyjs/tidy/dist/tidy.d.ts","../../src/tidy.ts","../../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../src/assert.ts","../../../../node_modules/.pnpm/@types+shell-quote@1.7.5/node_modules/@types/shell-quote/index.d.ts","../../src/shell.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/commonjs/ast.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/commonjs/escape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/commonjs/unescape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/commonjs/index.d.ts","../../src/glob.ts","../../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../src/concurrency.ts","../../src/llmdiff.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/regular/jsonrepair.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/utils/jsonrepairerror.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/index.d.ts","../../src/json5.ts","../../src/tokens.ts","../../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/shared/package-manager-detector.puyrhiou.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/commands.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/constants.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/detect.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/index.d.mts","../../src/packagemanagers.ts","../../src/git.ts","../../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/lib/node.d.cts","../../src/zip.ts","../../src/url.ts","../../src/server/messages.ts","../../src/models.ts","../../src/usage.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/bottleneck.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/index.d.ts","../../src/githubclient.ts","../../src/resources.ts","../../src/file.ts","../../src/liner.ts","../../../../node_modules/.pnpm/fast-uri@3.0.6/node_modules/fast-uri/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/datatype.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/json-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.d.ts","../../src/parameters.ts","../../src/schema.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/constants.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/modelschatenabled.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/modelsmap.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/models.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/models.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/mapping.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/bytepairencodingcore.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/modeltypes.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/modelparams.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/gptencoding.d.ts","../../src/textsplitter.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/specialtokens.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/cjs/model/gpt-4o.d.ts","../../src/encoders.ts","../../../../node_modules/.pnpm/toml@3.0.0/node_modules/toml/index.d.ts","../../src/toml.ts","../../src/frontmatter.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../../node_modules/.pnpm/@huggingface+jinja@0.5.1/node_modules/@huggingface/jinja/dist/index.d.ts","../../src/jinja.ts","../../src/mustache.ts","../../src/prompty.ts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/any.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/errormessages.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/array.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/bigint.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/boolean.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/number.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/date.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/enum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/intersection.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/literal.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/string.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/record.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/map.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nativeenum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/never.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/null.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nullable.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/object.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/set.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/tuple.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/undefined.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/union.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/unknown.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsetypes.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/refs.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/options.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/getrelativepath.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsedef.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/branded.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/catch.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/default.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/effects.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/optional.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/pipeline.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/promise.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/readonly.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/selectparser.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/zodtojsonschema.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/index.d.ts","../../src/zod.ts","../../../../node_modules/.pnpm/groq-js@1.17.3/node_modules/groq-js/dist/index.d.ts","../../src/groq.ts","../../src/secretscanner.ts","../../src/features.ts","../../src/tools.ts","../../src/stdio.ts","../../src/consolecolor.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/types.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/decoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/encoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+types@1.6.0/node_modules/@jimp/types/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-bmp@1.6.0/node_modules/@jimp/js-bmp/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-gif@1.6.0/node_modules/@jimp/js-gif/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-jpeg@1.6.0/node_modules/@jimp/js-jpeg/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-tiff@1.6.0/node_modules/@jimp/js-tiff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-blit@1.6.0/node_modules/@jimp/plugin-blit/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-circle@1.6.0/node_modules/@jimp/plugin-circle/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-color@1.6.0/node_modules/@jimp/plugin-color/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-contain@1.6.0/node_modules/@jimp/plugin-contain/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-cover@1.6.0/node_modules/@jimp/plugin-cover/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-crop@1.6.0/node_modules/@jimp/plugin-crop/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-displace@1.6.0/node_modules/@jimp/plugin-displace/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-fisheye@1.6.0/node_modules/@jimp/plugin-fisheye/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-flip@1.6.0/node_modules/@jimp/plugin-flip/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-mask@1.6.0/node_modules/@jimp/plugin-mask/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/image-bitmap.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/constants.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/composite.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/measure-text.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-rotate@1.6.0/node_modules/@jimp/plugin-rotate/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-threshold@1.6.0/node_modules/@jimp/plugin-threshold/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-quantize@1.6.0/node_modules/@jimp/plugin-quantize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-hash@1.6.0/node_modules/@jimp/plugin-hash/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/load-font.d.ts","../../../../node_modules/.pnpm/@jimp+diff@1.6.0/node_modules/@jimp/diff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+utils@1.6.0/node_modules/@jimp/utils/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jimp@1.6.0/node_modules/jimp/dist/esm/index.d.ts","../../src/image.ts","../../src/promptdom.ts","../../src/generation.ts","../../src/dispose.ts","../../src/fence.ts","../../../../node_modules/.pnpm/@types+object-inspect@1.13.0/node_modules/@types/object-inspect/index.d.ts","../../src/logging.ts","../../src/chatrender.ts","../../src/systems.ts","../../src/tags.ts","../../src/ast.ts","../../src/websearch.ts","../../../../node_modules/.pnpm/minisearch@7.1.2/node_modules/minisearch/dist/cjs/index.d.cts","../../src/fuzzsearch.ts","../../src/jsonl.ts","../../../../node_modules/.pnpm/@lvce-editor+ripgrep@2.1.0/node_modules/@lvce-editor/ripgrep/src/index.d.ts","../../src/grep.ts","../../src/vectra/types.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/types.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/max.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/nil.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/parse.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/stringify.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v1tov6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v35.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v3.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v4.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v5.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v6tov1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/v7.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/validate.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/version.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/cjs/index.d.ts","../../src/vectra/itemselector.ts","../../src/vectra/localindex.ts","../../src/vectra/localdocument.ts","../../src/vectra/localdocumentresult.ts","../../src/vectra/localdocumentindex.ts","../../src/vectra.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepaliveoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/extendedclient.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestpolicyfactorypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/disablekeepalivepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/httpclientadapter.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/models.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/getpagedasynciterator.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+search-documents@12.1.0/node_modules/@azure/search-documents/types/search-documents.d.ts","../../src/azureaisearch.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/types.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/headers.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/shim-types.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/streaming.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/error.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/parse.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/pagination.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/uploads.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/shared.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/resource.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/error.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/messagestream.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/betamessagestream.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/completions.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/models.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/client.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/headers.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/builtin-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/abort.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/auth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/identity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoint.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/logger.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/uri.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/response.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/util.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/middleware.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/exact.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/crypto.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/command.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/client.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/config.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transfer.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/manager.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/pool.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/eventstream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/encode.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/shapes.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/pagination.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/profile.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/serde.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/signature.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/stream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/waiter.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/streaming.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/core/streaming.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/types.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/request-options.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/client.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/parse.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/pagination.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/shared.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/resource.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/messagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/betamessagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/completions.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/index.d.mts","../../src/anthropic.ts","../../src/fetchtext.ts","../../src/openai-responses.ts","../../src/logprob.ts","../../src/openai-chatcompletion.ts","../../src/openai.ts","../../src/ollama.ts","../../src/github.ts","../../src/lmstudio.ts","../../src/whisperasr.ts","../../src/azureopenai.ts","../../src/echomodel.ts","../../src/nonemodel.ts","../../src/azureaiinference.ts","../../src/lm.ts","../../src/vectorsearch.ts","../../src/vars.ts","../../src/teams.ts","../../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../src/hostconfiguration.ts","../../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../src/merge.ts","../../src/configschema.ts","../../src/configjson.ts","../../src/env.ts","../../src/config.ts","../../src/promptcontext.ts","../../../../node_modules/.pnpm/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.cjs.d.ts","../../src/evalprompt.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/types-cxp8y2tl.d.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/esm/api/index.d.cts","../../src/importprompt.ts","../../../../node_modules/.pnpm/fast-xml-parser@5.2.5/node_modules/fast-xml-parser/src/fxp.d.ts","../../src/xml.ts","../../../../node_modules/.pnpm/@types+fluent-ffmpeg@2.1.27/node_modules/@types/fluent-ffmpeg/index.d.ts","../../../../node_modules/.pnpm/@plussub+srt-vtt-parser@2.0.5/node_modules/@plussub/srt-vtt-parser/dist/index.d.ts","../../src/transcription.ts","../../src/ffmpeg.ts","../../src/mdchunk.ts","../../src/inflection.ts","../../src/mdstringify.ts","../../src/dotenv.ts","../../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.d.ts","../../../../node_modules/.pnpm/fraction.js@5.2.2/node_modules/fraction.js/fraction.d.ts","../../../../node_modules/.pnpm/mathjs@14.6.0/node_modules/mathjs/types/index.d.ts","../../src/math.ts","../../../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/mod.d.ts","../../src/levenshtein.ts","../../src/parsers.ts","../../src/globals.ts","../../src/nodepackage.ts","../../src/metadata.ts","../../src/expander.ts","../../src/changelog.ts","../../../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts","../../../../node_modules/.pnpm/@types+mdast@4.0.4/node_modules/@types/mdast/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/lib/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/lib/index.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/index.d.ts","../../../../node_modules/.pnpm/micromark-util-types@2.0.2/node_modules/micromark-util-types/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/lib/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/index.d.ts","../../src/markdownscript.ts","../../src/template.ts","../../src/parser.ts","../../src/fileedits.ts","../../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../src/terminal.ts","../../src/runpromptcontext.ts","../../src/chatcache.ts","../../src/chatrenderterminal.ts","../../src/quiet.ts","../../src/contentsafety.ts","../../src/chat.ts","../../src/progress.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredentialplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/tokenclaims.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/authtoken.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authoritytype.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/openidconfigresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/url/iuri.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/networkresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/inetworkmodule.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/protocolmode.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/logger/logger.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/oidcoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/azureregion.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/azureregionconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/clouddiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/cloudinstancediscoveryresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authorityoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/credentialentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/idtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/accesstokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/refreshtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/appmetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/cacherecord.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/accountinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/servertelemetryentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/throttlingentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/authoritymetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/storeincache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/performanceevent.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/iperformancemeasurement.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/iperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/cachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/server/servertelemetryrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/regiondiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/server/servertelemetrymanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/iserializabletokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/persistence/tokencachecontext.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/icacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/clientcredentials.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/config/clientconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/msaltypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/joseheader.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/signedhttprequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/baseauthrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/icrypto.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/entities/accountentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/scopeset.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/utils/cachetypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/interface/icachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authority.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/authority/authorityfactory.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/cache/utils/cachehelpers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/timeutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authorizeresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/urlutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/constants/aadserverparamkeys.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/serverauthorizationtokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/requestthumbprint.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/ccscredential.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/baseclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonauthorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authenticationresult.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonendsessionrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/authorizationcodepayload.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/authorizationcodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonrefreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonsilentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/refreshtokenclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/client/silentflowclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/account/clientinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/network/throttlingutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/url/urlstring.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonauthorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/protocol/authorize.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/requestparameterbuilder.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/protocolutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/responsehandler.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/authenticationheaderparser.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/autherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/autherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/interactionrequiredautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/interactionrequiredautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/servererror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/networkerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/cacheerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/cacheerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientconfigurationerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/error/clientconfigurationerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/stringutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/functionwrappers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-common.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/utils/clientassertionutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/config/apptokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/nativerequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/nativesignoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/broker/nativebroker/inativebrokerplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonclientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commononbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/devicecoderesponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commondevicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/request/commonusernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/iguidgenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-node-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/index-node.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/serializertypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/serializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/serializer/deserializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/internals.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/authorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/authorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/devicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/refreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/silentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/usernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/nodestorage.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/itokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/tokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/network/iloopbackclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/interactiverequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/signoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/ipublicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/clientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/onbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/iconfidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/icacheclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/ipartitionmanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/response/externaltokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/performanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/telemetry/performance/stubperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/crypto/poptokengenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/exports-browser-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/lib/types/index.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/ihttpretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/defaultmanagedidentityretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/retry/imdsretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/config/managedidentityid.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/config/configuration.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/crypto/cryptoprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientassertion.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/publicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/confidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/clientcredentialclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/devicecodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/onbehalfofclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/request/managedidentityrequestparams.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/managedidentityapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/client/usernamepasswordclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/cache/distributed/distributedcacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/lib/types/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/plugins/provider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/plugins/consumer.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/errors.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/types.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/util/logging.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/msal.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/utils.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/tokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/multitenanttokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorityvalidationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/msal/nodeflows/brokeroptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/brokerauthoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/chainedtokencredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/credentialpersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientsecretcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientsecretcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/defaultazurecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/defaultazurecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/environmentcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/environmentcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredentialmodels.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientcertificatecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientassertioncredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/clientassertioncredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azureclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azureclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azuredeveloperclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azuredeveloperclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/browsercustomizationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivebrowsercredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/interactivebrowsercredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/managedidentitycredential/options.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/managedidentitycredential/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/devicecodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/devicecodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepipelinescredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepipelinescredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorizationcodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/authorizationcodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepowershellcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/azurepowershellcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/onbehalfofcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/usernamepasswordcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/usernamepasswordcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/visualstudiocodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/onbehalfofcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/workloadidentitycredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/credentials/workloadidentitycredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/constants.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/tokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/errors.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamablehttp.d.ts","../../../../node_modules/.pnpm/eventsource@3.0.7/node_modules/eventsource/dist/index.d.cts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts","../../src/mcpclient.ts","../../src/mcpresource.ts","../../src/host.ts","../../src/fs.ts","../../src/fscache.ts","../../src/memcache.ts","../../src/jsonlinecache.ts","../../src/cache.ts","../../src/agent.ts","../../src/chunkers.ts","../../src/azurecontentsafety.ts","../../src/azuredevops.ts","../../src/azuretoken.ts","../../src/build.ts","../../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../src/ci.ts","../../src/clone.ts","../../src/copy.ts","../../src/data.ts","../../src/default_prompts.ts","../../src/llms.ts","../../src/markdown.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts","../../src/mcpsampling.ts","../../src/mddiff.ts","../../src/modelalias.ts","../../src/net.ts","../../src/path.ts","../../src/perf.ts","../../src/plugin.ts","../../src/testschema.ts","../../src/promptfoo.ts","../../src/promptrunner.ts","../../src/scriptresolver.ts","../../src/scripts.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../src/semver.ts","../../src/testeval.ts","../../src/workerlm.ts","../../src/workspace.ts","../../src/testhost.ts","../../../../node_modules/.pnpm/@types+sarif@2.1.7/node_modules/@types/sarif/index.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/types/node-sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-result-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-run-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-rule-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/index.d.ts","../../src/sarif.ts","../../src/tracefile.ts","../../src/stdin.ts","../../src/server/wsclient.ts","../../src/server/client.ts","../../src/index.ts","../../src/optional-deps.d.ts","../../src/types/prompt_type.d.ts","../../src/queries/treesitterqueries.json","../../src/schemas/hostconfiguration.schema.json"],"fileIdsList":[[302,345,1386,1387,1393,1394],[302,345,1281,1282,1350,1351],[302,345,1347,1391],[302,345,1347,1348],[302,345,1395],[302,345,1352],[302,345],[302,345,1389,1390,1392,1393],[302,345,1284,1285,1349,1350],[302,340,345,618],[302,345,1354,1355,1356,1359,1360,1361,1363,1364,1367,1379,1383,1384,1385,1386],[302,345,1249,1250,1251,1254,1255,1256,1258,1259,1262,1274,1278,1279,1280,1281],[302,345,1355,1362,1387],[302,345,1250,1257,1282],[302,345,1359,1362,1363,1387],[302,345,1254,1257,1258,1282],[302,345,1387],[302,345,1282],[302,345,1357],[302,345,1252],[302,345,1365,1366],[302,345,1260,1261],[302,345,1361],[302,345,1256],[302,345,1361,1363,1364,1367,1387],[302,345,1256,1258,1259,1262,1282],[302,345,1373],[302,345,1268],[302,345,1359,1364,1387],[302,345,1254,1259,1282],[302,345,1354,1355,1356,1358],[302,345,1249,1250,1251,1253],[302,345,380],[302,345,1354],[302,345,1249],[302,345,1354,1359,1387],[302,345,1249,1254,1282],[302,345,1359,1387],[302,345,1254,1282],[302,345,1359,1372,1382],[302,345,1254,1267,1277],[302,345,1359,1372,1377],[302,345,1254,1267,1272],[302,345,1369,1370,1371,1382],[302,345,1264,1265,1266,1277],[302,345,1359,1363,1364,1367,1369,1383],[302,345,1254,1258,1259,1262,1264,1278],[302,345,1359,1363,1364,1369,1374,1382,1383],[302,345,1254,1258,1259,1264,1269,1277,1278],[302,345,1358,1359,1363,1369,1379,1380,1381,1382,1383],[302,345,1253,1254,1258,1264,1274,1275,1276,1277,1278],[302,345,1359,1363,1364,1369,1383],[302,345,1254,1258,1259,1264,1278],[302,345,1358,1359,1363,1369,1379,1383,1384],[302,345,1253,1254,1258,1264,1274,1278,1279],[302,345,1368,1379,1383,1384,1385],[302,345,1263,1274,1278,1279,1280],[302,345,1376],[302,345,1271],[302,345,1359,1363,1364,1368,1369,1374,1379],[302,345,1254,1258,1259,1263,1264,1269,1274],[302,345,1375,1379],[302,345,1270,1274],[302,345,1358,1359,1363,1369,1375,1378,1379],[302,345,1253,1254,1258,1264,1270,1273,1274],[302,345,1358],[302,345,1253],[302,345,1177,1178],[302,345,1186],[302,345,1185,1186,1187,1188,1189,1190,1191],[302,345,1179,1185,1190],[302,345,1227],[302,345,1227,1228],[302,345,1228,1229,1230,1231,1232,1233,1234,1235],[302,345,1179,1198,1227],[302,345,1192,1227,1231,1232],[302,345,1228],[302,345,1192,1227,1228],[302,345,1193,1194,1236],[302,345,1227,1240],[302,345,1193,1194,1237,1238,1239,1240,1241,1242],[302,345,1227,1238,1239],[302,345,1227,1236,1238],[302,345,1179,1227],[302,345,1244],[302,345,1244,1245],[302,345,1199,1200,1202,1203,1204],[302,345,1199],[302,345,1185,1199,1200,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226],[302,345,1179,1185,1198],[302,345,1179,1185,1198,1199],[302,345,1199,1200],[302,345,1192,1200,1201],[302,345,1192,1199,1200,1201],[302,345,1200],[302,345,1200,1201],[302,345,1199,1200,1201,1209],[302,345,1195,1196,1197],[302,345,1195],[302,345,1179],[302,345,1180],[302,345,1180,1181,1182,1183,1184],[302,345,1192,1701],[302,345,1670,1671],[302,345,1192,1688],[302,345,1670],[302,345,1192,1690],[302,345,1192,1227,1699],[302,345,1670,1671,1676],[302,345,1192,1703],[302,345,1672],[302,345,1192,1666],[302,345,1192,1686],[302,345,1192,1665,1683,1684],[302,345,1192,1677],[302,345,1506],[302,345,1192,1675,1679],[302,345,1192,1665,1697],[302,345,1674,1676],[302,345,1192,1681],[302,345,1192,1665,1693],[302,345,1673,1674,1676,1692],[302,345,1665,1670,1671],[302,345,1192,1669,1695],[302,345,1669],[302,345,1192,1670,1676,1705],[302,345,1192,1706],[302,345,1192,1507,1708],[302,345,1192,1711],[302,345,1192],[302,345,1192,1506,1662,1663,1664,1665,1666,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714],[302,345,1661],[302,345,1192,1201,1665,1666,1667],[302,345,1662],[302,345,1506,1507,1661],[302,345,1227,1236],[302,345,1201],[302,345,1508],[302,345,1510,1511,1512,1514,1515,1517,1521,1523,1537,1540,1546,1555],[302,345,1514,1517,1523,1537,1555,1556],[302,345,1515,1518,1520,1522],[302,345,1519],[302,345,1521],[302,345,1516],[302,345,395,1530,1546,1568,1603,1604],[302,345,1517,1523,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1537,1550,1551,1552,1554,1555],[302,345,1516,1524],[302,345,1508,1510,1517,1530,1551,1556],[302,345,1525,1526,1527,1528,1552],[302,345,1524],[302,345,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1552,1554],[302,345,1543],[302,345,1542],[302,345,1511,1516,1521,1524,1525,1526,1527,1528,1533],[302,345,1516,1525,1526,1527,1528,1530,1531,1532,1533,1552,1553],[302,345,1537,1546,1566,1567,1568,1569,1570],[302,345,1513,1514,1517,1537,1538,1541,1546,1550,1551,1556,1563,1564,1565],[302,345,1537,1546,1566,1568,1572,1573],[302,345,1516,1537,1546,1566,1568,1573],[302,345,1514,1517,1523,1538,1541,1542,1544,1545,1551,1556],[302,345,1549,1550],[302,345,1517,1537,1551],[302,345,1548],[302,345,1585],[302,345,1586,1591],[302,345,1586,1593],[302,345,1586,1595],[302,345,1586,1587],[302,345,1586],[302,345,1535,1536,1537,1548,1549,1636,1637,1638,1639],[302,345,1508,1509,1510,1512,1513,1514,1515,1516,1517,1518,1519,1520,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1538,1539,1541,1546,1547,1550,1551,1552,1553,1554,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1586,1588,1589,1590,1592,1594,1596,1597,1598,1599],[302,345,1542,1543,1544,1545,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611],[302,345,1600,1612],[302,345,1600,1612,1640],[302,345,1546],[302,345,1513],[302,345,1516,1549,1550],[302,345,1513,1538,1550,1563,1564],[302,345,1517,1537,1546,1547,1556,1560,1570,1579],[302,345,1516,1534,1546,1547,1549],[302,345,1550,1565],[302,345,1516,1530,1547,1550],[302,345,1519,1545,1550],[302,345,1547,1550,1608],[302,345,1530,1547],[302,345,1550],[302,345,1530,1550],[302,345,1547],[302,345,1516,1537,1541,1546,1547,1576],[302,345,1530],[302,345,1563],[302,345,1508,1517,1529,1537,1538,1542,1544,1550,1551,1552,1556,1563,1568,1570,1582],[302,345,1535,1536],[302,345,1517,1535,1536,1537,1546],[302,345,1535,1536,1537],[302,345,1516,1531,1538,1539,1540],[302,345,1512],[302,345,1545],[302,345,1517,1537],[302,345,1551],[302,345,1547,1560],[302,345,1613,1634,1635],[302,345,1613],[302,345,1613,1614],[302,345,1613,1614,1624,1625],[302,345,1613,1618,1619,1621,1622,1623,1624,1626,1647,1648,1649],[302,345,1648],[302,345,1613,1647],[302,345,1613,1631,1632,1633,1647,1650],[302,345,1613,1618,1619,1621,1622,1623,1626,1631,1632],[302,345,1613,1618,1619,1620,1621,1622,1623,1626,1628,1629],[302,345,1613,1645,1647,1656],[302,345,1613,1620,1622,1628,1629,1630,1647,1650],[302,345,360,362,395,1613,1646],[302,345,1645,1647],[302,345,1613,1614,1617,1618,1619,1620,1621,1622,1623,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1645,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660],[302,345,1615,1616],[302,345,395,1613,1627],[302,345,360,395,1641,1642],[302,345,360,395,1641],[302,345,1641,1642],[302,345,1643,1644],[302,345,1192,1227,1236,1243,1246],[302,345,1101,1121,1122,1123,1124],[302,345,1101,1122],[302,345,1101],[302,345,1100,1101],[302,345,1101,1104],[302,345,1101,1106],[302,345,1049,1101],[302,345,1049,1101,1113],[302,345,1049,1101,1124,1125,1126],[302,345,1101,1107,1124,1125],[302,345,1125],[302,345,1049,1101,1112],[302,345,1049],[302,345,1718,1722,1723],[302,345,1049,1717,1718,1719],[302,345,1717,1718,1724,1726],[302,345,346,377,1717,1718],[302,345,1717,1718,1724],[302,345,1722],[302,345,1049,1717,1719],[302,345,1049,1716,1717,1718],[302,345,1717],[302,345,1049,1716],[302,345,360,377,380],[302,345,886,909,912,915],[302,345,908,914,916,962],[302,345,908,910,962],[302,345,909,910,911],[302,345,908,962],[302,345,918],[302,345,916,918,919,920,962],[302,345,917],[302,345,908,916,917,962],[302,345,908,955,962],[302,345,916,955,957,962],[302,345,908,956,962],[302,345,908,916,961,962],[302,345,908,916,960,962],[302,345,908,913,962],[302,345,916,921,958,962],[302,345,892,893,895,898,902],[302,345,887,888,891,892],[302,345,892,896,897,898,900],[302,345,887,888,892],[302,345,890,891,895,899],[302,345,887,888,889,890,891,892,893,894,895,896,897,898,900,901,902,903,904,905,906,907],[302,345,888,894],[302,345,892,895,898,900,901],[302,345,887,888,890,891],[302,345,888,890,891],[302,345,889],[302,345,903],[302,345,1289,1296,1297,1298],[302,345,1296,1299],[302,345,1289,1293],[302,345,1289,1299],[302,345,1287,1288,1297,1298,1299,1300],[302,345,377,395,1303],[302,345,1305],[302,345,1294,1295,1296,1307],[302,345,1294,1296],[302,345,1309,1311,1312],[302,345,1309,1310],[302,345,1314],[302,345,1287],[302,345,1290,1316],[302,345,1316],[302,345,1316,1317,1318,1319,1320],[302,345,1319],[302,345,1291],[302,345,1316,1317,1318],[302,345,1293,1294,1296],[302,345,1305,1306],[302,345,1322],[302,345,1322,1326],[302,345,1322,1323,1326,1327],[302,345,1295,1325],[302,345,1302],[302,345,1286,1292],[302,345,360,362,395],[302,345,1289],[302,345,1289,1330,1331,1332],[302,345,1286,1290,1291,1292,1293,1294,1295,1296,1301,1304,1305,1306,1307,1308,1310,1313,1314,1315,1321,1324,1325,1328,1329,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1344,1345,1346],[302,345,1287,1290,1291,1295],[302,345,1308],[302,345,1324],[302,345,1293,1295,1310],[302,345,1293,1294],[302,345,1293,1314],[302,345,1295,1305,1306],[302,345,360,377,395,1303,1336],[302,345,1294,1307,1341,1342],[302,345,360,361,395,1293,1308,1336,1340,1342,1343],[302,345,1293],[302,345,1286],[302,345,883],[302,345,733,734,737,739,742,743,744,746,747],[302,345,733,734,736,737,738,743,744,745,747],[302,345,738,743,744,746],[302,345,733],[302,345,746],[302,345,733,734],[302,345,737,738,739,740,741,742,743,744,745,746,747,748,749],[302,345,732,743],[302,345,733,734,743,744],[302,345,734,739,740,742,743,747],[302,345,738,743,746,747],[302,345,733,734,738,743,746],[302,345,733,734,738,740,742,743,747,750],[302,345,733,734,736,737,743,744,746,747],[302,345,733,737,738,740,742,744,746],[302,345,734,735,741,747],[241,302,345],[302,345,357,377,395],[302,345,834],[302,345,835],[302,345,1451],[302,342,345],[302,344,345],[345],[302,345,350,380],[302,345,346,351,357,358,365,377,388],[302,345,346,347,357,365],[297,298,299,302,345],[302,345,348,389],[302,345,349,350,358,366],[302,345,350,377,385],[302,345,351,353,357,365],[302,344,345,352],[302,345,353,354],[302,345,355,357],[302,344,345,357],[302,345,357,358,359,377,388],[302,345,357,358,359,372,377,380],[302,340,345],[302,340,345,353,357,360,365,377,388],[302,345,357,358,360,361,365,377,385,388],[302,345,360,362,377,385,388],[300,301,302,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,357,363],[302,345,364,388],[302,345,353,357,365,377],[302,345,366],[302,345,367],[302,344,345,368],[302,342,343,344,345,346,347,348,349,350,351,352,353,354,355,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,370],[302,345,371],[302,345,357,372,373],[302,345,372,374,389,391],[302,345,357,377,378,380],[302,345,379,380],[302,345,377,378],[302,345,381],[302,342,345,377],[302,345,357,383,384],[302,345,383,384],[302,345,350,365,377,385],[302,345,386],[302,345,365,387],[302,345,360,371,388],[302,345,350,389],[302,345,377,390],[302,345,364,391],[302,345,392],[302,345,357,359,368,377,380,388,391,393],[302,345,377,394],[302,345,1763,1802],[302,345,1763,1787,1802],[302,345,1802],[302,345,1763],[302,345,1763,1788,1802],[302,345,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801],[302,345,1788,1802],[302,345,360,362,377,395],[302,345,360,365,377,385,395,709],[302,345,970,971,975,1002,1003,1005,1006,1007,1009,1010],[302,345,968,969],[302,345,968],[302,345,970,1010],[302,345,970,971,1007,1008,1010],[302,345,1010],[302,345,967,1010,1011],[302,345,970,971,1009,1010],[302,345,970,971,973,974,1009,1010],[302,345,970,971,972,1009,1010],[302,345,970,971,975,1002,1003,1004,1005,1006,1009,1010],[302,345,967,970,971,975,1007,1009],[302,345,975,1010],[302,345,977,978,979,980,981,982,983,984,985,986,1010],[302,345,1000,1010],[302,345,976,987,995,996,997,998,999,1001],[302,345,980,1010],[302,345,988,989,990,991,992,993,994,1010],[302,345,377,385,395,720,722,723,724],[302,345,365,385,395,721],[302,345,720,721,722,724,725,726],[302,345,720],[302,345,365,395],[302,345,377,395,722,723],[302,345,395,1097],[302,345,395,1097,1098,1099],[302,345,395],[302,345,377,395],[302,345,396],[302,345,398],[302,345,391,395,731,750],[302,345,731,751],[302,345,814],[302,345,814,815],[302,345,814,815,818],[302,345,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828],[302,345,388,395],[302,345,413],[302,345,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571],[302,345,380,793],[302,345,377,793,794],[302,345,377,395,730],[302,345,358,377,395,730],[302,345,377,395,727,730],[302,345,360,362,377,395,730],[302,345,377,395,718,719,728,729],[302,345,1014,1019,1021,1022],[302,345,1015,1016,1018],[302,345,1014,1021,1023,1025],[302,345,1019,1020,1021],[302,345,1017],[302,345,360,365,385,388,395,710],[302,345,1101,1102,1103,1105,1107,1108,1109,1110,1111,1113,1114,1115,1116,1117,1118,1119,1120,1124,1127,1128,1129,1130,1131,1132,1133,1134],[302,345,933,934],[302,345,936,937],[302,345,1439,1440],[302,345,1462,1463,1464,1465],[302,345,1452,1462,1463,1465],[302,345,1452,1462,1465],[302,345,1468,1469,1489],[302,345,1452,1490],[302,345,1452],[302,345,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488],[302,345,1451,1452],[302,345,796],[302,345,928],[302,345,925,926,927],[302,345,1810,1811,1812,1813],[302,345,1808,1809,1811],[302,345,1808,1809],[302,345,1808,1809,1810,1814],[302,345,1808],[302,306,307,308,309,310,311,312,313,314,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,334,335,336,337,338,339,345],[302,345,617],[302,345,388,584,587,590,591],[302,345,377,388,587],[302,345,388,587,591],[302,345,377],[302,345,581],[302,345,585],[302,345,388,583,584,587],[302,345,365,385],[302,345,395,581],[302,345,365,388,583,587],[302,345,357,377,388,578,579,580,582,586],[302,345,587,595,602],[302,345,579,585],[302,345,587,611,612],[302,345,380,388,395,579,582,587],[302,345,587],[302,345,388,583,587],[302,345,578],[302,345,581,582,583,585,586,587,588,589,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,614,615,616],[302,345,353,587,604,607],[302,345,587,595,596,597],[302,345,585,587,596,598],[302,345,586],[302,345,579,581,587],[302,345,587,591,596,598],[302,345,591],[302,345,388,585,587,590],[302,345,579,583,587,595],[302,345,587,604],[302,345,380,393,395,581,587,611],[302,345,576,620,623,700],[302,345,576,619,620,623,624,625,628,629,632,635,647,653,654,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698,699],[302,345,619,627,700],[302,345,623,627,628,700],[302,345,700],[302,345,621,700],[302,345,630,631],[302,345,625],[302,345,625,628,629,632,700,701],[302,345,623,626,700],[302,345,576,619,620,622],[302,345,576],[302,345,576,623,700],[302,345,623,700],[302,345,623,635,638,640,649,651,652,702],[302,345,621,623,640,661,662,664,665,666],[302,345,638,641,648,651,702],[302,345,621,623,638,641,653,702],[302,345,621,638,641,642,648,651,702],[302,345,639],[302,345,634,638,647],[302,345,647],[302,345,623,640,643,644,647,702],[302,345,638,647,648],[302,345,649,650,652],[302,345,629],[302,345,633,656,657,658],[302,345,623,628,633],[302,345,622,623,628,632,633,657,659],[302,345,623,628,632,633,657,659],[302,345,623,628,629,633,634,660],[302,345,623,628,629,633,634,661,662,663,664,665],[302,345,633,665,666,669],[302,345,633,634,667,668,669],[302,345,623,628,629,633,634,666],[302,345,622,623,628,629,633,634,661,662,663,664,665,666],[302,345,623,628,629,633,634,662],[302,345,622,623,628,633,634,661,663,664,665,666],[302,345,633,634,653],[302,345,637],[302,345,622,623,628,629,633,634,635,636,641,642,648,649,651,652,653],[302,345,636,653],[302,345,623,629,633,653],[302,345,637,654],[302,345,622,623,628,633,635,653],[302,345,623,628,629,633,672],[302,345,623,628,629,632,633,671],[302,345,623,628,629,633,634,647,675,677],[302,345,623,628,629,633,677],[302,345,623,628,629,633,634,647,653,676],[302,345,623,628,629,632,633],[302,345,633,681],[302,345,623,628,633,675],[302,345,633,683],[302,345,623,628,629,633],[302,345,633,680,682,684,686],[302,345,623,629,633],[302,345,623,628,629,633,634,680,685],[302,345,633,675],[302,345,633,647],[302,345,622,623,628,632,633,689],[302,345,634,635,647,655,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698],[302,345,623,629,633,647],[302,345,622,623,628,629,633,634,643,645,646,647],[302,345,623,628,632,633],[302,345,623,628,633,679,692],[302,345,623,628,629,633,694,695,697],[302,345,623,628,629,633,694,697],[302,345,623,628,629,633,634,695,696],[302,345,620,633],[302,345,632],[302,345,360,365,377,388,395,710,711,712,717,730,765],[302,345,395,750,752,753,754,755,756,757,758,759,760,761,762,763,764],[302,345,765],[302,345,942],[302,345,942,943,944,945],[302,345,878],[302,345,843,845,850,864,865,866],[302,345,843,844,845,846,847,849],[302,345,843,853,855,856,857,861,862,863,864,865,867,868],[302,345,855],[302,345,859],[302,345,860],[302,345,853,854,869],[302,345,855,869],[302,345,858,860],[302,345,843,850],[302,345,843,845,865],[302,345,843,848,850,853,867,868,869,870,871,872,873,874,875,876,877],[302,345,848],[302,345,850],[302,345,360,395,708,710,711,712,717,766],[302,345,1452,1461,1462,1465,1466,1467,1492],[302,345,1452,1456,1461,1465,1467,1492],[302,345,1452,1461,1467,1490,1491,1492],[302,345,1452,1456,1461,1467,1490,1492],[238,239,302,345],[302,345,360,365,388,395,710,716],[302,345,357,377,395,713,714],[302,345,365,377,395],[302,345,713],[302,345,715],[302,345,777,778],[302,345,778,779],[302,345,377,777,778,779,787,788,789,790],[302,345,359,778,779],[302,345,377,777,788,791,792],[302,345,778,779,787],[302,345,780,781,782,784,785,786],[302,345,377,781],[302,345,783],[302,345,781],[302,345,380,784,785],[302,345,777],[302,345,1458],[302,345,393,1426],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,108,109,110,111,112,116,117,118,119,120,121,122,123,124,125,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,302,345],[79,89,108,115,208,302,345],[98,302,345],[95,98,99,101,102,115,142,170,171,302,345],[89,102,115,139,302,345],[89,115,302,345],[180,302,345],[115,212,302,345],[89,115,213,302,345],[115,213,302,345],[116,164,302,345],[88,302,345],[82,98,115,120,126,165,302,345],[164,302,345],[96,111,115,212,302,345],[89,115,212,216,302,345],[115,212,216,302,345],[79,302,345],[108,302,345],[178,302,345],[74,79,98,115,147,302,345],[98,115,302,345],[115,140,143,190,229,302,345],[101,302,345],[95,98,99,100,115,302,345],[84,302,345],[196,302,345],[85,302,345],[195,302,345],[92,302,345],[82,302,345],[87,302,345],[146,302,345],[147,302,345],[170,203,302,345],[115,139,302,345],[88,89,302,345],[90,91,104,105,106,107,113,114,302,345],[92,96,105,302,345],[87,89,95,105,302,345],[79,84,85,88,89,98,105,106,108,111,112,113,302,345],[91,95,97,104,302,345],[89,95,101,103,302,345],[74,87,92,302,345],[93,95,115,302,345],[74,87,88,95,115,302,345],[88,89,112,115,302,345],[76,302,345],[75,76,82,87,89,92,95,115,147,302,345],[115,212,216,220,302,345],[115,212,216,218,302,345],[78,302,345],[102,302,345],[109,188,302,345],[74,302,345],[89,109,110,111,115,120,126,127,128,129,130,302,345],[108,109,110,302,345],[98,139,302,345],[86,117,302,345],[93,94,302,345],[87,89,98,115,130,140,142,143,144,302,345],[111,302,345],[76,143,302,345],[87,115,302,345],[111,115,148,302,345],[115,213,222,302,345],[82,89,92,101,115,139,302,345],[78,87,89,108,115,140,302,345],[115,302,345],[88,112,115,302,345],[88,112,115,116,302,345],[88,112,115,133,302,345],[115,212,216,225,302,345],[108,115,302,345],[89,108,115,140,144,160,302,345],[108,115,116,302,345],[89,115,147,302,345],[89,92,115,130,138,140,144,158,302,345],[84,89,108,115,116,302,345],[87,89,115,302,345],[87,89,108,115,302,345],[115,126,302,345],[83,115,302,345],[96,99,100,115,302,345],[85,108,302,345],[95,96,302,345],[115,169,172,302,345],[75,185,302,345],[95,103,115,302,345],[95,115,139,302,345],[89,112,200,302,345],[78,87,302,345],[108,116,302,345],[302,312,316,345,388],[302,312,345,377,388],[302,307,345],[302,309,312,345,385,388],[302,307,345,395],[302,309,312,345,365,388],[302,304,305,308,311,345,357,377,388],[302,312,319,345],[302,304,310,345],[302,312,333,334,345],[302,308,312,345,380,388,395],[302,333,345,395],[302,306,307,345,395],[302,312,345],[302,312,327,345],[302,312,319,320,345],[302,310,312,320,321,345],[302,311,345],[302,304,307,312,345],[302,312,316,320,321,345],[302,316,345],[302,310,312,315,345,388],[302,304,309,312,319,345],[302,307,312,333,345,393,395],[302,345,1456,1460],[302,345,1451,1456,1457,1459,1461,1467,1492],[302,345,1154,1155,1156,1157,1158,1159,1160,1162,1163,1164,1165,1166,1167,1168,1169],[302,345,1154],[302,345,1154,1161],[302,345,1453],[302,345,1454,1455],[302,345,1451,1454,1456],[245,268,269,273,275,276,302,345],[253,263,269,275,302,345],[275,302,345],[245,249,252,261,262,263,266,268,269,274,276,302,345],[244,302,345],[244,245,249,252,253,261,262,263,266,267,268,269,273,274,275,277,278,279,280,281,282,283,302,345],[248,261,266,302,345],[248,249,250,252,261,269,273,275,302,345],[262,263,269,302,345],[249,252,261,266,269,274,275,302,345],[248,249,250,252,261,262,268,273,274,275,302,345],[248,250,262,263,264,265,269,273,302,345],[248,269,273,302,345],[269,275,302,345],[248,249,250,251,260,263,266,269,273,302,345],[248,249,250,251,263,264,266,269,273,302,345],[244,246,247,249,253,263,266,267,269,276,302,345],[245,249,269,273,302,345],[273,302,345],[270,271,272,302,345],[246,268,269,275,277,302,345],[253,302,345],[253,262,266,268,302,345],[253,268,302,345],[249,250,252,261,263,264,268,269,302,345],[248,252,253,260,261,263,302,345],[248,249,250,253,260,261,263,266,302,345],[268,274,275,302,345],[249,302,345],[249,250,302,345],[247,248,250,254,255,256,257,258,259,261,264,266,302,345],[302,345,1073,1074],[302,345,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087],[302,345,1049,1073,1074],[302,345,1074],[302,345,1049,1051,1073,1074],[302,345,1049,1051,1074],[302,345,1049,1051,1055,1074,1075],[302,345,1049,1074],[302,345,1049,1061,1073,1074],[302,345,1050,1074],[302,345,1049,1065,1073,1074],[302,345,1049,1058,1073,1074],[302,345,1049,1057,1060,1073,1074],[302,345,1050,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072],[302,345,1049,1073,1075],[302,345,1048],[302,345,1039,1040],[302,345,1036,1037,1039,1041,1042,1047],[302,345,1037,1039],[302,345,1047],[302,345,1039],[302,345,1036,1037,1039,1042,1043,1044,1045,1046],[302,345,1036,1037,1038],[72,73,242,243,291,296,302,345,773,831,1138,1735],[72,73,285,286,302,345],[72,73,242,243,285,291,302,345,618,703,768,775,831,939,940,952,953,1027,1093,1283,1353,1388,1396,1504],[242,302,345],[72,73,285,302,345,367,952,1145],[73,302,345,1402,1504],[72,285,291,292,302,345,706,804,831,952,965,1027,1192,1247,1504,1730],[72,73,285,289,292,302,345,706,775,831,952,1398,1730,1735,1737],[72,291,302,345,706,773,775,963],[73,242,243,302,345,775,1402,1504,1730],[72,73,243,291,292,302,345,706,952,1715,1730],[72,302,345,367,706,799,800,831],[73,285,302,345,367,572,706,802,1495,1730],[72,242,292,302,345,808,1730,1732,1733,1734],[243,291,302,345],[286,302,345],[72,73,243,285,289,291,292,293,294,296,302,345,572,703,706,771,772,773,810,831,839,922,939,940,952,953,1012,1013,1027,1092,1093,1095,1137,1138,1139,1140,1143,1400,1496,1499,1500,1501,1502,1503,1730],[72,73,302,345,703,952,1735],[72,284,285,286,292,294,302,345,703,772,939],[73,289,291,292,302,345,703,706,773,799,1013,1096,1136,1498],[72,302,345,702],[302,345,922],[302,345,1742],[72,302,345],[285,302,345],[72,73,285,302,345,930,1730],[72,73,243,285,289,292,302,345,366,367,572,706,939,952,1013,1411,1415,1416,1418,1419,1420,1421,1730,1731],[302,345,1095],[71,72,302,345],[72,292,302,345,706,831,1730],[72,73,302,345,1730,1731],[72,291,302,345,350,358,774,803],[72,285,286,302,345,397,399,572,831],[72,73,289,302,345,573,575,776,831,882,939,965,1013,1029,1030,1150,1430,1730],[72,242,243,285,302,345,367,813,829],[72,285,291,302,345,831],[72,73,243,286,289,291,302,345,359,367,799,804,809,831,837,839,840,1730,1731],[291,302,345,1415],[73,285,302,345,1143,1504],[72,302,345,367,706,922,953,965,966,1023,1024,1026,1730],[73,285,289,292,302,345,388,706,831,951,952,953,1730],[72,240,242,302,345],[72,302,345,367,706,1424,1730],[72,73,243,285,302,345,703,706,831,839,922,952,1137,1138,1139,1144,1146,1413,1423,1425,1428,1446,1447,1448,1504,1730],[73,302,345],[72,73,285,286,289,302,345,939,966],[72,73,243,285,291,292,302,345,705,706,768,769,773,774,831],[72,285,291,292,302,345,706,773,774,775,776,800,831,837,842,951,1730],[72,73,242,243,285,286,291,293,302,345,359,367,770,776,798,800,804,809,831,839,930,1431,1433,1731],[72,73,292,302,345,573,706,773,775,776,798,800,831,841,842,880,882,885,964,1730,1731],[72,292,302,345,706,775,776,795,798,831,1730],[72,73,286,292,302,345,359,367,706,773,801,804,809,831,1731],[72,243,286,289,291,302,345,367,573,830,831,929,932,939,1013,1450,1495,1730,1731],[302,345,795],[72,286,289,302,345,939,1029],[72,73,302,345,359,366,367,706,939,1730],[72,73,242,243,302,345,359,367,804,809,930,1731],[72,292,302,345,804,831,965,1148],[72,292,302,345,703,831,954],[72,73,285,291,302,345,359,572,706,809,924,932,940,941,947,965,1730,1731],[72,73,243,285,302,345,706,775,1402,1504],[72,73,243,285,288,291,292,294,302,345,350,706,771,773,775,800,801,830,831,916,921,922,924,929,931,932,939,948,950,951,954,959,962,1730,1731],[72,73,286,291,302,345,367,706,805,1730,1731],[72,285,302,345,928],[72,242,243,289,302,345,573,575,830,837,851,939,940,948,963,1012,1013,1027,1030,1150,1430,1434,1435,1437,1445],[72,285,292,302,345,572,706,806,831,965,966,1150,1730,1731,1821],[302,345,1090],[72,73,292,302,345,706,831,851,952,1416,1504,1505,1715,1728,1729],[302,345,1730],[72,292,295,302,345,831,832,833,835,836],[295,302,345],[302,345,811],[72,73,291,292,302,345,348,706,773,801,831,930,954,1096,1135,1504],[72,243,291,302,345,367,388,706,802,831,839,1427,1730],[287,302,345],[72,73,243,285,286,288,289,290,291,292,293,294,296,302,345,573,575,703,704,706,768,771,772,773,775,776,798,799,800,801,802,803,804,806,808,809,810,812,830,831,837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,950,951,952,953,954,963,964,965,966,1012,1013,1024,1027,1029,1030,1033,1034,1035,1089,1092,1093,1094,1095,1096,1136,1137,1138,1139,1140,1142,1143,1144,1145,1146,1147,1149,1150,1152,1176,1248,1397,1398,1400,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1416,1418,1421,1422,1423,1425,1428,1430,1433,1434,1435,1436,1437,1438,1442,1444,1445,1446,1447,1448,1449,1450,1493,1494,1495,1496,1498,1499,1500,1501,1502,1503,1504,1505,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1743,1744,1745,1746,1747,1748,1749,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1803,1804,1805,1806,1807,1815,1816,1817,1818,1819],[302,345,941],[286,291,302,345,574],[291,302,345,703,1032],[286,302,345,772,935,938],[72,285,291,302,345,774,939,1730],[302,345,809,1150,1730,1731,1733,1735],[302,345,1443],[73,302,345,830,932],[302,345,830,922],[71,73,285,302,345,572,1730],[73,302,345,1093,1397,1402,1403,1404,1405,1406,1407,1408,1409,1410,1504,1730],[73,291,302,345,1402,1504,1730],[72,243,289,302,345,1730],[302,345,1141],[72,285,293,295,302,345,703],[73,292,302,345,367,706,799],[72,285,289,302,345,706,939,1030,1452,1461,1467,1492],[302,345,831,1441],[72,243,285,289,291,292,302,345,706,804,809,810,831,1503,1717,1719,1720,1721,1725,1727],[72,73,242,302,345,800,801,804,831,965,1092],[73,285,292,302,345,703,706,831,953,1717,1750],[294,302,345,829],[294,302,345,1436],[72,73,242,302,345,804,1735],[302,345,1417],[72,285,291,302,345,706],[73,302,345,797],[72,73,242,302,345,952,1093,1140,1730],[72,73,242,243,285,291,292,293,302,345,572,703,831,952,1730],[72,302,345,1030,1031,1033],[302,345,365],[242,302,345,1731],[73,243,302,345,1504],[72,73,243,291,302,345,775,1095,1150,1402,1504],[72,73,243,285,302,345,575,703,706,774,775,939,940,952,953,1027,1093,1398,1400,1504],[243,285,291,292,302,345,702,703,706,775,1504],[72,73,243,285,291,292,302,345,703,706,770,775,776,801,831,952,1398,1399,1401,1504],[302,345,706,946],[72,285,302,345],[72,73,291,302,345,359,367,572,706,952,1144,1413,1494,1731],[72,285,286,288,289,302,345,573,575,771,772,804,806,830,837,841,880,882,885,932,939,950,965,1013,1029,1030,1033,1034,1035,1091,1140,1150,1430,1433,1438,1442,1444,1730],[72,302,345,367,388,808,1731],[302,345,364,367,388],[72,73,243,285,289,291,292,302,345,359,366,367,388,389,706,802,804,809,831,839,850,851,852,879,1730,1731],[291,302,345,368,838],[73,285,286,293,302,345,703,770,771,772],[72,73,242,285,296,302,345,367,706,775,804,809,810,922,924,931,952,953,965,1138,1147,1149,1152,1398,1412,1413,1414,1422,1499,1730,1735],[72,73,242,243,285,286,288,289,291,292,302,345,573,703,804,830,831,839,885,922,940,953,965,966,1012,1013,1027,1033,1034,1035,1089,1091,1092,1093,1094,1136,1504,1730,1731],[72,73,285,288,291,292,302,345,572,831,953,1013,1428,1730,1758],[72,73,242,243,285,291,292,302,345,573,706,772,803,922,952,953,965,1138,1139,1140,1143,1411,1413,1449,1504,1730,1731],[72,285,289,302,345,703,939,1030],[243,302,345,618,706,767],[72,73,243,285,292,302,345,367,388,706,775,831,842,948,951,963,1731],[72,73,242,243,285,288,289,291,292,302,345,572,703,706,773,776,800,801,804,809,831,839,885,922,929,931,952,953,1012,1033,1034,1095,1096,1136,1137,1138,1142,1143,1144,1146,1411,1413,1433,1434,1449,1496,1498,1504,1730,1735,1736],[302,345,807],[72,73,302,345,367,803,1814],[72,243,289,302,345,706,831,939,1011,1012],[73,292,302,345,367,706,804,809,831,964,1730],[72,73,285,291,302,345,367,706,806,809,952,1146,1730,1731,1747],[291,302,345,706,831,1730],[72,73,243,291,302,345,703,812,831,952,1818],[72,302,345,703],[73,302,345,952],[302,345,923],[72,73,285,291,302,345,770,776,795,842],[72,285,302,345,572,706,952,1094,1138],[72,73,285,286,288,291,292,296,302,345,367,775,799,800,831,1030,1730],[72,73,285,302,345,367,939,1436,1448,1493],[302,345,1497],[72,285,302,345,706,952,1091,1444],[72,243,292,302,345,346,359,367,706,831,851,924,952,1446,1504,1728,1729,1730,1731,1748,1755],[72,302,345,348,706,1027],[73,285,302,345],[72,285,302,345,884],[72,73,291,302,345,706,839],[72,286,302,345,1028],[242,302,345,953,1093],[72,73,243,284,288,289,291,292,293,294,296,302,343,345,367,388,573,575,703,704,773,774,810,812,830,1730],[73,291,302,345,358,359,367,831,839,1731],[294,302,345],[72,285,302,345,1432],[302,345,388],[73,291,294,302,345,573,703,706,773,831,953,1504],[73,290,302,345,1730],[72,73,285,289,291,302,345,572,706,952,1012,1140,1144,1146],[72,73,292,302,345,706,831,922,953,965,1176,1248,1411,1504,1730,1735],[72,285,291,292,302,345,706,809,831,952,965,1027,1153,1175,1504],[302,345,1153],[302,345,359,367,1153,1175],[72,243,302,345,348,359,367,706,770,1024,1153,1170,1172,1173,1174],[72,302,345,1153,1173,1175],[302,345,359,367,706,1153,1170,1171],[302,345,358,367,802],[72,73,242,285,291,302,345,775,831,1730],[72,73,240,243,291,292,302,345,706,773,831,952,1398,1401,1504],[73,302,345,367,706,804,806,808,1730,1731],[72,302,345,393,703,706,812,831,952,1504],[72,73,242,243,285,289,302,345,359,367,573,575,939,965,1013,1430,1730,1731,1735,1746],[72,291,302,345,1821],[72,286,302,345,706,1429],[72,284,286,288,302,345],[72,302,345,774,776,798,842,929,949],[72,302,345,1088]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"ca2bdfe9e12361ed4daa6cede7d76db71a599d7cada3f308530783c9edd5a505","signature":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":1},{"version":"6197ea0b13d17cd68df40851a05b4bd0be92aa01570c7c6d812aa86b6e1df7cd","signature":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":1},{"version":"3aea4b48223098d8a8b119c6b4ab7e5617070c9bdf908dbfe60c43a9f867a3b1","signature":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":1},{"version":"cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","impliedFormat":1},{"version":"1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","impliedFormat":1},{"version":"130ec22c8432ade59047e0225e552c62a47683d870d44785bee95594c8d65408","impliedFormat":1},{"version":"4f24c2781b21b6cd65eede543669327d68a8cf0c6d9cf106a1146b164a7c8ef9","affectsGlobalScope":true,"impliedFormat":1},{"version":"928f96b9948742cbaec33e1c34c406c127c2dad5906edb7df08e92b963500a41","impliedFormat":1},{"version":"56613f2ebdd34d4527ca1ee969ab7e82333c3183fc715e5667c999396359e478","impliedFormat":1},{"version":"d9720d542df1d7feba0aa80ed11b4584854951f9064232e8d7a76e65dc676136","impliedFormat":1},{"version":"d0fb3d0c64beba3b9ab25916cc018150d78ccb4952fac755c53721d9d624ba0d","impliedFormat":1},{"version":"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","impliedFormat":1},{"version":"ba93f0192c9c30d895bee1141dd0c307b75df16245deef7134ac0152294788cc","impliedFormat":1},{"version":"fca7cd7512b19d38254171fb5e35d2b16ac56710b7915b7801994612953da16c","impliedFormat":1},{"version":"7e43693f6ea74c3866659265e0ce415b4da6ed7fabd2920ad7ea8a5e746c6a94","impliedFormat":1},{"version":"eb31477c87de3309cbe4e9984fa74a052f31581edb89103f8590f01874b4e271","impliedFormat":1},{"version":"4e251317bb109337e4918e5d7bcda7ef2d88f106cac531dcea03f7eee1dd2240","impliedFormat":1},{"version":"0f2c77683296ca2d0e0bee84f8aa944a05df23bc4c5b5fef31dda757e75f660f","impliedFormat":1},{"version":"1a67ba5891772a62706335b59a50720d89905196c90719dad7cec9c81c2990e6","impliedFormat":1},{"version":"cf41091fcbf45daff9aba653406b83d11a3ec163ff9d7a71890035117e733d98","impliedFormat":1},{"version":"aa514fadda13ad6ddadc2342e835307b962254d994f45a0cb495cc76eca13eff","impliedFormat":1},{"version":"ce92e662f86a36fc38c5aaa2ec6e6d6eed0bc6cf231bd06a9cb64cc652487550","impliedFormat":1},{"version":"3821c8180abb683dcf4ba833760764a79e25bc284dc9b17d32e138c34ada1939","impliedFormat":1},{"version":"0ef2a86ec84da6b2b06f830b441889c5bb8330a313691d4edbe85660afa97c44","impliedFormat":1},{"version":"b2a793bde18962a2e1e0f9fa5dce43dd3e801331d36d3e96a7451727185fb16f","impliedFormat":1},{"version":"9d8fc1d9b6b4b94127eec180183683a6ef4735b0e0a770ba9f7e2d98dd571e0c","impliedFormat":1},{"version":"8504003e88870caa5474ab8bd270f318d0985ba7ede4ee30fe37646768b5362a","impliedFormat":1},{"version":"892abbe1081799073183bab5dc771db813938e888cf49eb166f0e0102c0c1473","impliedFormat":1},{"version":"65465a64d5ee2f989ad4cf8db05f875204a9178f36b07a1e4d3a09a39f762e2e","impliedFormat":1},{"version":"2878f694f7d3a13a88a5e511da7ac084491ca0ddde9539e5dad76737ead9a5a9","impliedFormat":1},{"version":"d21c5f692d23afa03113393088bcb1ef90a69272a774950a9f69c58131ac5b7e","impliedFormat":1},{"version":"0915ce92bb54e905387b7907e98982620cb7143f7b44291974fb2e592602fe00","impliedFormat":1},{"version":"9dfb317a36a813f4356dc1488e26a36d95e3ac7f38a05fbf9dda97cfd13ef6ea","impliedFormat":1},{"version":"7c0a4d3819fb911cdb5a6759c0195c72b0c54094451949ebaa89ffceadd129ca","impliedFormat":1},{"version":"4733c832fb758f546a4246bc62f2e9d68880eb8abf0f08c6bec484decb774dc9","impliedFormat":1},{"version":"58d91c410f31f4dd6fa8d50ad10b4ae9a8d1789306e73a5fbe8abea6a593099b","impliedFormat":1},{"version":"3aea7345c25f1060791fc83a6466b889924db87389e5c344fa0c27b75257ebe4","impliedFormat":1},{"version":"a8289d1d525cf4a3a2d5a8db6b8e14e19f43d122cc47f8fb6b894b0aa2e2bde6","impliedFormat":1},{"version":"e6804515ba7c8f647e145ecc126138dd9d27d3e6283291d0f50050700066a0ea","impliedFormat":1},{"version":"9420a04edbe321959de3d1aab9fa88b45951a14c22d8a817f75eb4c0a80dba02","impliedFormat":1},{"version":"6927ceeb41bb451f47593de0180c8ff1be7403965d10dc9147ee8d5c91372fff","impliedFormat":1},{"version":"d9c6f10eebf03d123396d4fee1efbe88bc967a47655ec040ffe7e94271a34fc7","impliedFormat":1},{"version":"f2a392b336e55ccbeb8f8a07865c86857f1a5fc55587c1c7d79e4851b0c75c9a","impliedFormat":1},{"version":"fd53e2a54dae7bb3a9c3b061715fff55a0bb3878472d4a93b2da6f0f62262c9f","impliedFormat":1},{"version":"1f129869a0ee2dcb7ea9a92d6bc8ddf2c2cdaf2d244eec18c3a78efeb5e05c83","impliedFormat":1},{"version":"554962080d3195cae300341a8b472fb0553f354f658344ae181b9aa02d351dbd","impliedFormat":1},{"version":"89cd9ab3944b306e790b148dd0a13ca120daf7379a98729964ea6288a54a1beb","impliedFormat":1},{"version":"28fa41063a242eafcf51e1a62013fccdd9fd5d6760ded6e3ff5ce10a13c2ab31","impliedFormat":1},{"version":"e53a8b6e43f20fa792479f8069c41b1a788a15ffdfd56be1ab8ef46ea01bd43e","impliedFormat":1},{"version":"ada60ff3698e7fd0c7ed0e4d93286ee28aed87f648f6748e668a57308fde5a67","impliedFormat":1},{"version":"f65e0341f11f30b47686efab11e1877b1a42cf9b1a232a61077da2bdeee6d83e","impliedFormat":1},{"version":"e6918b864e3c2f3a7d323f1bb31580412f12ab323f6c3a55fb5dc532c827e26d","impliedFormat":1},{"version":"5d6f919e1966d45ea297c2478c1985d213e41e2f9a6789964cdb53669e3f7a6f","impliedFormat":1},{"version":"d7735a9ccd17767352ab6e799d76735016209aadd5c038a2fc07a29e7b235f02","impliedFormat":1},{"version":"843e98d09268e2b5b9e6ff60487cf68f4643a72c2e55f7c29b35d1091a4ee4e9","impliedFormat":1},{"version":"ef4c9ef3ec432ccbf6508f8aa12fbb8b7f4d535c8b484258a3888476de2c6c36","impliedFormat":1},{"version":"77ff2aeb024d9e1679c00705067159c1b98ccac8310987a0bdaf0e38a6ca7333","impliedFormat":1},{"version":"8f9effea32088f37d15858a890e1a7ccf9af8d352d47fea174f6b95448072956","impliedFormat":1},{"version":"952c4a8d2338e19ef26c1c0758815b1de6c082a485f88368f5bece1e555f39d4","impliedFormat":1},{"version":"1d953cb875c69aeb1ec8c58298a5226241c6139123b1ff885cedf48ac57b435c","impliedFormat":1},{"version":"1a80e164acd9ee4f3e2a919f9a92bfcdb3412d1fe680b15d60e85eadbaa460f8","impliedFormat":1},{"version":"f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","impliedFormat":1},{"version":"019c29de7d44d84684e65bdabb53ee8cc08f28b150ac0083d00e31a8fe2727d8","impliedFormat":1},{"version":"e35738485bf670f13eab658ea34d27ef2b875f3aae8fc00fb783d29e5737786d","impliedFormat":1},{"version":"bcd951d1a489d00e432c73760ce7f39adb0ef4e6a9c8ffef5dd7f093325a8377","impliedFormat":1},{"version":"672c1ebc4fa15a1c9b4911f1c68de2bc889f4d166a68c5be8f1e61f94014e9d8","impliedFormat":1},{"version":"b0378c1bc3995a1e7b40528dcd81670b2429d8c1dcc1f8d1dc8f76f33d3fc1b8","impliedFormat":1},{"version":"5a0d920468aa4e792285943cadad77bcb312ba2acf1c665e364ada1b1ee56264","impliedFormat":1},{"version":"c27c5144d294ba5e38f0cd483196f911047500a735490f85f318b4d5eb8ac2cc","impliedFormat":1},{"version":"900d1889110107cea3e40b30217c6e66f19db8683964a57afd9a72ecc821fe21","impliedFormat":1},{"version":"a2e4333bf0c330ae26b90c68e395ad0a8af06121f1c977979c75c4a5f9f6bc29","impliedFormat":1},{"version":"08c027d3d6e294b5607341125d1c4689b4fece03bdb9843bd048515fe496a73e","impliedFormat":1},{"version":"2cbf557a03f80df74106cb7cfb38386db82725b720b859e511bdead881171c32","impliedFormat":1},{"version":"918956b37f3870f02f0659d14bba32f7b0e374fd9c06a241db9da7f5214dcd79","impliedFormat":1},{"version":"260e6d25185809efc852e9c002600ad8a85f8062fa24801f30bead41de98c609","impliedFormat":1},{"version":"dd9694eecd70a405490ad23940ccd8979a628f1d26928090a4b05a943ac61714","impliedFormat":1},{"version":"42ca885a3c8ffdffcd9df252582aef9433438cf545a148e3a5e7568ca8575a56","impliedFormat":1},{"version":"309586820e31406ed70bb03ea8bca88b7ec15215e82d0aa85392da25d0b68630","impliedFormat":1},{"version":"db436ca96e762259f14cb74d62089c7ca513f2fc725e7dcfbac0716602547898","impliedFormat":1},{"version":"1410d60fe495685e97ed7ca6ff8ac6552b8c609ebe63bd97e51b7afe3c75b563","impliedFormat":1},{"version":"c6843fd4514c67ab4caf76efab7772ceb990fbb1a09085fbcf72b4437a307cf7","impliedFormat":1},{"version":"03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","impliedFormat":1},{"version":"956618754d139c7beb3c97df423347433473163d424ff8248af18851dd7d772a","impliedFormat":1},{"version":"7d8f40a7c4cc81db66ac8eaf88f192996c8a5542c192fdebb7a7f2498c18427d","impliedFormat":1},{"version":"c69ecf92a8a9fb3e4019e6c520260e4074dc6cb0044a71909807b8e7cc05bb65","impliedFormat":1},{"version":"07d0370c85ac112aa6f1715dc88bafcee4bcea1483bc6b372be5191d6c1a15c7","impliedFormat":1},{"version":"7fb0164ebb34ead4b1231eca7b691f072acf357773b6044b26ee5d2874c5f296","impliedFormat":1},{"version":"9e4fc88d0f62afc19fa5e8f8c132883378005c278fdb611a34b0d03f5eb6c20c","impliedFormat":1},{"version":"cc9bf8080004ee3d8d9ef117c8df0077d6a76b13cb3f55fd3eefbb3e8fcd1e63","impliedFormat":1},{"version":"1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","impliedFormat":1},{"version":"b6aa8c6f2f5ebfb17126492623691e045468533ec2cc7bd47303ce48de7ab8aa","impliedFormat":1},{"version":"18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","impliedFormat":1},{"version":"68434152ef6e484df25a9bd0f4c9abdfb0d743f5a39bff2b2dc2a0f94ed5f391","impliedFormat":1},{"version":"b848b40bfeb73dfe2e782c5b7588ef521010a3d595297e69386670cbde6b4d82","impliedFormat":1},{"version":"aa79b64f5b3690c66892f292e63dfe3e84eb678a886df86521f67c109d57a0c5","impliedFormat":1},{"version":"a692e092c3b9860c9554698d84baf308ba51fc8f32ddd6646e01a287810b16c6","impliedFormat":1},{"version":"18076e7597cd9baa305cd85406551f28e3450683a699b7152ce7373b6b4a1db7","impliedFormat":1},{"version":"1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","impliedFormat":1},{"version":"d2e3a1de4fde9291f9fb3b43672a8975a83e79896466f1af0f50066f78dbf39e","impliedFormat":1},{"version":"d0d03f7d2ba2cf425890e0f35391f1904d0d152c77179ddfc28dfad9d4a09c03","impliedFormat":1},{"version":"e37650b39727a6cf036c45a2b6df055e9c69a0afdd6dbab833ab957eb7f1a389","impliedFormat":1},{"version":"c58d6d730e95e67a62ebd7ba324e04bcde907ef6ba0f41922f403097fe54dd78","impliedFormat":1},{"version":"0f5773d0dd61aff22d2e3223be3b4b9c4a8068568918fb29b3f1ba3885cf701f","impliedFormat":1},{"version":"31073e7d0e51f33b1456ff2ab7f06546c95e24e11c29d5b39a634bc51f86d914","impliedFormat":1},{"version":"9ce0473b0fbaf7287afb01b6a91bd38f73a31093e59ee86de1fd3f352f3fc817","impliedFormat":1},{"version":"6f0d708924c3c4ee64b0fef8f10ad2b4cb87aa70b015eb758848c1ea02db0ed7","impliedFormat":1},{"version":"6addbb18f70100a2de900bace1c800b8d760421cdd33c1d69ee290b71e28003d","impliedFormat":1},{"version":"37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","impliedFormat":1},{"version":"e0ef70ca30cdc08f55a9511c51a91415e814f53fcc355b14fc8947d32ce9e1aa","impliedFormat":1},{"version":"14be139e0f6d380a3d24aaf9b67972add107bea35cf7f2b1b1febac6553c3ede","impliedFormat":1},{"version":"23195b09849686462875673042a12b7f4cd34b4e27d38e40ca9c408dae8e6656","impliedFormat":1},{"version":"ff1731974600a4dad7ec87770e95fc86ca3d329b1ce200032766340f83585e47","impliedFormat":1},{"version":"91bc53a57079cf32e1a10ccf1a1e4a068e9820aa2fc6abc9af6bd6a52f590ffb","impliedFormat":1},{"version":"8dd284442b56814717e70f11ca22f4ea5b35feeca680f475bfcf8f65ba4ba296","impliedFormat":1},{"version":"a304e0af52f81bd7e6491e890fd480f3dc2cb0541dec3c7bd440dba9fea5c34e","impliedFormat":1},{"version":"c60fd0d7a1ba07631dfae8b757be0bffd5ef329e563f9a213e4a5402351c679f","impliedFormat":1},{"version":"02687b095a01969e6e300d246c9566a62fa87029ce2c7634439af940f3b09334","impliedFormat":1},{"version":"e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","impliedFormat":1},{"version":"ceb2c0bc630cca2d0fdd48b0f48915d1e768785efaabf50e31c8399926fee5b1","impliedFormat":1},{"version":"f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","impliedFormat":1},{"version":"12aeda564ee3f1d96ac759553d6749534fafeb2e5142ea2867f22ed39f9d3260","impliedFormat":1},{"version":"4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","impliedFormat":1},{"version":"85d63aaff358e8390b666a6bc68d3f56985f18764ab05f750cb67910f7bccb1a","impliedFormat":1},{"version":"0a0bf0cb43af5e0ac1703b48325ebc18ad86f6bf796bdbe96a429c0e95ca4486","impliedFormat":1},{"version":"563573a23a61b147358ddee42f88f887817f0de1fc5dbc4be7603d53cbd467ad","impliedFormat":1},{"version":"dd0cad0db617f71019108686cf5caabcad13888b2ae22f889a4c83210e4ba008","impliedFormat":1},{"version":"f08d2151bd91cdaa152532d51af04e29201cfc5d1ea40f8f7cfca0eb4f0b7cf3","impliedFormat":1},{"version":"b9c889d8a4595d02ebb3d3a72a335900b2fe9e5b5c54965da404379002b4ac44","impliedFormat":1},{"version":"a3cd30ebae3d0217b6b3204245719fc2c2f29d03b626905cac7127e1fb70e79c","impliedFormat":1},{"version":"bd56c2399a7eadccfca7398ca2244830911bdbb95b8ab7076e5a9210e9754696","impliedFormat":1},{"version":"f52fb387ac45e7b8cdc98209714c4aedc78d59a70f92e9b5041309b6b53fc880","impliedFormat":1},{"version":"1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","impliedFormat":1},{"version":"5faa3d4b828440882a089a3f8514f13067957f6e5e06ec21ddd0bc2395df1c33","impliedFormat":1},{"version":"f0f95d40b0b5a485b3b97bd99931230e7bf3cbbe1c692bd4d65c69d0cdd6fa9d","impliedFormat":1},{"version":"380b4fe5dac74984ac6a58a116f7726bede1bdca7cec5362034c0b12971ac9c1","impliedFormat":1},{"version":"00de72aa7abede86b016f0b3bfbf767a08b5cff060991b0722d78b594a4c2105","impliedFormat":1},{"version":"965759788855797f61506f53e05c613afb95b16002c60a6f8653650317870bc3","impliedFormat":1},{"version":"f70a315e029dacf595f025d13fa7599e8585d5ccfc44dd386db2aa6596aaf553","impliedFormat":1},{"version":"f385a078ad649cc24f8c31e4f2e56a5c91445a07f25fbdc4a0a339c964b55679","impliedFormat":1},{"version":"08599363ef46d2c59043a8aeec3d5e0d87e32e606c7b1acf397e43f8acadc96a","impliedFormat":1},{"version":"4f5bbef956920cfd90f2cbffccb3c34f8dfc64faaba368d9d41a46925511b6b0","impliedFormat":1},{"version":"0ae9d5bbf4239616d06c50e49fc21512278171c1257a1503028fc4a95ada3ed0","impliedFormat":1},{"version":"cba49e77f6c1737f7a3ce9a50b484d21980665fff93c1c64e0ee0b5086ea460a","impliedFormat":1},{"version":"9c686df0769cca468ebf018749df4330d5ff9414e0d226c1956ebaf45c85ff61","impliedFormat":1},{"version":"89d5970d28f207d30938563e567e67395aa8c1789c43029fe03fe1d07893c74c","impliedFormat":1},{"version":"869e789f7a8abcc769f08ba70b96df561e813a4001b184d3feb8c3d13b095261","impliedFormat":1},{"version":"392f3eb64f9c0f761eb7a391d9fbef26ffa270351d451d11bd70255664170acc","impliedFormat":1},{"version":"f829212a0e8e4fd1b079645d4e97e6ec73734dd21aae4dfc921d2958774721d0","impliedFormat":1},{"version":"5e20af039b2e87736fd7c9e4b47bf143c46918856e78ce21da02a91c25d817e8","impliedFormat":1},{"version":"f321514602994ba6e0ab622ef52debd4e9f64a7b4494c03ee017083dc1965753","impliedFormat":1},{"version":"cc8734156129aa6230a71987d94bdfac723045459da707b1804ecec321e60937","impliedFormat":1},{"version":"bb89466514349b86260efdee9850e497d874e4098334e9b06a146f1e305fca3f","impliedFormat":1},{"version":"fc0ee9d0476dec3d1b37a0f968e371a3d23aac41742bc6706886e1c6ac486749","impliedFormat":1},{"version":"f7da03d84ce7121bc17adca0af1055021b834e861326462a90dbf6154cf1e106","impliedFormat":1},{"version":"fed8c2c205f973bfb03ef3588750f60c1f20e2362591c30cd2c850213115163b","impliedFormat":1},{"version":"32a2b99a3aacda16747447cc9589e33c363a925d221298273912ecf93155e184","impliedFormat":1},{"version":"07bfa278367913dd253117ec68c31205825b2626e1cb4c158f2112e995923ee8","impliedFormat":1},{"version":"6a76e6141ff2fe28e88e63e0d06de686f31184ab68b04ae16f0f92103295cc2a","impliedFormat":1},{"version":"f05d5d16d85abe57eb713bc12efefc00675c09016e3292360e2de0790f51fa48","impliedFormat":1},{"version":"2e3ceed776a470729c084f3a941101d681dd1867babbaf6e1ca055d738dd3878","impliedFormat":1},{"version":"3d9fb85cc7089ca54873c9924ff47fcf05d570f3f8a3a2349906d6d953fa2ccf","impliedFormat":1},{"version":"d82c245bfb76da44dd573948eca299ff75759b9714f8410468d2d055145a4b64","impliedFormat":1},{"version":"6b5b31af3f5cfcf5635310328f0a3a94f612902024e75dc484eb79123f5b8ebe","impliedFormat":1},{"version":"db08c1807e3ae065930d88a3449d926273816d019e6c2a534e82da14e796686d","impliedFormat":1},{"version":"9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","impliedFormat":1},{"version":"ef83477cca76be1c2d0539408c32b0a2118abcd25c9004f197421155a4649c37","impliedFormat":1},{"version":"2c3936b0f811f38ab1a4f0311993bf599c27c2da5750e76aa5dfbed8193c9922","impliedFormat":1},{"version":"c253c7ea2877126b1c3311dc70b7664fe4d696cb09215857b9d7ea8b7fdce1f0","impliedFormat":1},{"version":"445af8e071b13ba018e01778c7c6d1c6e73fc38632c8bcb209f39aa2de789627","impliedFormat":99},{"version":"5db57cae5a31571fd14812ddc96af0174ba58b8b282bde6c135b02e254aabad1","impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"b0429a80a40145644a85690c68da1d66d6a71b7744acab8af0340fe4dd1755cb","signature":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":1},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"e15690c41dbe9b9b3bbe973158dfca873afe779c8ed31d0d61c009f006d9733f","signature":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":1},{"version":"aaa4d676b9d202bb1dab976ea85bf70242a3039094cbd5adb931513c4ca0f55c","signature":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":1},{"version":"c555e7e9fdd3304839d04401a0034c82c9826f473dd5a081038611b666fd9a23","impliedFormat":1},{"version":"1bac6ed68b61b9debc92eddf194989d6595655b24bc1ee78bf05c14eb6e2869b","signature":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":1},{"version":"83c791951174955ababfceb36ae31e5a0435f1d1dc4e8e313bb8436e173c4517","signature":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":1},{"version":"e48eb9e136ca68bb32412ed99c292cfe3839351854d9bb0b1057dd311548b216","signature":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":1},{"version":"153d00b83bd029258afdc46ed4ad8fea631b83d929881805e190e823c0e3f598","signature":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":1},{"version":"2618dd01325caa5f79aea570e5b01cf4251ab840e1c804f6ef1e12596fe9a048","signature":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":1},{"version":"e6509f8ed0f96428b884d014d05298566301e6872fc7466daf2e5386fc4eb1f4","signature":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":1},{"version":"aa0a75148c05002950f40f2bf00bec499603f070a25d2b64ff2f51682de526e3","signature":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":1},{"version":"1d96b00da8ab52510ebf83f6218a44ee7b35d4fb406973a5fa59c2932d44ab47","impliedFormat":1},{"version":"c85375e232498985931c082be76315cdc794bd6884466bb269fab958c987df18","signature":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"54495480ae5dde36bef1a11d1e3bd30ea5f12371265ebe6602b873574b747949","impliedFormat":1},{"version":"b5376e7add213e63920e59b83259a8aea2b6c304d1ae79193c093269e6fe26ee","impliedFormat":1},{"version":"2cd932a8d4f1f620df509a375a24374993087f6a755efd508b2f005c4c398399","impliedFormat":1},{"version":"38545588b8d33cd30d5b09d7be740c919661510f7943cf597430e8f74dc21ce5","impliedFormat":1},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":1},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":1},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":1},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":1},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":1},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":1},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":1},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":1},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":1},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":1},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":1},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":1},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":1},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":1},{"version":"d8af20e90dfba259787d7b72281126ad04a724ebddea134486cc248242985928","impliedFormat":1},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":1},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":1},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":1},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":1},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":1},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":1},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":1},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":1},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":1},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":1},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":1},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":1},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":1},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":1},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":1},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":1},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":1},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":1},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":1},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":1},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":1},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":1},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":1},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":1},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":1},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":1},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":1},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":1},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":1},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":1},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":1},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":1},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":1},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":1},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":1},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":1},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":1},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":1},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":1},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":1},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":1},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":1},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":1},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":1},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":1},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":1},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":1},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":1},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":1},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":1},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":1},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":1},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":1},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":1},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":1},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":1},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":1},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":1},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":1},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":1},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":1},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":1},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":1},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":1},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":1},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":1},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":1},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":1},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":1},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":1},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":1},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":1},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":1},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":1},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":1},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":1},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":1},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":1},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":1},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":1},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":1},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":1},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":1},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":1},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":1},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":1},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":1},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":1},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":1},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":1},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":1},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":1},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":1},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":1},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":1},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":1},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":1},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":1},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":1},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":1},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":1},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":1},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":1},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":1},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":1},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":1},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":1},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":1},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":1},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":1},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":1},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":1},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":1},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":1},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":1},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":1},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":1},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":1},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":1},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":1},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":1},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":1},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":1},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":1},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":1},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":1},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":1},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":1},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":1},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":1},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":1},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":1},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":1},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":1},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":1},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":1},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":1},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":1},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":1},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":1},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":1},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":1},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":1},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":1},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":1},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":1},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":1},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":1},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":1},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":1},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":1},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":1},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":1},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":1},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":1},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":1},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":1},{"version":"e074c76ae83c128184a7c51583059b2ac94dc65e42a30d3d07f0a4ae439ada98","impliedFormat":1},{"version":"26b75196806f5d2d35951372abe6e9a8abe6ba2909b56427b83e01f2dd055f5d","signature":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":1},{"version":"b8cc9a40e2e90937dcf15804eb1df783e0841ab73c2d1c7c6be00189a38454bf","impliedFormat":1},{"version":"6cb35dd63cb77bb311590818c641219201324809c204f6f6f3e8b2dd020fc103","signature":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":1},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":1},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":1},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":1},{"version":"b2cd3eea455c4c2e2583adf6e2fb27f1ba26fc4e170e5d9b84243c73022b1ac4","impliedFormat":1},{"version":"bac14d2b22bb575755f937bc6d854c82cdb8434c8abb8844510fc8cb1416849b","impliedFormat":1},{"version":"6d8913dc1b42dce4da3a48e3a57b1cee51afcde894da43bed1e19f4303a38a8e","impliedFormat":1},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":1},{"version":"b898e82350ebf0bad51e0dd49405d79b1243166691944a71d752fb9fc7a0e805","impliedFormat":1},{"version":"02c9bb32c1845dc58c58b68dbdacb200eeb188711a4a9a720b36a2298462b617","impliedFormat":1},{"version":"15bf0d97593eda42b97953a987747614d02e05ab3db6457119955bc176659e79","impliedFormat":1},{"version":"495aeb2d71216ff5b544441862e2b5998fa9a70ac0b5aee90b0c7777ba4dd74b","impliedFormat":1},{"version":"5c7f19d8c5cf23c20fd68e9f1ca8545b56c32941dc11d4f4252c8c8ea67f16d6","impliedFormat":1},{"version":"93ba7b0ec3db0478fa671860f9fd1dd4dc09df5164f62496392be908ae40bdd0","impliedFormat":1},{"version":"2cc3b2743504a647011a477bfa732c80f8c50c435ea14df0e4f45cb04098c65d","impliedFormat":1},{"version":"627136c2fa71fe35ef61e87ceabfe3de8003494bdf15532aabe95d8556ce03f5","impliedFormat":1},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":1},{"version":"41e3ba7cf41ea214fd14c29209c2a8f0781e91aab6c852fb84c263e07424f616","impliedFormat":1},{"version":"552fdbfb98044cea1862e6be1f6aa12b1abed8504c42ac25f5bd20c11256eb5b","impliedFormat":1},{"version":"2b532e5638f20cbbe2bb4ff92f5b998eefdbb8a004d87f8991568e0958c1fa5b","impliedFormat":1},{"version":"140cfa512cdaf55533cfd9afedc48bf72cce371d75d60c54cc09f56c6341fb68","impliedFormat":1},{"version":"e2d9abf824ec4d2376fdfdefa60b154fa3147c1153326e61140c454e93cdc8ba","impliedFormat":1},{"version":"83c89ec38a9147f452cc207300e8e63af9364cc6887cf9e65f385ca98fa2d1ba","impliedFormat":1},{"version":"37f51b9367990c0070ec9798ba788929ab5cc54b74786f45fcbeec4ca9af4a12","impliedFormat":1},{"version":"900fcdd85062c1987f15b0670300bd6707b8d5b0bcdc3629b88c6dbaf71f1f4c","impliedFormat":1},{"version":"067670de65606b4aa07964b0269b788a7fe48026864326cd3ab5db9fc5e93120","impliedFormat":1},{"version":"21290aaea56895f836a0f1da5e1ef89285f8c0e85dc85fd59e2b887255484a6f","impliedFormat":1},{"version":"b77e10408795c272920abd5d537be7017d411bebfbd915d96e3acbca71cc46b6","impliedFormat":1},{"version":"5261eb616fe55994d535f43db524ea4668270cc0aaf6c57af5e52b4d5427d32c","impliedFormat":1},{"version":"98194ee0ea73f8cb6c6e027ffa1b72af8785c90aa94f09ea721c927d12959510","impliedFormat":1},{"version":"7cd062a58bd27ead074cb1b7e12efa0a1f4fe5e2eda677e91e4c07f32555f873","impliedFormat":1},{"version":"2cf94327abec7b8954aec9735d9609610392edee14bb90323cb3dd30f3f54b90","impliedFormat":1},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":1},{"version":"72882f8809fd8c16374e6034f8ca5341e7705c7c9d3dc1817866409474b50f11","impliedFormat":1},{"version":"c33d3ecc050e239dd88589bf565c55446bfd2adf24ce260aa5ea8f6c4c11e883","impliedFormat":1},{"version":"44e901c1ac3e4bb88328ceffc14ef5c06f30c520f7ed69eadfbd47e932c09e31","impliedFormat":1},{"version":"9dc3241bcef94287cc3c3d338bdf59caee3e64e38d37d1adf85f0da7a821beea","impliedFormat":1},{"version":"d9108acee785864d66a865b609735453b578582e42e7127136c7a05abef08d4d","impliedFormat":1},{"version":"d3d6307f78f19574100cde165a3fa717b5efdbf2998e3279661365ac4f0a3d4b","impliedFormat":1},{"version":"50ffb79e1779e621c2afdad2583718d7011a390e964f0bed96fbe72fdd6f4aa8","impliedFormat":1},{"version":"78341884fc9296ca9f42181b382f38c67caa2792b30511525b22b2b08cd199d5","impliedFormat":1},{"version":"cd1cc56c261989fba6f5434be7cfe907232924f612d9f4b39dbe99ac6c9b124b","impliedFormat":1},{"version":"9ed4d8a6ae2e76235ca73ac7789df7060023944f10ed6ad5e2498705861230f5","impliedFormat":1},{"version":"936e0f920dbefc3460b876b69e420fd081ffff58c24ee8be3745acb3094a1edf","impliedFormat":1},{"version":"36e353a79dd09f3b175e3042c9dede8eabc64ce1abbb08095a80956f2dcdfe28","impliedFormat":1},{"version":"fb94137ca73b638df354f7e25092c187df9046b7a8fb07945cd7e9177c993409","impliedFormat":1},{"version":"f83755269feec9bdbe9c34cef3f36af1ea01d64256d3947d6eacd974fd13cd7c","impliedFormat":1},{"version":"f9043086ffebdf6b25eb96ccb40a469bc8b115fd387a72fae496064327a0e617","impliedFormat":1},{"version":"0ebd9e0db484c572e6a3fc27017b5793adb978f4a7cd43331aef4c717230301d","impliedFormat":1},{"version":"a5972788b05a1272c73b7065bb6dd1909a126a40d493620c066b1fd2807cdc31","impliedFormat":1},{"version":"9f3907c708dda33ea13f0aa0365d1482c127840a2cd1d5fdf8f7a8663f052fe9","impliedFormat":1},{"version":"d8a4999007d181c5c38f810760ecdc72d3df43aea92e3c166d9db354756ea1cc","impliedFormat":1},{"version":"bb8b7729659e83adeae399e82e63b770c85908fce5b6c10c85360977c4d284f3","impliedFormat":1},{"version":"83a902704e00227f51a366aa3acc8e95331c59204a15e269287c304daf114724","impliedFormat":1},{"version":"f22f55420b02537aec818b630a151aa399ea52a3381dacd47b39bb3dcf5aa042","impliedFormat":1},{"version":"17a3cd7fcb01492270384259d6a396956fc275c3193d6a2593952dcaa8a34b09","impliedFormat":1},{"version":"d997caf5e9ca48e6a6a083e8c2cb8a08f708123e5c99a3a385aebaeeeda3d155","impliedFormat":1},{"version":"f2e9250ba65f7086fe8c3aef12758bd9dbe236a45cc86009d419225fc8f4b280","impliedFormat":1},{"version":"fbdee056dc017a7706191a6305726e6cfaa9eaea558b1a6ec8878a6c8ab34e3d","impliedFormat":1},{"version":"bbb9ffea79227181ae7ab87143f696d6710221d8f8b9c2753fb7b06dfc49e613","impliedFormat":1},{"version":"a1659836b2b0a6cab98c90dee7594e0a7d5a9169058734c4b89ac0ae17b906fb","impliedFormat":1},{"version":"f47cc97ecfb3618198c195b663a4aa82c6f87d5bc02c6f6f8faa55e3ec7e1156","impliedFormat":1},{"version":"73608d79cc12093fa52d5da2c57945646b01363ce664255c70e757405eacdbb7","impliedFormat":1},{"version":"691fef11ee89ab867fda0a79e51cccbbfa038df769fedc6a18e570b5a2edb03e","impliedFormat":1},{"version":"7acfcd0cb1cec76704a7db87a19b7dda6b8b16c43489234d006bc16f62c8fd40","impliedFormat":1},{"version":"0e9459051a7bbbb90827034c80d0b1961ac774a490e695a716f1d063ce72e7fc","impliedFormat":1},{"version":"fbb6da9f50c633f892065b829c016edddb5ded9b0339c6b66279d66c5f986760","impliedFormat":1},{"version":"1d8b943d0ace83db0975bec61a2a24b03f35e906ef5f33bbbe18aa93aeda886b","impliedFormat":1},{"version":"241f86a8f7db0685bf32fed02ce1ebba7a33788a516cfe054e49b24a04130b80","impliedFormat":1},{"version":"93298628862ea99a097839c6da20136a09746c7a8e94da32efe4976e0b27d676","impliedFormat":1},{"version":"02dbbcbbc3bab5d67ecf641a7a93f54d0996d6d78e68d3208f881e43720a7d7f","impliedFormat":1},{"version":"9511f319a171b432b4b683ea1f6a1ddd11d2b2874aced37216469998b155b691","impliedFormat":1},{"version":"699504c4635c353d5a0dea4de7fd89efbf73403c20576d2657550aa9317c55c3","impliedFormat":1},{"version":"e8727b2e4c693aff93d6889a535e93849001673bca2b40b30c7b5c4f71738f09","impliedFormat":1},{"version":"dd745acde06128c0b1da7a51e5952e7bfa98cbc84c2a7c23e3c2bd2514878d91","impliedFormat":1},{"version":"b35f5f67228bfd80e513a6f364e10ecb66070315ed266ef7e785fc20544baebe","impliedFormat":1},{"version":"2df644564c547b56b2f44a8646846c2aa1abf9ca66e6025d1aef853b5c84cfd0","impliedFormat":1},{"version":"db410b37778ae2309df095e3a32d4be3f1bdd6803bda0a0e571f406d286c8c62","impliedFormat":1},{"version":"2947e875e7b3d11371dc83ae67d760353746514c9a80bb7118d5bbb053730abf","impliedFormat":1},{"version":"9ee7c6f3dae88f271c1d52a8c15096c5c8034cd9a4c5261e8c9aa4853e96fe23","impliedFormat":1},{"version":"29c4c4faa8d4e1bac0b4086336c39d0284aa418808faf065b23d7c04e993b0c8","impliedFormat":1},{"version":"cdbab5b167a7fc460901f27fa7fd880dcb049419b1305139335dc5ae54f01dc1","impliedFormat":1},{"version":"1311e944b7d624ec2c0e83e3835e58d6741537658d32d49bfd8141fafb6f7b44","impliedFormat":1},{"version":"0d2196ca90935eae9ab2ae2f6869cbdc130b30429b89f43825b9e114be5a5415","impliedFormat":1},{"version":"fd4fcc71d7975421f36c4a7c4d2b80fac2c4a2d5f700317ffcd5b2341a2b8413","impliedFormat":1},{"version":"c0fb891700244aada784a70d4cb8ebc93f3f608c9b87efe3858dcd575f101083","signature":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":1},{"version":"d12f4e875036b137e215f41e6da22bfee624bcf404a9f0524e54b074b0de5658","signature":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":1},{"version":"0e2f2eb3f6230f219dd724434f9199b1ed19f984e6a716eb4d1497a580969dfc","impliedFormat":1},{"version":"bd7a3221e25d06a9e26403a9c7e04a64bb69bf067d7e911b4d4f5b422858f136","signature":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"7507a53958042412220620101ad54d0b271474f0b629bc8b4e3f691f8b842222","signature":"0036d72a881e72e62ada17d6554d97a169489398851c0c6df02b708decb080dc","impliedFormat":1},{"version":"409cf8770fbb9f099124e9ca744282ebfd85df2fd3650ae05c4ee3d03af66714","affectsGlobalScope":true,"impliedFormat":1},{"version":"78861dc70207b13b7719702e5b9bd7fa13f1ea0c7e9f5ba9be5ae647adc07f3b","impliedFormat":99},{"version":"28e3927aa156157a53385cb317959a4334467ee9f8c309f0266dc93d11602753","signature":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":1},{"version":"750fcc34e6bca3670e27bd6a39be8293a71fcc050ff8efcde8c9e07f08f94200","signature":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":1},{"version":"091b0f9115dea8db1e5c137406829f24946c781e34b3524266f105c6b82298d7","signature":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":1},{"version":"fbf5e3a058932600148d65c6612a236118e34c5f8b9c83fd43d5b7af95c6af22","signature":"07393678b7564af263c7a05c22d27f680194eb2f8be1835a727412cb2c9bcf77","impliedFormat":1},{"version":"1ca8b99461a8c9ff306e5a234bc12fa1ac6667a5d5b561e320c3efd77fbb24bf","signature":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":1},{"version":"e2858deea0a7b30e26f33e1909852b8e28efd9f377117b5b6470df18ed7c5a71","signature":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":1},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"110956b19835a8846be8b753107aa7628fba37a2a89dfa11eddfd57c60cb7a05","signature":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":1},{"version":"5adf68d61070988dfaf4969adcb11c70c4a1e4f9603e9dea5607ca580536314e","signature":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":1},{"version":"e301e812392f8d70297f8ef4fb2796bebdabd2bd2555dc6382e3e1704bc07062","signature":"a43c19197abcedbf3b3dd346956264a2b0f6718600a53596efa9d81ea3f3cfec","impliedFormat":1},{"version":"d65ebb2a088e41543f6f1e31862fa452cec5644f8380c1d1c43a3cb145620e74","signature":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":1},{"version":"552070ededf911a610a485163a2c104bc7d85fd2e114710d7bf8b3d824abbd27","signature":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":1},{"version":"4b19ba6f8326d4730365be35ea7f6103fe587c36603bfc667ea3dc467208ceb8","signature":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":1},{"version":"24675edeeffe1bdffa660e3fe8ce3caf89a2e1218036ed86cc57258e503deffa","signature":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":1},{"version":"8b61608c154f87e13c88b21b5208a3acb906ddcee5e3001f3b27ef13703b61e8","impliedFormat":1},{"version":"11396dc31389eee63c305d3838c396a0b524ce07f882432f5f51eaf8b044470e","signature":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":1},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"1f08154732cbb895c1193433fa77e792982b3901b36d9306e89effc1244534b7","signature":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":1},{"version":"9a5ab184c8267d64d301e59dc7f0f3ab2618c01a34ad1921cc9cfa460fa2850d","signature":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":1},{"version":"c9e920fa42a89fe77c85a0652d270c26f7acf4ff42ad3164f4ab9f3b230fc12f","signature":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":1},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"5ae7eedc370f165c800ce7f31676c273a51716ea0848d69823e308baf6a0b9b4","signature":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":1},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"1fd918d079f726c54a077d886967ca2ec8108f453189d9ef66bf1d4e72236743","impliedFormat":1},{"version":"5f31f61b497fd98b889a67865516a339b52a846c3e1e15406b1137864a6c444f","impliedFormat":1},{"version":"3d46e269720a54a3348bb4495a4f4f520f1e1b23f5c9a017f98fc87810de6c16","impliedFormat":1},{"version":"d9518fe8e1e265b1088352b9117628910a9f251974a2abc2aa904f7f4f71fa53","impliedFormat":1},{"version":"7ea29ad18f6242a9f51f3003df2323030d3830f7a2dbda788f52fd1da71bfe36","impliedFormat":1},{"version":"129a1cd246cb69ece363ac69ae257d426bf471cce3cc5a978397d5143cde8c2d","impliedFormat":1},{"version":"04848d258a86d4bfaef951ad304251f6c917408f89fad419e28ce6c84f0a1674","impliedFormat":1},{"version":"e44a9c7bbbfb42ee61b76c1a9041113d758ca8d8b41cefb0c4524689766e5a9f","impliedFormat":1},{"version":"1e9b3e4e3d802df7b85f23318ab4dde8e9a83fbae6e197441d815147067d2fa4","impliedFormat":1},{"version":"0affed2881f6bc1652807c4cb53c87b51255995fe30a68dbcb7127114ff426b3","impliedFormat":1},{"version":"46b2bff13c747143a9a39614cfebc8972c8e1ef3a140139314f454a04580327d","impliedFormat":1},{"version":"23b03a7cf8d6a63de30d7f104f6367127dde524181017e1d8879c00d999dca05","impliedFormat":1},{"version":"5c489290b1db424ecb914ebb7dcc88280ddb7f4dbd1a1a7a16c1559e7d98f195","impliedFormat":1},{"version":"69018d625163e38107ac82f8a9ef723b601b600d3ca0140a35a9c6eb94b552a3","impliedFormat":1},{"version":"867c654176fa4def1058ee8f50c055e58d6a15dedfb0567439986e836070cf00","impliedFormat":1},{"version":"9402092f0d7dc8552149b21e3cc5f4010040c8b73b6cee2ca5bc930ddc2e0f10","impliedFormat":1},{"version":"74dd04af9bbe8c6fdfed2b51563c3cba2c13137b0268e02a48e9c6cf81bd804c","signature":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":1},{"version":"24e644e0c0efd97329b245d8def25c49faa97e64204ff3841e886f77cc707613","signature":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":1},{"version":"5bfc8b4482b0ebaa2a6dcfb82cb260b28f1ea9ee3e631370f57e6bdcd9bf4e70","impliedFormat":1},{"version":"1bc2c129f1a06adc1790adb22c13c8e71c2ead456c0a98e72f1e2d7f27047a0c","impliedFormat":1},{"version":"52842ede098f0b8a89c12c7513eedf5e6eb562574192956d342b70821799cbaa","impliedFormat":1},{"version":"0cbdcca7c3520ca6ec3f9a75acbf3830e8cfaac71059dfbdd770db8f1764f95d","impliedFormat":1},{"version":"f64094fd4216e94abe989e65f7d3250b66137279451439777a8fddb04fac771e","impliedFormat":1},{"version":"32935a7707e31e7d5741b4811d9afa0cb95153e508c05b96dd3675bcd4d57321","signature":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":1},{"version":"2ec851d31eda764a1c9446542f730c8398329baec30b94ca6775db75d1088253","impliedFormat":99},{"version":"c5d4b5694ca97080a2c6ae206b879c8f579f81971396494370a4b4edaee264aa","signature":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":1},{"version":"86fbffcecd36078df1aba97634b5e05b670c2d3fdf88cda28af363235341c498","impliedFormat":1},{"version":"0bcc3c16704b4de46a314377f51fbb9597c0c7582b627a1cd057694e21e1fb36","signature":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":1},{"version":"b0ca84f52f51453c41f50fb75468487aa831b21b03cb3fd58acc6ff1441664c9","signature":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":1},{"version":"39089579500c24efe2d519a14d5ac61cd060fb4fac145e153bd4698069285fc9","impliedFormat":1},{"version":"e82a51d5498c34f37bf96981223d5aa0b5051ced754d34b9747b1aa8a4f2174f","impliedFormat":1},{"version":"7dca1745afe35b6aa588e0de49d9e1059fc2ecbc4279e8ae0f5b64d83c05251e","impliedFormat":1},{"version":"83e01ec16b5a8424ba35047471fe772e4fdeba7dfa7884d9ced04dd84c01a26c","impliedFormat":1},{"version":"2873f7d3fc801d897c9177e8bcc417d348e96c76490f55cd7237e87859af8f12","impliedFormat":1},{"version":"2f2b201944cde220c32c5241cc9cabf11916031f521a281045ca224de6dc6a3f","impliedFormat":1},{"version":"ede088b09b00760b9ce0997bc1669e25bd155241f369faacf09f3d810dc0ede3","impliedFormat":1},{"version":"f1eeaedee293c60b9db75b7cbe374963f7875602645193d94673a369bd06ba8c","impliedFormat":1},{"version":"4c8e3ac2ef84ebeee736b4a712f8d418168872ff428d16b17d7872f3e8f7768b","signature":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":1},{"version":"fdd43ee468482642745df98fefc6cb6a2e43a31820c73ca5374859f1f9697cf4","impliedFormat":1},{"version":"a8067ba70f56a1bc61cfc53a0e6bf0395d84c6a4b592a5462ad60acf7b9f60d1","impliedFormat":1},{"version":"716922a8d29406d301d37c2bef6565bd17e3abc071a44ba5a0d52397fe6ef4bd","impliedFormat":1},{"version":"c7dcc33644fa9b33ac1a6ddf20463decf4c720289af8539e584718cb5f4597fd","impliedFormat":1},{"version":"e1531f64774c07cb25a541bca4fa42cc563ad7e21944c41845195bcf20f5032a","impliedFormat":1},{"version":"ba2e93d22cfdc1569b7953d9d467151e2d2eccb490bee74317f1f4f2333b13c7","impliedFormat":1},{"version":"44d63aa3fef04a23e467d73eb8c1e4974e9027a56a67581e4e15b4024af0667d","impliedFormat":1},{"version":"32b789a883704fb6be047f8a8f600685933eeda17f1ca9898ec42af0951bc5b1","impliedFormat":1},{"version":"b0f25d7f2e82edf76b2c8a4423defa26747483d6e1e772ac8476d5b78f69fe4d","impliedFormat":1},{"version":"51e4a1da037eac1dbb909891d7db4860ba80866159dc6813f737fe1eb33ca9bf","impliedFormat":1},{"version":"4c39806d4d0cf15b0fe29a74d0c3645508ccd51bc4a33fee7782a843f3f0e4b3","impliedFormat":1},{"version":"d82c4d30bf153c88224df1ee76b595ba52b0dd6bc3f09c8d31a52ef751ef0052","impliedFormat":1},{"version":"1705b40e0698ec8a6e844ba21fecec6b2fa5ecd6d126dbf7bfa8bf69e77b741c","impliedFormat":1},{"version":"b72123b1d2bc40c98869b15dda3af4afa153dfeec5c1984ec3fc37b19b2138bf","impliedFormat":1},{"version":"42a1a75a5b70388825e244af4ab7c268f052a021310385fe191e8ee12ed6d696","impliedFormat":1},{"version":"fe9706a96369dbcf8064a5a670e70112db672b17b5ac0e609a7379871db4b564","impliedFormat":1},{"version":"09d9166970b3c0a143ce39bbab9260823baceb8a24743ed55c9414aa4367a141","impliedFormat":1},{"version":"97f2eb8221e407a79c3c25a748592e1ed63b601236fb4eec8480a186c5471ae2","impliedFormat":1},{"version":"120d183567e622fcaf1654355cf3ef6b2162e45b39389916e82bdd82444da76c","impliedFormat":1},{"version":"22759dfadc7f47badde31230a0a34ba6810f88b29ff314fb5e0ffd5fe91ba379","impliedFormat":1},{"version":"1789bd0284be2a33aeb0e2a1dfd818d11cef707e06359928ff545c0f92fc08fc","impliedFormat":1},{"version":"c81a187472459f2e3dd935a2eebd77cca096f5159c6b877c2eadfcebe946d795","impliedFormat":1},{"version":"97d48f5c823e3c84ae30f8de0525afe256b5af9cd2df5fde8a1d96f93b93776e","impliedFormat":1},{"version":"080993c948d0c440310586c45f5b37544ee9323306b7df0a41384ed55061313b","impliedFormat":1},{"version":"4764e86784bb88b8f3573279db3856c50a03e2b8bc184c06a40f897bff9d7e83","impliedFormat":1},{"version":"027a4481143e6e6e28440b7f79e34ec1fd7bb0ddfced3d701694a1940c19672e","impliedFormat":1},{"version":"49baa46f3bbffe0cca4177d5feddd98ba3b25d929d02cc41705d758b1e7f2472","impliedFormat":1},{"version":"dc11ac5030092409dd3183dbb24174beaf35739b9b5c90f268b3cf82b9453708","impliedFormat":99},{"version":"47a2d2c4865b43051a4eca4fbb40bb9fdd5ef81656de8f70267ac31f09f95499","signature":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":1},{"version":"d5886b9467c8dda8ed0821612dcc6fca9f2d832512a8b937b3484d93f3636d1a","impliedFormat":1},{"version":"53847fd61407f64b298303c3dacc61c5ebe3879c03be8f4a2facd1380d59d563","signature":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":1},{"version":"f406b9f28e270b8efe5b3a8c207e762b543a6dec477c2ade3c7ec6f291567800","impliedFormat":1},{"version":"dedeab999d03fdfde33bf1c111c323de619d091691c00f5fd6b685ceb91d8fca","impliedFormat":1},{"version":"9e73494038a8349e540c4117bb4a323a5c05890e131242a49d08d4a158d1204b","signature":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":1},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"378ad00f3ab6e8aeb7fa5003fd5320be7aa0e5bc9f9d63cc2f9ab03db0c0f426","signature":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":1},{"version":"a315a141f52f92232e0e7756f77cfed8e3ecb031317166711fb5d906e404a2ac","impliedFormat":1},{"version":"73a3d78b99633e9bdd1c325289268e714e1bef4ebf9d596eb20365cdb78f37a4","signature":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":1},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":1},{"version":"5bd0f306b4a9dc65bccf38d9295bc52720d2fa455e06f604529d981b5eb8d9dc","impliedFormat":1},{"version":"f30992084e86f4b4c223c558b187cb0a9e83071592bd830d8ff2a471ee2bf2d4","impliedFormat":1},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":1},{"version":"a8c78b87e93320a306dd9ae810dad6493b912553ca36432fe5002f06d3fa49a5","signature":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":1},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"b463566a97071e04a5e82e28574512769cbbc7248a57607c5e4da8ef8936496d","signature":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":1},{"version":"f5d85030552240ab7188ec76510c200677e62e4f32adfdeb008dccaafcf46eac","signature":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":1},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"2315674631123ab12c9869c9f9621a4d90d3d5de60ca5d469eb66e908a836c2c","impliedFormat":99},{"version":"acf8ad22752301247864f14024924665dfdbe0b8414696676c4d8a39321d63bc","impliedFormat":99},{"version":"4c7f6be76cccefccf0d639f0d5edd365c881ecf386dc0d852d111105bc432067","impliedFormat":99},{"version":"0fd3fbc2c8d11873d75aa933569299294a212e24f8e07f2606fe4554e9708da2","signature":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":1},{"version":"b7d4cdb253532e6a4d9fad633190f30a866495f27a142d878ee4dc8d7e732036","signature":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":1},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"4ca0057c2803cd59ff8cc3f23dc879cdcf1e694898b0b396028a112bcf6150ed","impliedFormat":99},{"version":"1f3bd4b5fa06f1c7cc7da3f0bb09d111bf2bb50242d41f56a0cdfc5f042d3c8f","impliedFormat":99},{"version":"08adb105ef060445029c540b67ff1c5fc9654945f119c20889543663535b422a","impliedFormat":99},{"version":"06f24c39cb33b45c5854d88964c7ac97acfc33970dbc8393b52d6aba6d996f24","impliedFormat":99},{"version":"96412abfa516228b7c365e16153b1bf01f8fe0115166c907af7f8de82ab99b24","impliedFormat":99},{"version":"732dc3edc2ab006e9e02dd7fcb3935a83ae11ed7058b7bbd3720a585cae59889","signature":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":1},{"version":"c27e732d38889b693247e1de37d0b59aa19206666c60197af53e5dffa04306d5","signature":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":1},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","impliedFormat":1},{"version":"4f745bbc5a0f8b98da40e48cfe714370c315084b603b3d62ffe4286162c8fab5","signature":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":1},{"version":"28c0439c4559ab72880e3af969d5b2707beb257fa0afe40689c543774fa3c1c1","signature":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":1},{"version":"d3c18a71ea870377f5943d765774b73d0ad5c6f2f6aa64630d864370bf4cc3cc","signature":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":1},{"version":"39c842feead8063841390a224f214938eac642cb84f374482a12345976e101b4","signature":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":1},{"version":"5aa5598f4de93ad253cbd314a7c470da4fb796adeb832f3cb9ac752e867b173b","signature":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":1},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"5f808ff2bf2dcbd57cc17074ee1da5d958704be942b0a7ac126aae49aa453c14","impliedFormat":1},{"version":"0cb9b8a024cfd688404753f22172b72129f366e3fc23d1a73d072698cfbb3572","impliedFormat":99},{"version":"3cb92b03358a7758156d08e7335f6d8989e7d2ad0484d940d1d159e719bec6fd","impliedFormat":99},{"version":"db2d78cb15bf3448525c97ebee086c8032249015fe483c7ba0d17922e54c3204","signature":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":1},{"version":"6cbd71f9696f4ca2bf196759d831dfc188f35c9d048a795891289e4ddebc0431","signature":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":1},{"version":"911f5c06cfd1a397cf9c1ff5a7b2f9d67ca6df852a7c1f472fda34708f049049","signature":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":1},{"version":"41c141589971f1d393db7bfc7cc37212b75e4eff94b8c3c68ea7b3117064879f","signature":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":1},{"version":"c68eb17ea7b2ff7f8bcfe1a9e82b8210c3112820d9e74b56b0fbecaab5ce8866","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"a2d9f1cd1d9cbafdb2d808b8b823e7e2bb1a5e0d4be381f352985ef35aba2a83","signature":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":1},{"version":"a50d1b1999acbabf53356fdf59a87f9f19668fa899455f1ced93848eda010f0e","signature":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":1},{"version":"4acb7490f65fb1a129b89bb5a4d4cbbb350ade630ab2bc0c274233cc8b322f9f","impliedFormat":1},{"version":"5aabdd8954b113593293fbb5df7c1d359b0c9e5ecfb9c3b5e7857548f0180326","impliedFormat":1},{"version":"f2fe033eb7a514819c240b9b94e20397b658402386fc0074244813a05446ee96","impliedFormat":1},{"version":"da83f0cbaaa8719d0d496a36efe871e609329eb54e03603a27c0c3ee5d2315a8","impliedFormat":1},{"version":"3899995b17f1b37baf3f5733f69910af170ba6de932de0e155a99d6f1c2d3f6c","impliedFormat":1},{"version":"c81a7cb743a6905675f5e1fdee46d05a0a958e10579350d06c390614034f83de","impliedFormat":1},{"version":"8d6570e5997ac57cfa535f8a26edc967388699033315e301b5a1e03c2f88741f","impliedFormat":1},{"version":"a625467141ccc971a2a0b4edf41bc4cde7375d9369d1ede7366792d328d1fd2f","impliedFormat":1},{"version":"7c20b6004a1bd4f6934cee8b85f51897018fed52a64b166400f5c25ee3fdfbde","impliedFormat":1},{"version":"43aa9b96bd6d8d2a6931fa18a6395efe988d54e3433bbce292c2504085bf2a78","impliedFormat":1},{"version":"006fa561643ce29dcccd8e1ab4ad1f1c20144db09b7a68758b03369259dc756f","signature":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":1},{"version":"142211080daa08b9b55e623a1cd25e5700b4791a3dfbb3fc7cef01fe8ea525b8","impliedFormat":1},{"version":"0385cc1a19feefba283a4ebf3d218ca4b4da3d2377c14bd4bee231fdb5651122","impliedFormat":1},{"version":"5a631dd1e7d47386d9d9d4885ecfd91c81473599ec21e4e85dde53d7606ac61a","signature":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":1},{"version":"a7fe7e88c50608567af53c49d3c59ea5f33bf5f59126d67b2a25f85eb41297ba","impliedFormat":1},{"version":"80559fc72ab564f9b61c24e61b049d8c6ae1e269bd3aa97b10b269d1d6e32afd","signature":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":1},{"version":"ffa08aa6d8afb732ce007e5a56eab72377d47fec3cb00f257fea5d5d587d81c3","signature":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":1},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"64e3abf739734d8cde8004b9f54264cd31322e2c34ea812e6c0f41bb4d22f8aa","impliedFormat":99},{"version":"be90405159d49371fc69c9ab170184b07370b938a725eebdcabb8215d3cf200b","signature":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":1},{"version":"ddbff04edde6235b674b1b7787b6e6b51e68f82b273c9e8a1f4f5483999eca12","signature":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":1},{"version":"6e17e5e9d06b2070521b5734d58f147a85d75d4b7c34f5710cb1e7550aa9b08a","signature":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"ef38456e22b0bffcd9ff28dc1a7138e84918a212e6960dd620cc3000341c0ebe","impliedFormat":1},{"version":"07a1cea63a067c0845029ea6e1933af842783efa3006510f504b1f09bd2ebff0","impliedFormat":1},{"version":"48ce8d49a17cdd6dbb687c406af1caf4bed54fbe40ff14c6c505ccca6176cd21","impliedFormat":1},{"version":"3cd6ca36b5729325dd2eb0359eb1e2aed4f8cc73c3b8341e1733dfeee99fbeeb","impliedFormat":1},{"version":"0e8edbe744dfc3ce65e9fa2283f1f0eb2c0aaaec4df19765f51c346e45452cda","impliedFormat":1},{"version":"e8f32bdfbcbddd21331a469193a5c63c7b5e0d80025e649d91f833869bf5b7aa","impliedFormat":1},{"version":"1bea3584ffe75ae8fa970d651b8bbd7c67a75d21df6bd1762dc2abea73012b66","impliedFormat":1},{"version":"bf0e009524b9b436156b4a326cc3e92f1fdcd16ce51d119c94e4addc910e645e","impliedFormat":1},{"version":"52e0c1007dea40e9a588f22425a80250020ef0cd9b4a9deb36f315e075d1ab40","impliedFormat":1},{"version":"2c6ecd1f21dc339d42cecf914e1b844cef3cb68e3ec6f0ed5a9c4f6a588beb92","impliedFormat":1},{"version":"653672db5220ac24c728958a680b0db84c8d0d0f7ade5d78dbac72035d9ea70b","impliedFormat":1},{"version":"3e689acc1789753818d875db16406686afb5b5e689dcc76d8106a960016f6352","impliedFormat":1},{"version":"d7a7229e7c12bf013834713f569d122a43056a5f34391b8388a582895b02c9e8","impliedFormat":1},{"version":"b811d082368e5b7f337d08f3e80be3d7e4c0c7f0249b00f8224acba9f77087e9","impliedFormat":1},{"version":"c26c383b08e47dfbd741193ef1e7f8f002ac3b0d2f6bf3d4b6b9a99ee2d9378e","impliedFormat":1},{"version":"75473b178a514d8768d6ead4a4da267aa6bedeeb792cd9437e45b46fa2dcf608","impliedFormat":1},{"version":"a75457a1e79e2bc885376b11f0a6c058e843dcac1f9d84c2293c75b13fa8803b","impliedFormat":1},{"version":"0e776b64bf664fffad4237b220b92dccd7cc1cf60b933a7ce01fb7a9b742b713","impliedFormat":1},{"version":"97fe820ad369ce125b96c8fadd590addae19e293d5f6dc3833b7fd3808fea329","impliedFormat":1},{"version":"4e8a7cea443cbce825d1de249990bd71988cf491f689f5f4ada378c1cb965067","impliedFormat":1},{"version":"acca4486b08bf5dc91c23d65f47181bd13f82571969c85e8df474fa6bc5c2a88","impliedFormat":1},{"version":"47244c79b80aee467a62c420ef5c2a58837236d9bf0087e9d6b43e278a71a46f","impliedFormat":1},{"version":"971dc452ac09307ee049acb21bbd30a82d1c163377465d6b33fd4d677ed2385d","impliedFormat":1},{"version":"226b58896f4f01f4c669d908f32c657bcab1a83f3aebb2f3d711a4fe7ba2a2d6","impliedFormat":1},{"version":"171df77317ddf15dd165eafd18800f722ba0f774802545187f78629d3210be16","impliedFormat":1},{"version":"5d85ddf06bed9df0a9b75ec83723575d16343727ee5ce3df1b3a914b95358cf8","impliedFormat":1},{"version":"9a447607a90667c6db7737f30d2429f6f06efde55a47a2a3eeebc52e866d153e","impliedFormat":1},{"version":"95b74ccaa6228d938036d13a96a47645f9c3d3b707c0b6989a18d77fd62447cb","impliedFormat":1},{"version":"856b83248d7e9a1343e28e8f113b142bd49b0adece47c157ab7adf3393f82967","impliedFormat":1},{"version":"bd987883be09d8ebe7aafed2e79a591d12b5845ac4a8a0b5601bdb0367c124c0","impliedFormat":1},{"version":"75ceb3dc5530c9b0797d8d6f6cbb883bb2b1add64f630c3c6d6f847aae87482e","impliedFormat":1},{"version":"efb2b9333117561dd5fc803927c1a212a8bf1dd1a5bd4549cc3c049d4a78ec63","impliedFormat":1},{"version":"ef17d2b0d94e266d4ec8caa84010b8a7b71e476c9cfa17e3db366f873d28445e","impliedFormat":1},{"version":"604a4451df97c7bfc75846cd1ed702129db0bee0f753658e0964d67619eea825","impliedFormat":1},{"version":"b9dfc4e6c69b1d60c7c060fb7d18951ca50f01fcdb46cf4eed23ca7f16471350","impliedFormat":1},{"version":"6911b52e74e60b6f3b79fc36d22a5d9537a807e16ec2e03fd594008c83981ab5","impliedFormat":1},{"version":"2551daa9cd45fb05ee16cee6282892c14a92e49a2d592b29fc9ff6d4ceef7dc2","impliedFormat":1},{"version":"5ba862c2b8f6fc41d95b417b19ed28111a685554ba2bac5bcf30680a92a46f26","impliedFormat":1},{"version":"449babe88138e129aef94c1696b527898f9e13ab62bce129daee0e85266e48a7","impliedFormat":1},{"version":"051fcc83efe52405a750b576b5aedffcd32db3f88b354c31e9a76e87446e5ab8","signature":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":1},{"version":"f81ff6704eaac628b003f30a95f3e389557705f7f98e713b64f8ca9d0932c731","impliedFormat":1},{"version":"46978e49fed98a0cf4d492952a6c4c51a62dc6a67e0215f050782b95a8be975f","signature":"19e7990fe2e1e0111f6bd9cb5dd921c0db9cccc8a435b314eeb1c2ea8b8b8425","impliedFormat":1},{"version":"30fcf5a01a69a33f236aaea7ec1cadfa40578cd10e22b2ce3de79bce0494c73f","signature":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":1},{"version":"1b52c84fb8bce45b4addd8c9e68f5c46affd9cae1b3c37fe2110bb998f594ffa","signature":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":1},{"version":"d745002b281b6391345fc4e2ae1f75d7ebc30331f35f43e45ac6ead0947a0ae5","signature":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":1},{"version":"904ce043e49929bc608ac6bd2b45936dc3941bc01509173e461acdfbf564db91","signature":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":1},{"version":"d639d85e94bbf437e5668f6e6ebeb90cbf64f1afbb59df296b93b6654582910e","signature":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":1},{"version":"b700806e86a2c044b67334a3f51923ece81d9c679d422b6abe1699137000c2bc","impliedFormat":99},{"version":"62183689a38a3cde5880373d8310098c414a8640dc057215b68506232a637421","impliedFormat":99},{"version":"73904d20e02ca3794be6a05f3e63d27222f9168b2124116fb34ffe54047f94ba","impliedFormat":99},{"version":"17c0d4e79776d9b9d9eed51c44f5e584444c21f992d22866d6b4434d286a8d31","impliedFormat":99},{"version":"8a0e7ea4ffd59d904080127df9efaea6a5bf1beea50c469b8880a17bb5d4dc47","impliedFormat":99},{"version":"0cc5f3673dfdd4de175355666f84ff033f0974ce7d2331cfe39116a630d355f7","impliedFormat":99},{"version":"0174d48a0005affed0c6fa1aa35757732fa9e5802f082704fa9f0bec251ab391","impliedFormat":99},{"version":"3d9450c6a13228a5264fc4057e374a8128674fae1e8a7ed6813ee9d636751212","impliedFormat":1},{"version":"7e818b2ee0941eafb351ed6c7580f3e042d0319d7766510eceabb6fd7a812e70","impliedFormat":99},{"version":"3c8387341da109d7b4770e672f10e9fcc151413af1c96fe0cc54d8b8de1755d7","impliedFormat":99},{"version":"740dc918da44408780199b5611b4b9c800ba690b31a18f32b38af286d5e2ff45","impliedFormat":99},{"version":"ae93a198a53e617cacb40708f2c78d7291a618c6794ee2011040f3ac47cbedeb","impliedFormat":99},{"version":"d1178ed103c371b486cd0e50d8f3944a35ecdde80dc04f8dc284754a643a9220","impliedFormat":99},{"version":"eccac2091ab74472cfc3cb2ca3eb14f7c78b6dce9808dcdc5ec8977b919e8933","impliedFormat":99},{"version":"216a61b49fc97b8dad1bb456870f927df8ff12e25307b343f19aca5c0bcb8060","impliedFormat":99},{"version":"d740b9dc0696feaad081e29ad9cbf4d5b8d16c50910c5d3bde2f048d2b89120f","impliedFormat":99},{"version":"41984cb85e4297f84e32c89236d2c8d2431d83dfabb9ac1e928d3222bddda998","impliedFormat":99},{"version":"52044bf0ea4d3a38e3393359c0e9d2ff791d353d88fff3b9049839196e1d8254","impliedFormat":99},{"version":"79d95d8a86c0244ce8087d01d8cfcfeb2b3fa3e23a6767eefdda3819f16fc7ea","impliedFormat":99},{"version":"3d9ee67d9168fc1ac4810d250fcc280f4165a9f1df1d936685b0734242f471c3","impliedFormat":99},{"version":"f7636abd6184039cac4fdda16e8d04eb9b3de4cfa5c766fac1180d0b258e7927","impliedFormat":99},{"version":"0a53c00231d30716ff431731bcb424e318b1f9829ed90203e14c8b97a1e946dc","impliedFormat":99},{"version":"9dd2fb90fd77b881f2d691880bbebe0c0e963d51f28b3beb029da43c2979347e","impliedFormat":99},{"version":"0cc4306c37e7b23d7a06863ec79051588f000263d7369a1d7fab8806b48b8444","impliedFormat":99},{"version":"9798640514d64279f8efa6cbdee6d60acae872c897ca7bb5aa9f4f5dc91a8349","impliedFormat":99},{"version":"7789df8c14b52039bc312ed321381091265b689c59782afb29e9d448b67539d0","impliedFormat":99},{"version":"5b71580a337dd56aee4fe3af7622bbb61f6274973ef9d4da175cf99860232dba","impliedFormat":99},{"version":"6899e0447596c759a68a1662f0c021f0975890daba35b1e39e89483700fdb261","impliedFormat":99},{"version":"90b3b486152c8d174395cafe14ed99370cc1bb6ca18259f92764ffab622752fa","impliedFormat":99},{"version":"b00b9639023977c5ad220738df760dd3e71313758d8296b40b4679b55190ec13","impliedFormat":99},{"version":"71aa5b558ee187eb95ad91ed2f3b4fa46b80f7057065c6b1a4c4a67381b89c45","impliedFormat":99},{"version":"23880d881af2c07702f0c9172476a8a4eac30c5f6529e8dddd999354ea7af9f7","impliedFormat":99},{"version":"cfa1883eb9f79a776b0188f0985fe250bdcdc4ea1da304e4a8f8a577a02fc293","impliedFormat":99},{"version":"f0df1db171b29575cafe8a41566d9e4ae1202bf0a6c7346e57870e1fc877d4bd","impliedFormat":99},{"version":"ca8e41c4c03f4b4e246c4b8a94a295bc34533b15756d18ff875bfe48336ef02e","impliedFormat":99},{"version":"bc1893451b0d4091c1267502aa0cde0719cbe00a108453bb70ed1a4244734d97","impliedFormat":99},{"version":"d73a5bcbafc2804700c17760be1807f601bad71a97e482a8f7eb44472e0cc69d","impliedFormat":99},{"version":"8a5c11af0db727cfd9b4fe0397bcf35b40729b4fa21c6f091fc0395c668d5166","impliedFormat":99},{"version":"4de0b7c895d6b8760f0d10a8a36758af730efc6a6c1434d7d9d17beb4bcea21f","impliedFormat":99},{"version":"fe10d356b9b2fafbec4a34f2e582450f069c4288f95da70213dd13db09b3074a","signature":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":1},{"version":"6070a17ce3ddb9c6615693b6beed6576940395c37fc36893311540f4923dc6d5","signature":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":1},{"version":"0782c58a411b4a934e11a389c09cef811876da5c7c768c1548648a4d5ffd0a1c","signature":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":1},{"version":"d10c31a6538d25bfde96067874e1dcda7be4731b267c3cb3510ab9498c6c076c","signature":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":1},{"version":"a3f5f1a31c490086b6bb8582de2ddce8d37332c6c85ba1c0cd868c08d1a8c7d8","signature":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":1},{"version":"b3370b7c2545cdcfaaa814f1690dee974fe2a818f27d9bd88f9fe6f4dcd86479","impliedFormat":1},{"version":"c9f05ebdbcba03c600fe70369829f3d7db3833ef5c81466d72b1f398e5ef65b2","signature":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":1},{"version":"1275ca930740bcf85b0122be6ebbf6583f9de8b608ab9f48f1ef6afac8e59288","signature":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":1},{"version":"cf99e01e761f57f68443ca3953892884f617776b4447ef48f692dbc1aaeee34a","signature":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":1},{"version":"1d3587915a10cfcaa110429363a3aad515bea565051ddca80d6db538e1327280","signature":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":1},{"version":"45320cf06821afd28917fcf19bc63dbafd88b57a81e9bb27af8e06a607b15f0e","signature":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":1},{"version":"1660f8f6635f9b5fc999af6f9c979beaa324c44638596323e15226e91c35b428","signature":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":1},{"version":"c9ceb2af8fd88b21d548e8b1a35e7d336f806fc8071677e5f0e91c99320c61a7","impliedFormat":1},{"version":"2d0abfdf9b8a84c31c0728f351993da5238366d7206785336d7fd8b1f751a4af","signature":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":1},{"version":"115b314fa690280fef66dd579fe82fe301e999c933b038c98908e5622bc71c0e","signature":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":1},{"version":"daccdfb58da4a8cd4098134fab5a01f88d8e5a064330de47757d9be8b07fdc88","impliedFormat":99},{"version":"04a50464661fb0a629486fe4e8a7cd8df740ad4a3aa3d36cb7272fcaf37248c6","signature":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":1},{"version":"c0717bd55569bc1c588edd862b6d76e94f4c6cc95021aea78382338209ece379","signature":"de736d948b57d9751dae087c64545629be50b695695945dee3a0f122000d809e","impliedFormat":1},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":1},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":1},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":1},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":1},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":1},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":1},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":1},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":1},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":1},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":1},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":1},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":1},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":1},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":1},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":1},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":1},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":1},{"version":"318dcdbb8fe0120b19dcbbda95e6ed53f7898901d00e42c006e8f21eeb09af73","signature":"15b8576006de6329b84266bb1e59fa138a53389770fb1bd7d295cbab3a283304","impliedFormat":1},{"version":"7b139df2366e1b6671356404cb22aa2fe5bb0a65f8e477229e33cf9cabfa6b65","signature":"e5cc1245441aaa2db511ed3a913a9b7e2a40f11364eec71e9a7543372cf2204c","impliedFormat":1},{"version":"d37853b20dbdde61d7200c5b7a186224a39deb15ec3ee9ee7baa52b33cbfb3dd","signature":"89728b933a73003bafdfb6027441bdee818fb08973197e3e81d0c4253c83824a","impliedFormat":1},{"version":"34c5a4cd69bf69726f9b7207eefe86880d3b5474a010b603adee62159917d343","signature":"f4db962be62f10a5a0ce4d1566b30e71b6f13bdb7f83cbbe7ece304d8cce3029","impliedFormat":1},{"version":"3012fbde7048d7aa90abc408f313fb21bb5299a2632a75aef085e85f1e587c6d","signature":"c5e22177c3a9a422990f3c73542a524d90008005f4227b5ea57cd1f78e2a6d68","impliedFormat":1},{"version":"7e348e5601f7ac767a605fd30c2cfbfe9eb06780c70ea3b77dde87f14619b7b7","signature":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":1},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":1},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":1},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":1},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":1},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":1},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":1},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":1},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":1},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":1},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":1},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":1},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":1},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":1},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":1},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":1},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":1},{"version":"4e64c49fc225d9e24302f65a6752888b42907ed055ac68d97ca1f5cc56135d48","impliedFormat":1},{"version":"591ac6c3151c941cafeafe26a15af5edebf94c190e3274b46a4f35bd2bed9865","impliedFormat":1},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":1},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":1},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":1},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":1},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":1},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":1},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":1},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":1},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":1},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":1},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":1},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":1},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":1},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":1},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":1},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":1},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":1},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":1},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":1},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":1},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":1},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":1},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":1},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":1},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":1},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":1},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":1},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":1},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":1},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":1},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":1},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":1},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":1},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":1},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":1},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":1},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":1},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":1},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":1},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":1},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":1},{"version":"f9f89ce15a9c4a56f2dceddbad9146711fc2e11f027f94a09a1b7de55da14696","impliedFormat":1},{"version":"ddf892c80b33668602deb58874d4d7f07b8cb9ff8c9b65be7396b435d95b2b10","impliedFormat":1},{"version":"2cdecfe56eadc30512544964ba908ddb9ff0b4a3967f6be424e409d23552cdcc","impliedFormat":1},{"version":"7090b94fc3c6219e214d6b2807b3c650fd6b99467b338aaaf42d36f158eab51f","impliedFormat":1},{"version":"2b383e3969f359b85ec4c3e3af6df1bf5827736f17cd74525daed86b73f8ed12","impliedFormat":1},{"version":"c1238acb0701c57e0f0f936b820eef90ef840bccf951d90c6536199e4cb9a7e7","impliedFormat":1},{"version":"9d11c4d45161f0b1afc74196f2f2bd88e8c82ad54ec057a205f4a2775e72b2c5","impliedFormat":1},{"version":"94a92cc92d97b95a54ed9778722601b48f4b21988eeded3782093d8d7350365a","impliedFormat":1},{"version":"505206881764364a89be881369d183e7f2e8ffaa8c93f773b73ba70799d21fa5","impliedFormat":1},{"version":"c7f210220b620dadecd950fa63dae87fea39b5a7d763d904ec64d0dae6d6c556","impliedFormat":1},{"version":"f85c7d2dd3d62a555f6b4391758b77768d13dafbf249c52d6eeec5dec1742353","impliedFormat":1},{"version":"1e3cc3492cd8d0743f77a5087e412078d8db236873b60332e7c9cf19ebd0f77e","signature":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":1},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":1},{"version":"f13b3a1249b976d047b9506a95e8f70c016670ddae256583b7a097e14ec1f041","impliedFormat":1},{"version":"014ba72e2add59d6d2d2e82166647982c824639e2902ccd7b3103cf720a0cb65","impliedFormat":1},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":1},{"version":"468f2973c7e67bb36f8f244c50ad26b9f3fa4821c2f32f9ee6103a5152a29d19","impliedFormat":1},{"version":"30607ea2dcc4053c959fbb251bce35d6f8c4ee7b093c55e751e5aef8b9178bdf","impliedFormat":1},{"version":"e05149678b018fa43f37cac4a209d0e5d96da358c68d0d6fba5cc621169c8143","impliedFormat":1},{"version":"9b40cdceea5bb43a6e998cc6f8d47480741de5f336d9147653a5d9004175f6c1","impliedFormat":1},{"version":"6a3d4698b535ee53fdd1e1d16c416b868338bb4c436ff1ff76510df3026b8c8c","impliedFormat":1},{"version":"45c8f70528fd0ab5f233d9792ca597243be423a1e5fdcfc90a0c0f7115aeb51c","impliedFormat":1},{"version":"daf9f1c75ac78171113b3adf72948892b33beab1e29c6aff6da6843f07a29435","impliedFormat":1},{"version":"9b3320b0e1e032bb7331f5c4a0dc16d555b6ff3fbdce27100b3460a8de8746ea","impliedFormat":1},{"version":"93ba7b0ec3db0478fa671860f9fd1dd4dc09df5164f62496392be908ae40bdd0","impliedFormat":1},{"version":"2cc3b2743504a647011a477bfa732c80f8c50c435ea14df0e4f45cb04098c65d","impliedFormat":1},{"version":"c2f4c022fd9ba0d424d9a25e34748aab8417b71a655ab65e528a3b00ed90ce6d","impliedFormat":1},{"version":"5aef7574e00dee8d07756e2ec4be314e9b1959447a1c95fe17ef921292413605","impliedFormat":1},{"version":"90a60ca34067fb61260c88564b57b9e5c07110790b22802745bcaa213071512e","impliedFormat":1},{"version":"4533a65a9fd2607c8b8422d007827ce5e2db6c171abff37026bdfdb5ef9928ef","impliedFormat":1},{"version":"e2d9abf824ec4d2376fdfdefa60b154fa3147c1153326e61140c454e93cdc8ba","impliedFormat":1},{"version":"cd8a4297d0ab56dc571dadd2845e558c9d979fe1e120a0dec537935bc8a36dd2","impliedFormat":1},{"version":"cabacc132fb0ee4af57dbf8ab6c1d84a94c236cb08d0f339242c0e6a0574463f","impliedFormat":1},{"version":"19d1260108bda868080bc3ac063ad81cbf84933649b9fd1b1c0440d22454978e","impliedFormat":1},{"version":"cb452f586652811b8a28abd466f0608f11dd646d77684aa37021876cc1f762be","impliedFormat":1},{"version":"396f711944c156303065235a5f4219569bf3468d0aa594c82fb9f4b163e9eb62","impliedFormat":1},{"version":"385fbe80c63a20852e978c150ddddf2252e7f9e29e5c9d0cfdc20f53c1b98a1c","impliedFormat":1},{"version":"ca7bf9066eab7c88d8c7687e43a05d91911ca2404ae493a0828394194ad400e8","impliedFormat":1},{"version":"c7cd1b232635a9f4be7766a43fb287e6534c5656977018b29d59ae0953ca8f57","impliedFormat":1},{"version":"9584156e963313c46cf3b7c25bcdb8936603dc9bbb74ffb9f9b0960bdb881080","impliedFormat":1},{"version":"e1dd113ba2780194568f985902fa2eb3aa8c3ab87d25a325d1df07a05c78f368","impliedFormat":1},{"version":"fb92ea3057b263ed4936515735a3c26da07567a5efa92ca563127e12b74d063b","impliedFormat":1},{"version":"9aab02aa16f361e68f4e85a4c906fa86d9dad489d5b75d84e1ab2aee73eaab66","impliedFormat":1},{"version":"f1ab1e63526905403a0f86986e0d2fd32077cf1a8706b31050d4b65d9b2cf6c8","impliedFormat":1},{"version":"4cfd7d57bbad9014fe81b3aafaab8f8c42b4910cd6f7a8cdc3c673eb39937fa5","impliedFormat":1},{"version":"f18d628357f6a4224eb3922f3d0e75199ce64865ca54cd0b9a18adfa4d374a05","impliedFormat":1},{"version":"4612bac1a44d1becb2c424ff790fc7d758976f59a08df90e8e28e31c5a17107e","impliedFormat":1},{"version":"4faebe7671813203eb7fb0fe28ad9b35d5d656b50e137212402876caa82c98ea","impliedFormat":1},{"version":"d7c135a3e73e7fe31aefa39d4001a125f6336ce749cf31c2632b6acab976015a","impliedFormat":1},{"version":"c55ae709f94155174ff63647edd2a7e3acbd02a2909aa2541569e8b8bac9fc40","impliedFormat":1},{"version":"530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","impliedFormat":1},{"version":"1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","impliedFormat":1},{"version":"07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","impliedFormat":1},{"version":"d5f1bbd44ba4f63d8a01fff5e1edc1c1fb50e9caa48a4fa48298a4485d6ff75c","impliedFormat":1},{"version":"4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","impliedFormat":1},{"version":"c70e38e0f30b7c0542af9aa7e0324a23dd2b0c1a64e078296653d1d3b36fa248","impliedFormat":1},{"version":"d12680e217215b37094868d491d00196e80f270ce47e5a4bc50269945ae5554d","impliedFormat":1},{"version":"396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","impliedFormat":1},{"version":"b7b881ced4ed4dee13d6e0ccdb2296f66663ba6b1419767271090b3ff3478bb9","impliedFormat":1},{"version":"06289b9873760aac77aed4035ea6c60b1e0879b8afe47a4530bc8522b9b804b1","impliedFormat":1},{"version":"63c36aa73242aa745fae813c40585111ead225394b0a0ba985c2683baa6b0ef9","impliedFormat":1},{"version":"3e7ffc7dd797e5d44d387d0892bc288480493e73dcab9832812907d1389e4a98","impliedFormat":1},{"version":"db011ec9589fd51995cbd0765673838e38e6485a6559163cc53dcf508b480909","impliedFormat":1},{"version":"e1a4253f0cca15c14516f52a2ad36c3520b140b5dfb3b3880a368cd75d45d6d9","impliedFormat":1},{"version":"159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","impliedFormat":1},{"version":"a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","impliedFormat":1},{"version":"8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","impliedFormat":1},{"version":"0c1aabfd9fb1818afb2e798f91f669edafce59cd7e3423d25b1cfccfaaf2c403","impliedFormat":1},{"version":"017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","impliedFormat":1},{"version":"ab9ea2596cb7800bd79d1526930c785606ec4f439c275adbca5adc1ddf87747d","impliedFormat":1},{"version":"aee8faa433dde04beedb779b3329456a286a966462d666c138c19113ce78c79e","impliedFormat":1},{"version":"d620ec36bfc6f8ed6fdecbe036d55cec81637f32fd34dc7bb7e60eba1764e910","impliedFormat":1},{"version":"4e693235d606287d6b5a4e7d572f190862b93ea4a28df8a63fc328aa8becdc9d","impliedFormat":1},{"version":"e58d1ea2fc84c9c03742b4f56449b7d4602c8c4deb4f0e57c619bab35bbbbf81","impliedFormat":1},{"version":"d82bc1f8fe8eef55aa741373da68b80a8503228c9aa0ec46bdd38fd7e0c02a18","impliedFormat":1},{"version":"d7c7f8a461326507d90d0888efff0c4011a5e69eb08ccb990232aa22334e4dd6","impliedFormat":1},{"version":"5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","impliedFormat":1},{"version":"27deb39ac0921db739b503407dc9aa93a546b015c06738bc8b66bdf0ae593c7c","impliedFormat":1},{"version":"eff5b8bdfe94c0a174484a6de01e802fb66f99f8737a20e4fba4df05c2f24cea","impliedFormat":1},{"version":"52fa3a4f47e30ef266dbda3b69821fe5811be4faad2b266586090d8b4806342e","impliedFormat":1},{"version":"5cb6f9ea4a097094fe624c3513111292690e39e83167a412f8912807be71ca65","impliedFormat":1},{"version":"fa461c83b2adc6b33997a95335d19723bddd4d7aaff41cac6f9f817e3c3ae730","impliedFormat":1},{"version":"d9eed4a308aeb32babee0600d21c3a3ba8452c89e8a4916e5460b45da147c33c","impliedFormat":1},{"version":"fc9bdd9b3d8fb59c913cb3b8dea0d79b38dfe9331ef07e1c6dc6bf363f061ad6","impliedFormat":1},{"version":"e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","impliedFormat":1},{"version":"0c3c4ce6a1884610c99306719f59174d81808c69393c30119f9c2aef0449a2cb","impliedFormat":1},{"version":"219a25474e58a8161b242776856ec5f6960839b63e74809445e51cadbfc18096","impliedFormat":1},{"version":"5a0d1534e9493ae44b08b3055172da38370e2afd2bc3d4bea11f7be78344036f","impliedFormat":1},{"version":"6309a45fc3c03d3c4d56228e995d51974f53009a842374695b34f3607877e5a3","impliedFormat":1},{"version":"bef94eba81ae2c09059c0d9abdb1ae1b7090314f70550f3c8cd5d7ead4a4f212","impliedFormat":1},{"version":"48b787ad458be9b524fa5fdfef34f68798074132d4b8cfe6a6fe9c2bf334c532","impliedFormat":1},{"version":"37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3","impliedFormat":1},{"version":"7281550c523596fd0fd36c6e19aa89075dac93144437ce48490da319b1f4d318","impliedFormat":1},{"version":"3f3f85dc43cb93c5a797f1ff0fa948d0e17843a443ae11a20cc032ccdf1b9997","impliedFormat":1},{"version":"020507cb67b96b0830a8636db03ae004181eee323ba33565cfe8d45aaedc4d1d","impliedFormat":1},{"version":"869010bc679df668137cb3b78a3cb8196e97acf285208a57f6156ceac894a2f7","impliedFormat":1},{"version":"bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","impliedFormat":1},{"version":"29a99d2e57b3e08a997cbc2397bdb251441a545306a74b95ffedc5f03d9bc6b7","impliedFormat":1},{"version":"5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","impliedFormat":1},{"version":"09e811cc1088d9ea3a7ddd7290f6a13767f56c85daf8c3374a06a45a08d55647","impliedFormat":1},{"version":"9da2c58a27fdce871c2eac09d5172b04248bb86ada9b0d10e8b3dfa8470b8dd3","impliedFormat":1},{"version":"5c317403752871838140f70879b09509e37422e92e7364b4363c7b179310ee44","impliedFormat":1},{"version":"7b270dc53f35dd0b44bfa619ad4d351fffd512e14053c3688323ed007eda3f6d","impliedFormat":1},{"version":"6d4e928f232ade7221cffc6e4332ec935baa176415c9bf5d12111bb883a247d2","impliedFormat":1},{"version":"e86ad029224d4f2af3e188be8b5e9badf8c7083247572069bac7bd2193131fc7","impliedFormat":1},{"version":"057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","impliedFormat":1},{"version":"38aa389acf91d77db5a4f8e26e713ed53dc832ed5573def9cd20acd9ba97c1fe","impliedFormat":1},{"version":"e56784be93954f1f86d4dd3ac61b4c9727e75864baf123a1b584b970baed4ba0","impliedFormat":1},{"version":"f878779620c5178d45413b33c214419bb3df2945e703c35e1191188321e3633d","impliedFormat":1},{"version":"b9115605f72b65a662723020b2a1eb696c375a5803d6b401dc01fcbfe49ece90","impliedFormat":1},{"version":"151659e152d71986b8943b9943cd7fbe27a65874655081602de7ea24a0f66e9b","impliedFormat":1},{"version":"9206b6fb75be7dba8bd341a2993f34dc101a82a6d853e72ab853a3a360127f83","impliedFormat":1},{"version":"62d32177e413c3ffe3c4b8f86247724637d7f0b13ddc340c2c7d83ad7ec0cf41","impliedFormat":1},{"version":"5858133b184e01b07c2ddba79844316d02c5fcf9b85703ad3bcd8d4b8417fc6a","impliedFormat":1},{"version":"be88ae284288a7db309dc649f8f7ca6736aa85e1c387c6e9d2778f75c43b24c4","impliedFormat":1},{"version":"5c997e33e10a4bf6efe76f857850d107804ef172f39640e9645b9d7ab64747f8","impliedFormat":1},{"version":"058ab58714b2e26122937e30a69f60eb942f14b0f2a079cf5461fb47590483fd","impliedFormat":1},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"f13b3a1249b976d047b9506a95e8f70c016670ddae256583b7a097e14ec1f041","impliedFormat":99},{"version":"014ba72e2add59d6d2d2e82166647982c824639e2902ccd7b3103cf720a0cb65","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"499b85df8e9141de47a8d76961fba4fbd96c17af0883a3ee5b9cba7eb0f26a5f","impliedFormat":99},{"version":"78dd4f51a218aeafaaf00dea4604e37d32791d87fafe1c20b5e1a3e8648c77bd","impliedFormat":99},{"version":"671ccab2e6a253d2516c0e4699b3077fc30cdb70b4436d8c79d76c91266a1a94","impliedFormat":99},{"version":"9b40cdceea5bb43a6e998cc6f8d47480741de5f336d9147653a5d9004175f6c1","impliedFormat":99},{"version":"e760f7860d08e9d42b6ecd7dd341602fbc0c13d60eb30beaf1153f1c7c44d66d","impliedFormat":99},{"version":"fb04e1ca667399e7302c033656cc285e6c1cff9c29f264cf229dd25e3962a762","impliedFormat":99},{"version":"693faddf4c41a29866e95602f444a1399a2f6a7093b6d1d60ba4f2922f8013d0","impliedFormat":99},{"version":"410e798cfb0d71e54d49284d16c7672db89720d017440abae05d547e9351e1cd","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"c2f4c022fd9ba0d424d9a25e34748aab8417b71a655ab65e528a3b00ed90ce6d","impliedFormat":99},{"version":"d76df1670eeb97afbab6c87b8cd31bbd09dbf9026ff0ca533b5d7d3fc0291f79","impliedFormat":99},{"version":"13902404b0a9593a2c2f9c78ac7464820129fe7e5a660ef53a5cc8f3701f8350","impliedFormat":99},{"version":"2484f21803a2f6d8e34230c1c4354288da5d842182d7102a49a004c819c4b8b3","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"cd8a4297d0ab56dc571dadd2845e558c9d979fe1e120a0dec537935bc8a36dd2","impliedFormat":99},{"version":"079a12cb0e0c42655d77da5185e882b4cc94bd5c6c2131171a9289fc1f4287fc","impliedFormat":99},{"version":"5dae1fbefdf74fea1e94193c2974aac846b23bf0e8ff68fed72f6bdf6ebe3200","impliedFormat":99},{"version":"40f42c27f6cf91185a68be52a9ff238a99945ed3f68b334bedd5c678ac4a1104","impliedFormat":99},{"version":"167edfac7664bec77aa2efb2ce9d515c41b5cc4269091a946b3fa6ec4e7e8738","impliedFormat":99},{"version":"e1d65ef0ac1d0f780a061cccf6aedc70622395b0edfd8df1a3bdb92c93a98bea","impliedFormat":99},{"version":"c394a8c3b9348c9c2c0cd0384c465e5c53c050c1512138e4684d626d86cb8f0a","impliedFormat":99},{"version":"e1e837899820897455837d4161c7d8c09c23cbf49a5d0be2259b49c5df254618","impliedFormat":99},{"version":"113f247dd5763bc81d47188f4acb9931de0e6f0103d37e0577f9996cd489f34c","impliedFormat":99},{"version":"a70f42b0cf7a665bbddccb6bc6ec520bf2dd8b6e34589d6a12e012cee8cb51d8","impliedFormat":99},{"version":"be741d3922f8f0e3f861d03e447e3f24a2247ac108ee37e67ec750f63fe7f476","impliedFormat":99},{"version":"7b1615fcfa2397fe944d40c0b64521ebe1afadefa39b3aea6a5552b093c4a461","impliedFormat":99},{"version":"647e1d0a723a7caa54487d50dbfd952f184a110899ce3f331f3c451f6fbd083f","impliedFormat":99},{"version":"effe24c379e404a2122c91ebed98935900169578c80a9751783331aac9d366ba","impliedFormat":99},{"version":"2386a2d632bd750487c7efdb7b624d97207c60f00a7ae4be792805edcec80a5a","impliedFormat":99},{"version":"562640a0449842e1fc2663d2d731740114629a156366a46d26c561811d879600","impliedFormat":99},{"version":"4faebe7671813203eb7fb0fe28ad9b35d5d656b50e137212402876caa82c98ea","impliedFormat":99},{"version":"d7c135a3e73e7fe31aefa39d4001a125f6336ce749cf31c2632b6acab976015a","impliedFormat":99},{"version":"0a7a5237b7e20029e53bcc83da62621c04009c91fa76df9563540cd7756d3a6e","impliedFormat":99},{"version":"62d32177e413c3ffe3c4b8f86247724637d7f0b13ddc340c2c7d83ad7ec0cf41","impliedFormat":99},{"version":"5858133b184e01b07c2ddba79844316d02c5fcf9b85703ad3bcd8d4b8417fc6a","impliedFormat":99},{"version":"d8758628dc5b226fa8436180e215df9875a64a9fabc5ae7e9aa1174aaa65ac38","impliedFormat":99},{"version":"a3db0a2479676946a68d3e3f269ad37e378bea6c0de45f56896bd729387a0215","impliedFormat":99},{"version":"e7a61cfe5f4e3620389614e86877785011bf1b0ed19ebdd0de11887a126de36d","impliedFormat":99},{"version":"6108a02bc041426234368f0c6689ce368a64d139c126e0d8cb7fbf791d76fe58","signature":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":1},{"version":"17a6cc4534f16da90b007e46154b41bf275c85d312262ae4a3ddaa29280223a0","signature":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":1},{"version":"63fef2de8fcd42a8ab0812c2bb743c2223560c2e105f26934e87b74d887e8d29","signature":"f8c76d5861f694fb5cf56a3e2569c194e17ad4de26995e1697d31bdd5c4c4b84","impliedFormat":1},{"version":"61cde05eee5d080d5fcdbbd924caca1edd638b1b50ecf3b6d06a4b002802dea8","signature":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":1},{"version":"7fcd90da31aee8eae060e076a2ba063b581527c4a52ed7a0d4d2c54a6e825e80","signature":"a6a218bacf4c9811fe75383db917998147cd2931404eb1ee9242e857a5d58329","impliedFormat":1},{"version":"f84d77e3818b757be8bdbdf012939ac9c2fe911cde3504d024bc61e2be194ffa","signature":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":1},{"version":"e8d58c5be1349361c5baa501fa483d84377afc9a08e41f3b75f83e528daf1a94","signature":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":1},{"version":"71f0e097677cd87e3e9ce263dd693383b79aebce3612425ad258d95dcc215ab4","signature":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":1},{"version":"0737b50b50ca1ab47650af7337f8492009bdee2d4e1939a697336447ea4593f3","signature":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":1},{"version":"8fbff250d0816c359dea0959c7192ffacda169097670c5a3e75ee3a2700656db","signature":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":1},{"version":"e0aff6ceb69ccb2b3125dec72d9d6ba47e934e56df71e73c101029474c843fc6","signature":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":1},{"version":"971382dc52b19f14f3a3c1f2be31815ab6961a5b21a0e0b8e0a11e5e11c738f8","signature":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":1},{"version":"fd457fd0ee10d8e35755575cd79de4908751eb69fe346b79354c012fc9b2b07c","signature":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":1},{"version":"f502f7d6cba1b802b1cbfce283a57b39a615f4118598648442b344733cf6b551","signature":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":1},{"version":"4505fc05a0f3d606ca0885ca3852a047a790013bfb6ee9a184f05e7628a7e63d","signature":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":1},{"version":"4eb0a3a123a07285b5d3eaf46f628bceb2404d78762c32915b186d0abbb9a6b7","signature":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":1},{"version":"b361ff12f949c31baff853004b652439a7acd0af3a2d600a6c6a0c118bf80cf4","signature":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":1},{"version":"b7a77f314ec986ff51448857a5e8bd4a237d9043d954cd588dfa779d61a8ebe1","signature":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":1},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"d6112d2a96173185241e1930dc82717ad6d950b2245fa24b27710d1a0ff58009","signature":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":1},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"4f8310b32282db8bfb9e81821441cd6cc425c8553afa89281bd2a7ed6320bf38","signature":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":1},{"version":"8a8df5249541df0c2b47cf517fd8f44fcc0985a3150042b246a6e47a1c3ff789","signature":"6265b0fcf0aa2372c9f7a4c1c0295936839fc18c1426aec60fd266558364b096","impliedFormat":1},{"version":"b446f0e6359c8815703c23822bc5726f8f8a90c0ac5647df9dd2c1d9a6b33970","signature":"07b48f0afcc74f2f8e4653d2147d57c9f9de60dfd4f2e5d4d4fe9779bc079f1a","impliedFormat":1},{"version":"9340e857c126a4b0e500282677a13dccfbf63fdd4f9108c83542592687764467","signature":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":1},{"version":"80a3fbb76a2084123b306818198f09aa58d1236efd43904f723f957e209f24ea","signature":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":1},{"version":"15114ae3e664e220741bbc4f2b61afc7924d3001e00b983f6cfbdc5c4252785b","signature":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":1},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":1},{"version":"ddfad2abcd30e1264631138fe262ea3d6925d7f0b84ec3becd9570a7b2e18740","signature":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":1},{"version":"f462b6fc33bc3f82d1551ac0678834dfff89192ce1e848eb0bb8ca5bfe8bc76f","impliedFormat":99},{"version":"eb9096c517da313cbedce8818d9cadb82bbf02cd6f4a65db4cee42ac01f4272c","impliedFormat":1},{"version":"6a01435c878cf34ff47512fae119e010cb64b298cb652cb9ea86b1ca736d3045","signature":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":1},{"version":"72880794974442e60c62611bf4297bb0724548d3f7996146da2bc6e11f911481","impliedFormat":99},{"version":"12ed24d8f6c1d0178b436b2d1b963d099760bddb1ce01025a75a45a866bb8aa3","signature":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":1},{"version":"864d5870ed972b7bec99d2ba72f2dbe0c0e85ea6fe268648f91430efaaf63944","impliedFormat":1},{"version":"e04605852407991c98d4b866417092346d720cdedaeba57ab0029c828d994ca6","impliedFormat":99},{"version":"0b420a401bdf0f0746f48b0555b4ca1bf9e4917467aae388bfc5035c0a6b8d93","signature":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":1},{"version":"5aac374cb4130730bb0fff62b279aabf09671c2333f3efae9605aff9b900d0e1","signature":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":1},{"version":"ca1cad3d252a4bc2c3d163d5594e90d376afeae331d30ab042604e9b3f5ba1a6","signature":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":1},{"version":"509f76c768daac266178142b6ce10c6493e3638cbc3ee5cbcf214b8fd07a3dde","signature":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":1},{"version":"739487536571661bc051b6dc09684f1883220e1881f412c951226e60700c73e7","signature":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":1},{"version":"2ff9c95fcda6a59679f57f6797de15a424421d1252b1ed77b348025cdcfdc1f0","signature":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":1},{"version":"e6cfcf171b5f7ec0cb620eee4669739ad2711597d0ff7fdb79298dfc1118e66a","impliedFormat":1},{"version":"7c36cc571a59a2222ecced151452c6856f4bea77895a61aaf3900362647f6b25","impliedFormat":1},{"version":"ea3780459ddafa381a91a340d082f529cee51395304c89ddba075de889fce076","impliedFormat":99},{"version":"2fcc87b3ccec3380cf418aff1a3c3b518de55a4de55323b1b931b2996e53db00","signature":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":1},{"version":"b7eece07762a9a944f097ee05d6f6b642b1e2dd87e6fc1b09600d881e5475377","impliedFormat":1},{"version":"1ccfe846d5e307fad71bf60b07c35f9daf2bfa070999b8befdfd438b268fedaf","signature":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":1},{"version":"887106db9734fe5d044da0e0d7f87de026c4e49bce1fda22c939dc74453936fb","signature":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":1},{"version":"66972d9c50680a480d4497283557514e53c72a71597e4c9cfe0e3ea3473456fb","signature":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":1},{"version":"584985940e81596ba1a116b4bf9335f7f41949f19b9a00c41c514c3b45dfa7ac","signature":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":1},{"version":"3f69c7cd1c35cf189878315054aba7c99c156b32f09e39ef9ab7429dbaa5e525","signature":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":1},{"version":"2bc7b44fc23649a665752cfd607080d9888ae6b9e7ee0978ee7a3324b2b9e129","signature":"77b073df8d2b297211f272d52ec7af8bfd20c6ef41477b12f1185c7dde45d25e","impliedFormat":1},{"version":"b696c1297e87f4134fde4cb2de57ce5981521e2d6b3178d4c5cbce7bf1a89336","signature":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"4f7e6730a707b0d4971d96de3b562819ce304af770723707a58a578dd55a5e52","impliedFormat":99},{"version":"d1c1213e9176398b4d1d9aa543691181fd5ae23ae5415e80ede41f1ec1ccf72a","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"e6274d956641c1cbd5a01a221a85a6671fd85104ed6b530f8d34ad3086804133","impliedFormat":99},{"version":"77516308358982bb05209e8c0ed6f321860e03393587d89f61055941e5bbcdd2","impliedFormat":99},{"version":"32f8d5ce134dc7cffdea9429bca0a31b633f20f612c577614058a2b2094b9c6f","signature":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":1},{"version":"d7a87c6b40cb8b97cbb7002f50c6d0141dc3767903c1a83718c2ec99738e2f35","signature":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":1},{"version":"9d6d2f6e93fc7957adbf0d0ff0132bc047332d06dbfb9d76fcfc7b957b99cc4d","signature":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":1},{"version":"23c80c2645ac2b145f92cb625449bcb2c91f6a68bd308098e8f74f44533b1f56","signature":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":1},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"b04ec149643419a918d68c1bf841b117330a604e245a93f55371864f6e55d6a2","signature":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":1},{"version":"ded318ef35e1443e0a676cb97fd2ae002a8ab37591d3066dca3f19460c3b14a0","signature":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":1},{"version":"6393148f04d79fb4bdf453691c7dc2b993a372745bf5036f078ece37ffa249ee","signature":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":1},{"version":"24b84af1c822230f8b7b0c17560efc7b012e1f80ca93a7e2b6423fa4dbe76e46","signature":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":1},{"version":"f1b6e3f1cb94332ce3d9b5a9fbea5faf8cb4a5121f38ff67a982828842763233","signature":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":1},{"version":"e5498f21bd48526ba95ca570e1c3fea6f8c5d5c0d611f76b729c470a8cd2d4b9","signature":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":1},{"version":"21d9ef17d12ecc8e1fc3524fdfccdabcfa4612b14848bdd753fe20faa8b13ffa","signature":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":1},{"version":"885181104d7a2a737919f4499cf5818428fae91689447deca944f8ed9c3693bf","signature":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":1},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":1},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":1},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":1},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":1},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":1},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":1},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":1},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":1},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":1},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":1},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":1},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":1},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":1},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":1},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":1},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":1},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":1},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":1},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":1},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":1},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":1},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":1},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":1},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":1},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":1},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":1},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":1},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":1},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":1},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":1},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":1},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":1},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":1},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":1},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":1},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":1},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":1},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":1},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":1},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":1},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":1},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":1},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":1},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":1},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":1},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":1},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":1},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":1},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":1},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":1},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":1},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":1},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":1},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":1},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":1},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":1},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":1},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":1},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":1},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":1},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":1},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":1},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":1},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":1},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":1},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":1},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":1},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":1},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":1},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":1},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":1},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":1},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":1},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":1},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":1},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":1},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":1},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":1},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":1},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":1},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":1},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":1},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":1},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":1},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":1},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":1},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":1},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":1},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":1},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":1},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":1},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":1},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":1},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":1},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":1},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":1},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":1},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":1},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":1},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":1},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":1},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":1},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":1},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":1},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":1},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":1},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":1},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":1},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":1},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":1},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":1},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":1},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":1},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":1},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":1},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":1},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":1},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":1},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":1},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":1},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":1},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":1},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":1},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":1},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":1},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":1},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":1},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":1},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":1},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":1},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":1},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":1},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":1},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":1},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":1},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":1},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":1},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":1},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":1},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":1},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":1},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":1},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":1},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":1},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":1},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":1},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":1},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":1},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":1},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":1},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":1},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":1},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":1},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":1},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":1},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":1},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":1},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":1},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":1},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":1},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":1},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":1},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":1},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":1},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":1},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":1},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":1},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":1},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":1},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":1},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":1},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":1},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":1},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":1},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":1},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":1},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":1},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":1},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":1},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":1},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":1},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":1},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":1},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":1},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":1},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":1},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":1},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":1},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":1},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":1},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":1},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":1},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":1},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":1},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":1},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":1},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":1},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":1},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":1},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":1},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":1},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":1},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":1},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":1},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":1},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":1},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":1},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":1},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":1},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":1},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":1},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":1},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":1},{"version":"b9e0783285db8fca77f8c20df30b66b201f914bacbfe472b86dcacdba555f360","impliedFormat":1},{"version":"3d21b5209a77dbc6d7010a3e401a1e83e4e7ad651067e4ec949d8d0c2c031d68","impliedFormat":1},{"version":"063ac7ddf1eab0e40841d481837cfee3551cd5c41e5fdd8a0a6652b535111644","impliedFormat":1},{"version":"7eda3321ba012ab61f565cce7627f0241e4f34fefcb50f3d8c1692287a8dd106","impliedFormat":1},{"version":"b5a263f298c34058a311a61008af8e9e6cd74db1e2d763fb2a5128bb5b4d44da","impliedFormat":1},{"version":"cd2208a59f674f506f6cc64d6cc28418ef6f0717f964b446ecbbc7d809638fb7","impliedFormat":1},{"version":"7ae48a41eb14b67618693cd9a9565c932c5685be8ce991372190894ea2ebcd48","impliedFormat":1},{"version":"19b03fdb67fe2049f12cc11c28a5b9d9a0fcc46e94b0a604d5a70cc37a2621ec","impliedFormat":1},{"version":"84845e0214b473a71c62ed983a0bbb0f0799a407e4ac864d7b81aee793594148","signature":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":1},{"version":"e5ec7af9c889b6741a10e19533578edd0fb43be0a720d9e6a9afe4edaa05c5f9","signature":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":1},{"version":"c834b18f2566fd297c640b3e6cc09e3b4d7f136d4fa6dcba5bbdf4f43cd2ba6d","signature":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":1},{"version":"ea8a19f6870d6db123a1c1f73aeb42072cce415ee1ec1bd1d36c397e300de300","signature":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":1},{"version":"836611f8ac2dab5b63027ad264b58de24c79f8cdd9debfa8348ab4ef0a360956","signature":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":1},{"version":"26f645954d730899ca76ae9984d77dfcd71e17378df2d6c92027c664f039cc4e","signature":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":1},{"version":"d1b113a0ddccfa9ed6e56e684a3535b03628189e8b0cf21070694029dbfb6930","signature":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":1},{"version":"8e19497c303a7303de968afc1795abf77aa861fe8697635edadfe6112128c3bf","signature":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":1},{"version":"5ab439d95c7b0578f50754b326a4b19d10463b176338012f12913a702cbbd76e","signature":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":1},{"version":"79505dc347a2fb2f354711e44f91dac706942a0a5cff2d1ce1de3dcfa20ee7ba","signature":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":1},{"version":"45dd8c90527470d208dd93eed619d7de8ce2fecbb911f29715ffcffbe8b139b1","signature":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":1},{"version":"f112cc8bbb552e5bb1c3197a719950108055e97a26508badda10e139bc4de908","signature":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":1},{"version":"0dae29e27c35fb47025834fb9fdb23e7163f1561ce2c514024006392a819bc26","signature":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":1},{"version":"aaffeac20eb7671b9e7a8554e2eaf48321c7e729648cc62285e7bf5c2b04dff5","signature":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":1},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"ba31187e92081ac1c43ae4a27eab076e64b5375156317f088ba8ad6ebc46d7dc","signature":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":1},{"version":"8c1adafdd548933f72a289b37fd900e55074ac82821e2e442b219a13cfb1c189","signature":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":1},{"version":"843de0a73618ec4a1df606529bf5bff337148399eb502db1ac1084354f3697fb","signature":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":1},{"version":"6cd79aa50e6c01858de0b1af7f1dac16ea340d9f5c45f36ec3df84a46b17e0b7","signature":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":1},{"version":"44289af95ccd692c2a6c1ed95b6969e5cc1ff25d92d88f6a6f3f6f11321ec5fa","signature":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":1},{"version":"37d457ed3501e91a40256387823644487fecde5b75563770b0bfbcf82fab76cf","signature":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":1},{"version":"5e2c7ad282c8e3a6520afa06bc36b069ab8323e3729e5b7a00f4e9174b845560","signature":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":1},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":1},{"version":"80325593c750536d23b1c83831886b98becac60c12c16efe24dd7ea01ef2c37e","signature":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":1},{"version":"4f7df2e11d0d3765191a7c3f4d539a687b79938eab3d06c324abe082f0e6c4b3","signature":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":1},{"version":"a00616866147eb099c694bd4eefa66feec6519dde06b0800694fc7609da1e02f","signature":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":1},{"version":"9da6e5efdfc9289fe26bc97fe20d68bdc4bd63959b7171afe65f9895002834a0","signature":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":1},{"version":"dd111cec2db8199513249bb6b8e82ab7aa0cf857535dfb972880dba1d3ab8048","signature":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":1},{"version":"741fe7fa56314c1668de4b4ad95b39ef794c353287d01dd72d04de08303aa0e2","signature":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":1},{"version":"9d756da03d2656d745240b3410dd58446c65d149183144a6c8cc4c406e3d80fe","signature":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":1},{"version":"60f96fb0fb68d37da5ea6679184874cc01df96288128eef945eeb8240333f5af","signature":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":1},{"version":"99e905943a2825f2a4689c923ba93f75c3a1d58e71932c1676aa4944f0a5abe2","signature":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":1},{"version":"c458de9dbc7d01c20858a10b34763a0831cffa63ecbda85aaae2b969ad7f2474","signature":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":1},{"version":"9e454b61ffc65d85d758efe9e20e57295f047b21a206a5d096e53597adcd911f","signature":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":1},{"version":"c700d87bd7c2d4f65628a76e146c630ca4b69166578b33dec93a8754dccff1fd","signature":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"9bdf90cb3e1ecc98cffaf1a6c22eb6308e714f3ceea50dcc5f6d47c2196b8f8e","signature":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":1},{"version":"39d918e5e6e20d2553799fd5f3e8a0431261cb8e7c4686aced5e9346dba2ff7f","signature":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":1},{"version":"6943a27fc40c4e39cd704b26f3955fc74ee348c8e39ad115b4a69cbc9748803d","signature":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":1},{"version":"c8789ec5946a385da5018611b636879588a37dd5994f59e789bae3d308bdbca2","signature":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":1},{"version":"c2c54ddc217e7a8890f89a9f10a837c4a0b38ad07f77d9a7f3ac3b880f6e078c","signature":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":1},{"version":"d1e9031cfefebb12d6672ef7d85faf2c5a23472f5b5be1909358db426fe82eef","impliedFormat":1},{"version":"cd15492d25fd5856070ea908f54d1af5ebc15cbae65dc56dd4e45b059f14a9d1","impliedFormat":1},{"version":"c8e93c330c6dee62d573dfe67211a2040ff7b737dd11a0a87cc43d74e60c4cc0","impliedFormat":1},{"version":"185367038d4aec329c2d1f39d5fb00cee01db99d098631dea9cb453c03c626c1","impliedFormat":1},{"version":"c50b22d805d8ca84b50dd11356dbdcf8457d1ca782c62d1578c36f83b7e17a9a","impliedFormat":1},{"version":"74578a765068c896816af87f99cc6f1e3952b3e187078afefdd56d3ca89e496d","impliedFormat":1},{"version":"9ba1022a32b054bfdefa44c1461685b53afe27395a81f81152eaf9247e0d9830","impliedFormat":1},{"version":"4a7c3d9fdfe24025098b326a4b7fe8fc5c4aa2ed11fb991b0d16f07db6bf6b04","signature":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":1},{"version":"a68b4c6f13d757bb6377eace3da07ee91dc5e2a78b37f98cafe98569f01832ad","signature":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":1},{"version":"4c359a85e608926740e86b22f6b9a972989ecafc491a57e7e0f0ce2d8d5606a3","signature":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":1},{"version":"ea8867477730534868b1a2ccd069cd7fa11715ab761da0f16f34ce377828a59d","signature":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":1},{"version":"e2853bba551ad4ef1c570186edf3808614a5a4d20ded15d2f9f23604556287c5","signature":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":1},{"version":"9b6ac4958b879dd4870c623a20f2e410f6d920d9cd625f4807f71ca609e76dd9","signature":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":1},{"version":"84ebba52dc2f2827c4b9364a272d4153e0ad6b0790fbd96de4e6ead5f5136923","impliedFormat":1},{"version":"0ad523e60ff15d88c88ab43ec59c18e49593e1d6bf1b4f2feacd35e170d97281","affectsGlobalScope":true,"impliedFormat":1},"a88e687f7ffb0239b7b23c24c2a2c8df034ae5ecbf5772cc629c17fe745aaf94","7e54587826057a5f9fbdd393dd44dc3509cd18ea5621b421ce1eed996214f703"],"root":[[71,73],243,285,286,[288,296],573,575,703,704,706,768,[771,776],[798,804],806,[808,810],812,[830,832],837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,[950,954],[963,966],1012,1013,1024,1027,1029,1030,[1033,1035],1089,[1091,1096],[1136,1140],[1142,1147],1149,1150,1152,1153,[1171,1176],1248,[1397,1414],1416,[1418,1423],1425,1428,1430,[1433,1438],1442,[1444,1450],[1493,1496],[1498,1505],[1728,1741],[1743,1749],[1751,1762],[1803,1807],[1815,1824]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"../commonjs","preserveConstEnums":true,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[1395,1],[1352,2],[1392,3],[1349,4],[1396,5],[1353,6],[1390,7],[1285,7],[1389,7],[1284,7],[1394,8],[1351,9],[1393,7],[1350,10],[1387,11],[1282,12],[1363,13],[1258,14],[1361,7],[1256,7],[1364,15],[1259,16],[1369,17],[1264,18],[1358,19],[1253,20],[1367,21],[1262,22],[1372,23],[1267,24],[1388,25],[1283,26],[1354,7],[1249,7],[1374,27],[1269,28],[1373,7],[1268,7],[1356,7],[1251,7],[1362,29],[1257,30],[1359,31],[1254,32],[1357,33],[1252,33],[1366,34],[1261,35],[1355,7],[1250,10],[1365,36],[1260,37],[1360,38],[1255,39],[1381,40],[1276,41],[1378,42],[1273,43],[1383,44],[1278,45],[1370,46],[1265,47],[1380,48],[1275,49],[1382,50],[1277,51],[1371,52],[1266,53],[1384,54],[1279,55],[1386,56],[1281,57],[1377,58],[1272,59],[1375,60],[1270,61],[1376,62],[1271,63],[1379,64],[1274,65],[1385,52],[1280,53],[1368,7],[1263,7],[1391,66],[1348,67],[1177,7],[1178,7],[1179,68],[1187,69],[1188,7],[1189,7],[1192,70],[1186,7],[1191,71],[1190,7],[1234,72],[1235,72],[1231,73],[1236,74],[1228,75],[1233,76],[1232,73],[1229,77],[1230,78],[1237,79],[1242,80],[1243,81],[1241,72],[1193,7],[1194,7],[1240,82],[1239,83],[1238,84],[1245,85],[1246,86],[1244,7],[1205,87],[1206,88],[1207,88],[1227,89],[1199,90],[1200,88],[1208,91],[1225,92],[1224,93],[1222,94],[1210,95],[1219,92],[1211,95],[1221,95],[1202,96],[1213,95],[1223,95],[1214,92],[1203,95],[1217,97],[1212,95],[1215,95],[1216,95],[1220,92],[1218,95],[1204,95],[1209,88],[1226,7],[1198,98],[1196,99],[1195,7],[1197,99],[1180,100],[1181,101],[1182,101],[1183,7],[1185,102],[1184,7],[1713,7],[1671,7],[1702,103],[1701,104],[1689,105],[1688,106],[1691,107],[1690,106],[1700,108],[1699,109],[1704,110],[1703,106],[1673,111],[1692,7],[1675,112],[1687,113],[1686,109],[1685,114],[1684,7],[1683,109],[1678,115],[1677,109],[1676,116],[1680,117],[1679,104],[1698,118],[1697,119],[1682,120],[1681,104],[1694,121],[1693,122],[1674,123],[1696,124],[1695,125],[1670,125],[1710,126],[1705,109],[1707,127],[1706,109],[1709,128],[1708,106],[1507,7],[1712,129],[1711,104],[1664,130],[1715,131],[1667,132],[1672,7],[1506,7],[1665,7],[1668,133],[1663,134],[1662,135],[1669,136],[1714,130],[1666,137],[1201,7],[1530,138],[1509,138],[1565,7],[1545,7],[1576,7],[1508,7],[1556,139],[1557,140],[1523,141],[1510,7],[1519,7],[1520,142],[1521,7],[1522,143],[1518,144],[1511,7],[1515,7],[1540,144],[1605,145],[1538,146],[1526,147],[1552,148],[1528,7],[1533,7],[1529,149],[1524,144],[1525,150],[1527,150],[1531,7],[1532,7],[1555,151],[1544,152],[1542,7],[1543,153],[1558,154],[1554,155],[1571,156],[1566,157],[1574,158],[1575,159],[1602,7],[1546,160],[1562,7],[1551,161],[1611,7],[1548,144],[1639,162],[1549,163],[1586,164],[1585,7],[1592,165],[1591,7],[1594,166],[1593,7],[1596,167],[1595,7],[1588,168],[1587,7],[1590,169],[1589,169],[1640,170],[1600,171],[1612,172],[1613,173],[1641,174],[1517,175],[1514,176],[1513,7],[1564,177],[1577,178],[1599,7],[1580,179],[1584,7],[1550,180],[1567,181],[1579,182],[1606,183],[1609,184],[1569,185],[1607,186],[1572,181],[1573,187],[1610,186],[1603,188],[1604,7],[1581,189],[1553,7],[1534,7],[1568,190],[1570,7],[1560,7],[1608,7],[1636,191],[1583,192],[1563,144],[1537,193],[1536,7],[1637,194],[1535,7],[1638,195],[1541,196],[1539,7],[1512,7],[1578,197],[1601,198],[1516,7],[1598,199],[1547,7],[1582,200],[1597,7],[1559,7],[1561,201],[1659,202],[1634,7],[1635,203],[1625,203],[1624,204],[1616,204],[1615,204],[1614,203],[1626,205],[1650,206],[1649,207],[1653,208],[1652,209],[1654,203],[1633,210],[1630,211],[1657,212],[1655,203],[1651,213],[1658,203],[1647,214],[1646,215],[1648,203],[1661,216],[1617,217],[1627,203],[1660,7],[1618,203],[1619,203],[1631,203],[1620,203],[1628,218],[1656,7],[1632,203],[1621,203],[1629,203],[1622,203],[1623,203],[1643,219],[1642,220],[1644,221],[1645,222],[1247,223],[1032,7],[1124,224],[1123,225],[1122,7],[1121,226],[1133,226],[1102,227],[1103,226],[1105,228],[1106,7],[1107,229],[1108,226],[1109,230],[1110,230],[1111,230],[1114,231],[1115,231],[1116,230],[1117,230],[1118,230],[1119,230],[1131,226],[1120,230],[1127,232],[1132,233],[1126,234],[1125,226],[1130,230],[1112,7],[1113,235],[1128,231],[1129,230],[1101,236],[1134,226],[1151,7],[1724,237],[1720,238],[1727,239],[1721,240],[1725,241],[1723,242],[1716,7],[1750,243],[1722,236],[1719,244],[1718,245],[1717,246],[852,247],[916,248],[915,249],[911,250],[912,251],[910,252],[899,7],[919,253],[917,252],[921,254],[920,255],[918,256],[956,257],[955,252],[958,258],[957,259],[962,260],[961,261],[914,262],[913,252],[909,252],[959,263],[903,264],[896,265],[901,266],[893,267],[889,7],[900,268],[907,7],[908,269],[895,270],[904,7],[891,7],[902,271],[887,7],[897,272],[892,273],[890,274],[894,7],[898,7],[905,275],[888,7],[906,7],[1432,7],[1286,7],[1287,7],[1288,7],[1299,276],[1300,277],[1297,278],[1298,279],[1301,280],[1304,281],[1306,282],[1308,283],[1307,284],[1309,7],[1313,285],[1311,286],[1312,7],[1305,7],[1315,287],[1290,288],[1317,289],[1318,290],[1321,291],[1320,292],[1316,293],[1319,294],[1314,295],[1322,296],[1323,297],[1327,298],[1328,299],[1326,300],[1303,301],[1293,302],[1329,303],[1330,304],[1331,304],[1289,7],[1333,305],[1332,304],[1347,306],[1291,7],[1296,307],[1334,308],[1335,7],[1294,7],[1325,309],[1336,310],[1324,311],[1337,312],[1338,313],[1339,281],[1340,281],[1341,314],[1310,7],[1343,315],[1344,316],[1302,7],[1345,308],[1342,7],[1292,317],[1295,295],[1346,318],[884,319],[777,7],[732,7],[740,320],[746,321],[745,322],[734,323],[748,324],[735,325],[750,326],[744,327],[736,328],[741,329],[749,330],[747,331],[739,332],[738,333],[733,7],[743,334],[742,335],[737,7],[242,336],[1431,337],[835,338],[834,339],[574,7],[1452,340],[241,7],[1031,7],[342,341],[343,341],[344,342],[302,343],[345,344],[346,345],[347,346],[297,7],[300,347],[298,7],[299,7],[348,348],[349,349],[350,350],[351,351],[352,352],[353,353],[354,353],[356,7],[355,354],[357,355],[358,356],[359,357],[341,358],[301,7],[360,359],[361,360],[362,361],[395,362],[363,363],[364,364],[365,365],[366,366],[367,367],[368,368],[369,369],[370,370],[371,371],[372,372],[373,372],[374,373],[375,7],[376,7],[377,374],[379,375],[378,376],[380,33],[381,377],[382,378],[383,379],[384,380],[385,381],[386,382],[387,383],[388,384],[389,385],[390,386],[391,387],[392,388],[393,389],[394,390],[1141,7],[1808,7],[1787,391],[1788,392],[1763,393],[1766,393],[1785,391],[1786,391],[1776,391],[1775,394],[1773,391],[1768,391],[1781,391],[1779,391],[1783,391],[1767,391],[1780,391],[1784,391],[1769,391],[1770,391],[1782,391],[1764,391],[1771,391],[1772,391],[1774,391],[1778,391],[1789,395],[1777,391],[1765,391],[1802,396],[1801,7],[1796,395],[1798,397],[1797,395],[1790,395],[1791,395],[1793,395],[1795,395],[1799,397],[1800,397],[1792,397],[1794,397],[923,7],[836,7],[1451,7],[709,398],[710,399],[1011,400],[968,7],[970,401],[969,402],[974,403],[1009,404],[1006,405],[1008,406],[971,405],[972,407],[976,407],[975,408],[973,409],[1007,410],[1005,405],[1010,411],[1003,7],[1004,7],[977,412],[982,405],[984,405],[979,405],[980,412],[986,405],[987,413],[978,405],[983,405],[985,405],[981,405],[1001,414],[1000,405],[1002,415],[996,405],[998,405],[997,405],[993,405],[999,416],[994,405],[995,417],[988,405],[989,405],[990,405],[991,405],[992,405],[725,418],[720,7],[722,419],[727,420],[726,421],[723,422],[721,7],[724,423],[886,7],[1098,424],[1099,424],[1100,425],[1097,426],[960,7],[303,7],[1742,7],[769,7],[396,427],[397,428],[398,427],[399,429],[1439,7],[751,430],[731,7],[752,431],[827,432],[828,432],[822,433],[815,432],[816,433],[820,433],[821,434],[818,433],[819,433],[817,433],[829,435],[823,432],[826,432],[824,432],[825,432],[814,7],[1415,436],[400,7],[401,7],[402,7],[403,7],[404,7],[405,7],[406,7],[407,7],[408,7],[409,7],[410,7],[411,7],[412,7],[414,437],[415,7],[413,7],[416,7],[417,7],[418,7],[419,7],[420,7],[421,7],[422,7],[423,7],[424,7],[425,7],[426,7],[427,7],[428,7],[429,7],[430,7],[431,7],[432,7],[433,7],[434,7],[435,7],[436,7],[437,7],[438,7],[439,7],[440,7],[441,7],[442,7],[443,7],[444,7],[445,7],[446,7],[447,7],[448,7],[449,7],[450,7],[451,7],[452,7],[453,7],[454,7],[455,7],[456,7],[457,7],[458,7],[459,7],[460,7],[461,7],[462,7],[463,7],[464,7],[465,7],[466,7],[467,7],[468,7],[469,7],[470,7],[471,7],[472,7],[473,7],[474,7],[475,7],[476,7],[477,7],[478,7],[479,7],[480,7],[481,7],[482,7],[572,438],[483,7],[484,7],[485,7],[486,7],[487,7],[488,7],[489,7],[490,7],[491,7],[492,7],[493,7],[494,7],[495,7],[496,7],[497,7],[498,7],[499,7],[500,7],[501,7],[502,7],[503,7],[504,7],[505,7],[506,7],[507,7],[508,7],[509,7],[510,7],[511,7],[512,7],[513,7],[514,7],[515,7],[516,7],[517,7],[518,7],[519,7],[520,7],[521,7],[522,7],[523,7],[524,7],[525,7],[526,7],[527,7],[528,7],[529,7],[530,7],[531,7],[532,7],[533,7],[534,7],[535,7],[536,7],[537,7],[538,7],[539,7],[540,7],[541,7],[542,7],[543,7],[544,7],[545,7],[546,7],[547,7],[548,7],[549,7],[550,7],[551,7],[552,7],[553,7],[554,7],[555,7],[556,7],[557,7],[558,7],[559,7],[560,7],[561,7],[562,7],[563,7],[564,7],[565,7],[566,7],[567,7],[568,7],[569,7],[570,7],[571,7],[1726,7],[967,7],[1429,7],[1443,7],[705,7],[949,7],[794,439],[795,440],[1440,7],[718,441],[719,442],[728,443],[729,444],[730,445],[1020,7],[1014,7],[1023,446],[1019,447],[1026,448],[1022,449],[1018,450],[1017,7],[1015,7],[1016,7],[1021,7],[1025,7],[1090,7],[711,451],[712,451],[805,7],[941,7],[1135,452],[1104,7],[935,453],[933,7],[934,7],[938,454],[936,7],[937,7],[708,7],[1424,7],[840,7],[1441,455],[1465,456],[1464,457],[1463,458],[1490,459],[1470,460],[1471,460],[1472,460],[1473,460],[1474,460],[1475,460],[1476,461],[1478,460],[1477,460],[1489,462],[1479,460],[1481,460],[1480,460],[1483,460],[1482,460],[1484,460],[1485,460],[1486,460],[1487,460],[1488,460],[1469,460],[1468,463],[1417,7],[1462,7],[797,464],[796,7],[925,465],[926,465],[928,466],[927,465],[1148,7],[811,7],[1814,467],[1812,468],[1810,469],[1813,469],[1811,470],[1809,471],[577,472],[618,473],[595,474],[606,475],[593,476],[607,477],[616,478],[584,479],[585,480],[583,481],[615,426],[610,482],[614,483],[587,484],[603,485],[586,486],[613,487],[581,488],[582,482],[588,489],[589,7],[594,490],[592,489],[579,491],[617,492],[608,493],[598,494],[597,489],[599,495],[601,496],[596,497],[600,498],[611,426],[590,499],[591,500],[602,501],[580,477],[605,502],[604,489],[609,7],[578,7],[612,503],[701,504],[700,505],[628,506],[625,7],[629,507],[633,508],[622,509],[632,510],[639,511],[702,512],[576,7],[620,7],[627,513],[623,514],[621,33],[631,515],[619,10],[630,516],[624,517],[641,518],[663,519],[652,520],[642,521],[649,522],[640,523],[650,7],[648,524],[644,525],[645,526],[643,527],[651,528],[626,529],[659,530],[656,531],[657,532],[658,533],[660,534],[666,535],[670,536],[669,537],[667,531],[668,531],[661,538],[664,539],[662,540],[665,541],[654,542],[638,543],[653,544],[637,545],[636,546],[655,547],[635,548],[673,549],[671,531],[672,550],[674,531],[678,551],[676,552],[677,553],[679,554],[682,555],[681,556],[684,557],[683,558],[687,559],[685,560],[686,561],[680,562],[675,563],[688,562],[689,564],[699,565],[690,558],[691,531],[646,566],[647,567],[634,7],[692,568],[693,569],[696,570],[695,571],[697,572],[698,573],[694,574],[930,7],[766,575],[753,7],[754,7],[755,7],[756,7],[765,576],[757,7],[758,7],[759,7],[760,7],[761,7],[762,7],[763,7],[764,577],[943,578],[944,578],[945,578],[946,579],[942,7],[813,7],[879,580],[867,581],[845,7],[850,582],[873,7],[843,7],[868,7],[869,583],[870,7],[858,584],[860,585],[859,7],[874,586],[855,587],[856,588],[857,584],[861,589],[862,589],[863,584],[854,7],[853,588],[846,7],[844,7],[847,7],[871,7],[875,590],[876,7],[872,7],[877,591],[878,592],[849,593],[848,7],[865,590],[866,594],[864,7],[770,7],[838,7],[767,595],[1467,596],[1466,597],[1492,598],[1491,599],[807,7],[239,7],[240,600],[717,601],[715,602],[713,603],[714,604],[716,605],[779,606],[790,607],[789,607],[791,608],[792,609],[793,610],[788,611],[781,7],[780,7],[787,612],[782,613],[784,614],[785,615],[783,615],[786,616],[778,617],[833,7],[1497,7],[1028,7],[1459,618],[1458,7],[287,7],[883,319],[1427,619],[1426,7],[238,620],[209,621],[99,622],[205,7],[172,623],[142,624],[128,625],[206,7],[153,7],[163,7],[182,626],[76,7],[213,627],[215,628],[214,629],[165,630],[164,631],[167,632],[166,633],[126,7],[216,634],[220,635],[218,636],[80,637],[81,637],[82,7],[129,638],[179,639],[178,7],[191,640],[116,641],[185,7],[174,7],[233,642],[235,7],[102,643],[101,644],[194,645],[197,646],[86,647],[198,648],[112,649],[83,650],[88,651],[211,652],[148,653],[232,622],[204,654],[203,655],[90,656],[91,7],[115,657],[106,658],[107,659],[114,660],[105,661],[104,662],[113,663],[155,7],[92,7],[98,7],[93,7],[94,664],[96,665],[87,7],[146,7],[200,666],[147,652],[177,7],[169,7],[184,667],[183,668],[217,636],[221,669],[219,670],[79,671],[234,7],[171,643],[103,672],[189,673],[188,7],[143,674],[131,675],[132,7],[111,676],[175,677],[176,677],[118,678],[119,7],[127,7],[95,679],[77,7],[145,680],[109,7],[84,7],[100,622],[193,681],[236,682],[137,683],[149,684],[222,629],[224,685],[223,685],[140,686],[141,687],[110,7],[74,7],[152,7],[151,688],[196,648],[192,7],[230,688],[134,689],[117,690],[133,689],[135,691],[138,688],[85,645],[187,7],[228,692],[207,693],[161,694],[160,7],[156,695],[181,696],[157,695],[159,697],[158,698],[180,653],[210,699],[208,700],[130,701],[108,7],[136,702],[225,636],[227,669],[226,670],[229,703],[199,704],[190,7],[231,705],[173,706],[168,7],[186,707],[139,708],[170,709],[123,7],[154,7],[97,688],[237,7],[201,710],[202,7],[75,7],[150,688],[78,7],[144,711],[89,7],[122,7],[120,7],[121,7],[162,7],[212,688],[125,688],[195,622],[124,712],[69,7],[70,7],[12,7],[14,7],[13,7],[2,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[3,7],[23,7],[24,7],[4,7],[25,7],[29,7],[26,7],[27,7],[28,7],[30,7],[31,7],[32,7],[5,7],[33,7],[34,7],[35,7],[36,7],[6,7],[40,7],[37,7],[38,7],[39,7],[41,7],[7,7],[42,7],[47,7],[48,7],[43,7],[44,7],[45,7],[46,7],[8,7],[52,7],[49,7],[50,7],[51,7],[53,7],[9,7],[54,7],[55,7],[56,7],[58,7],[57,7],[59,7],[60,7],[10,7],[61,7],[62,7],[63,7],[11,7],[64,7],[65,7],[66,7],[67,7],[68,7],[1,7],[319,713],[329,714],[318,713],[339,715],[310,716],[309,481],[338,426],[332,717],[337,718],[312,719],[326,720],[311,721],[335,722],[307,723],[306,426],[336,724],[308,725],[313,726],[314,7],[317,726],[304,7],[340,472],[330,727],[321,728],[322,729],[324,730],[320,731],[323,732],[333,426],[315,733],[316,734],[325,735],[305,477],[328,727],[327,726],[331,7],[334,736],[707,473],[1461,737],[1457,7],[1460,738],[1170,739],[1155,7],[1156,7],[1157,7],[1158,7],[1154,7],[1159,740],[1160,7],[1162,741],[1161,740],[1163,740],[1164,741],[1165,740],[1166,7],[1167,740],[1168,7],[1169,7],[1454,742],[1453,340],[1456,743],[1455,744],[881,7],[277,745],[246,7],[264,746],[276,747],[275,748],[245,749],[284,750],[247,7],[265,751],[274,752],[251,753],[262,754],[269,755],[266,756],[249,757],[248,758],[261,759],[252,760],[268,761],[270,762],[271,763],[272,763],[273,764],[278,7],[244,7],[279,763],[280,765],[254,766],[255,766],[256,766],[263,767],[267,768],[253,769],[281,770],[282,771],[257,7],[250,772],[258,773],[259,774],[260,775],[283,754],[1051,776],[1076,7],[1088,777],[1075,778],[1077,778],[1050,779],[1052,780],[1053,781],[1054,7],[1078,778],[1079,778],[1056,782],[1080,778],[1081,778],[1057,236],[1058,778],[1059,783],[1062,784],[1063,236],[1064,785],[1065,779],[1066,786],[1055,781],[1067,778],[1082,778],[1083,787],[1084,778],[1085,778],[1061,788],[1068,780],[1060,781],[1069,778],[1070,785],[1071,778],[1072,785],[1073,789],[1074,790],[1086,778],[1087,790],[1049,791],[1041,792],[1048,793],[1043,7],[1044,7],[1042,794],[1045,795],[1036,7],[1037,7],[1038,791],[1040,796],[1046,7],[1047,797],[1039,798],[1736,799],[771,800],[1397,801],[922,802],[1146,803],[1410,804],[1248,805],[1738,806],[1739,807],[1407,808],[1740,809],[776,7],[842,7],[801,810],[1741,811],[1735,812],[292,813],[1450,814],[1504,815],[1500,816],[1143,817],[1501,818],[703,819],[1737,820],[1743,821],[285,822],[1744,823],[931,824],[1422,825],[1420,7],[1419,7],[1096,826],[73,827],[1503,828],[1745,829],[804,830],[573,831],[1746,832],[706,802],[1747,7],[830,833],[1139,834],[841,835],[1438,836],[1408,837],[1027,838],[1421,839],[243,840],[1425,841],[1449,842],[1093,843],[1140,844],[775,845],[1398,846],[1434,847],[965,848],[799,849],[810,850],[1496,851],[800,852],[1030,853],[1731,854],[1732,855],[1149,856],[1138,857],[948,858],[1404,859],[963,860],[806,861],[929,862],[851,7],[1446,863],[1152,864],[1091,865],[1730,866],[1416,867],[295,7],[837,868],[296,869],[812,870],[1136,871],[1428,872],[288,873],[1820,874],[1436,875],[575,876],[1033,877],[939,878],[1150,879],[1734,880],[1444,881],[966,882],[932,883],[1748,884],[71,7],[1411,885],[1405,886],[290,887],[1142,888],[1400,889],[1749,890],[1493,891],[1442,892],[1728,893],[1729,894],[1751,895],[1435,822],[1752,896],[1437,897],[1733,898],[1418,899],[1448,900],[798,901],[294,814],[1753,902],[953,903],[1034,904],[1754,905],[1447,906],[1409,907],[1403,908],[1401,909],[1399,910],[1402,911],[1821,7],[947,912],[1012,913],[1495,914],[1445,915],[1755,916],[802,917],[880,918],[1756,7],[839,919],[1757,822],[293,7],[773,920],[1505,7],[1423,921],[1137,922],[1759,923],[1760,924],[1035,925],[768,926],[1823,7],[1502,7],[964,927],[1499,928],[808,929],[1815,930],[1013,931],[1824,7],[1761,932],[1762,933],[1092,934],[1803,393],[1819,935],[952,936],[1818,937],[924,938],[1817,939],[1095,7],[1144,940],[1145,7],[1414,941],[1494,942],[1498,943],[1804,944],[1807,945],[1758,7],[1024,946],[772,947],[885,948],[940,949],[1029,950],[1094,951],[831,952],[1816,953],[704,954],[1433,955],[832,7],[72,7],[1822,7],[286,913],[951,956],[954,957],[774,867],[291,958],[1413,959],[1412,960],[1176,961],[1171,962],[1173,963],[1175,964],[1174,965],[1172,966],[1153,7],[803,967],[1147,968],[1406,969],[809,970],[1805,971],[1806,972],[882,973],[1430,974],[289,975],[950,976],[1089,977]],"latestChangedDtsFile":"../commonjs/index.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/core/.tshy-build/.tshy/esm.tsbuildinfo b/packages/core/.tshy-build/.tshy/esm.tsbuildinfo new file mode 100644 index 0000000000..23ec4c6d6b --- /dev/null +++ b/packages/core/.tshy-build/.tshy/esm.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../src/llmsdata.ts","../../src/types.ts","../../src/constants.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/typed-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/basic.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/observable-like.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-intersection.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/keys-of-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-omit.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/distributed-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/optional-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-required-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-never.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/characters.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-float.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-integer.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-literal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/trim.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/and.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/or.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/greater-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/numeric.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-index-signature.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-any.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/index.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-at-least-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-string.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-record.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-set.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/unknown-map.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-simplify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/non-empty-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-tail.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/enforce-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/simplify-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/merge-exclusive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-exactly-one.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-all-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/require-one-or-none.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/single-key-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/subtract.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/paths.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-splice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/union-to-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/omit-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-unknown.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/undefined-on-partial-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/promisable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/arrayable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tagged.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/invariant-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-optional.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-readonly.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-required-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-non-nullable-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/value-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/async-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-except.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/conditional-pick-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/stringified.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/join.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/sum.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/less-than-or-equal.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-slice.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/fixed-length-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/iterable-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entry.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/entries.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-return-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-parameter-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/asyncify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonify.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/jsonifiable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/find-global-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/structured-cloneable.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/schema.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-key-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/exact.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/override-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-optional-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/writable-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/readonly-keys-of.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-readonly-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/has-writable-keys.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/spread.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-tuple.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-object.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tuple-to-union.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/int-closed-range.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-indices.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/array-values.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/set-field-type.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/all-union-fields.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/shared-union-fields-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/if-null.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/words.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/screaming-snake-case.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/split.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/replace.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/string-repeat.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/includes.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/get.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/last-array-element.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/global-this.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/package-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/tsconfig-json.d.ts","../../../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/index.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/error-constructors.d.ts","../../../../node_modules/.pnpm/serialize-error@12.0.0/node_modules/serialize-error/index.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.12/node_modules/@types/debug/index.d.ts","../../src/error.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/line-counter.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/errors.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/applyreviver.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/log.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/tojs.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/collection.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlseq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/types.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/map.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/seq.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/common/string.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/foldflowlines.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifynumber.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/stringify/stringifystring.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/util.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/yamlmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/identity.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/schema.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/createnode.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/addpairtojsmap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/pair.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/tags.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/options.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/node.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-scalar.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-stringify.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst-visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/cst.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/nodes/alias.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/document.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/doc/directives.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/compose/composer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/lexer.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/parse/parser.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/public-api.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/visit.d.ts","../../../../node_modules/.pnpm/yaml@2.8.0/node_modules/yaml/dist/index.d.ts","../../src/cleaners.ts","../../src/unwrappers.ts","../../../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/dist/index.d.ts","../../src/indent.ts","../../src/yaml.ts","../../src/log.ts","../../src/util.ts","../../src/cancellation.ts","../../src/precision.ts","../../src/mkmd.ts","../../src/html-escaper.d.ts","../../src/htmlescape.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.15.28/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/lib/index.d.ts","../../../../node_modules/.pnpm/csv-parse@5.6.0/node_modules/csv-parse/lib/sync.d.ts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/lib/index.d.ts","../../../../node_modules/.pnpm/csv-stringify@6.6.0/node_modules/csv-stringify/lib/sync.d.ts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/at.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/chunk.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/compact.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/countby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/difference.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differenceby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/differencewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/drop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/droprightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/dropwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/fill.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flattendeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatmapdeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/flatten.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/foreachright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/groupby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/head.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/initial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersection.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/intersectionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/issubsetwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/keyby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/last.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/maxby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/minby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/orderby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/partition.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/pullat.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/remove.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sample.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/samplesize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/shuffle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/sortby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tail.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/take.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takerightwhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/takewhile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/tofilled.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/union.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unionwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniq.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/uniqwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/unzipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/windowed.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/without.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xor.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/xorwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zip.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/array/zipwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/aborterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/error/timeouterror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/after.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/ary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/asyncnoop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/before.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/curryright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/debounce.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flow.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/flowright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/identity.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/memoize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/negate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/noop.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/once.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partial.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/partialright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/rest.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/retry.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/spread.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/throttle.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/function/unary.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/clamp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/inrange.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/mean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/meanby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/median.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/medianby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/random.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/randomint.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/range.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/rangeright.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/round.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sum.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/math/sumby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clone.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeep.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/clonedeepwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/findkey.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/flattenobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/invert.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapkeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mapvalues.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/merge.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/mergewith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omit.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/omitby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pick.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/pickby.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tocamelcasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tomerged.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/object/tosnakecasekeys.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isarraybuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isblob.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isboolean.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbrowser.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isbuffer.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isdate.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequal.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isequalwith.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/iserror.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfile.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isfunction.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjson.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isjsonvalue.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/islength.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ismap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnode.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnotnil.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isnull.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isplainobject.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isprimitive.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/ispromise.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isregexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isstring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/issymbol.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/istypedarray.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isundefined.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakmap.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/predicate/isweakset.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/delay.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/mutex.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/semaphore.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/timeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/promise/withtimeout.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/camelcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/capitalize.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/constantcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/deburr.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/escaperegexp.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/kebabcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/lowerfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pad.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/pascalcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/reversestring.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/snakecase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/startcase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trim.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimend.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/trimstart.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/unescape.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/uppercase.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/upperfirst.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/string/words.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attempt.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/attemptasync.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/util/invariant.d.mts","../../../../node_modules/.pnpm/es-toolkit@1.39.8/node_modules/es-toolkit/dist/index.d.mts","../../src/csv.ts","../../../../node_modules/.pnpm/@types+ini@4.1.1/node_modules/@types/ini/index.d.ts","../../src/ini.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/utility.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/header.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/readable.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/fetch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/formdata.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/connector.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/global-origin.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool-stats.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/handlers.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/balanced-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/h2c-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-call-history.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-client.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-pool.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/mock-errors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-handler.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/retry-agent.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/api.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache-interceptor.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/interceptors.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/util.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cookies.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/patch.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/websocket.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/eventsource.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/content-type.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/cache.d.ts","../../../../node_modules/.pnpm/node_modules/undici/types/index.d.ts","../../../../node_modules/.pnpm/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/headers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/shim-types.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/streaming.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/request-options.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/utils/log.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/parse.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/api-promise.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/pagination.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/internal/to-file.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/core/resource.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/shared.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/error.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/eventstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/abstractchatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responsesparser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/eventtypes.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/responses/responsestream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/input-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/responses/responses.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/parser.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionstreamingrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/jsonschema.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/runnablefunction.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/chatcompletionrunner.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/completions/completions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/chat.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/chat/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/speech.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/transcriptions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/translations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/audio/audio.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/messages.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/lib/assistantstream.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/threads/threads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/assistants.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/content.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/files/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/containers/containers.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/embeddings.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/grader-models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/runs/runs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/evals/evals.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/graders/graders.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/images.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/models.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/moderations.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/parts.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/uploads/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/uploads.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/files.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/webhooks.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/resources/index.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/client.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/azure.d.mts","../../../../node_modules/.pnpm/openai@5.10.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@5.0.10__zod@3.25.76/node_modules/openai/index.d.mts","../../src/chattypes.ts","../../src/traceparser.ts","../../../../node_modules/.pnpm/fetch-retry@6.0.0/node_modules/fetch-retry/index.d.ts","../../src/debug.ts","../../../../node_modules/.pnpm/undici@7.12.0/node_modules/undici/index.d.ts","../../../../node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.d.ts","../../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.d.ts","../../../../node_modules/.pnpm/http-proxy-agent@7.0.2/node_modules/http-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/constants.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/common/util.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/client/socksclient.d.ts","../../../../node_modules/.pnpm/socks@2.8.6/node_modules/socks/typings/index.d.ts","../../../../node_modules/.pnpm/socks-proxy-agent@8.0.5/node_modules/socks-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/data.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/file.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/fileinfo.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/stringencoding.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/ftpcontext.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/progresstracker.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/transfer.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/client.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/parselist.d.ts","../../../../node_modules/.pnpm/basic-ftp@5.0.5/node_modules/basic-ftp/dist/index.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/ftp.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/http.d.ts","../../../../node_modules/.pnpm/get-uri@6.0.5/node_modules/get-uri/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/degenerator.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.wasm_release_sync.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/memory.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/variants.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/types.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/errors.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.d.ts","../../../../node_modules/.pnpm/@tootallnate+quickjs-emscripten@0.23.0/node_modules/@tootallnate/quickjs-emscripten/dist/index.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/compile.d.ts","../../../../node_modules/.pnpm/degenerator@5.0.1/node_modules/degenerator/dist/index.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/daterange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsdomainlevels.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/dnsresolve.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isinnet.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isplainhostname.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/isresolvable.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/localhostordomainis.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/myipaddress.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/shexpmatch.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/timerange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/weekdayrange.d.ts","../../../../node_modules/.pnpm/pac-resolver@7.0.1/node_modules/pac-resolver/dist/index.d.ts","../../../../node_modules/.pnpm/pac-proxy-agent@7.2.0/node_modules/pac-proxy-agent/dist/index.d.ts","../../../../node_modules/.pnpm/proxy-agent@6.5.0/node_modules/proxy-agent/dist/index.d.ts","../../src/proxy.ts","../../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/index.d.ts","../../../../node_modules/.pnpm/pretty-bytes@7.0.0/node_modules/pretty-bytes/index.d.ts","../../src/annotations.ts","../../src/think.ts","../../src/pretty.ts","../../src/utf8.ts","../../src/fetch.ts","../../src/base64.ts","../../../../node_modules/.pnpm/@tokenizer+token@0.3.0/node_modules/@tokenizer/token/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/types.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/abstracttokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/errors.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/abstractstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/streamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreambyobreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamdefaultreader.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/webstreamreaderfactory.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/index.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/readstreamtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/buffertokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/blobtokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/filetokenizer.d.ts","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/index.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.d.ts","../../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/index.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/mime.d.ts","../../../../node_modules/.pnpm/mime@4.0.7/node_modules/mime/dist/src/index.d.ts","../../src/mime.ts","../../src/filebytes.ts","../../src/filetype.ts","../../src/bufferlike.ts","../../src/pathutils.ts","../../src/version.ts","../../src/crypto.ts","../../../../node_modules/.pnpm/ignore@7.0.5/node_modules/ignore/index.d.ts","../../src/gitignore.ts","../../../../node_modules/.pnpm/sanitize-filename@1.6.3/node_modules/sanitize-filename/index.d.ts","../../src/sanitize.ts","../../src/workdir.ts","../../src/filecache.ts","../../../../node_modules/.pnpm/nanoid@5.1.5/node_modules/nanoid/index.d.ts","../../src/id.ts","../../../../node_modules/.pnpm/parse-diff@0.11.1/node_modules/parse-diff/index.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/types.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/base.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/character.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/word.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/line.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/sentence.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/css.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/json.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/array.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/apply.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/parse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/reverse.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/create.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/dmp.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/xml.d.ts","../../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/index.d.ts","../../src/diff.ts","../../src/trace.ts","../../src/turndown-plugin-gfm.d.ts","../../../../node_modules/.pnpm/tabletojson@4.1.6/node_modules/tabletojson/@typings/tabletojson.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/lib/block-text-builder.d.ts","../../../../node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/index.d.ts","../../../../node_modules/.pnpm/@types+turndown@5.0.5/node_modules/@types/turndown/index.d.ts","../../src/html.ts","../../../../node_modules/.pnpm/pretty-ms@9.2.0/node_modules/pretty-ms/index.d.ts","../../src/performance.ts","../../../../node_modules/.pnpm/mammoth@1.9.1/node_modules/mammoth/lib/index.d.ts","../../src/docx.ts","../../src/binary.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/display_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/optional_content_config.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_storage.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/metadata.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/pdf_objects.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/util.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/shared/message_handler.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api.d.ts","../../src/global.ts","../../../../node_modules/.pnpm/@napi-rs+canvas@0.1.74/node_modules/@napi-rs/canvas/index.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/tools.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/toolbar.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/editor.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/freetext.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/highlight.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/draw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/outline.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/inkdraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/ink.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/signature.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/stamp.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/text_accessibility.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/interfaces.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/web/struct_tree_layer_builder.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/annotation_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/draw_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/annotation_editor_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/color_picker.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/svg_factory.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/worker_options.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/api_utils.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/editor/drawers/signaturedraw.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/text_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/touch_manager.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/display/xfa_layer.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/types/src/pdf.d.ts","../../../../node_modules/.pnpm/pdfjs-dist@5.3.31/node_modules/pdfjs-dist/legacy/build/pdf.d.mts","../../src/pdf.ts","../../../../node_modules/.pnpm/xlsx@https+++cdn.sheetjs.com+xlsx-0.20.2+xlsx-0.20.2.tgz/node_modules/xlsx/types/index.d.ts","../../src/xlsx.ts","../../../../node_modules/.pnpm/ts-toolbelt@8.4.0/node_modules/ts-toolbelt/out/index.d.ts","../../../../node_modules/.pnpm/@tidyjs+tidy@2.5.2/node_modules/@tidyjs/tidy/dist/tidy.d.ts","../../src/tidy.ts","../../../../node_modules/.pnpm/before-after-hook@4.0.0/node_modules/before-after-hook/index.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/url.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/fetch.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestparameters.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/responseheaders.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestoptions.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/route.d.ts","../../../../node_modules/.pnpm/@octokit+openapi-types@25.1.0/node_modules/@octokit/openapi-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requestinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/authinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/requesterror.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/version.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../../../../node_modules/.pnpm/@octokit+types@14.1.0/node_modules/@octokit/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request@10.0.3/node_modules/@octokit/request/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../../node_modules/.pnpm/@octokit+graphql@9.0.1/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+request-error@7.0.0/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+core@7.0.3/node_modules/@octokit/core/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-paginate-rest@13.1.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../src/assert.ts","../../../../node_modules/.pnpm/@types+shell-quote@1.7.5/node_modules/@types/shell-quote/index.d.ts","../../src/shell.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/ast.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/escape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/unescape.d.ts","../../../../node_modules/.pnpm/minimatch@10.0.3/node_modules/minimatch/dist/esm/index.d.ts","../../src/glob.ts","../../../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.d.ts","../../src/concurrency.ts","../../src/llmdiff.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.d.ts","../../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/regular/jsonrepair.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/utils/jsonrepairerror.d.ts","../../../../node_modules/.pnpm/jsonrepair@3.13.0/node_modules/jsonrepair/lib/types/index.d.ts","../../src/json5.ts","../../src/tokens.ts","../../../../node_modules/.pnpm/inflection@3.0.2/node_modules/inflection/lib/inflection.d.ts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/shared/package-manager-detector.puyrhiou.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/commands.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/constants.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/detect.d.mts","../../../../node_modules/.pnpm/package-manager-detector@1.3.0/node_modules/package-manager-detector/dist/index.d.mts","../../src/packagemanagers.ts","../../src/git.ts","../../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.d.mts","../../src/zip.ts","../../src/url.ts","../../src/server/messages.ts","../../src/models.ts","../../src/usage.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.3/node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../../../../node_modules/.pnpm/@octokit+rest@22.0.0/node_modules/@octokit/rest/dist-types/index.d.ts","../../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/bottleneck.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/types.d.ts","../../../../node_modules/.pnpm/@octokit+plugin-throttling@11.0.1_@octokit+core@7.0.3/node_modules/@octokit/plugin-throttling/dist-types/index.d.ts","../../src/githubclient.ts","../../src/resources.ts","../../src/file.ts","../../src/liner.ts","../../../../node_modules/.pnpm/fast-uri@3.0.6/node_modules/fast-uri/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/datatype.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/json-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/types/index.d.ts","../../../../node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.d.ts","../../src/parameters.ts","../../src/schema.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/constants.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelschatenabled.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelsmap.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/models.gen.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/models.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/mapping.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/bytepairencodingcore.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modeltypes.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/modelparams.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/gptencoding.d.ts","../../src/textsplitter.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/specialtokens.d.ts","../../../../node_modules/.pnpm/gpt-tokenizer@3.0.1/node_modules/gpt-tokenizer/esm/model/gpt-4o.d.ts","../../src/encoders.ts","../../../../node_modules/.pnpm/toml@3.0.0/node_modules/toml/index.d.ts","../../src/toml.ts","../../src/frontmatter.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.ts","../../../../node_modules/.pnpm/@types+mustache@4.2.6/node_modules/@types/mustache/index.d.mts","../../../../node_modules/.pnpm/@huggingface+jinja@0.5.1/node_modules/@huggingface/jinja/dist/index.d.ts","../../src/jinja.ts","../../src/mustache.ts","../../src/prompty.ts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/any.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/errormessages.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/array.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/bigint.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/boolean.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/number.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/date.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/enum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/intersection.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/literal.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/string.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/record.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/map.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nativeenum.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/never.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/null.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/nullable.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/object.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/set.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/tuple.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/undefined.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/union.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/unknown.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsetypes.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/refs.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/options.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/getrelativepath.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsedef.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/branded.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/catch.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/default.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/effects.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/optional.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/pipeline.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/promise.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/parsers/readonly.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/selectparser.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/zodtojsonschema.d.ts","../../../../node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/types/index.d.ts","../../src/zod.ts","../../../../node_modules/.pnpm/groq-js@1.17.3/node_modules/groq-js/dist/index.d.mts","../../src/groq.ts","../../src/secretscanner.ts","../../src/features.ts","../../src/tools.ts","../../src/stdio.ts","../../src/consolecolor.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/types.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/decoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/encoder.d.ts","../../../../node_modules/.pnpm/bmp-ts@1.0.9/node_modules/bmp-ts/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+types@1.6.0/node_modules/@jimp/types/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-bmp@1.6.0/node_modules/@jimp/js-bmp/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-gif@1.6.0/node_modules/@jimp/js-gif/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jpeg-js@0.4.4/node_modules/jpeg-js/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-jpeg@1.6.0/node_modules/@jimp/js-jpeg/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+js-png@1.6.0/node_modules/@jimp/js-png/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+js-tiff@1.6.0/node_modules/@jimp/js-tiff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-blit@1.6.0/node_modules/@jimp/plugin-blit/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-circle@1.6.0/node_modules/@jimp/plugin-circle/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-color@1.6.0/node_modules/@jimp/plugin-color/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-resize@1.6.0/node_modules/@jimp/plugin-resize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-contain@1.6.0/node_modules/@jimp/plugin-contain/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-cover@1.6.0/node_modules/@jimp/plugin-cover/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-crop@1.6.0/node_modules/@jimp/plugin-crop/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-displace@1.6.0/node_modules/@jimp/plugin-displace/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-fisheye@1.6.0/node_modules/@jimp/plugin-fisheye/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-flip@1.6.0/node_modules/@jimp/plugin-flip/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-mask@1.6.0/node_modules/@jimp/plugin-mask/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/image-bitmap.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/constants.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/utils/composite.d.ts","../../../../node_modules/.pnpm/@jimp+core@1.6.0/node_modules/@jimp/core/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/measure-text.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-rotate@1.6.0/node_modules/@jimp/plugin-rotate/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-threshold@1.6.0/node_modules/@jimp/plugin-threshold/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-quantize@1.6.0/node_modules/@jimp/plugin-quantize/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-hash@1.6.0/node_modules/@jimp/plugin-hash/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+plugin-print@1.6.0/node_modules/@jimp/plugin-print/dist/esm/load-font.d.ts","../../../../node_modules/.pnpm/@jimp+diff@1.6.0/node_modules/@jimp/diff/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@jimp+utils@1.6.0/node_modules/@jimp/utils/dist/esm/index.d.ts","../../../../node_modules/.pnpm/jimp@1.6.0/node_modules/jimp/dist/esm/index.d.ts","../../src/image.ts","../../src/promptdom.ts","../../src/generation.ts","../../src/dispose.ts","../../src/fence.ts","../../../../node_modules/.pnpm/@types+object-inspect@1.13.0/node_modules/@types/object-inspect/index.d.ts","../../src/logging.ts","../../src/chatrender.ts","../../src/systems.ts","../../src/tags.ts","../../src/ast.ts","../../src/websearch.ts","../../../../node_modules/.pnpm/minisearch@7.1.2/node_modules/minisearch/dist/es/index.d.ts","../../src/fuzzsearch.ts","../../src/jsonl.ts","../../../../node_modules/.pnpm/@lvce-editor+ripgrep@2.1.0/node_modules/@lvce-editor/ripgrep/src/index.d.ts","../../src/grep.ts","../../src/vectra/types.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/types.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/max.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/nil.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/parse.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/stringify.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v1tov6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v35.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v3.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v4.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v5.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v6.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v6tov1.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v7.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/validate.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/version.d.ts","../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/index.d.ts","../../src/vectra/itemselector.ts","../../src/vectra/localindex.ts","../../src/vectra/localdocument.ts","../../src/vectra/localdocumentresult.ts","../../src/vectra/localdocumentindex.ts","../../src/vectra.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/aborterror.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/abortsignallike.d.ts","../../../../node_modules/.pnpm/@azure+abort-controller@2.1.2/node_modules/@azure/abort-controller/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/aborterutils.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/createabortablepromise.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/delay.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/error.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/typeguards.d.ts","../../../../node_modules/.pnpm/@azure+core-util@1.13.0/node_modules/@azure/core-util/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/keycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurekeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azurenamedkeycredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/azuresascredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tracing.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/tokencredential.d.ts","../../../../node_modules/.pnpm/@azure+core-auth@1.10.0/node_modules/@azure/core-auth/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/keepaliveoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/redirectoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/extendedclient.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/util.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/response.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/requestpolicyfactorypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/policies/disablekeepalivepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/httpclientadapter.d.ts","../../../../node_modules/.pnpm/@azure+core-http-compat@2.3.0/node_modules/@azure/core-http-compat/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/models.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/getpagedasynciterator.d.ts","../../../../node_modules/.pnpm/@azure+core-paging@1.6.2/node_modules/@azure/core-paging/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@azure+search-documents@12.1.0/node_modules/@azure/search-documents/types/search-documents.d.ts","../../src/azureaisearch.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/parse.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/pagination.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/uploads.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/shared.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/core/resource.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/error.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/messagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/lib/betamessagestream.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/completions.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/models.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/resources/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/index.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/headers.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/builtin-types.d.mts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/abort.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/auth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/identity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoint.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/logger.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/uri.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/response.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/util.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/middleware.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/auth/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/exact.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/crypto.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/command.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/client.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/config.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transfer.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/manager.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/pool.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/connection/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/eventstream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/encode.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/endpoints/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/shapes.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/retry.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/extensions/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/identity/index.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/pagination.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/profile.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/serde.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/signature.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/stream.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/waiter.d.ts","../../../../node_modules/.pnpm/@smithy+types@2.12.0/node_modules/@smithy/types/dist-types/index.d.ts","../../../../node_modules/.pnpm/@anthropic-ai+sdk@0.55.0/node_modules/@anthropic-ai/sdk/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/core/streaming.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/types.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/internal/request-options.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/client.d.mts","../../../../node_modules/.pnpm/@anthropic-ai+bedrock-sdk@0.22.2/node_modules/@anthropic-ai/bedrock-sdk/index.d.mts","../../src/anthropic.ts","../../src/fetchtext.ts","../../src/openai-responses.ts","../../src/logprob.ts","../../src/openai-chatcompletion.ts","../../src/openai.ts","../../src/ollama.ts","../../src/github.ts","../../src/lmstudio.ts","../../src/whisperasr.ts","../../src/azureopenai.ts","../../src/echomodel.ts","../../src/nonemodel.ts","../../src/azureaiinference.ts","../../src/lm.ts","../../src/vectorsearch.ts","../../src/vars.ts","../../src/teams.ts","../../../../node_modules/.pnpm/dotenv@16.6.1/node_modules/dotenv/lib/main.d.ts","../../src/hostconfiguration.ts","../../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.d.ts","../../src/merge.ts","../../src/configschema.ts","../../src/configjson.ts","../../src/env.ts","../../src/config.ts","../../src/promptcontext.ts","../../../../node_modules/.pnpm/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.es.d.mts","../../src/evalprompt.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/types-cxp8y2tl.d.ts","../../../../node_modules/.pnpm/tsx@4.20.3/node_modules/tsx/dist/esm/api/index.d.mts","../../src/importprompt.ts","../../../../node_modules/.pnpm/fast-xml-parser@5.2.5/node_modules/fast-xml-parser/src/fxp.d.ts","../../src/xml.ts","../../../../node_modules/.pnpm/@types+fluent-ffmpeg@2.1.27/node_modules/@types/fluent-ffmpeg/index.d.ts","../../../../node_modules/.pnpm/@plussub+srt-vtt-parser@2.0.5/node_modules/@plussub/srt-vtt-parser/dist/index.d.ts","../../src/transcription.ts","../../src/ffmpeg.ts","../../src/mdchunk.ts","../../src/inflection.ts","../../src/mdstringify.ts","../../src/dotenv.ts","../../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.d.ts","../../../../node_modules/.pnpm/fraction.js@5.2.2/node_modules/fraction.js/fraction.d.ts","../../../../node_modules/.pnpm/mathjs@14.6.0/node_modules/mathjs/types/index.d.ts","../../src/math.ts","../../../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/mod.d.ts","../../src/levenshtein.ts","../../src/parsers.ts","../../src/globals.ts","../../src/nodepackage.ts","../../src/metadata.ts","../../src/expander.ts","../../src/changelog.ts","../../../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts","../../../../node_modules/.pnpm/@types+mdast@4.0.4/node_modules/@types/mdast/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/lib/index.d.ts","../../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/index.d.ts","../../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/lib/index.d.ts","../../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/index.d.ts","../../../../node_modules/.pnpm/micromark-util-types@2.0.2/node_modules/micromark-util-types/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.d.ts","../../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/types.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","../../../../node_modules/.pnpm/mdast-util-to-markdown@2.1.2/node_modules/mdast-util-to-markdown/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/lib/index.d.ts","../../../../node_modules/.pnpm/remark-stringify@11.0.0/node_modules/remark-stringify/index.d.ts","../../src/markdownscript.ts","../../src/template.ts","../../src/parser.ts","../../src/fileedits.ts","../../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.d.ts","../../src/terminal.ts","../../src/runpromptcontext.ts","../../src/chatcache.ts","../../src/chatrenderterminal.ts","../../src/quiet.ts","../../src/contentsafety.ts","../../src/chat.ts","../../src/progress.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/tokencachepersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/authtoken.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/iuri.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/logger/logger.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/storeincache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/scopeset.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authority.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizeresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/baseclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/url/urlstring.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/protocol/authorize.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/autherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/servererror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/networkerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-common.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/utils/clientassertionutils.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/config/apptokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativerequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/nativesignoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/broker/nativebroker/inativebrokerplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonclientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commononbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/devicecoderesponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commondevicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/request/commonusernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/iguidgenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-node-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index-node.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializertypes.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/serializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/serializer/deserializer.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/internals.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationcoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/authorizationurlrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/devicecoderequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/refreshtokenrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/silentflowrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/usernamepasswordrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/nodestorage.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/itokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/tokencache.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/network/iloopbackclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/interactiverequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/signoutrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/ipublicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/clientcredentialrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/onbehalfofrequest.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/iconfidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/icacheclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/ipartitionmanager.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","../../../../node_modules/.pnpm/@azure+msal-common@15.9.0/node_modules/@azure/msal-common/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/ihttpretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/defaultmanagedidentityretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/retry/imdsretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/utils/constants.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/managedidentityid.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/config/configuration.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/crypto/cryptoprovider.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientassertion.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/publicclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/confidentialclientapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/clientcredentialclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/devicecodeclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/onbehalfofclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/request/managedidentityrequestparams.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/managedidentityapplication.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/client/usernamepasswordclient.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/cache/distributed/distributedcacheplugin.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/packagemetadata.d.ts","../../../../node_modules/.pnpm/@azure+msal-node@3.6.4/node_modules/@azure/msal-node/dist/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/provider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/plugins/consumer.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/errors.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/types.d.ts","../../../../node_modules/.pnpm/@azure+logger@1.3.0/node_modules/@azure/logger/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/util/logging.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/msal.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/utils.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/instrumenter.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/tracingclient.d.ts","../../../../node_modules/.pnpm/@azure+core-tracing@1.3.0/node_modules/@azure/core-tracing/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/logpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/useragentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/createpipelinefromoptions.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/defaulthttpclient.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/httpheaders.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/pipelinerequest.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/resterror.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressresponsepolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/setclientrequestidpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemerrorretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/retrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultretrypolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlspolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/formdatapolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearertokenauthenticationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndjsonpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryauthenticationheaderpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/util/file.d.ts","../../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.22.0/node_modules/@azure/core-rest-pipeline/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/interfaces.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializer.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serviceclient.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/deserializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/serializationpolicy.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/pipeline.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestonclaimchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/authorizerequestontenantchallenge.d.ts","../../../../node_modules/.pnpm/@azure+core-client@1.10.0/node_modules/@azure/core-client/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/multitenanttokencredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorityvalidationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/msal/nodeflows/brokeroptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/brokerauthoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/chainedtokencredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/credentialpersistenceoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientsecretcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/defaultazurecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/environmentcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredentialmodels.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientcertificatecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/clientassertioncredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azureclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azuredeveloperclicredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/browsercustomizationoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/interactivebrowsercredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/options.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/managedidentitycredential/index.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/devicecodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepipelinescredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/authorizationcodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/azurepowershellcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/usernamepasswordcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/visualstudiocodecredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/onbehalfofcredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredentialoptions.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/credentials/workloadidentitycredential.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/constants.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/tokenprovider.d.ts","../../../../node_modules/.pnpm/@azure+identity@4.10.2/node_modules/@azure/identity/dist/esm/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamablehttp.d.ts","../../../../node_modules/.pnpm/eventsource@3.0.7/node_modules/eventsource/dist/index.d.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts","../../src/mcpclient.ts","../../src/mcpresource.ts","../../src/host.ts","../../src/fs.ts","../../src/fscache.ts","../../src/memcache.ts","../../src/jsonlinecache.ts","../../src/cache.ts","../../src/agent.ts","../../src/chunkers.ts","../../src/azurecontentsafety.ts","../../src/azuredevops.ts","../../src/azuretoken.ts","../../src/build.ts","../../../../node_modules/.pnpm/ci-info@4.3.0/node_modules/ci-info/index.d.ts","../../src/ci.ts","../../src/clone.ts","../../src/copy.ts","../../src/data.ts","../../src/default_prompts.ts","../../src/llms.ts","../../src/markdown.ts","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../src/mcpsampling.ts","../../src/mddiff.ts","../../src/modelalias.ts","../../src/net.ts","../../src/path.ts","../../src/perf.ts","../../src/plugin.ts","../../src/testschema.ts","../../src/promptfoo.ts","../../src/promptrunner.ts","../../src/scriptresolver.ts","../../src/scripts.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../src/semver.ts","../../src/testeval.ts","../../src/workerlm.ts","../../src/workspace.ts","../../src/testhost.ts","../../../../node_modules/.pnpm/@types+sarif@2.1.7/node_modules/@types/sarif/index.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/types/node-sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-result-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-run-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/lib/sarif-rule-builder.d.ts","../../../../node_modules/.pnpm/node-sarif-builder@3.2.0/node_modules/node-sarif-builder/dist/index.d.ts","../../src/sarif.ts","../../src/tracefile.ts","../../src/stdin.ts","../../src/server/wsclient.ts","../../src/server/client.ts","../../src/index.ts","../../src/optional-deps.d.ts","../../src/types/prompt_type.d.ts","../../src/queries/treesitterqueries.json","../../src/schemas/hostconfiguration.schema.json"],"fileIdsList":[[302,345,1298,1299,1367,1368],[302,345,1364,1365],[302,345,1369],[302,345],[302,345,1301,1302,1366,1367],[302,345,1266,1267,1268,1271,1272,1273,1275,1276,1279,1291,1295,1296,1297,1298],[302,345,1267,1274,1299],[302,345,1271,1274,1275,1299],[302,345,1299],[302,345,1269],[302,345,1277,1278],[302,345,1273],[302,345,1273,1275,1276,1279,1299],[302,345,1285],[302,345,1271,1276,1299],[302,345,1266,1267,1268,1270],[302,345,380],[302,345,1266],[302,345,1266,1271,1299],[302,345,1271,1299],[302,345,1271,1284,1294],[302,345,1271,1284,1289],[302,345,1281,1282,1283,1294],[302,345,1271,1275,1276,1279,1281,1295],[302,345,1271,1275,1276,1281,1286,1294,1295],[302,345,1270,1271,1275,1281,1291,1292,1293,1294,1295],[302,345,1271,1275,1276,1281,1295],[302,345,1270,1271,1275,1281,1291,1295,1296],[302,345,1280,1291,1295,1296,1297],[302,345,1288],[302,345,1271,1275,1276,1280,1281,1286,1291],[302,345,1287,1291],[302,345,1270,1271,1275,1281,1287,1290,1291],[302,345,1270],[302,345,1194,1195],[302,345,1178,1179],[302,345,1203],[302,345,1202,1203,1204,1205,1206,1207,1208],[302,345,1196,1202,1207],[302,345,1187],[302,345,1186,1187,1188,1189,1190,1191,1192],[302,345,1180,1186,1191],[302,345,1244],[302,345,1244,1245],[302,345,1245,1246,1247,1248,1249,1250,1251,1252],[302,345,1196,1215,1244],[302,345,1209,1244,1248,1249],[302,345,1245],[302,345,1209,1244,1245],[302,345,1675],[302,345,1675,1676],[302,345,1676,1677,1678,1679,1680,1681,1682,1683],[302,345,1180,1647,1675],[302,345,1193,1675,1679,1680],[302,345,1676],[302,345,1193,1675,1676],[302,345,1210,1211,1253],[302,345,1244,1257],[302,345,1210,1211,1254,1255,1256,1257,1258,1259],[302,345,1244,1255,1256],[302,345,1244,1253,1255],[302,345,1196,1244],[302,345,1261],[302,345,1261,1262],[302,345,1216,1217,1219,1220,1221],[302,345,1216],[302,345,1202,1216,1217,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243],[302,345,1196,1202,1215],[302,345,1196,1202,1215,1216],[302,345,1216,1217],[302,345,1209,1217,1218],[302,345,1209,1216,1217,1218],[302,345,1217],[302,345,1217,1218],[302,345,1216,1217,1218,1226],[302,345,1648,1649,1650,1651,1652],[302,345,1648],[302,345,1186,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674],[302,345,1180,1186,1647],[302,345,1180,1186,1647,1648],[302,345,1648,1649],[302,345,1193,1640,1649],[302,345,1193,1640,1648,1649],[302,345,1649],[302,345,1640,1649],[302,345,1640,1648,1649,1657],[302,345,1212,1213,1214],[302,345,1212],[302,345,1644,1645,1646],[302,345,1644],[302,345,1196],[302,345,1197],[302,345,1197,1198,1199,1200,1201],[302,345,1180],[302,345,1181],[302,345,1181,1182,1183,1184,1185],[302,345,1193,1717],[302,345,1686,1687],[302,345,1193,1704],[302,345,1686],[302,345,1193,1706],[302,345,1193,1675,1715],[302,345,1686,1687,1692],[302,345,1193,1719],[302,345,1688],[302,345,1193,1641],[302,345,1193,1702],[302,345,1193,1639,1699,1700],[302,345,1193,1693],[302,345,1480],[302,345,1193,1691,1695],[302,345,1193,1639,1713],[302,345,1690,1692],[302,345,1193,1697],[302,345,1193,1639,1709],[302,345,1689,1690,1692,1708],[302,345,1639,1686,1687],[302,345,1193,1685,1711],[302,345,1685],[302,345,1193,1686,1692,1721],[302,345,1193,1722],[302,345,1193,1481,1724],[302,345,1193,1727],[302,345,1193],[302,345,1193,1480,1636,1637,1638,1639,1641,1643,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730],[302,345,1635],[302,345,1193,1639,1640,1641,1642],[302,345,1636],[302,345,1480,1481,1635],[302,345,1675,1684],[302,345,1640],[302,345,1482],[302,345,1484,1485,1486,1488,1489,1491,1495,1497,1511,1514,1520,1529],[302,345,1488,1491,1497,1511,1529,1530],[302,345,1489,1492,1494,1496],[302,345,1493],[302,345,1495],[302,345,1490],[302,345,395,1504,1520,1542,1577,1578],[302,345,1491,1497,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1511,1524,1525,1526,1528,1529],[302,345,1490,1498],[302,345,1482,1484,1491,1504,1525,1530],[302,345,1499,1500,1501,1502,1526],[302,345,1498],[302,345,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1526,1528],[302,345,1517],[302,345,1516],[302,345,1485,1490,1495,1498,1499,1500,1501,1502,1507],[302,345,1490,1499,1500,1501,1502,1504,1505,1506,1507,1526,1527],[302,345,1511,1520,1540,1541,1542,1543,1544],[302,345,1487,1488,1491,1511,1512,1515,1520,1524,1525,1530,1537,1538,1539],[302,345,1511,1520,1540,1542,1546,1547],[302,345,1490,1511,1520,1540,1542,1547],[302,345,1488,1491,1497,1512,1515,1516,1518,1519,1525,1530],[302,345,1523,1524],[302,345,1491,1511,1525],[302,345,1522],[302,345,1559],[302,345,1560,1565],[302,345,1560,1567],[302,345,1560,1569],[302,345,1560,1561],[302,345,1560],[302,345,1509,1510,1511,1522,1523,1610,1611,1612,1613],[302,345,1482,1483,1484,1486,1487,1488,1489,1490,1491,1492,1493,1494,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1512,1513,1515,1520,1521,1524,1525,1526,1527,1528,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1560,1562,1563,1564,1566,1568,1570,1571,1572,1573],[302,345,1516,1517,1518,1519,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585],[302,345,1574,1586],[302,345,1574,1586,1614],[302,345,1520],[302,345,1487],[302,345,1490,1523,1524],[302,345,1487,1512,1524,1537,1538],[302,345,1491,1511,1520,1521,1530,1534,1544,1553],[302,345,1490,1508,1520,1521,1523],[302,345,1524,1539],[302,345,1490,1504,1521,1524],[302,345,1493,1519,1524],[302,345,1521,1524,1582],[302,345,1504,1521],[302,345,1524],[302,345,1504,1524],[302,345,1521],[302,345,1490,1511,1515,1520,1521,1550],[302,345,1504],[302,345,1537],[302,345,1482,1491,1503,1511,1512,1516,1518,1524,1525,1526,1530,1537,1542,1544,1556],[302,345,1509,1510],[302,345,1491,1509,1510,1511,1520],[302,345,1509,1510,1511],[302,345,1490,1505,1512,1513,1514],[302,345,1486],[302,345,1519],[302,345,1491,1511],[302,345,1525],[302,345,1521,1534],[302,345,1587,1608,1609],[302,345,1587],[302,345,1587,1588],[302,345,1587,1588,1598,1599],[302,345,1587,1592,1593,1595,1596,1597,1598,1600,1621,1622,1623],[302,345,1622],[302,345,1587,1621],[302,345,1587,1605,1606,1607,1621,1624],[302,345,1587,1592,1593,1595,1596,1597,1600,1605,1606],[302,345,1587,1592,1593,1594,1595,1596,1597,1600,1602,1603],[302,345,1587,1619,1621,1630],[302,345,1587,1594,1596,1602,1603,1604,1621,1624],[302,345,360,362,395,1587,1620],[302,345,1619,1621],[302,345,1587,1588,1591,1592,1593,1594,1595,1596,1597,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1619,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634],[302,345,1589,1590],[302,345,395,1587,1601],[302,345,360,395,1615,1616],[302,345,360,395,1615],[302,345,1615,1616],[302,345,1617,1618],[302,345,1209,1244,1253,1260,1263],[302,345,1102,1122,1123,1124,1125],[302,345,1102,1123],[302,345,1102],[302,345,1101,1102],[302,345,1102,1105],[302,345,1102,1107],[302,345,1050,1102],[302,345,1050,1102,1114],[302,345,1050,1102,1125,1126,1127],[302,345,1102,1108,1125,1126],[302,345,1126],[302,345,1050,1102,1113],[302,345,1050],[302,345,1734,1738,1739],[302,345,1050,1733,1734,1735],[302,345,1733,1734,1740,1742],[302,345,346,377,1733,1734],[302,345,1733,1734,1740],[302,345,1738],[302,345,1050,1733,1735],[302,345,1050,1732,1733,1734],[302,345,1733],[302,345,1050,1732],[302,345,360,377,380],[302,345,886,909,912,915],[302,345,908,914,916,962],[302,345,908,910,962],[302,345,909,910,911],[302,345,908,962],[302,345,918],[302,345,916,918,919,920,962],[302,345,917],[302,345,908,916,917,962],[302,345,908,955,962],[302,345,916,955,957,962],[302,345,908,956,962],[302,345,908,916,961,962],[302,345,908,916,960,962],[302,345,908,913,962],[302,345,916,921,958,962],[302,345,892,893,895,898,902],[302,345,887,888,891,892],[302,345,892,896,897,898,900],[302,345,887,888,892],[302,345,890,891,895,899],[302,345,887,888,889,890,891,892,893,894,895,896,897,898,900,901,902,903,904,905,906,907],[302,345,888,894],[302,345,892,895,898,900,901],[302,345,887,888,890,891],[302,345,888,890,891],[302,345,889],[302,345,903],[302,345,1306,1313,1314,1315],[302,345,1313,1316],[302,345,1306,1310],[302,345,1306,1316],[302,345,1304,1305,1314,1315,1316,1317],[302,345,377,395,1320],[302,345,1322],[302,345,1311,1312,1313,1324],[302,345,1311,1313],[302,345,1326,1328,1329],[302,345,1326,1327],[302,345,1331],[302,345,1304],[302,345,1307,1333],[302,345,1333],[302,345,1333,1334,1335,1336,1337],[302,345,1336],[302,345,1308],[302,345,1333,1334,1335],[302,345,1310,1311,1313],[302,345,1322,1323],[302,345,1339],[302,345,1339,1343],[302,345,1339,1340,1343,1344],[302,345,1312,1342],[302,345,1319],[302,345,1303,1309],[302,345,360,362,395],[302,345,1306],[302,345,1306,1347,1348,1349],[302,345,1303,1307,1308,1309,1310,1311,1312,1313,1318,1321,1322,1323,1324,1325,1327,1330,1331,1332,1338,1341,1342,1345,1346,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1361,1362,1363],[302,345,1304,1307,1308,1312],[302,345,1325],[302,345,1341],[302,345,1310,1312,1327],[302,345,1310,1311],[302,345,1310,1331],[302,345,1312,1322,1323],[302,345,360,377,395,1320,1353],[302,345,1311,1324,1358,1359],[302,345,360,361,395,1310,1325,1353,1357,1359,1360],[302,345,1310],[302,345,1303],[302,345,883],[302,345,733,734,737,739,742,743,744,746,747],[302,345,733,734,736,737,738,743,744,745,747],[302,345,738,743,744,746],[302,345,733],[302,345,746],[302,345,733,734],[302,345,737,738,739,740,741,742,743,744,745,746,747,748,749],[302,345,732,743],[302,345,733,734,743,744],[302,345,734,739,740,742,743,747],[302,345,738,743,746,747],[302,345,733,734,738,743,746],[302,345,733,734,738,740,742,743,747,750],[302,345,733,734,736,737,743,744,746,747],[302,345,733,737,738,740,742,744,746],[302,345,734,735,741,747],[241,302,345],[302,345,357,377,395],[302,345,834],[302,345,835],[302,345,1425],[302,345,1031],[302,342,345],[302,344,345],[345],[302,345,350,380],[302,345,346,351,357,358,365,377,388],[302,345,346,347,357,365],[297,298,299,302,345],[302,345,348,389],[302,345,349,350,358,366],[302,345,350,377,385],[302,345,351,353,357,365],[302,344,345,352],[302,345,353,354],[302,345,355,357],[302,344,345,357],[302,345,357,358,359,377,388],[302,345,357,358,359,372,377,380],[302,340,345],[302,340,345,353,357,360,365,377,388],[302,345,357,358,360,361,365,377,385,388],[302,345,360,362,377,385,388],[300,301,302,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,357,363],[302,345,364,388],[302,345,353,357,365,377],[302,345,366],[302,345,367],[302,344,345,368],[302,342,343,344,345,346,347,348,349,350,351,352,353,354,355,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],[302,345,370],[302,345,371],[302,345,357,372,373],[302,345,372,374,389,391],[302,345,357,377,378,380],[302,345,379,380],[302,345,377,378],[302,345,381],[302,342,345,377],[302,345,357,383,384],[302,345,383,384],[302,345,350,365,377,385],[302,345,386],[302,345,365,387],[302,345,360,371,388],[302,345,350,389],[302,345,377,390],[302,345,364,391],[302,345,392],[302,345,357,359,368,377,380,388,391,393],[302,345,377,394],[302,345,1779,1818],[302,345,1779,1803,1818],[302,345,1818],[302,345,1779],[302,345,1779,1804,1818],[302,345,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817],[302,345,1804,1818],[302,345,360,362,377,395],[302,345,360,365,377,385,395,709],[302,345,970,971,975,1002,1003,1005,1006,1007,1009,1010],[302,345,968,969],[302,345,968],[302,345,970,1010],[302,345,970,971,1007,1008,1010],[302,345,1010],[302,345,967,1010,1011],[302,345,970,971,1009,1010],[302,345,970,971,973,974,1009,1010],[302,345,970,971,972,1009,1010],[302,345,970,971,975,1002,1003,1004,1005,1006,1009,1010],[302,345,967,970,971,975,1007,1009],[302,345,975,1010],[302,345,977,978,979,980,981,982,983,984,985,986,1010],[302,345,1000,1010],[302,345,976,987,995,996,997,998,999,1001],[302,345,980,1010],[302,345,988,989,990,991,992,993,994,1010],[302,345,377,385,395,720,722,723,724],[302,345,365,385,395,721],[302,345,720,721,722,724,725,726],[302,345,720],[302,345,365,395],[302,345,377,395,722,723],[302,345,395,1098],[302,345,395,1098,1099,1100],[302,345,395],[302,345,377,395],[302,345,396],[302,345,398],[302,345,391,395,731,750],[302,345,731,751],[302,345,814],[302,345,814,815],[302,345,814,815,818],[302,345,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828],[302,345,388,395],[302,345,413],[302,345,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571],[302,345,380,793],[302,345,377,793,794],[302,345,377,395,730],[302,345,358,377,395,730],[302,345,377,395,727,730],[302,345,360,362,377,395,730],[302,345,377,395,718,719,728,729],[302,345,1014,1019,1021,1022],[302,345,1015,1016,1018],[302,345,1014,1021,1023,1025],[302,345,1019,1020,1021],[302,345,1017],[302,345,360,365,385,388,395,710],[302,345,1102,1103,1104,1106,1108,1109,1110,1111,1112,1114,1115,1116,1117,1118,1119,1120,1121,1125,1128,1129,1130,1131,1132,1133,1134,1135],[302,345,933,934],[302,345,936,937],[302,345,1413,1414],[302,345,1436,1437,1438,1439],[302,345,1426,1436,1437,1439],[302,345,1426,1436,1439],[302,345,1442,1443,1463],[302,345,1426,1464],[302,345,1426],[302,345,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462],[302,345,1425,1426],[302,345,796],[302,345,928],[302,345,925,926,927],[302,345,1826,1827,1828,1829],[302,345,1824,1825,1827],[302,345,1824,1825],[302,345,1824,1825,1826,1830],[302,345,1824],[302,306,307,308,309,310,311,312,313,314,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,334,335,336,337,338,339,345],[302,345,617],[302,345,388,584,587,590,591],[302,345,377,388,587],[302,345,388,587,591],[302,345,377],[302,345,581],[302,345,585],[302,345,388,583,584,587],[302,345,365,385],[302,345,395,581],[302,345,365,388,583,587],[302,345,357,377,388,578,579,580,582,586],[302,345,587,595,602],[302,345,579,585],[302,345,587,611,612],[302,345,380,388,395,579,582,587],[302,345,587],[302,345,388,583,587],[302,345,578],[302,345,581,582,583,585,586,587,588,589,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,614,615,616],[302,345,353,587,604,607],[302,345,587,595,596,597],[302,345,585,587,596,598],[302,345,586],[302,345,579,581,587],[302,345,587,591,596,598],[302,345,591],[302,345,388,585,587,590],[302,345,579,583,587,595],[302,345,587,604],[302,345,380,393,395,581,587,611],[302,345,576,620,623,700],[302,345,576,619,620,623,624,625,628,629,632,635,647,653,654,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698,699],[302,345,619,627,700],[302,345,623,627,628,700],[302,345,700],[302,345,621,700],[302,345,630,631],[302,345,625],[302,345,625,628,629,632,700,701],[302,345,623,626,700],[302,345,576,619,620,622],[302,345,576],[302,340,345,618],[302,345,576,623,700],[302,345,623,700],[302,345,623,635,638,640,649,651,652,702],[302,345,621,623,640,661,662,664,665,666],[302,345,638,641,648,651,702],[302,345,621,623,638,641,653,702],[302,345,621,638,641,642,648,651,702],[302,345,639],[302,345,634,638,647],[302,345,647],[302,345,623,640,643,644,647,702],[302,345,638,647,648],[302,345,649,650,652],[302,345,629],[302,345,633,656,657,658],[302,345,623,628,633],[302,345,622,623,628,632,633,657,659],[302,345,623,628,632,633,657,659],[302,345,623,628,629,633,634,660],[302,345,623,628,629,633,634,661,662,663,664,665],[302,345,633,665,666,669],[302,345,633,634,667,668,669],[302,345,623,628,629,633,634,666],[302,345,622,623,628,629,633,634,661,662,663,664,665,666],[302,345,623,628,629,633,634,662],[302,345,622,623,628,633,634,661,663,664,665,666],[302,345,633,634,653],[302,345,637],[302,345,622,623,628,629,633,634,635,636,641,642,648,649,651,652,653],[302,345,636,653],[302,345,623,629,633,653],[302,345,637,654],[302,345,622,623,628,633,635,653],[302,345,623,628,629,633,672],[302,345,623,628,629,632,633,671],[302,345,623,628,629,633,634,647,675,677],[302,345,623,628,629,633,677],[302,345,623,628,629,633,634,647,653,676],[302,345,623,628,629,632,633],[302,345,633,681],[302,345,623,628,633,675],[302,345,633,683],[302,345,623,628,629,633],[302,345,633,680,682,684,686],[302,345,623,629,633],[302,345,623,628,629,633,634,680,685],[302,345,633,675],[302,345,633,647],[302,345,622,623,628,632,633,689],[302,345,634,635,647,655,659,660,670,673,674,678,679,687,688,689,690,691,693,697,698],[302,345,623,629,633,647],[302,345,622,623,628,629,633,634,643,645,646,647],[302,345,623,628,632,633],[302,345,623,628,633,679,692],[302,345,623,628,629,633,694,695,697],[302,345,623,628,629,633,694,697],[302,345,623,628,629,633,634,695,696],[302,345,620,633],[302,345,632],[302,345,360,365,377,388,395,710,711,712,717,730,765],[302,345,395,750,752,753,754,755,756,757,758,759,760,761,762,763,764],[302,345,765],[302,345,942],[302,345,942,943,944,945],[302,345,878],[302,345,843,845,850,864,865,866],[302,345,843,844,845,846,847,849],[302,345,843,853,855,856,857,861,862,863,864,865,867,868],[302,345,855],[302,345,859],[302,345,860],[302,345,853,854,869],[302,345,855,869],[302,345,858,860],[302,345,843,850],[302,345,843,845,865],[302,345,843,848,850,853,867,868,869,870,871,872,873,874,875,876,877],[302,345,848],[302,345,850],[302,345,360,395,708,710,711,712,717,766],[302,345,1426,1435,1436,1439,1440,1441,1466],[302,345,1426,1430,1435,1439,1441,1466],[302,345,1426,1435,1441,1464,1465,1466],[302,345,1426,1430,1435,1441,1464,1466],[238,239,302,345],[302,345,360,365,388,395,710,716],[302,345,357,377,395,713,714],[302,345,365,377,395],[302,345,713],[302,345,715],[302,345,777,778],[302,345,778,779],[302,345,377,777,778,779,787,788,789,790],[302,345,359,778,779],[302,345,377,777,788,791,792],[302,345,778,779,787],[302,345,780,781,782,784,785,786],[302,345,377,781],[302,345,783],[302,345,781],[302,345,380,784,785],[302,345,777],[302,345,1432],[302,345,393,1400],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,108,109,110,111,112,116,117,118,119,120,121,122,123,124,125,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,302,345],[79,89,108,115,208,302,345],[98,302,345],[95,98,99,101,102,115,142,170,171,302,345],[89,102,115,139,302,345],[89,115,302,345],[180,302,345],[115,212,302,345],[89,115,213,302,345],[115,213,302,345],[116,164,302,345],[88,302,345],[82,98,115,120,126,165,302,345],[164,302,345],[96,111,115,212,302,345],[89,115,212,216,302,345],[115,212,216,302,345],[79,302,345],[108,302,345],[178,302,345],[74,79,98,115,147,302,345],[98,115,302,345],[115,140,143,190,229,302,345],[101,302,345],[95,98,99,100,115,302,345],[84,302,345],[196,302,345],[85,302,345],[195,302,345],[92,302,345],[82,302,345],[87,302,345],[146,302,345],[147,302,345],[170,203,302,345],[115,139,302,345],[88,89,302,345],[90,91,104,105,106,107,113,114,302,345],[92,96,105,302,345],[87,89,95,105,302,345],[79,84,85,88,89,98,105,106,108,111,112,113,302,345],[91,95,97,104,302,345],[89,95,101,103,302,345],[74,87,92,302,345],[93,95,115,302,345],[74,87,88,95,115,302,345],[88,89,112,115,302,345],[76,302,345],[75,76,82,87,89,92,95,115,147,302,345],[115,212,216,220,302,345],[115,212,216,218,302,345],[78,302,345],[102,302,345],[109,188,302,345],[74,302,345],[89,109,110,111,115,120,126,127,128,129,130,302,345],[108,109,110,302,345],[98,139,302,345],[86,117,302,345],[93,94,302,345],[87,89,98,115,130,140,142,143,144,302,345],[111,302,345],[76,143,302,345],[87,115,302,345],[111,115,148,302,345],[115,213,222,302,345],[82,89,92,101,115,139,302,345],[78,87,89,108,115,140,302,345],[115,302,345],[88,112,115,302,345],[88,112,115,116,302,345],[88,112,115,133,302,345],[115,212,216,225,302,345],[108,115,302,345],[89,108,115,140,144,160,302,345],[108,115,116,302,345],[89,115,147,302,345],[89,92,115,130,138,140,144,158,302,345],[84,89,108,115,116,302,345],[87,89,115,302,345],[87,89,108,115,302,345],[115,126,302,345],[83,115,302,345],[96,99,100,115,302,345],[85,108,302,345],[95,96,302,345],[115,169,172,302,345],[75,185,302,345],[95,103,115,302,345],[95,115,139,302,345],[89,112,200,302,345],[78,87,302,345],[108,116,302,345],[302,312,316,345,388],[302,312,345,377,388],[302,307,345],[302,309,312,345,385,388],[302,307,345,395],[302,309,312,345,365,388],[302,304,305,308,311,345,357,377,388],[302,312,319,345],[302,304,310,345],[302,312,333,334,345],[302,308,312,345,380,388,395],[302,333,345,395],[302,306,307,345,395],[302,312,345],[302,312,327,345],[302,312,319,320,345],[302,310,312,320,321,345],[302,311,345],[302,304,307,312,345],[302,312,316,320,321,345],[302,316,345],[302,310,312,315,345,388],[302,304,309,312,319,345],[302,307,312,333,345,393,395],[302,345,1430,1434],[302,345,1425,1430,1431,1433,1435,1441,1466],[302,345,1155,1156,1157,1158,1159,1160,1161,1163,1164,1165,1166,1167,1168,1169,1170],[302,345,1155],[302,345,1155,1162],[302,345,1427],[302,345,1428,1429],[302,345,1425,1428,1430],[245,268,269,273,275,276,302,345],[253,263,269,275,302,345],[275,302,345],[245,249,252,261,262,263,266,268,269,274,276,302,345],[244,302,345],[244,245,249,252,253,261,262,263,266,267,268,269,273,274,275,277,278,279,280,281,282,283,302,345],[248,261,266,302,345],[248,249,250,252,261,269,273,275,302,345],[262,263,269,302,345],[249,252,261,266,269,274,275,302,345],[248,249,250,252,261,262,268,273,274,275,302,345],[248,250,262,263,264,265,269,273,302,345],[248,269,273,302,345],[269,275,302,345],[248,249,250,251,260,263,266,269,273,302,345],[248,249,250,251,263,264,266,269,273,302,345],[244,246,247,249,253,263,266,267,269,276,302,345],[245,249,269,273,302,345],[273,302,345],[270,271,272,302,345],[246,268,269,275,277,302,345],[253,302,345],[253,262,266,268,302,345],[253,268,302,345],[249,250,252,261,263,264,268,269,302,345],[248,252,253,260,261,263,302,345],[248,249,250,253,260,261,263,266,302,345],[268,274,275,302,345],[249,302,345],[249,250,302,345],[247,248,250,254,255,256,257,258,259,261,264,266,302,345],[302,345,1074,1075],[302,345,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088],[302,345,1050,1074,1075],[302,345,1075],[302,345,1050,1052,1074,1075],[302,345,1050,1052,1075],[302,345,1050,1052,1056,1075,1076],[302,345,1050,1075],[302,345,1050,1062,1074,1075],[302,345,1051,1075],[302,345,1050,1066,1074,1075],[302,345,1050,1059,1074,1075],[302,345,1050,1058,1061,1074,1075],[302,345,1051,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073],[302,345,1050,1074,1076],[302,345,1049],[302,345,1040,1041],[302,345,1037,1038,1040,1042,1043,1048],[302,345,1038,1040],[302,345,1048],[302,345,1040],[302,345,1037,1038,1040,1043,1044,1045,1046,1047],[302,345,1037,1038,1039],[72,73,242,243,291,296,302,345,773,831,1139,1751],[72,73,285,286,302,345],[72,73,242,243,285,291,302,345,618,703,768,775,831,939,940,952,953,1027,1094,1300,1370,1478],[242,302,345],[72,73,285,302,345,367,952,1146],[73,302,345,1376,1478],[72,285,291,292,302,345,706,804,831,952,965,1027,1193,1264,1478,1746],[72,73,285,289,292,302,345,706,775,831,952,1372,1746,1751,1753],[72,291,302,345,706,773,775,963],[73,242,243,302,345,775,1376,1478,1746],[72,73,243,291,292,302,345,706,952,1731,1746],[72,302,345,367,706,799,800,831],[73,285,302,345,367,572,706,802,1469,1746],[72,242,292,302,345,808,1746,1748,1749,1750],[243,291,302,345],[286,302,345],[72,73,243,285,289,291,292,293,294,296,302,345,572,703,706,771,772,773,810,831,839,922,939,940,952,953,1012,1013,1027,1093,1094,1096,1138,1139,1140,1141,1144,1374,1470,1473,1474,1475,1476,1477,1746],[72,73,302,345,703,952,1751],[72,284,285,286,292,294,302,345,703,772,939],[73,289,291,292,302,345,703,706,773,799,1013,1097,1137,1472],[72,302,345,702],[302,345,922],[302,345,1758],[72,302,345],[285,302,345],[72,73,285,302,345,930,1746],[72,73,243,285,289,292,302,345,366,367,572,706,939,952,1013,1385,1389,1390,1392,1393,1394,1395,1746,1747],[302,345,1096],[71,72,302,345],[72,292,302,345,706,831,1746],[72,73,302,345,1746,1747],[72,291,302,345,350,358,774,803],[72,285,286,302,345,397,399,572,831],[72,73,289,302,345,573,575,776,831,882,939,965,1013,1029,1030,1151,1404,1746],[72,242,243,285,302,345,367,813,829],[72,285,291,302,345,831],[72,73,243,286,289,291,302,345,359,367,799,804,809,831,837,839,840,1746,1747],[291,302,345,1389],[73,285,302,345,1144,1478],[72,302,345,367,706,922,953,965,966,1023,1024,1026,1746],[73,285,289,292,302,345,388,706,831,951,952,953,1746],[72,240,242,302,345],[72,302,345,367,706,1398,1746],[72,73,243,285,302,345,703,706,831,839,922,952,1138,1139,1140,1145,1147,1387,1397,1399,1402,1420,1421,1422,1478,1746],[73,302,345],[72,73,285,286,289,302,345,939,966],[72,73,243,285,291,292,302,345,705,706,768,769,773,774,831],[72,285,291,292,302,345,706,773,774,775,776,800,831,837,842,951,1746],[72,73,242,243,285,286,291,293,302,345,359,367,770,776,798,800,804,809,831,839,930,1405,1407,1747],[72,73,292,302,345,573,706,773,775,776,798,800,831,841,842,880,882,885,964,1746,1747],[72,292,302,345,706,775,776,795,798,831,1746],[72,73,286,292,302,345,359,367,706,773,801,804,809,831,1747],[72,243,286,289,291,302,345,367,573,830,831,929,932,939,1013,1424,1469,1746,1747],[302,345,795],[72,286,289,302,345,939,1029],[72,73,302,345,359,366,367,706,939,1746],[72,73,242,243,302,345,359,367,804,809,930,1747],[72,292,302,345,804,831,965,1149],[72,292,302,345,703,831,954],[72,73,285,291,302,345,359,572,706,809,924,932,940,941,947,965,1746,1747],[72,73,243,285,302,345,706,775,1376,1478],[72,73,243,285,288,291,292,294,302,345,350,706,771,773,775,800,801,830,831,916,921,922,924,929,931,932,939,948,950,951,954,959,962,1746,1747],[72,73,286,291,302,345,367,706,805,1746,1747],[72,285,302,345,928],[72,242,243,289,302,345,573,575,830,837,851,939,940,948,963,1012,1013,1027,1030,1151,1404,1408,1409,1411,1419],[72,285,292,302,345,572,706,806,831,965,966,1151,1746,1747,1837],[302,345,1091],[72,73,292,302,345,706,831,851,952,1390,1478,1479,1731,1744,1745],[302,345,1746],[72,292,295,302,345,831,832,833,835,836],[295,302,345],[302,345,811],[72,73,291,292,302,345,348,706,773,801,831,930,954,1097,1136,1478],[72,243,291,302,345,367,388,706,802,831,839,1401,1746],[287,302,345],[72,73,243,285,286,288,289,290,291,292,293,294,296,302,345,573,575,703,704,706,768,771,772,773,775,776,798,799,800,801,802,803,804,806,808,809,810,812,830,831,837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,950,951,952,953,954,963,964,965,966,1012,1013,1024,1027,1029,1030,1034,1035,1036,1090,1093,1094,1095,1096,1097,1137,1138,1139,1140,1141,1143,1144,1145,1146,1147,1148,1150,1151,1153,1177,1265,1371,1372,1374,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1390,1392,1395,1396,1397,1399,1402,1404,1407,1408,1409,1410,1411,1412,1416,1418,1419,1420,1421,1422,1423,1424,1467,1468,1469,1470,1472,1473,1474,1475,1476,1477,1478,1479,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1759,1760,1761,1762,1763,1764,1765,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1819,1820,1821,1822,1823,1831,1832,1833,1834,1835],[302,345,941],[286,291,302,345,574],[291,302,345,703,1033],[286,302,345,772,935,938],[72,285,291,302,345,774,939,1746],[302,345,809,1151,1746,1747,1749,1751],[302,345,1417],[73,302,345,830,932],[302,345,830,922],[71,73,285,302,345,572,1746],[73,302,345,1094,1371,1376,1377,1378,1379,1380,1381,1382,1383,1384,1478,1746],[73,291,302,345,1376,1478,1746],[72,243,289,302,345,1746],[302,345,1142],[72,285,293,295,302,345,703],[73,292,302,345,367,706,799],[72,285,289,302,345,706,939,1030,1426,1435,1441,1466],[302,345,831,1415],[72,243,285,289,291,292,302,345,706,804,809,810,831,1477,1733,1735,1736,1737,1741,1743],[72,73,242,302,345,800,801,804,831,965,1093],[73,285,292,302,345,703,706,831,953,1733,1766],[294,302,345,829],[294,302,345,1410],[72,73,242,302,345,804,1751],[302,345,1391],[72,285,291,302,345,706],[73,302,345,797],[72,73,242,302,345,952,1094,1141,1746],[72,73,242,243,285,291,292,293,302,345,572,703,831,952,1746],[72,302,345,1030,1032,1034],[302,345,365],[242,302,345,1747],[73,243,302,345,1478],[72,73,243,291,302,345,775,1096,1151,1376,1478],[72,73,243,285,302,345,575,703,706,774,775,939,940,952,953,1027,1094,1372,1374,1478],[243,285,291,292,302,345,702,703,706,775,1478],[72,73,243,285,291,292,302,345,703,706,770,775,776,801,831,952,1372,1373,1375,1478],[302,345,706,946],[72,285,302,345],[72,73,291,302,345,359,367,572,706,952,1145,1387,1468,1747],[72,285,286,288,289,302,345,573,575,771,772,804,806,830,837,841,880,882,885,932,939,950,965,1013,1029,1030,1034,1035,1036,1092,1141,1151,1404,1407,1412,1416,1418,1746],[72,302,345,367,388,808,1747],[302,345,364,367,388],[72,73,243,285,289,291,292,302,345,359,366,367,388,389,706,802,804,809,831,839,850,851,852,879,1746,1747],[291,302,345,368,838],[73,285,286,293,302,345,703,770,771,772],[72,73,242,285,296,302,345,367,706,775,804,809,810,922,924,931,952,953,965,1139,1148,1150,1153,1372,1386,1387,1388,1396,1473,1746,1751],[72,73,242,243,285,286,288,289,291,292,302,345,573,703,804,830,831,839,885,922,940,953,965,966,1012,1013,1027,1034,1035,1036,1090,1092,1093,1094,1095,1137,1478,1746,1747],[72,73,285,288,291,292,302,345,572,831,953,1013,1402,1746,1774],[72,73,242,243,285,291,292,302,345,573,706,772,803,922,952,953,965,1139,1140,1141,1144,1385,1387,1423,1478,1746,1747],[72,285,289,302,345,703,939,1030],[243,302,345,618,706,767],[72,73,243,285,292,302,345,367,388,706,775,831,842,948,951,963,1747],[72,73,242,243,285,288,289,291,292,302,345,572,703,706,773,776,800,801,804,809,831,839,885,922,929,931,952,953,1012,1034,1035,1096,1097,1137,1138,1139,1143,1144,1145,1147,1385,1387,1407,1408,1423,1470,1472,1478,1746,1751,1752],[302,345,807],[72,73,302,345,367,803,1830],[72,243,289,302,345,706,831,939,1011,1012],[73,292,302,345,367,706,804,809,831,964,1746],[72,73,285,291,302,345,367,706,806,809,952,1147,1746,1747,1763],[291,302,345,706,831,1746],[72,73,243,291,302,345,703,812,831,952,1834],[72,302,345,703],[73,302,345,952],[302,345,923],[72,73,285,291,302,345,770,776,795,842],[72,285,302,345,572,706,952,1095,1139],[72,73,285,286,288,291,292,296,302,345,367,775,799,800,831,1030,1746],[72,73,285,302,345,367,939,1410,1422,1467],[302,345,1471],[72,285,302,345,706,952,1092,1418],[72,243,292,302,345,346,359,367,706,831,851,924,952,1420,1478,1744,1745,1746,1747,1764,1771],[72,302,345,348,706,1027],[73,285,302,345],[72,285,302,345,884],[72,73,291,302,345,706,839],[72,286,302,345,1028],[242,302,345,953,1094],[72,73,243,284,288,289,291,292,293,294,296,302,343,345,367,388,573,575,703,704,773,774,810,812,830,1746],[73,291,302,345,358,359,367,831,839,1747],[294,302,345],[72,285,302,345,1406],[302,345,388],[73,291,294,302,345,573,703,706,773,831,953,1478],[73,290,302,345,1746],[72,73,285,289,291,302,345,572,706,952,1012,1141,1145,1147],[72,73,292,302,345,706,831,922,953,965,1177,1265,1385,1478,1746,1751],[72,285,291,292,302,345,706,809,831,952,965,1027,1154,1176,1478],[302,345,1154],[302,345,359,367,1154,1176],[72,243,302,345,348,359,367,706,770,1024,1154,1171,1173,1174,1175],[72,302,345,1154,1174,1176],[302,345,359,367,706,1154,1171,1172],[302,345,358,367,802],[72,73,242,285,291,302,345,775,831,1746],[72,73,240,243,291,292,302,345,706,773,831,952,1372,1375,1478],[73,302,345,367,706,804,806,808,1746,1747],[72,302,345,393,703,706,812,831,952,1478],[72,73,242,243,285,289,302,345,359,367,573,575,939,965,1013,1404,1746,1747,1751,1762],[72,291,302,345,1837],[72,286,302,345,706,1403],[72,284,286,288,302,345],[72,302,345,774,776,798,842,929,949],[72,302,345,1089]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"ca2bdfe9e12361ed4daa6cede7d76db71a599d7cada3f308530783c9edd5a505","signature":"e1fb39fc069a0b9fe8cf71a483028bc8e4e142fe47df707ddb19bd5a45f4fe6d","impliedFormat":99},{"version":"6197ea0b13d17cd68df40851a05b4bd0be92aa01570c7c6d812aa86b6e1df7cd","signature":"45b6ce03153f58a2b0d88d5e64d82af1187863d93475db6eb091a917c60688d1","impliedFormat":99},{"version":"3aea4b48223098d8a8b119c6b4ab7e5617070c9bdf908dbfe60c43a9f867a3b1","signature":"0d95d1b49272abd96fdf04b16a23feb97e8fa4f7bebfc0b1ca2ba03e9a529cf9","impliedFormat":99},{"version":"cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","impliedFormat":1},{"version":"1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","impliedFormat":1},{"version":"130ec22c8432ade59047e0225e552c62a47683d870d44785bee95594c8d65408","impliedFormat":1},{"version":"4f24c2781b21b6cd65eede543669327d68a8cf0c6d9cf106a1146b164a7c8ef9","affectsGlobalScope":true,"impliedFormat":1},{"version":"928f96b9948742cbaec33e1c34c406c127c2dad5906edb7df08e92b963500a41","impliedFormat":1},{"version":"56613f2ebdd34d4527ca1ee969ab7e82333c3183fc715e5667c999396359e478","impliedFormat":1},{"version":"d9720d542df1d7feba0aa80ed11b4584854951f9064232e8d7a76e65dc676136","impliedFormat":1},{"version":"d0fb3d0c64beba3b9ab25916cc018150d78ccb4952fac755c53721d9d624ba0d","impliedFormat":1},{"version":"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","impliedFormat":1},{"version":"ba93f0192c9c30d895bee1141dd0c307b75df16245deef7134ac0152294788cc","impliedFormat":1},{"version":"fca7cd7512b19d38254171fb5e35d2b16ac56710b7915b7801994612953da16c","impliedFormat":1},{"version":"7e43693f6ea74c3866659265e0ce415b4da6ed7fabd2920ad7ea8a5e746c6a94","impliedFormat":1},{"version":"eb31477c87de3309cbe4e9984fa74a052f31581edb89103f8590f01874b4e271","impliedFormat":1},{"version":"4e251317bb109337e4918e5d7bcda7ef2d88f106cac531dcea03f7eee1dd2240","impliedFormat":1},{"version":"0f2c77683296ca2d0e0bee84f8aa944a05df23bc4c5b5fef31dda757e75f660f","impliedFormat":1},{"version":"1a67ba5891772a62706335b59a50720d89905196c90719dad7cec9c81c2990e6","impliedFormat":1},{"version":"cf41091fcbf45daff9aba653406b83d11a3ec163ff9d7a71890035117e733d98","impliedFormat":1},{"version":"aa514fadda13ad6ddadc2342e835307b962254d994f45a0cb495cc76eca13eff","impliedFormat":1},{"version":"ce92e662f86a36fc38c5aaa2ec6e6d6eed0bc6cf231bd06a9cb64cc652487550","impliedFormat":1},{"version":"3821c8180abb683dcf4ba833760764a79e25bc284dc9b17d32e138c34ada1939","impliedFormat":1},{"version":"0ef2a86ec84da6b2b06f830b441889c5bb8330a313691d4edbe85660afa97c44","impliedFormat":1},{"version":"b2a793bde18962a2e1e0f9fa5dce43dd3e801331d36d3e96a7451727185fb16f","impliedFormat":1},{"version":"9d8fc1d9b6b4b94127eec180183683a6ef4735b0e0a770ba9f7e2d98dd571e0c","impliedFormat":1},{"version":"8504003e88870caa5474ab8bd270f318d0985ba7ede4ee30fe37646768b5362a","impliedFormat":1},{"version":"892abbe1081799073183bab5dc771db813938e888cf49eb166f0e0102c0c1473","impliedFormat":1},{"version":"65465a64d5ee2f989ad4cf8db05f875204a9178f36b07a1e4d3a09a39f762e2e","impliedFormat":1},{"version":"2878f694f7d3a13a88a5e511da7ac084491ca0ddde9539e5dad76737ead9a5a9","impliedFormat":1},{"version":"d21c5f692d23afa03113393088bcb1ef90a69272a774950a9f69c58131ac5b7e","impliedFormat":1},{"version":"0915ce92bb54e905387b7907e98982620cb7143f7b44291974fb2e592602fe00","impliedFormat":1},{"version":"9dfb317a36a813f4356dc1488e26a36d95e3ac7f38a05fbf9dda97cfd13ef6ea","impliedFormat":1},{"version":"7c0a4d3819fb911cdb5a6759c0195c72b0c54094451949ebaa89ffceadd129ca","impliedFormat":1},{"version":"4733c832fb758f546a4246bc62f2e9d68880eb8abf0f08c6bec484decb774dc9","impliedFormat":1},{"version":"58d91c410f31f4dd6fa8d50ad10b4ae9a8d1789306e73a5fbe8abea6a593099b","impliedFormat":1},{"version":"3aea7345c25f1060791fc83a6466b889924db87389e5c344fa0c27b75257ebe4","impliedFormat":1},{"version":"a8289d1d525cf4a3a2d5a8db6b8e14e19f43d122cc47f8fb6b894b0aa2e2bde6","impliedFormat":1},{"version":"e6804515ba7c8f647e145ecc126138dd9d27d3e6283291d0f50050700066a0ea","impliedFormat":1},{"version":"9420a04edbe321959de3d1aab9fa88b45951a14c22d8a817f75eb4c0a80dba02","impliedFormat":1},{"version":"6927ceeb41bb451f47593de0180c8ff1be7403965d10dc9147ee8d5c91372fff","impliedFormat":1},{"version":"d9c6f10eebf03d123396d4fee1efbe88bc967a47655ec040ffe7e94271a34fc7","impliedFormat":1},{"version":"f2a392b336e55ccbeb8f8a07865c86857f1a5fc55587c1c7d79e4851b0c75c9a","impliedFormat":1},{"version":"fd53e2a54dae7bb3a9c3b061715fff55a0bb3878472d4a93b2da6f0f62262c9f","impliedFormat":1},{"version":"1f129869a0ee2dcb7ea9a92d6bc8ddf2c2cdaf2d244eec18c3a78efeb5e05c83","impliedFormat":1},{"version":"554962080d3195cae300341a8b472fb0553f354f658344ae181b9aa02d351dbd","impliedFormat":1},{"version":"89cd9ab3944b306e790b148dd0a13ca120daf7379a98729964ea6288a54a1beb","impliedFormat":1},{"version":"28fa41063a242eafcf51e1a62013fccdd9fd5d6760ded6e3ff5ce10a13c2ab31","impliedFormat":1},{"version":"e53a8b6e43f20fa792479f8069c41b1a788a15ffdfd56be1ab8ef46ea01bd43e","impliedFormat":1},{"version":"ada60ff3698e7fd0c7ed0e4d93286ee28aed87f648f6748e668a57308fde5a67","impliedFormat":1},{"version":"f65e0341f11f30b47686efab11e1877b1a42cf9b1a232a61077da2bdeee6d83e","impliedFormat":1},{"version":"e6918b864e3c2f3a7d323f1bb31580412f12ab323f6c3a55fb5dc532c827e26d","impliedFormat":1},{"version":"5d6f919e1966d45ea297c2478c1985d213e41e2f9a6789964cdb53669e3f7a6f","impliedFormat":1},{"version":"d7735a9ccd17767352ab6e799d76735016209aadd5c038a2fc07a29e7b235f02","impliedFormat":1},{"version":"843e98d09268e2b5b9e6ff60487cf68f4643a72c2e55f7c29b35d1091a4ee4e9","impliedFormat":1},{"version":"ef4c9ef3ec432ccbf6508f8aa12fbb8b7f4d535c8b484258a3888476de2c6c36","impliedFormat":1},{"version":"77ff2aeb024d9e1679c00705067159c1b98ccac8310987a0bdaf0e38a6ca7333","impliedFormat":1},{"version":"8f9effea32088f37d15858a890e1a7ccf9af8d352d47fea174f6b95448072956","impliedFormat":1},{"version":"952c4a8d2338e19ef26c1c0758815b1de6c082a485f88368f5bece1e555f39d4","impliedFormat":1},{"version":"1d953cb875c69aeb1ec8c58298a5226241c6139123b1ff885cedf48ac57b435c","impliedFormat":1},{"version":"1a80e164acd9ee4f3e2a919f9a92bfcdb3412d1fe680b15d60e85eadbaa460f8","impliedFormat":1},{"version":"f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","impliedFormat":1},{"version":"019c29de7d44d84684e65bdabb53ee8cc08f28b150ac0083d00e31a8fe2727d8","impliedFormat":1},{"version":"e35738485bf670f13eab658ea34d27ef2b875f3aae8fc00fb783d29e5737786d","impliedFormat":1},{"version":"bcd951d1a489d00e432c73760ce7f39adb0ef4e6a9c8ffef5dd7f093325a8377","impliedFormat":1},{"version":"672c1ebc4fa15a1c9b4911f1c68de2bc889f4d166a68c5be8f1e61f94014e9d8","impliedFormat":1},{"version":"b0378c1bc3995a1e7b40528dcd81670b2429d8c1dcc1f8d1dc8f76f33d3fc1b8","impliedFormat":1},{"version":"5a0d920468aa4e792285943cadad77bcb312ba2acf1c665e364ada1b1ee56264","impliedFormat":1},{"version":"c27c5144d294ba5e38f0cd483196f911047500a735490f85f318b4d5eb8ac2cc","impliedFormat":1},{"version":"900d1889110107cea3e40b30217c6e66f19db8683964a57afd9a72ecc821fe21","impliedFormat":1},{"version":"a2e4333bf0c330ae26b90c68e395ad0a8af06121f1c977979c75c4a5f9f6bc29","impliedFormat":1},{"version":"08c027d3d6e294b5607341125d1c4689b4fece03bdb9843bd048515fe496a73e","impliedFormat":1},{"version":"2cbf557a03f80df74106cb7cfb38386db82725b720b859e511bdead881171c32","impliedFormat":1},{"version":"918956b37f3870f02f0659d14bba32f7b0e374fd9c06a241db9da7f5214dcd79","impliedFormat":1},{"version":"260e6d25185809efc852e9c002600ad8a85f8062fa24801f30bead41de98c609","impliedFormat":1},{"version":"dd9694eecd70a405490ad23940ccd8979a628f1d26928090a4b05a943ac61714","impliedFormat":1},{"version":"42ca885a3c8ffdffcd9df252582aef9433438cf545a148e3a5e7568ca8575a56","impliedFormat":1},{"version":"309586820e31406ed70bb03ea8bca88b7ec15215e82d0aa85392da25d0b68630","impliedFormat":1},{"version":"db436ca96e762259f14cb74d62089c7ca513f2fc725e7dcfbac0716602547898","impliedFormat":1},{"version":"1410d60fe495685e97ed7ca6ff8ac6552b8c609ebe63bd97e51b7afe3c75b563","impliedFormat":1},{"version":"c6843fd4514c67ab4caf76efab7772ceb990fbb1a09085fbcf72b4437a307cf7","impliedFormat":1},{"version":"03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","impliedFormat":1},{"version":"956618754d139c7beb3c97df423347433473163d424ff8248af18851dd7d772a","impliedFormat":1},{"version":"7d8f40a7c4cc81db66ac8eaf88f192996c8a5542c192fdebb7a7f2498c18427d","impliedFormat":1},{"version":"c69ecf92a8a9fb3e4019e6c520260e4074dc6cb0044a71909807b8e7cc05bb65","impliedFormat":1},{"version":"07d0370c85ac112aa6f1715dc88bafcee4bcea1483bc6b372be5191d6c1a15c7","impliedFormat":1},{"version":"7fb0164ebb34ead4b1231eca7b691f072acf357773b6044b26ee5d2874c5f296","impliedFormat":1},{"version":"9e4fc88d0f62afc19fa5e8f8c132883378005c278fdb611a34b0d03f5eb6c20c","impliedFormat":1},{"version":"cc9bf8080004ee3d8d9ef117c8df0077d6a76b13cb3f55fd3eefbb3e8fcd1e63","impliedFormat":1},{"version":"1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","impliedFormat":1},{"version":"b6aa8c6f2f5ebfb17126492623691e045468533ec2cc7bd47303ce48de7ab8aa","impliedFormat":1},{"version":"18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","impliedFormat":1},{"version":"68434152ef6e484df25a9bd0f4c9abdfb0d743f5a39bff2b2dc2a0f94ed5f391","impliedFormat":1},{"version":"b848b40bfeb73dfe2e782c5b7588ef521010a3d595297e69386670cbde6b4d82","impliedFormat":1},{"version":"aa79b64f5b3690c66892f292e63dfe3e84eb678a886df86521f67c109d57a0c5","impliedFormat":1},{"version":"a692e092c3b9860c9554698d84baf308ba51fc8f32ddd6646e01a287810b16c6","impliedFormat":1},{"version":"18076e7597cd9baa305cd85406551f28e3450683a699b7152ce7373b6b4a1db7","impliedFormat":1},{"version":"1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","impliedFormat":1},{"version":"d2e3a1de4fde9291f9fb3b43672a8975a83e79896466f1af0f50066f78dbf39e","impliedFormat":1},{"version":"d0d03f7d2ba2cf425890e0f35391f1904d0d152c77179ddfc28dfad9d4a09c03","impliedFormat":1},{"version":"e37650b39727a6cf036c45a2b6df055e9c69a0afdd6dbab833ab957eb7f1a389","impliedFormat":1},{"version":"c58d6d730e95e67a62ebd7ba324e04bcde907ef6ba0f41922f403097fe54dd78","impliedFormat":1},{"version":"0f5773d0dd61aff22d2e3223be3b4b9c4a8068568918fb29b3f1ba3885cf701f","impliedFormat":1},{"version":"31073e7d0e51f33b1456ff2ab7f06546c95e24e11c29d5b39a634bc51f86d914","impliedFormat":1},{"version":"9ce0473b0fbaf7287afb01b6a91bd38f73a31093e59ee86de1fd3f352f3fc817","impliedFormat":1},{"version":"6f0d708924c3c4ee64b0fef8f10ad2b4cb87aa70b015eb758848c1ea02db0ed7","impliedFormat":1},{"version":"6addbb18f70100a2de900bace1c800b8d760421cdd33c1d69ee290b71e28003d","impliedFormat":1},{"version":"37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","impliedFormat":1},{"version":"e0ef70ca30cdc08f55a9511c51a91415e814f53fcc355b14fc8947d32ce9e1aa","impliedFormat":1},{"version":"14be139e0f6d380a3d24aaf9b67972add107bea35cf7f2b1b1febac6553c3ede","impliedFormat":1},{"version":"23195b09849686462875673042a12b7f4cd34b4e27d38e40ca9c408dae8e6656","impliedFormat":1},{"version":"ff1731974600a4dad7ec87770e95fc86ca3d329b1ce200032766340f83585e47","impliedFormat":1},{"version":"91bc53a57079cf32e1a10ccf1a1e4a068e9820aa2fc6abc9af6bd6a52f590ffb","impliedFormat":1},{"version":"8dd284442b56814717e70f11ca22f4ea5b35feeca680f475bfcf8f65ba4ba296","impliedFormat":1},{"version":"a304e0af52f81bd7e6491e890fd480f3dc2cb0541dec3c7bd440dba9fea5c34e","impliedFormat":1},{"version":"c60fd0d7a1ba07631dfae8b757be0bffd5ef329e563f9a213e4a5402351c679f","impliedFormat":1},{"version":"02687b095a01969e6e300d246c9566a62fa87029ce2c7634439af940f3b09334","impliedFormat":1},{"version":"e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","impliedFormat":1},{"version":"ceb2c0bc630cca2d0fdd48b0f48915d1e768785efaabf50e31c8399926fee5b1","impliedFormat":1},{"version":"f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","impliedFormat":1},{"version":"12aeda564ee3f1d96ac759553d6749534fafeb2e5142ea2867f22ed39f9d3260","impliedFormat":1},{"version":"4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","impliedFormat":1},{"version":"85d63aaff358e8390b666a6bc68d3f56985f18764ab05f750cb67910f7bccb1a","impliedFormat":1},{"version":"0a0bf0cb43af5e0ac1703b48325ebc18ad86f6bf796bdbe96a429c0e95ca4486","impliedFormat":1},{"version":"563573a23a61b147358ddee42f88f887817f0de1fc5dbc4be7603d53cbd467ad","impliedFormat":1},{"version":"dd0cad0db617f71019108686cf5caabcad13888b2ae22f889a4c83210e4ba008","impliedFormat":1},{"version":"f08d2151bd91cdaa152532d51af04e29201cfc5d1ea40f8f7cfca0eb4f0b7cf3","impliedFormat":1},{"version":"b9c889d8a4595d02ebb3d3a72a335900b2fe9e5b5c54965da404379002b4ac44","impliedFormat":1},{"version":"a3cd30ebae3d0217b6b3204245719fc2c2f29d03b626905cac7127e1fb70e79c","impliedFormat":1},{"version":"bd56c2399a7eadccfca7398ca2244830911bdbb95b8ab7076e5a9210e9754696","impliedFormat":1},{"version":"f52fb387ac45e7b8cdc98209714c4aedc78d59a70f92e9b5041309b6b53fc880","impliedFormat":1},{"version":"1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","impliedFormat":1},{"version":"5faa3d4b828440882a089a3f8514f13067957f6e5e06ec21ddd0bc2395df1c33","impliedFormat":1},{"version":"f0f95d40b0b5a485b3b97bd99931230e7bf3cbbe1c692bd4d65c69d0cdd6fa9d","impliedFormat":1},{"version":"380b4fe5dac74984ac6a58a116f7726bede1bdca7cec5362034c0b12971ac9c1","impliedFormat":1},{"version":"00de72aa7abede86b016f0b3bfbf767a08b5cff060991b0722d78b594a4c2105","impliedFormat":1},{"version":"965759788855797f61506f53e05c613afb95b16002c60a6f8653650317870bc3","impliedFormat":1},{"version":"f70a315e029dacf595f025d13fa7599e8585d5ccfc44dd386db2aa6596aaf553","impliedFormat":1},{"version":"f385a078ad649cc24f8c31e4f2e56a5c91445a07f25fbdc4a0a339c964b55679","impliedFormat":1},{"version":"08599363ef46d2c59043a8aeec3d5e0d87e32e606c7b1acf397e43f8acadc96a","impliedFormat":1},{"version":"4f5bbef956920cfd90f2cbffccb3c34f8dfc64faaba368d9d41a46925511b6b0","impliedFormat":1},{"version":"0ae9d5bbf4239616d06c50e49fc21512278171c1257a1503028fc4a95ada3ed0","impliedFormat":1},{"version":"cba49e77f6c1737f7a3ce9a50b484d21980665fff93c1c64e0ee0b5086ea460a","impliedFormat":1},{"version":"9c686df0769cca468ebf018749df4330d5ff9414e0d226c1956ebaf45c85ff61","impliedFormat":1},{"version":"89d5970d28f207d30938563e567e67395aa8c1789c43029fe03fe1d07893c74c","impliedFormat":1},{"version":"869e789f7a8abcc769f08ba70b96df561e813a4001b184d3feb8c3d13b095261","impliedFormat":1},{"version":"392f3eb64f9c0f761eb7a391d9fbef26ffa270351d451d11bd70255664170acc","impliedFormat":1},{"version":"f829212a0e8e4fd1b079645d4e97e6ec73734dd21aae4dfc921d2958774721d0","impliedFormat":1},{"version":"5e20af039b2e87736fd7c9e4b47bf143c46918856e78ce21da02a91c25d817e8","impliedFormat":1},{"version":"f321514602994ba6e0ab622ef52debd4e9f64a7b4494c03ee017083dc1965753","impliedFormat":1},{"version":"cc8734156129aa6230a71987d94bdfac723045459da707b1804ecec321e60937","impliedFormat":1},{"version":"bb89466514349b86260efdee9850e497d874e4098334e9b06a146f1e305fca3f","impliedFormat":1},{"version":"fc0ee9d0476dec3d1b37a0f968e371a3d23aac41742bc6706886e1c6ac486749","impliedFormat":1},{"version":"f7da03d84ce7121bc17adca0af1055021b834e861326462a90dbf6154cf1e106","impliedFormat":1},{"version":"fed8c2c205f973bfb03ef3588750f60c1f20e2362591c30cd2c850213115163b","impliedFormat":1},{"version":"32a2b99a3aacda16747447cc9589e33c363a925d221298273912ecf93155e184","impliedFormat":1},{"version":"07bfa278367913dd253117ec68c31205825b2626e1cb4c158f2112e995923ee8","impliedFormat":1},{"version":"6a76e6141ff2fe28e88e63e0d06de686f31184ab68b04ae16f0f92103295cc2a","impliedFormat":1},{"version":"f05d5d16d85abe57eb713bc12efefc00675c09016e3292360e2de0790f51fa48","impliedFormat":1},{"version":"2e3ceed776a470729c084f3a941101d681dd1867babbaf6e1ca055d738dd3878","impliedFormat":1},{"version":"3d9fb85cc7089ca54873c9924ff47fcf05d570f3f8a3a2349906d6d953fa2ccf","impliedFormat":1},{"version":"d82c245bfb76da44dd573948eca299ff75759b9714f8410468d2d055145a4b64","impliedFormat":1},{"version":"6b5b31af3f5cfcf5635310328f0a3a94f612902024e75dc484eb79123f5b8ebe","impliedFormat":1},{"version":"db08c1807e3ae065930d88a3449d926273816d019e6c2a534e82da14e796686d","impliedFormat":1},{"version":"9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","impliedFormat":1},{"version":"ef83477cca76be1c2d0539408c32b0a2118abcd25c9004f197421155a4649c37","impliedFormat":1},{"version":"2c3936b0f811f38ab1a4f0311993bf599c27c2da5750e76aa5dfbed8193c9922","impliedFormat":1},{"version":"c253c7ea2877126b1c3311dc70b7664fe4d696cb09215857b9d7ea8b7fdce1f0","impliedFormat":1},{"version":"445af8e071b13ba018e01778c7c6d1c6e73fc38632c8bcb209f39aa2de789627","impliedFormat":99},{"version":"5db57cae5a31571fd14812ddc96af0174ba58b8b282bde6c135b02e254aabad1","impliedFormat":99},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"b0429a80a40145644a85690c68da1d66d6a71b7744acab8af0340fe4dd1755cb","signature":"60dc2a44b4b16faea5067e50efa0db187330d4ec7930b43b500d51fcea8d097c","impliedFormat":99},{"version":"3dfcd0a3bfa70b53135db3cf2e4ddcb7eccc3e4418ce833ae24eecd06928328f","impliedFormat":1},{"version":"33e12c9940a7f23d50742e5925a193bb4af9b23ee159251e6bc50bb9070618a1","impliedFormat":1},{"version":"bc41a8e33caf4d193b0c49ec70d1e8db5ce3312eafe5447c6c1d5a2084fece12","impliedFormat":1},{"version":"7c33f11a56ba4e79efc4ddae85f8a4a888e216d2bf66c863f344d403437ffc74","impliedFormat":1},{"version":"cbef1abd1f8987dee5c9ed8c768a880fbfbff7f7053e063403090f48335c8e4e","impliedFormat":1},{"version":"9249603c91a859973e8f481b67f50d8d0b3fa43e37878f9dfc4c70313ad63065","impliedFormat":1},{"version":"0132f67b7f128d4a47324f48d0918ec73cf4220a5e9ea8bd92b115397911254f","impliedFormat":1},{"version":"06b37153d512000a91cad6fcbae75ca795ecec00469effaa8916101a00d5b9e2","impliedFormat":1},{"version":"8a641e3402f2988bf993007bd814faba348b813fc4058fce5b06de3e81ed511a","impliedFormat":1},{"version":"281744305ba2dcb2d80e2021fae211b1b07e5d85cfc8e36f4520325fcf698dbb","impliedFormat":1},{"version":"e1b042779d17b69719d34f31822ddba8aa6f5eb15f221b02105785f4447e7f5b","impliedFormat":1},{"version":"6858337936b90bd31f1674c43bedda2edbab2a488d04adc02512aef47c792fd0","impliedFormat":1},{"version":"15cb3deecc635efb26133990f521f7f1cc95665d5db8d87e5056beaea564b0ce","impliedFormat":1},{"version":"e27605c8932e75b14e742558a4c3101d9f4fdd32e7e9a056b2ca83f37f973945","impliedFormat":1},{"version":"f0443725119ecde74b0d75c82555b1f95ee1c3cd371558e5528a83d1de8109de","impliedFormat":1},{"version":"7794810c4b3f03d2faa81189504b953a73eb80e5662a90e9030ea9a9a359a66f","impliedFormat":1},{"version":"b074516a691a30279f0fe6dff33cd76359c1daacf4ae024659e44a68756de602","impliedFormat":1},{"version":"57cbeb55ec95326d068a2ce33403e1b795f2113487f07c1f53b1eaf9c21ff2ce","impliedFormat":1},{"version":"a00362ee43d422bcd8239110b8b5da39f1122651a1809be83a518b1298fa6af8","impliedFormat":1},{"version":"a820499a28a5fcdbf4baec05cc069362041d735520ab5a94c38cc44db7df614c","impliedFormat":1},{"version":"33a6d7b07c85ac0cef9a021b78b52e2d901d2ebfd5458db68f229ca482c1910c","impliedFormat":1},{"version":"8f648847b52020c1c0cdfcc40d7bcab72ea470201a631004fde4d85ccbc0c4c7","impliedFormat":1},{"version":"7821d3b702e0c672329c4d036c7037ecf2e5e758eceb5e740dde1355606dc9f2","impliedFormat":1},{"version":"213e4f26ee5853e8ba314ecad3a73cd06ab244a0809749bb777cbc1619aa07d8","impliedFormat":1},{"version":"cafd6ef91d96228a618436c03d60fe5078f43d32df4c39ebd9f3f7d013dbe337","impliedFormat":1},{"version":"961fa18e1658f3f8e38c23e1a9bc3f4d7be75b056a94700291d5f82f57524ff0","impliedFormat":1},{"version":"079c02dc397960da2786db71d7c9e716475377bcedd81dede034f8a9f94c71b8","impliedFormat":1},{"version":"a7595cbb1b354b54dff14a6bb87d471e6d53b63de101a1b4d9d82d3d3f6eddec","impliedFormat":1},{"version":"1f49a85a97e01a26245fd74232b3b301ebe408fb4e969e72e537aa6ffbd3fe14","impliedFormat":1},{"version":"9c38563e4eabfffa597c4d6b9aa16e11e7f9a636f0dd80dd0a8bce1f6f0b2108","impliedFormat":1},{"version":"a971cba9f67e1c87014a2a544c24bc58bad1983970dfa66051b42ae441da1f46","impliedFormat":1},{"version":"df9b266bceb94167c2e8ae25db37d31a28de02ae89ff58e8174708afdec26738","impliedFormat":1},{"version":"9e5b8137b7ee679d31b35221503282561e764116d8b007c5419b6f9d60765683","impliedFormat":1},{"version":"3e7ae921a43416e155d7bbe5b4229b7686cfa6a20af0a3ae5a79dfe127355c21","impliedFormat":1},{"version":"c7200ae85e414d5ed1d3c9507ae38c097050161f57eb1a70bef021d796af87a7","impliedFormat":1},{"version":"4edb4ff36b17b2cf19014b2c901a6bdcdd0d8f732bcf3a11aa6fd0a111198e27","impliedFormat":1},{"version":"810f0d14ce416a343dcdd0d3074c38c094505e664c90636b113d048471c292e2","impliedFormat":1},{"version":"9c37dc73c97cd17686edc94cc534486509e479a1b8809ef783067b7dde5c6713","impliedFormat":1},{"version":"5fe2ef29b33889d3279d5bc92f8e554ffd32145a02f48d272d30fc1eea8b4c89","impliedFormat":1},{"version":"e39090ffe9c45c59082c3746e2aa2546dc53e3c5eeb4ad83f8210be7e2e58022","impliedFormat":1},{"version":"9f85a1810d42f75e1abb4fc94be585aae1fdac8ae752c76b912d95aef61bf5de","impliedFormat":1},{"version":"e15690c41dbe9b9b3bbe973158dfca873afe779c8ed31d0d61c009f006d9733f","signature":"c93b4573bc56647ef83b92172b45a544a887c8e6fe1d7547ab483d7539d25438","impliedFormat":99},{"version":"aaa4d676b9d202bb1dab976ea85bf70242a3039094cbd5adb931513c4ca0f55c","signature":"3c9521adc756cc0d73d1d382aad251722dcda06beaa7c546d9b55ccab3fc9545","impliedFormat":99},{"version":"c555e7e9fdd3304839d04401a0034c82c9826f473dd5a081038611b666fd9a23","impliedFormat":1},{"version":"1bac6ed68b61b9debc92eddf194989d6595655b24bc1ee78bf05c14eb6e2869b","signature":"c7481dd40631cd8216becf926bf8e24f653b1f15b3ba982eed14ee5f21650647","impliedFormat":99},{"version":"83c791951174955ababfceb36ae31e5a0435f1d1dc4e8e313bb8436e173c4517","signature":"189acce869be1dd5c982e362fe0de932d1cae498bd6326ed8094652b1f8c24c3","impliedFormat":99},{"version":"e48eb9e136ca68bb32412ed99c292cfe3839351854d9bb0b1057dd311548b216","signature":"cfb0a3fa9ea1d0b0e965c6ab2e4b313f85508f4f037ee1a43124cbad2c24b832","impliedFormat":99},{"version":"153d00b83bd029258afdc46ed4ad8fea631b83d929881805e190e823c0e3f598","signature":"2ba08574218f2eb4da4c63b01a40fb4bf1d4d4fb021dbd277024066a1aa51271","impliedFormat":99},{"version":"2618dd01325caa5f79aea570e5b01cf4251ab840e1c804f6ef1e12596fe9a048","signature":"80665e828f293f56591043cb31e5a0a8f40f0faa11ffe91a5ad452fc39234f1c","impliedFormat":99},{"version":"e6509f8ed0f96428b884d014d05298566301e6872fc7466daf2e5386fc4eb1f4","signature":"c8b37aef4d635d79d2b8f0274cbe99a6b39f56ba1019965247ff67d4d600e3b6","impliedFormat":99},{"version":"aa0a75148c05002950f40f2bf00bec499603f070a25d2b64ff2f51682de526e3","signature":"1d40ee92cab7169849f55a854486e1a8c5eb6f5f70b9f64a1c074b7f027c9b9c","impliedFormat":99},{"version":"1d96b00da8ab52510ebf83f6218a44ee7b35d4fb406973a5fa59c2932d44ab47","impliedFormat":99},{"version":"c85375e232498985931c082be76315cdc794bd6884466bb269fab958c987df18","signature":"09a84948d9e87e0466d3d148887da8903453bbe5ee613b584a53fd98675388af","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"b200675fd112ffef97c166d0341fb33f6e29e9f27660adde7868e95c5bc98beb","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"54495480ae5dde36bef1a11d1e3bd30ea5f12371265ebe6602b873574b747949","impliedFormat":99},{"version":"b00c9417e14c16bab467bf36adc1fa1bf559a2380d981be15dc03cf775ac1338","impliedFormat":99},{"version":"2cd932a8d4f1f620df509a375a24374993087f6a755efd508b2f005c4c398399","impliedFormat":99},{"version":"dd8b6b955c7fa741ee30dde24893b93cab7f89d79311214bccb608d6eb5b84f0","impliedFormat":99},{"version":"d62ea28b10463820d06ce481d04720eec39a24102e5363323700b7f4c18edac9","impliedFormat":99},{"version":"24a7be53688c631e70df0fbcba590c69e2247667d96f6cd10f0fd7952659e0df","impliedFormat":99},{"version":"304d6647ee266a28d8a857310577861c6ce636d969aa16086e9e6012925965e4","impliedFormat":99},{"version":"8c3398d9c1d160d74443d1b5b8d235ae4403bc29a63146b7b6d70a99522c2608","impliedFormat":99},{"version":"8b995420ed90c05a373f9058cd43ed2b70b37f629ccc5b0297f214ccd8b97e75","impliedFormat":99},{"version":"330d31ea50f852227da322dbd4b07537ed4d6a239f28a9952f27f679e6b69dbe","impliedFormat":99},{"version":"44c750c5cbae8500bb6760a100e5d4298fd82e2b1b0d62df350b9955b1050431","impliedFormat":99},{"version":"1708841b9e23936d76502f16fb6acb8b844c935ade4414c915bd16bc826fb565","impliedFormat":99},{"version":"e6977c3c136f07887715f506ecf4287abc0ecfdd3c1f64f0c8f59200af2f9daa","impliedFormat":99},{"version":"2b235543bd193a3e6a9d4df91a06f3a49bfa8fdae750c5cecc9243779cc642ad","impliedFormat":99},{"version":"0c85ebf75b2ca201983888d6a95d8068def518fa8e80105c72926fa56e863fb5","impliedFormat":99},{"version":"1ac5dca296c19707be2ec01b4985c012fa4578ef5ddc9e975c3af759b6d9c4e0","impliedFormat":99},{"version":"7f83b479bf10717631b91550b7e60566564879c8509025b9625965c37cbf1a82","impliedFormat":99},{"version":"f80790a769a2f3404ef5f953df077db8b1e25f521ce1224b02b9496bccdcc639","impliedFormat":99},{"version":"37ebb37fdfb5ba642138f4caf66dcd65c16a380b054553cf10110e21f570e527","impliedFormat":99},{"version":"1fd79e76af126c9ef9422a205d3ad585562cba8bfc61336b814367ad864f7c3b","impliedFormat":99},{"version":"d711afbc5556b6baa26d203de73c4f77a994072225593433083afb67a422d3bf","impliedFormat":99},{"version":"ccf353246328623f5617f535244dee5c019bf445c80a7f159f539e4b7004eccc","impliedFormat":99},{"version":"2a520288094ea3ac149b623f2b1aa7715351bb6e8037fd941dc7875ecab3178a","impliedFormat":99},{"version":"1e6a9ea6e95743c4e26d676de59c41b89bb664a96a829d826984a70bc2878fd9","impliedFormat":99},{"version":"23a7fa1e3bf5b23e4a015ecbf6f70a70691cd746b4666fbff6f7608f7c96e01c","impliedFormat":99},{"version":"905ee88f3fafd295462818e2ca130d8f8bcd265b16a812e95b8c31d71d1dbe4a","impliedFormat":99},{"version":"20b4c2fd82c6ba1fbbb44a0ee98af920ebfc7361d477fc612c0ffcd2a9dee666","impliedFormat":99},{"version":"fb756e80c0d2008955a33278c2185a9ae7e4ec9ee1c9471032a346133d8b2318","impliedFormat":99},{"version":"467c112eef73f7ae852d69bc059060fd7561b4a3f58e2a3d910b78d1209f256d","impliedFormat":99},{"version":"5c8457c09756478c7c2dc59ce096653da68bb6dd2949201f2d863f6ef642e03f","impliedFormat":99},{"version":"635e8733c9938545bface4c67cd5c00a714613b9818ee91afaf1eab4c90440bb","impliedFormat":99},{"version":"fd69e5c7ead468fbf9600940fb434fd1dad366950137f33a8d27a97be051f040","impliedFormat":99},{"version":"b9b701f14258c06fa2a19817b6d969f8d175d92c5c19ea15b5102da436072a3f","impliedFormat":99},{"version":"3318d6b65705c334899d90528ccf03dcbdf2aca658082b7f54baee654964bfc4","impliedFormat":99},{"version":"0e9b29d109253f40e7efe0e9058bacecbcbfe5779b9fcc91a5427c06aea19c10","impliedFormat":99},{"version":"b8d81e573d5e57e30534abd18a572aed76c45190b12db18cb3f101b15f323ccb","impliedFormat":99},{"version":"f632b20e021654a76ca56b588f68f90c38568d4e0daeee00f7b4ec742e62a71f","impliedFormat":99},{"version":"d59e8cd1885e89a8eac96eb934a12dfff03b1c6c450266b0b9bd5cc550ed954a","impliedFormat":99},{"version":"9576fce2072c73f22435c06d184f294c949f895f7767f5db8abbea268bc5dc8f","impliedFormat":99},{"version":"aca7abce80c95d95f0444e3d44025a429dc2185f7fb49c436bdae8d7ceb2889b","impliedFormat":99},{"version":"4974d020ad5405108d61e04d697fd2a147b9c6238611f5ef6945521d81c6513f","impliedFormat":99},{"version":"1c610f359a730c6c84a16a9881cbb6af0257981f25bd68e7fa40496d7c765554","impliedFormat":99},{"version":"06381d37fa1cdd225bb419c156dfcdc5360f98a049fb19da1b54e76eb40dfda1","impliedFormat":99},{"version":"91f33fd7fddc12ba487bb4d4a7ded67d548fe2c8427aa1d9baed9698d4947500","impliedFormat":99},{"version":"1a0dbcbae7482ccead5428410cf6c9b8f6d14bb7eb1b8ba1004f564e82ed0221","impliedFormat":99},{"version":"3a17aba11563cbc6aaa3017b3e7057a43d7ac38a96ee1278e4b173c2d85c2318","impliedFormat":99},{"version":"8c9ae5ed5bff9fdf86e7c0384fd8f69686c1ebfe867e164c90419a82e4c3a0de","impliedFormat":99},{"version":"07948d899fee8844266987f7ea6f97fe89835d04d797774b65cb6b1126f81862","impliedFormat":99},{"version":"e79c96c47d92f7031a829fc11c796a3e08faf1e467aef035a73ec139d6d4dddf","impliedFormat":99},{"version":"5cd1b42f1a0d235ab8dd3d17adc97a76650298644ba5fcbee7b91b44181e28de","impliedFormat":99},{"version":"a45948eaee50b87e57e80627e91aeeb8ef0fed0c90898fad64b26339078fe675","impliedFormat":99},{"version":"e367d80515c494208853834e5296b611c0e2be66061c0d9912e5cb4a3958d93e","impliedFormat":99},{"version":"5aab19f3791f368e9c2aaf52436a59feadcfac16554fe8f92f8ab6f95605c086","impliedFormat":99},{"version":"73de7c038db76c83813d0bd1383839c17b37ef3b748896146c970fd422ec2cfb","impliedFormat":99},{"version":"324d21bcf4a9ed115fe3da9fd9dc56cb54686af283488989529e85e987cca993","impliedFormat":99},{"version":"ef51f21c76369b5a30dd184331506a8eb97d5beb4c51c5c806d627d8a64dd174","impliedFormat":99},{"version":"7fd33c47375cd061f4372a6f7efc66245f4bdbf2d3f30e193b7febb70b9cf78f","impliedFormat":99},{"version":"fb27bd91cf5481ec46aa7b783852a83a804b1791f2126731d9528d464d3f5e14","impliedFormat":99},{"version":"aafa02052ef8e08f3d69c19ccaed5ae1ca3558e9d3b96bc9af1d5fcd26dcd30c","impliedFormat":99},{"version":"f01ababfce3bf06fdb67b2ff3c05321db116aeab8b3540b191be17aa88a8856a","impliedFormat":99},{"version":"fd9aa263b8e0ff917f6465a23df9d95788a529436a4843e0fe99ae1a01d43bb8","impliedFormat":99},{"version":"3b0095f99c1a456cdc27791c1da084cb503401dc9c1b8c985188001e01c34078","impliedFormat":99},{"version":"2607548c54420ebe98654c757e441ed5ae765498ca75933804f31b42928b2ee0","impliedFormat":99},{"version":"4adc126ede97e6b8e769f9c0bace1356433e0128cdbe0554660fa84bdcda52d6","impliedFormat":99},{"version":"ecc01890494448073175e9a730429c7f9b1d48422f952cfab0539935ab1f8cd4","impliedFormat":99},{"version":"26befc31dff97629697c0d3914d978985d089b27f6e1748ba28f377374ed11a6","impliedFormat":99},{"version":"1ff56196cde89347cadd72fa0294edd22ec943d12505963e2a623c78cd4787fb","impliedFormat":99},{"version":"b518b3ef14ac06e3aa70ba7af98b6c6d2296793f86494d940e3e8b8e6cf9561f","impliedFormat":99},{"version":"30ff65afdfa713579045ead6cca35d86e2e750e35501d2310766662a56eb378e","impliedFormat":99},{"version":"db45e9e0dd8a8b191b7aaf385faccf99ac42dff8dcf240c71659538911c98775","impliedFormat":99},{"version":"422cf2cf8c60ade1d3a07da80936e17a33fef09be65e376099ad3051f87e5601","impliedFormat":99},{"version":"d482c9a6e690eb47ff2be25437d30e81177b1985e3b8f94b76536a5a7eb853e7","impliedFormat":99},{"version":"331632e80b648c0771e370d382174887a52ee7bd8ef3c2780e0a7d54281b7b5d","impliedFormat":99},{"version":"58740cc6466eb004f581aeef1dc89fb62b05bd64ecf93a3a926a16dc7244cbce","impliedFormat":99},{"version":"a7a4bd04a09ea5d55378db842052224c131d152b0465ed312f4ab6da499010c0","impliedFormat":99},{"version":"80be118b365012462d35b12bb0295edc251aafba1a72d18c7b4bba2c3f8ac8cf","impliedFormat":99},{"version":"2381075de9502cf555d1340c05d1017b33f444ae75d8a678c9b15318cf0328b2","impliedFormat":99},{"version":"0266e22475f13a0764c1a5256a8c2a194b3494cb84ff92252b0b6230acdaca02","impliedFormat":99},{"version":"29594433334dd5a4ed4a262ccc5696806f0ad22ed11e12ba6d6990ac7d10048c","impliedFormat":99},{"version":"8be39a0580647600bf18af9f11af645e56078f27fad8cb22e28cc78cc8d3031f","impliedFormat":99},{"version":"508435f750051e42fb4bf6572950660a8b88a02b81d7d0cf133c36b5cc407b23","impliedFormat":99},{"version":"c7284dcd35081d53d45102edfbe4db0fe68b3a99db100a561e805bb85179a6e0","impliedFormat":99},{"version":"c2eb7386b0c4df65b8662d4f54ae4eeaeb00185557c0de601e917119e6782bd5","impliedFormat":99},{"version":"9bc6abef3fcb3475edac2167ab85264442d7f90b4328ddf8ec10f34571430e41","impliedFormat":99},{"version":"88bb200128e7a207b41c6366189222946f6a0f64c17bc6e9b2cb53f1e1c6e6fa","impliedFormat":99},{"version":"177217daeac9ef94f055ac4c0b47de9e4458062bb0ddf4f39ca7adb2d3120afe","impliedFormat":99},{"version":"66f1e847286be496d38e0b8ef252974d465c630d76282bcbf530561cbb67544a","impliedFormat":99},{"version":"d49debd930f91f1964ae4b0c716ef3b00c3a6c80a2ff780d5f387c19a7a4d2f8","impliedFormat":99},{"version":"995d02d146d77a7eeac138b14d1b288c7eb9653f635d1017656674935cc4840b","impliedFormat":99},{"version":"3fe98b79d9ffc2010d5a86c2aa12e23f5c05ceb13cbe4fedbab3120bd0d1088b","impliedFormat":99},{"version":"812e7ed298bc74028d96881180585669df19c16a860dc67538976894803b357f","impliedFormat":99},{"version":"08f3ffd1d44c90e02763f25157d1ae80dc569aa74ad019f069be5f8f32eac3ac","impliedFormat":99},{"version":"4eff8339f90e01c332893dd24915dfe30530c3d97e2234a9e65bd4b489277971","impliedFormat":99},{"version":"088d532994cab1ee15bf18d4e0bdfda69ad1e6991e1ca168a532d2aeeb2e786f","impliedFormat":99},{"version":"151b3353145c02d6339e965f94bdc26a460bb8a49cb4a01a1e590e5b914a7f1e","impliedFormat":99},{"version":"2c5615f0236855bf207680fbcfac77fa7a7a2ad45dabcd24c99e1640380acb78","impliedFormat":99},{"version":"fc65434c9046cd214eb2a43fe7a6d0743e28c147d123419842e420987df0c1c7","impliedFormat":99},{"version":"fd621bb03db9b7434dce8ffcddbf78c393b3639f005c7a0da5ea64c64d18a098","impliedFormat":99},{"version":"a89541f0ffd3020a8e530a98022653589ae66f4db64b20056753e0f8f6ec59c7","impliedFormat":99},{"version":"e9ea8d02de4b2bd547a61469a9d8b0ad545e3769932dfbc447ed91932e75c3c5","impliedFormat":99},{"version":"09850c5fc6b331f22095cfb90cf2a194907465cd5dabb0594e7603469359a236","impliedFormat":99},{"version":"2b0dbb54547f1234c192863567769154a54e2f716b7aa8f1ad1670f1d269cd5c","impliedFormat":99},{"version":"da1b5f368497bfdb16356b573b0807ee111906725b11248c438fdc718f1a66fd","impliedFormat":99},{"version":"f921bf83656f5a1010730ecbcbaccf30bd183ac1659771e2ff2d0aabd245715e","impliedFormat":99},{"version":"53d75e095beffc79d9c9041cef7ded57094907611dd05348b151a12f0f3489ac","impliedFormat":99},{"version":"f4bc0a2b0563ce27cbf16388613754b9302952873084447ebc05f11d061a68fe","impliedFormat":99},{"version":"98c429b9540ccf150018634884a3b2c2563eba58f9f931177c081916b4a03c28","impliedFormat":99},{"version":"7dfc18e872ddae4b62571511a4fc2a66b837a48b99e15fe299654a06e29f5331","impliedFormat":99},{"version":"8a1d7d482f8c9ad25cb1d28f6b391e8c8531c64cf4ecb71c312e9efad5bd8669","impliedFormat":99},{"version":"19b0915fe0117a8217d72b1992bbc9f968daee1efd72513941915d637a1291cf","impliedFormat":99},{"version":"179f3c0a8ea077f61117f269e36e9e9f3e99d97e85ce228629f956bb4f2f77e5","impliedFormat":99},{"version":"1bc461b80924ff31832070acb254d15456a92d4bbf3291771f6e2bc52a8f0e99","impliedFormat":99},{"version":"36be548e0762f891fb52e59f74f4d152aa5ffbeb3a6156b0ab8149653a435b22","impliedFormat":99},{"version":"fc994787c24237826a5509f0c58aaade45e87a6ff66f3f060561e1e0413e1714","impliedFormat":99},{"version":"d0493b96339e600f56d9f72f7db395dc166247d919b1bfa9d35310693e432b1d","impliedFormat":99},{"version":"2fe4f87871a6bfafe29b69334f967c7ccfb97d125998cc7d66014fe461d42103","impliedFormat":99},{"version":"3d3217b6de01e6fd228cc4e855edaa9dcd2d16d28fcd82fc89e270a113f69f25","impliedFormat":99},{"version":"4bb3a8b6d9c790b3ecffa977400b039bcbad4b60f8fc2978e1297b363b60a0f2","impliedFormat":99},{"version":"a18703c03f6c2363744b9528e6b1dbf93316be95e581179b618068d987b36222","impliedFormat":99},{"version":"591dacf26c946ac31dcb280837b9ec2b71f7763946d3a1ddc891a961e6bcbb8c","impliedFormat":99},{"version":"4cd0f8079651459f634ba423400f218d07e2a51d6475a7bb7b4e093d64b21f99","impliedFormat":99},{"version":"4294e7aca559a46ae68bf7e6f1dffc1c6f23d01844ec29b87ec62b0bbf8c3c82","impliedFormat":99},{"version":"53081092241bc2f63d068f9cc8a498ec685f2e10d2a79dc4fa5162d13ae42b2e","impliedFormat":99},{"version":"08a1f541f1bea8a3243d9966dc54068111b8aa539e505138db1e359722b26363","impliedFormat":99},{"version":"c02982c987bfc673af228eb5d9a2ebe6fabb4efc1b117be90b5408b199d98779","impliedFormat":99},{"version":"c2a766a3e02498a536381c6c57d97a4f43cf08e529a69fa4ff8238c4ba321372","impliedFormat":99},{"version":"9dc37f08322137a9bca12a3476336d486b67671d68c46de4a53c9ae994a17791","impliedFormat":99},{"version":"77f457f893b847abbd438022db9ce10aa51d56852c2809627bf2addc567691e9","impliedFormat":99},{"version":"f75dd47fe3c56f5db747f5d72493e524812b6e6b0d9710b77ccf502f647561e4","impliedFormat":99},{"version":"454da6c65aec03042523cd22fdc267f4043a7f0417e02d6f55601e3d74b020f9","impliedFormat":99},{"version":"bd0d6c8c7ac42d798cc10efbb2f62100f7d28e110b341563af84bb77dff475dc","impliedFormat":99},{"version":"3315aa6e7ddebc8f5a2af69d97c82dca98e19b95e914e2e98d8ba7d70928cafa","impliedFormat":99},{"version":"41cd588d3eebce862ea23095d829397f39b468935495472e9c0d76a6b1f0ab17","impliedFormat":99},{"version":"5bc4ca892543f3fcd52eaa806d4cbffe1cb265276b347c2161e1bfe707fbd901","impliedFormat":99},{"version":"123c5ab8174c9fa7cd3276bb0b5dc0354a75520c57cc959257f8584962f13424","impliedFormat":99},{"version":"6eaa722fb6a042c2f01478f9f06b861df456781dec504df19ddbb4b1b8fe108b","impliedFormat":99},{"version":"2a6294fe1b01572d98f92d25505120db70e4db4641d682bac3766eb5ddfa5145","impliedFormat":99},{"version":"fdc24424b3385e127bbfc469c979fe9c6432737e5358718974253159dd03cf10","impliedFormat":99},{"version":"8179bb03a8d200d32401ec3ca8f3ea18089d88e9aa6fb9ca52507621c31a47c3","impliedFormat":99},{"version":"d26c434351299b01c1e6661938025b5ef841a315ff0173de1e3a9bc4eda2ceec","impliedFormat":99},{"version":"8017e1e9d7d07aa14d79feed5150dd3be65dee18895c3b0a214dffb59b7f3c47","impliedFormat":99},{"version":"4a1f663834bff7bd46a1dc11e7f16607140daf1aab941d9451057a1327880ea6","impliedFormat":99},{"version":"fe1aec7971475c798956a6860c0fafa4daa42a6008252207b6ef40825a10b2b8","impliedFormat":99},{"version":"93def2583042ff76855399f9bf21b363bd7abbf46a353e11e9509b0107c42cfc","impliedFormat":99},{"version":"51f944f0cc6bd76ef5b6f7a8aa3dc99372eae3d2b1ce4e0e92066da3ac4240a2","impliedFormat":99},{"version":"90d8e93019f8b603bfbc50c1935db9548b097c56971b454a221da525ae9d30bd","impliedFormat":99},{"version":"cc3453b87fee1416a3a0e40b1ff89d12ea75ee584eb88c67e371adc9d5e9fcf2","impliedFormat":99},{"version":"57651a6bf82f85ae48319a867c12e9833dd14d8f20397d32d6607eed8f648615","impliedFormat":99},{"version":"ce5c370bf94bcbb235ba20b97b76613f89ac47dc1c4e2ef543cb9a7a4b41183e","impliedFormat":99},{"version":"bf47a40c985bc33a4326689ca1bef4dcddea1c30cdcd44c3c224f5effbb52824","impliedFormat":99},{"version":"074737d3122eb1ad47fd353ad8520b7a96c609ed5e42fc77484b1ee73a359333","impliedFormat":99},{"version":"f8b69963309515516140c33faec29cae5ad300e8821c8a3f8022799c533d48ad","impliedFormat":99},{"version":"e36705edb204672e9a6c3c071b686801e4918963e6e834c2404117a904faa758","impliedFormat":99},{"version":"199c58efcf3cf79fab6aa8281984008d07c4c9942fe931b9f0102ed9e1de12bc","impliedFormat":99},{"version":"97c8483586c55c958c94175196cd58548c7032f723359deffce5a430db7bb559","impliedFormat":99},{"version":"3d4994bafbc8feb59b642bafcc34ed0acd65a836bf4d39f404a1fcf356dbec77","impliedFormat":99},{"version":"fb3c85e8c56b99213d7374510c56cf3a0893c8aa630f0edc461d6b2359d2ae46","impliedFormat":99},{"version":"534e29b5e51df5f786bb3065d9df1f5900cd430ed22f40d6f2cb9b3102445828","impliedFormat":99},{"version":"07115073d92648c7438b65858d02d802ce46e5011626665f9f8387b583e4743d","impliedFormat":99},{"version":"e9196b716e9bedb9bc17d5cb9c85386bceba8bb9cc25dcaf2cba99a4fc862ff7","impliedFormat":99},{"version":"e9cc290cb2f4cea33582654b9a35fba76d67468e1b6cacf1dd9c8c963081faa9","impliedFormat":99},{"version":"459930e4740b667a44c4d5d7e26994430ef23cc7389aa3ad193af61058abeeb7","impliedFormat":99},{"version":"08785a58d8fac7028060e2087247fbd046bc44f9407de752cb8dadfe273aa005","impliedFormat":99},{"version":"4a648b8ca34966e5ad131e41d8f279f22dae1d9c48c85f8ea8987a7662513879","impliedFormat":99},{"version":"b3c6b8fdc46da34c834e5539b7d7c1eace23107fcba7590a40ea3e81375240ee","impliedFormat":99},{"version":"d85a4b76c45e9999a6809306723ebad31883edd9af10eca61d314ddf997c411a","impliedFormat":99},{"version":"d176289d68971b7e1e4c884c7fbae1febba1ad1a2123adf72200c8d12eaa2321","impliedFormat":99},{"version":"01a32c6dfc1d2a9160b1ca5acfffbdbf46d93fe5081b93643c2ff11f068fbf62","impliedFormat":99},{"version":"cdab65cba759aca9387ec52448baa83f6493321c33f828751d1b9eb34ad2e09d","impliedFormat":99},{"version":"166344886da4a2dac5567917c7a8d59d651bdfeb4d29a863fcc0f0fa733aeefb","impliedFormat":99},{"version":"b990ba9978672eea66d9bec32d68cec55156b7af6f7c140a751fdb061e18a6da","impliedFormat":99},{"version":"7f98f6fb7215aa3067bf995dfe0f5b093c7b3b271c766e67cfcdec41037afef8","impliedFormat":99},{"version":"1511275c0e6d9a1b71eee609f694f3090bff567e115514ebd1b777950a32a6a7","impliedFormat":99},{"version":"95e8270777f4a75f88752027648286d8707b1c5e47817f7f15cb05c6ea68c4bb","impliedFormat":99},{"version":"86daaab911a71262653ccb4aa61ea81dd229e2ea031518dedfa74e2d87faca7f","impliedFormat":99},{"version":"057de47c30e89578c246848e80c68f3c21f3e01b088ab045a32cb7944ebb5f17","impliedFormat":99},{"version":"e45c27159f906b280b931c5f6d60933cee4af26704662790f74c190219e21922","impliedFormat":99},{"version":"26b75196806f5d2d35951372abe6e9a8abe6ba2909b56427b83e01f2dd055f5d","signature":"2d9c7e9d2637bb9367414b4fb4d5cc6d3f6b86ce58702a3803d1bb99a98bab30","impliedFormat":99},{"version":"b8cc9a40e2e90937dcf15804eb1df783e0841ab73c2d1c7c6be00189a38454bf","impliedFormat":1},{"version":"6cb35dd63cb77bb311590818c641219201324809c204f6f6f3e8b2dd020fc103","signature":"9ec9bec0c0518a08a142050eb957e079c5b1124e5c3719b8cb989a7a5160ac5a","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"78c69908f7b42d6001037eb8e2d7ec501897ac9cee8d58f31923ff15b3fd4e02","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"e5c4fceee379a4a8f5e0266172c33de9dd240e1218b6a439a30c96200190752b","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"0040f0c70a793bdc76e4eace5de03485d76f667009656c5fc8d4da4eaf0aa2da","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","impliedFormat":99},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"ed9680d6573920c3f1588fdb732d2469324e16b4795e2bec5f196a613e66030f","impliedFormat":99},{"version":"804e73c5236db118192cf774837ecf6d37013470832dc0ed9aaecfb4c93fb88b","impliedFormat":99},{"version":"91c093343733c2c2d40bee28dc793eff3071af0cb53897651f8459ad25ad01da","impliedFormat":99},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","impliedFormat":99},{"version":"e1c58879ba7cfcb2a70f4ec69831f48eef47b7a356f15ab9f4fce03942d9f21a","impliedFormat":99},{"version":"f4fc36916b3eac2ea0180532b46283808604e4b6ff11e5031494d05aa6661cc6","impliedFormat":99},{"version":"82e23a5d9f36ccdac5322227cd970a545b8c23179f2035388a1524f82f96d8d0","impliedFormat":99},{"version":"5a5703de2fe655aa091dfb5b30a5a249295af3ab189b800c92f8e2bc434fb8db","impliedFormat":99},{"version":"bfce32506c0d081212ff9d27ec466fa6135a695ba61d5a02738abd2442566231","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"493c39c5f9e9c050c10930448fda1be8de10a0d9b34dcd24ff17a1713c282162","impliedFormat":99},{"version":"4c28ca78414ed961314f382b8f6fc6518b01de3403dbb00c201e787826f997da","impliedFormat":99},{"version":"fb5a2c398c5d06e25ae7b12ad15a921f1b980a63fa2a7e4fab133b4e2a812016","impliedFormat":99},{"version":"ba3df48971907e524e144d82ed8f02d79729234b659307f8ea6c53b40821c021","impliedFormat":99},{"version":"01667d68efa44dff300acf4c59dd32da24ef2a5e60f22ab0a2453e78384313c4","impliedFormat":99},{"version":"e6ad9376e7d088ce1dc6d3183ba5f0b3fb67ee586aa824cc8519b52f2341307a","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"d62b09cb6f1ceb87ec6c26f3789bc38f8be9fb0ce3126fd0bf89b003d0cba371","impliedFormat":99},{"version":"f1814fe671a8c89958dc5c6bbba86886a5e240d4b5dc67d5fe0230a1453173aa","impliedFormat":99},{"version":"093c715953724a40a662c88333a643328eb31bc8c677a75a132fc91cac5374eb","impliedFormat":99},{"version":"491d5f012b1de793c45e75a930f5cdef1ff0e7875968e743fa6bd5dd7d31cb3b","impliedFormat":99},{"version":"53c86b81daa463deacb0046fee490b6d589438ac71311050b74dcee99afca0f6","impliedFormat":99},{"version":"70587241a4cc2e08ffc30e60c20f3eb38bd5af7e3d99640568ffe2993f933485","impliedFormat":99},{"version":"25eae186ba15de27b0d3100df3b30998ad63eaacf9e3d8ca953c3ad120a84c22","impliedFormat":99},{"version":"437bd33cd28dbf6eccc49404feb45896f2b16a5999a6f302568bdaa43b36c517","impliedFormat":99},{"version":"2210cc7bbaf78e3cbaf26c9ccfd22906fb9d4db9de2157c05bf22ba11384aec6","impliedFormat":99},{"version":"29c4e9ce50026f15c4e58637d8668ced90f82ce7605ca2fd7b521667caa4a12c","impliedFormat":99},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","impliedFormat":99},{"version":"3b56bc74e48ec8704af54db1f6ecfee746297ee344b12e990ba5f406431014c1","impliedFormat":99},{"version":"9e4991da8b398fa3ee9b889b272b4fe3c21e898d873916b89c641c0717caed10","impliedFormat":99},{"version":"71725d35a48bc9a5ae7ae3ef4823c25c8913470913d97fcb9247ebdca14d63f6","impliedFormat":99},{"version":"575d3752baaacf5d34ae1fe3840a3a7acb782f0b670b2e0385af58dabba9ae12","impliedFormat":99},{"version":"dccadbf7c7a1a95c6ce5627765dc1c603f33fb928ddc39092f589476bca7965f","impliedFormat":99},{"version":"dfb1f442faf045df05149751d29131b68726cae26c6e9cb2eeb132acee59e6e0","impliedFormat":99},{"version":"09fe9b15282a073c2cd0ef426704e0baea167c2270fc5c46bc932deee440a071","impliedFormat":99},{"version":"ee02719d72e35d2816bd9052ad2a35f148ac54aa4ffb5d2ad2ef0229a17fc3ae","impliedFormat":99},{"version":"eac029dfd99082efdc6854f4f23932fe54be7eb9bb5debd03c2f6ebd1be502f7","impliedFormat":99},{"version":"38d3c5eb27acab967299ad6aa835c944301501392c5056d9976842e4a4259623","impliedFormat":99},{"version":"924abf8e5bf12cc08323ce731f7c8215953755d53fdd509886ef321137b1fdf3","impliedFormat":99},{"version":"af12948563d3973b5f4c9a4ceda63c362758edb8c64412410ebd9c145b85611b","impliedFormat":99},{"version":"4a5d9348012a3e46c03888e71b0d318cda7e7db25869731375f90edad8dcea02","impliedFormat":99},{"version":"41ae8b7e49e35f92ace79c1f30e48b2938c97f774a4163b24765abe9fb84085d","impliedFormat":99},{"version":"0ed362e8185765e6ab2e251f9da6d0db15d6f9042d1dc69cdd6ecd0433c0dc8e","impliedFormat":99},{"version":"935a4d16a9559f0832c5f32852872c5bea91fa0f6ad63c89dd4461029b6f294c","impliedFormat":99},{"version":"75a6adb9a4ee5df5192fad33566b5eea99cc4dd0685f713e4f4a4d4c7555103b","impliedFormat":99},{"version":"e88c9554eb7f5f8e7ada1653e98612a1c77afadf953757b8c08c8fe2c993b462","impliedFormat":99},{"version":"2480b9275023f19d0b53c8858feda680a92fb1a98ea1e43c8570f1fb28930aa3","impliedFormat":99},{"version":"bccef2e4035020788934f608255058fc234b3ccc67bf9b888b7eb1ef3285e521","impliedFormat":99},{"version":"4ecb0eb653de7093f2eb589cea5b35fdea6e2bbd62bc3d9fafdc5702850f7714","impliedFormat":99},{"version":"69ed52603ad6430aaffbc9dec25e0d01df733aaa32ab4d57d37987aedc94c349","impliedFormat":99},{"version":"323420ca2dd68ae9922913d7c5ca44f36b1db0e5d58e4a9316d4121d5da88664","impliedFormat":99},{"version":"584cbaebe5928714465942169a1820461276944ac1e97c2062855b14b498b546","impliedFormat":99},{"version":"2d2e14e426fbae030b971ca08931afaa3cd36babd63482351e957ce404bd4dcd","impliedFormat":99},{"version":"96fa3b7fc7a6199abe026fa8456c6c2b5fa4baef96473fb7c924ee16c349dc36","impliedFormat":99},{"version":"2942e902cb59989e45f2a924357e73011f531d71972d0159efd557e16b1b150d","impliedFormat":99},{"version":"b6120275cc4fc44b151af141c6a5c41c9557b4b9d551454812d10713ddb63847","impliedFormat":99},{"version":"534408204925f12d5d3e43457f87f89fdfd062b7ce4f4496ea36b072423d56d5","impliedFormat":99},{"version":"953ee863def1b11f321dcb17a7a91686aa582e69dd4ec370e9e33fbad2adcfd3","impliedFormat":99},{"version":"c6fcf55644bb1ee497dbe1debb485d5478abd8e8f9450c3134d1765bff93d141","impliedFormat":99},{"version":"e452b617664fc3d2db96f64ef3addadb8c1ef275eff7946373528b1d6c86a217","impliedFormat":99},{"version":"434a60088d7096cd59e8002f69e87077c620027103d20cd608a240d13881fba7","impliedFormat":99},{"version":"40d9502a7af4ad95d761c849dd6915c9c295b3049faca2728bff940231ca81d3","impliedFormat":99},{"version":"792d1145b644098c0bb411ffb584075eadcfbbd41d72cd9c85c7835212a71079","impliedFormat":99},{"version":"30d0ecf1c23d75cba9e57457703695a25003c4328f6d048171e91b20d1012aa2","impliedFormat":99},{"version":"f216cb46ebeff3f767183626f70d18242307b2c3aab203841ae1d309277aad6b","impliedFormat":99},{"version":"fa9c695ac6e545d4f8a416fb190e4a5e8c5bc2d23388b83f5ae1b765fff5add5","impliedFormat":99},{"version":"fe69ad9a4b9c61fa429e252aaf63ba4bd330bfd169432de7afbd45a8bf2f50a1","impliedFormat":99},{"version":"f294be0ee8508d25d0ea14b5170a056cae0439a6d555a23d7779e3c5c28430ae","impliedFormat":99},{"version":"99b487d1ed8af24e01c427b9837fd7230366ad661d389dc7f142e1c1c8c33b5e","impliedFormat":99},{"version":"a384b0ea68d5a8c2ab6ad5fbd3ce1480e752e153dd23feb03d143e7ecc1ac2c7","impliedFormat":99},{"version":"e79760097ef8fd7afd8db7b11a374fd44921deb417cebf497962127b44ec9a37","impliedFormat":99},{"version":"afad82addd1d9ee6e361606205bbda03e97cb3850f948e53fdbb82f160dc43c7","impliedFormat":99},{"version":"5ee44a60fe09b4c21f71506f6697107f19a01c9842980c7145a4f2938d4dafc4","impliedFormat":99},{"version":"3729454e7f755d54f08bad759e29cc87453323f90ffcbb3f425c4ede7224cfd3","impliedFormat":99},{"version":"04fd41edfc690bb3735e61ee7d53f513cc30d2fc9080d4ca108fff642e91e0ce","impliedFormat":99},{"version":"c1cb04d8bc056dd78a2a463062cd44a3ae424a6351e5649736640e72697e42fc","impliedFormat":99},{"version":"c6c06d1932ee8445fcc00726917a51cf18fcb53d5a97697551542caa62906318","impliedFormat":99},{"version":"54dc4a604b09975a5c90b9e75864897c028ecc284c27fc2dbea68685a6526f74","impliedFormat":99},{"version":"3d971255e2e8aca864a90e1953f21c119b3b717aa484747a19f7834d1b2102f0","impliedFormat":99},{"version":"7b6261a4407295b1057feba24a1333923dee852f67fe3c329c990ddcfa20adce","impliedFormat":99},{"version":"c0fb891700244aada784a70d4cb8ebc93f3f608c9b87efe3858dcd575f101083","signature":"5f662547c23eef03886343f0be1ad9cc333e7323fc31d528383fb50a4f2c0d64","impliedFormat":99},{"version":"d12f4e875036b137e215f41e6da22bfee624bcf404a9f0524e54b074b0de5658","signature":"ec67e56af47cac080475399e8f46c7706ccf2a707609ca0b2781750d27335e28","impliedFormat":99},{"version":"0e2f2eb3f6230f219dd724434f9199b1ed19f984e6a716eb4d1497a580969dfc","impliedFormat":1},{"version":"bd7a3221e25d06a9e26403a9c7e04a64bb69bf067d7e911b4d4f5b422858f136","signature":"5d763b9b974819012dd58681a4cff00c3dd345c7d671d1e0631a2fca6119d56c","impliedFormat":99},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"69fad132b41289d40e3d373ad0ef1065cbae26c78f11d2f1aa574a3eb9b7cb7e","impliedFormat":1},{"version":"b541d22eb72e9c9b3330f9c9c931b57fece701e8fb3685ed031b8b777913ee72","impliedFormat":1},{"version":"d37453f9aea885973e8caa1a2d995d55f89165eb6b6134438ebeb83e12fada66","impliedFormat":1},{"version":"ae8ad1bf9e20a5b532331be8ae3c5ed72d09d3019a9a40366d3fee5813701948","impliedFormat":1},{"version":"c5f3b1f5a2df5d78c73a3563e789b77fb71035c81e2d739b28b708fcfeac98be","impliedFormat":1},{"version":"d7c7fd205f57abd1705b98d7f4b47b1dd8f256a3c9a98efb872d75ef27e9e59e","impliedFormat":1},{"version":"407c3e1ea5aef8aadab1780651e4f2281a6382aa81db218f589af5ac3abc6cab","impliedFormat":1},{"version":"aa7e6b64b597c32a65662e0b455e641748ab4ecc71aa31e4c8ad0678ca65bc5a","impliedFormat":1},{"version":"8ef8425c7726a1bd5ab733fb1c8f682b5c116f7b1cf0a1a20bfaf6e6e368b459","impliedFormat":1},{"version":"34087cf22f06a73a302fb54273def7aef3531e8288d6c77e9b26efe2c59de5a4","impliedFormat":1},{"version":"007cb7f7a727e6bb72027672dd3a2ca69ca47f8536f7d0aa29418ee17d44ef8d","impliedFormat":1},{"version":"26e97fd85a12a4ae933f57d465543d6fa5d60818c95e3f2d808a347f663339e1","impliedFormat":1},{"version":"3c26687cf2f1e3a59b0861928bedd2c16d2c873bb941d3e341e8e21229c1858b","impliedFormat":1},{"version":"cc42e1146c9e467ccc15c73648d9f4cf8b119b8ba206faca192f9829d95fe18b","impliedFormat":1},{"version":"728732b889627cd7996eea6d2d2098ec938e31f8c03a07fcca29736de7355b20","impliedFormat":1},{"version":"8f9e0e43e4260748dcf7f7697ace8966033e38bfde4beb30a0acfc9a4b829732","impliedFormat":1},{"version":"9780d1c25e483d86fc36a8d8e4dbb15e564e515f8d9e0c2470ce51cc3e43ce5a","impliedFormat":1},{"version":"2dcc730cf44919f885b170182b1b0d61697d9892e6d270e7c3163be7e07ada24","impliedFormat":1},{"version":"dd72f71cc955c30f1daf9fcdcf2877cf6888992efeb190ae4ec3d14180490284","impliedFormat":1},{"version":"5ca8a3d28adc5428faa0c044960ca43bc1d901f6938b6478306799c4a104d58c","impliedFormat":1},{"version":"7483434a919cb7e662d526639fc0aa4ea4da39138fcc798c61fec911a6be71ad","impliedFormat":1},{"version":"7022b41a9c89aab3deecf0f01ce1fc176edd9e23ba60de3a90e99de292c38a8b","impliedFormat":1},{"version":"7a3a0c7e8d663890786ef6df3d13ef09b1c7bf060b93d2b073978e1f599c35c1","impliedFormat":1},{"version":"35eab46c1d19a6ee9e0da4d50f24ce84917fa607d6f408b5eb67d93eb0887ce2","impliedFormat":1},{"version":"05b8c1ae1b96ac9ae7be583b037cfd1e1e7d15857260ac0928797f9e32d74bff","impliedFormat":1},{"version":"a987c9add6c4808f1b5efa516dd914ceacdb3b3fc93eafe6b090f2265cc63a89","impliedFormat":1},{"version":"e90123f25144015131cdba644dc8bdf89a725d5c6f6232e91d5eaed3b360509b","impliedFormat":1},{"version":"6d3c041ead331fd0038e14210ea401ccb04aec4200cfe6575d7ff5b737684e7b","impliedFormat":1},{"version":"5bdf43884394a768e9766fe98474fbaf53903436a134d00c5a4bf1ab76d171b4","impliedFormat":1},{"version":"b305d05692b25d55358a6b586d50f5ddde2b7a1e5b9f3eabd534a5fdfed8359e","impliedFormat":1},{"version":"b17e22062ecc4b57e9e72fce67ff19d9958008daaf3477e2811fb1f5dcf84eed","impliedFormat":1},{"version":"5d1a077ed63f6b376087c79783cd88c7d54542d67d7f9f0074c901d635ea836d","impliedFormat":1},{"version":"10903db1acc738be7f4a0dea18a8416f580b1784c9410467d37a43ef984798d5","impliedFormat":1},{"version":"67040bb597860ed1f322ca7c506c3b5d7792040723e0d62d4ae76886f5e04b7f","impliedFormat":1},{"version":"ce9bc016f39f6d365a6eba03960d0e6c35fa39f7b6ed1aa03d8e7eb9882b348b","impliedFormat":1},{"version":"77d402293b4cdb66e9b5a81f90dce1b7aa0c1bffe56fe7490435203243dcdb72","impliedFormat":1},{"version":"ed711e3f01401853a3be17232391aa987f8e526489e3b9e417859bd23d2ab5d0","impliedFormat":1},{"version":"09fb946224061c812fd89b8c14658c7265438debc4282828f954c3918e4c4084","impliedFormat":1},{"version":"97d19a05b00e736d62d97e4dd1c78effc6191f0956381f7c4926628453c55bb2","impliedFormat":1},{"version":"b8001c04ac80f2cb81040b15e6bd0fcbe5f3f3889c831671d131a603b033eb44","impliedFormat":1},{"version":"d454472f356d980ffbe43e38a92a97eddc2b3cf81fcb1bdce591be88ffb91b2c","impliedFormat":1},{"version":"231bee9f1c652dd8d120ed3a38f3d93b27be936e9d4fdae35ab7dc30ff928bc5","impliedFormat":1},{"version":"6c4c16b90e47d1cf0cb7ca25bb9d99482738904d4193e82319594d0bc02cac0c","impliedFormat":1},{"version":"dcecfacc5fd3ba3aa2bbd6e21280b09b0dacfbc5ca4fa3e532a08e9fce68551e","impliedFormat":1},{"version":"b948106666c2588e954d9f883defaf23d219ad575a837d6fe7a991b112ee5681","impliedFormat":1},{"version":"fbd8e40c4883da5d9edc197c7e564e79d2cfdd6f095ecdf0a14a8dc598e55203","impliedFormat":1},{"version":"5553713c79dbfe3c5c990ddb6e0c70e460622a53dd88984430aae93540e6eafc","impliedFormat":1},{"version":"c66576e5304a2ae68d3784da75ad81ec7bda84d2138a0a9f6ff49ea628441d79","impliedFormat":1},{"version":"0255a9f7800f0da1c527ab950c04c735e9873ba13d6197bae27716a8250b8723","impliedFormat":1},{"version":"6f3c5894f62a910ecee144e21d10e0bdaa30768bce83c856642f0fea1d02477b","impliedFormat":1},{"version":"3d7ce6dcc928f2fc97c5770ebfb993336bf5ade9f1c982b3c70e4c903e1f3905","impliedFormat":1},{"version":"65ce2a3871e29ab964044e19b8764d2811effe65f85594b261e97eddb5f8fdd9","impliedFormat":1},{"version":"63163dba9002e2660d6511353426994c5f6057c58e801e10506d3dc2705e7310","impliedFormat":1},{"version":"9869c26ae0f70812668398583a98703dbbc010477df26ae60b336abe433e5f68","impliedFormat":1},{"version":"cdbec35eea81fd19d0056504a2a220201cd57f9f3fb42cb4c0e287586c6de858","impliedFormat":1},{"version":"f460606729133e0c91beca9a0f2d4299f6cb1f135a0b4188168500ef30793636","impliedFormat":1},{"version":"fd8c857176f108ad30b23552440908de091bcf437fa5130880d86044b8ba11e6","impliedFormat":1},{"version":"7f559a38c179f53dbe89f47f8c04360ac58b501a60472202d60f70d0a2479516","impliedFormat":1},{"version":"554f40a97f86fb32da0b49bf408e131b5c9a8e5bfef969757dcfb39d92a328a2","impliedFormat":1},{"version":"989bb82458af5377535f5b1a03e7d4dfc811bc3a91ef172a29ad4e0520bd826a","impliedFormat":1},{"version":"7507a53958042412220620101ad54d0b271474f0b629bc8b4e3f691f8b842222","signature":"2f3ee083529edd701ea0d830dac5099770afac93b436814d16cb4425983c0e09","impliedFormat":99},{"version":"409cf8770fbb9f099124e9ca744282ebfd85df2fd3650ae05c4ee3d03af66714","affectsGlobalScope":true,"impliedFormat":1},{"version":"78861dc70207b13b7719702e5b9bd7fa13f1ea0c7e9f5ba9be5ae647adc07f3b","impliedFormat":99},{"version":"28e3927aa156157a53385cb317959a4334467ee9f8c309f0266dc93d11602753","signature":"d43d5de2f48cb2fa45ebc49e33e87a5526ba405e896d7ca125716689ae018b3a","impliedFormat":99},{"version":"750fcc34e6bca3670e27bd6a39be8293a71fcc050ff8efcde8c9e07f08f94200","signature":"25c151edc7e55cb439633f4b452c9d177cae8ff2495a1d4d9b7279ebc418d714","impliedFormat":99},{"version":"091b0f9115dea8db1e5c137406829f24946c781e34b3524266f105c6b82298d7","signature":"f4e00fa7dcab5ac4fd4803a3b5b78ca36f65b991397f78cfe41f23185f5211c3","impliedFormat":99},{"version":"fbf5e3a058932600148d65c6612a236118e34c5f8b9c83fd43d5b7af95c6af22","signature":"07393678b7564af263c7a05c22d27f680194eb2f8be1835a727412cb2c9bcf77","impliedFormat":99},{"version":"1ca8b99461a8c9ff306e5a234bc12fa1ac6667a5d5b561e320c3efd77fbb24bf","signature":"d6ec40eadabd437172a2bb3f9525c62d3ef1a047a07a8df206f9146f96c2fa69","impliedFormat":99},{"version":"e2858deea0a7b30e26f33e1909852b8e28efd9f377117b5b6470df18ed7c5a71","signature":"c8988e12e69a19256e446632d1f3c552bb967326259dc956724c3911832ed8d8","impliedFormat":99},{"version":"e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","impliedFormat":1},{"version":"91eeaec45d906c1bc628d22d389e89e74150321b3f35bc2b37a19b4901d0d6e0","impliedFormat":99},{"version":"1773a1c6514d3fbbda19a384ab874381ac65adc260e7b2508ca7e8c922b59ef9","impliedFormat":99},{"version":"a615d0c04ae69b96d55cd90efa1a77494f071df627fe5167041cb919ef19b6cf","impliedFormat":99},{"version":"a35121f6047a1f154928237eb65143edb36e68db21ed7eb20e56864f233f67e0","impliedFormat":99},{"version":"3b400cbb502b4cadebd37c63011bd2a170e5ea53c9ba1e23d3ae471c885653d3","impliedFormat":99},{"version":"dd8a53ec9553017589246322f0ea29decfa9bfabd78515ec603f30204387c94c","impliedFormat":99},{"version":"e19d0668b66908541bf0c241c4e7c17038f730983c0618ee645aab4b68aee5a7","impliedFormat":99},{"version":"7bd6aa35e0b7ab7330b3f576c25273164d2bc215d4e41ea94fca0bebc6b75369","impliedFormat":99},{"version":"6d3d3b72ee83b834ad433b63691ad87a18915ae2a6fdd5a85b0b467831c35fa4","impliedFormat":99},{"version":"ecb6d6f4165c611793f289f582f1fbfa76b4f5f68d1353509c536f5c69ae3fac","impliedFormat":99},{"version":"c10d7a1319c6308e4a9b103dc8881bc07b5e2e1f77a099760f654f89b95eb313","impliedFormat":99},{"version":"012c55d5b5e0576d2abfcc26337a27c2eec0961bc9a8430984aea74cf006dfbf","impliedFormat":99},{"version":"e44ddd97427f4228d71ee03310cebc1c9ab470d0fc1f563ebffcc4e203b16336","impliedFormat":99},{"version":"a1a000dd60f69a7a77d9002657b8be109149ff209a9c0409e410b1525b05cb68","impliedFormat":99},{"version":"dce8902a587f52348c4d6e600c714db65257310052b2de81cbf4b901370921dd","impliedFormat":99},{"version":"e51adfcb830f7d62bdb5165cc9f22fae74f9efe40f78da99ac6d22abd543b86d","impliedFormat":99},{"version":"d757f5fec81075c2bb10d493208c089dad3a48dda1e9554909648f53d3eb81aa","impliedFormat":99},{"version":"bb728f50b8f7421dfca8b993f925fc1fa3c2a9c0eae93afeffdbcb02ae7b33b9","impliedFormat":99},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"110956b19835a8846be8b753107aa7628fba37a2a89dfa11eddfd57c60cb7a05","signature":"5c07c80296cbe1c169bef010ca12368e273a04cdc0e8af311e63bdfb9223c3e3","impliedFormat":99},{"version":"5adf68d61070988dfaf4969adcb11c70c4a1e4f9603e9dea5607ca580536314e","signature":"4584945f259a102ecd8a9e6f91e753fa89a39e59257fd0cd40519862f7e422f3","impliedFormat":99},{"version":"e301e812392f8d70297f8ef4fb2796bebdabd2bd2555dc6382e3e1704bc07062","signature":"9ea2b1188610ac5bfd0bab8c5ce454ec09d402e0a7c7a8c52fac937783fea36f","impliedFormat":99},{"version":"d65ebb2a088e41543f6f1e31862fa452cec5644f8380c1d1c43a3cb145620e74","signature":"7b34df52da04b539785d81327c85bf7bc659b60aacf63d6fff18995d8f036477","impliedFormat":99},{"version":"552070ededf911a610a485163a2c104bc7d85fd2e114710d7bf8b3d824abbd27","signature":"50d3497453ad8e27b59cfde5c7f15e58a30e8b336ef48cdf3aba0f50a63135af","impliedFormat":99},{"version":"4b19ba6f8326d4730365be35ea7f6103fe587c36603bfc667ea3dc467208ceb8","signature":"07737164d98ade73763d913e8c68468ecc8dd61b378113152720181cef913d33","impliedFormat":99},{"version":"24675edeeffe1bdffa660e3fe8ce3caf89a2e1218036ed86cc57258e503deffa","signature":"35901024bb18edb887c338b9465e90c3d2a5d11df3cb19419ef24653ae5e828c","impliedFormat":99},{"version":"8b61608c154f87e13c88b21b5208a3acb906ddcee5e3001f3b27ef13703b61e8","impliedFormat":1},{"version":"11396dc31389eee63c305d3838c396a0b524ce07f882432f5f51eaf8b044470e","signature":"f621fb8b6a7ebf504928e94c7a5c46409f4756ef12652be62ee08807c5427634","impliedFormat":99},{"version":"ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","impliedFormat":1},{"version":"1f08154732cbb895c1193433fa77e792982b3901b36d9306e89effc1244534b7","signature":"9083476ba9a44282637626c8046cc0ba254349eb9517f9f419b129b2d8650e27","impliedFormat":99},{"version":"9a5ab184c8267d64d301e59dc7f0f3ab2618c01a34ad1921cc9cfa460fa2850d","signature":"886445fed725070f39be46ca8c405d85fe6b2e46aadf6757501d6ebdec3cd0b2","impliedFormat":99},{"version":"c9e920fa42a89fe77c85a0652d270c26f7acf4ff42ad3164f4ab9f3b230fc12f","signature":"f4685b68e4f25054494fcf8d345f59a518eedea10b61c3acc7e5eb7bb57a975f","impliedFormat":99},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"5ae7eedc370f165c800ce7f31676c273a51716ea0848d69823e308baf6a0b9b4","signature":"08687abc5d1c85933f601f1c760ca22333b1823e65b0f1fcc6e73b4ac230c5e6","impliedFormat":99},{"version":"80bac81ca5ef8c664bdcc72a527b64ec42edd3c683ea27035e3ef44ceb435b0b","impliedFormat":1},{"version":"1fd918d079f726c54a077d886967ca2ec8108f453189d9ef66bf1d4e72236743","impliedFormat":99},{"version":"5f31f61b497fd98b889a67865516a339b52a846c3e1e15406b1137864a6c444f","impliedFormat":99},{"version":"3d46e269720a54a3348bb4495a4f4f520f1e1b23f5c9a017f98fc87810de6c16","impliedFormat":99},{"version":"d9518fe8e1e265b1088352b9117628910a9f251974a2abc2aa904f7f4f71fa53","impliedFormat":99},{"version":"7ea29ad18f6242a9f51f3003df2323030d3830f7a2dbda788f52fd1da71bfe36","impliedFormat":99},{"version":"129a1cd246cb69ece363ac69ae257d426bf471cce3cc5a978397d5143cde8c2d","impliedFormat":99},{"version":"04848d258a86d4bfaef951ad304251f6c917408f89fad419e28ce6c84f0a1674","impliedFormat":99},{"version":"e44a9c7bbbfb42ee61b76c1a9041113d758ca8d8b41cefb0c4524689766e5a9f","impliedFormat":99},{"version":"1e9b3e4e3d802df7b85f23318ab4dde8e9a83fbae6e197441d815147067d2fa4","impliedFormat":99},{"version":"0affed2881f6bc1652807c4cb53c87b51255995fe30a68dbcb7127114ff426b3","impliedFormat":99},{"version":"46b2bff13c747143a9a39614cfebc8972c8e1ef3a140139314f454a04580327d","impliedFormat":99},{"version":"23b03a7cf8d6a63de30d7f104f6367127dde524181017e1d8879c00d999dca05","impliedFormat":99},{"version":"5c489290b1db424ecb914ebb7dcc88280ddb7f4dbd1a1a7a16c1559e7d98f195","impliedFormat":99},{"version":"69018d625163e38107ac82f8a9ef723b601b600d3ca0140a35a9c6eb94b552a3","impliedFormat":99},{"version":"867c654176fa4def1058ee8f50c055e58d6a15dedfb0567439986e836070cf00","impliedFormat":99},{"version":"9402092f0d7dc8552149b21e3cc5f4010040c8b73b6cee2ca5bc930ddc2e0f10","impliedFormat":99},{"version":"74dd04af9bbe8c6fdfed2b51563c3cba2c13137b0268e02a48e9c6cf81bd804c","signature":"3090d5cbb58680143f6e596243129c849879169129101ec70485dc5618e601e3","impliedFormat":99},{"version":"24e644e0c0efd97329b245d8def25c49faa97e64204ff3841e886f77cc707613","signature":"d30ba17e15dcd87fe1d9f9f970977eedf14928b6a06a6baa94404fc06fb667fa","impliedFormat":99},{"version":"5bfc8b4482b0ebaa2a6dcfb82cb260b28f1ea9ee3e631370f57e6bdcd9bf4e70","impliedFormat":99},{"version":"1bc2c129f1a06adc1790adb22c13c8e71c2ead456c0a98e72f1e2d7f27047a0c","impliedFormat":1},{"version":"52842ede098f0b8a89c12c7513eedf5e6eb562574192956d342b70821799cbaa","impliedFormat":1},{"version":"0cbdcca7c3520ca6ec3f9a75acbf3830e8cfaac71059dfbdd770db8f1764f95d","impliedFormat":1},{"version":"f64094fd4216e94abe989e65f7d3250b66137279451439777a8fddb04fac771e","impliedFormat":1},{"version":"32935a7707e31e7d5741b4811d9afa0cb95153e508c05b96dd3675bcd4d57321","signature":"10f68d60267cdb8e073800cc03c44841777fc443f892dfb0ed611371795470a4","impliedFormat":99},{"version":"2ec851d31eda764a1c9446542f730c8398329baec30b94ca6775db75d1088253","impliedFormat":99},{"version":"c5d4b5694ca97080a2c6ae206b879c8f579f81971396494370a4b4edaee264aa","signature":"7c7f24d7e17a51d097adea142d32df29bdbb8bbda57beb16ea9906d54f5df6b3","impliedFormat":99},{"version":"86fbffcecd36078df1aba97634b5e05b670c2d3fdf88cda28af363235341c498","impliedFormat":1},{"version":"0bcc3c16704b4de46a314377f51fbb9597c0c7582b627a1cd057694e21e1fb36","signature":"865227e625f5621866554645f21ec158c05e59d07e08438d045e158ec9178cf1","impliedFormat":99},{"version":"b0ca84f52f51453c41f50fb75468487aa831b21b03cb3fd58acc6ff1441664c9","signature":"e7414e9ccbef1e9c499b4d97b918e8e09febec47f2ee88b4def1624dab97bcf1","impliedFormat":99},{"version":"39089579500c24efe2d519a14d5ac61cd060fb4fac145e153bd4698069285fc9","impliedFormat":1},{"version":"e82a51d5498c34f37bf96981223d5aa0b5051ced754d34b9747b1aa8a4f2174f","impliedFormat":1},{"version":"7dca1745afe35b6aa588e0de49d9e1059fc2ecbc4279e8ae0f5b64d83c05251e","impliedFormat":1},{"version":"83e01ec16b5a8424ba35047471fe772e4fdeba7dfa7884d9ced04dd84c01a26c","impliedFormat":1},{"version":"2873f7d3fc801d897c9177e8bcc417d348e96c76490f55cd7237e87859af8f12","impliedFormat":1},{"version":"2f2b201944cde220c32c5241cc9cabf11916031f521a281045ca224de6dc6a3f","impliedFormat":1},{"version":"ede088b09b00760b9ce0997bc1669e25bd155241f369faacf09f3d810dc0ede3","impliedFormat":1},{"version":"f1eeaedee293c60b9db75b7cbe374963f7875602645193d94673a369bd06ba8c","impliedFormat":1},{"version":"4c8e3ac2ef84ebeee736b4a712f8d418168872ff428d16b17d7872f3e8f7768b","signature":"417e9810a7b01ddb8f7a30a3827b61aff6d1047ea72a48cd39bec0b84b8f658d","impliedFormat":99},{"version":"fdd43ee468482642745df98fefc6cb6a2e43a31820c73ca5374859f1f9697cf4","impliedFormat":1},{"version":"a8067ba70f56a1bc61cfc53a0e6bf0395d84c6a4b592a5462ad60acf7b9f60d1","impliedFormat":1},{"version":"716922a8d29406d301d37c2bef6565bd17e3abc071a44ba5a0d52397fe6ef4bd","impliedFormat":1},{"version":"c7dcc33644fa9b33ac1a6ddf20463decf4c720289af8539e584718cb5f4597fd","impliedFormat":1},{"version":"e1531f64774c07cb25a541bca4fa42cc563ad7e21944c41845195bcf20f5032a","impliedFormat":1},{"version":"ba2e93d22cfdc1569b7953d9d467151e2d2eccb490bee74317f1f4f2333b13c7","impliedFormat":1},{"version":"44d63aa3fef04a23e467d73eb8c1e4974e9027a56a67581e4e15b4024af0667d","impliedFormat":1},{"version":"32b789a883704fb6be047f8a8f600685933eeda17f1ca9898ec42af0951bc5b1","impliedFormat":1},{"version":"b0f25d7f2e82edf76b2c8a4423defa26747483d6e1e772ac8476d5b78f69fe4d","impliedFormat":1},{"version":"51e4a1da037eac1dbb909891d7db4860ba80866159dc6813f737fe1eb33ca9bf","impliedFormat":1},{"version":"4c39806d4d0cf15b0fe29a74d0c3645508ccd51bc4a33fee7782a843f3f0e4b3","impliedFormat":1},{"version":"d82c4d30bf153c88224df1ee76b595ba52b0dd6bc3f09c8d31a52ef751ef0052","impliedFormat":1},{"version":"1705b40e0698ec8a6e844ba21fecec6b2fa5ecd6d126dbf7bfa8bf69e77b741c","impliedFormat":1},{"version":"b72123b1d2bc40c98869b15dda3af4afa153dfeec5c1984ec3fc37b19b2138bf","impliedFormat":1},{"version":"42a1a75a5b70388825e244af4ab7c268f052a021310385fe191e8ee12ed6d696","impliedFormat":1},{"version":"fe9706a96369dbcf8064a5a670e70112db672b17b5ac0e609a7379871db4b564","impliedFormat":1},{"version":"09d9166970b3c0a143ce39bbab9260823baceb8a24743ed55c9414aa4367a141","impliedFormat":1},{"version":"97f2eb8221e407a79c3c25a748592e1ed63b601236fb4eec8480a186c5471ae2","impliedFormat":1},{"version":"120d183567e622fcaf1654355cf3ef6b2162e45b39389916e82bdd82444da76c","impliedFormat":1},{"version":"22759dfadc7f47badde31230a0a34ba6810f88b29ff314fb5e0ffd5fe91ba379","impliedFormat":1},{"version":"1789bd0284be2a33aeb0e2a1dfd818d11cef707e06359928ff545c0f92fc08fc","impliedFormat":1},{"version":"c81a187472459f2e3dd935a2eebd77cca096f5159c6b877c2eadfcebe946d795","impliedFormat":1},{"version":"97d48f5c823e3c84ae30f8de0525afe256b5af9cd2df5fde8a1d96f93b93776e","impliedFormat":1},{"version":"080993c948d0c440310586c45f5b37544ee9323306b7df0a41384ed55061313b","impliedFormat":1},{"version":"4764e86784bb88b8f3573279db3856c50a03e2b8bc184c06a40f897bff9d7e83","impliedFormat":1},{"version":"027a4481143e6e6e28440b7f79e34ec1fd7bb0ddfced3d701694a1940c19672e","impliedFormat":1},{"version":"49baa46f3bbffe0cca4177d5feddd98ba3b25d929d02cc41705d758b1e7f2472","impliedFormat":1},{"version":"dc11ac5030092409dd3183dbb24174beaf35739b9b5c90f268b3cf82b9453708","impliedFormat":99},{"version":"47a2d2c4865b43051a4eca4fbb40bb9fdd5ef81656de8f70267ac31f09f95499","signature":"a54d28586e19db867a0aa43855fbc76c0ff201394f37666f257bf913cd7158b4","impliedFormat":99},{"version":"d5886b9467c8dda8ed0821612dcc6fca9f2d832512a8b937b3484d93f3636d1a","impliedFormat":1},{"version":"53847fd61407f64b298303c3dacc61c5ebe3879c03be8f4a2facd1380d59d563","signature":"2aa68dc69e3d2d43e579c40734a6f35bfdbb6e180d96d31c6413f2e1deda937e","impliedFormat":99},{"version":"f406b9f28e270b8efe5b3a8c207e762b543a6dec477c2ade3c7ec6f291567800","impliedFormat":1},{"version":"dedeab999d03fdfde33bf1c111c323de619d091691c00f5fd6b685ceb91d8fca","impliedFormat":1},{"version":"9e73494038a8349e540c4117bb4a323a5c05890e131242a49d08d4a158d1204b","signature":"874e6a459d3fd34b91dca3be79fb578af1013f96bab36479e497d83effd20614","impliedFormat":99},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","impliedFormat":1},{"version":"899a53848def7a9e4d3d33621d3002b983bd37cc93670401bc3593435c86d3e5","impliedFormat":1},{"version":"5da94e87e7ddce31c028d6b1211c5c4e9b5b82e5a4b5caeb6cf7c5d071d6e0f3","impliedFormat":1},{"version":"b483a639ff4c3ae66f35ce2e8f5942fbda4ca5687c1c8ef599dca54a3b870527","impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","impliedFormat":1},{"version":"2288693289db1068cfc1092082d1f572afb456e2c82e0d2d91d82842f219bab9","impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","impliedFormat":1},{"version":"29efb0f7665d433c62af9c053152ab900295a7077661a8b82ae8872289c9d777","impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","impliedFormat":1},{"version":"266069dad0484df940341535379064ecd142ea2f0abfd7e0f3e01b0f87308d91","impliedFormat":1},{"version":"ec6ca3b44dc6b16ab866d57c2bf7e161d471f4a16dcf33003aa13b3eef6f4e0b","impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","impliedFormat":1},{"version":"b6f2a56a96124f9d919e98532b4d0299d1c0798881bc30da196845d4f0d9a374","impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","impliedFormat":1},{"version":"fbd6358539e79a06ac77cbbadd3596091371dab45a39476637639654bf703fc4","impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","impliedFormat":99},{"version":"206f7ec4058fafc6fffb297bb32aeb73ef5c4ec08ecdd0dc558427bde3a5dd0e","impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","impliedFormat":99},{"version":"378ad00f3ab6e8aeb7fa5003fd5320be7aa0e5bc9f9d63cc2f9ab03db0c0f426","signature":"577df44c1563ba54657caa42c30f5023ae0d41fe59c941bbc0678617bc255566","impliedFormat":99},{"version":"a315a141f52f92232e0e7756f77cfed8e3ecb031317166711fb5d906e404a2ac","impliedFormat":1},{"version":"73a3d78b99633e9bdd1c325289268e714e1bef4ebf9d596eb20365cdb78f37a4","signature":"3cb7cd84226b91a47c08816ea2591454bec37050f195ec6ed8011ce368a6c3d0","impliedFormat":99},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":99},{"version":"5bd0f306b4a9dc65bccf38d9295bc52720d2fa455e06f604529d981b5eb8d9dc","impliedFormat":99},{"version":"f30992084e86f4b4c223c558b187cb0a9e83071592bd830d8ff2a471ee2bf2d4","impliedFormat":99},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":99},{"version":"a8c78b87e93320a306dd9ae810dad6493b912553ca36432fe5002f06d3fa49a5","signature":"32c27bfe2ed8347f0c8bacefa87ffad4a474fefd3321f838018884a17cba778a","impliedFormat":99},{"version":"98af2800b73d30adba3f338506b87e1329bcab2eb61b6cc19587bab8e2c3d9ae","impliedFormat":99},{"version":"b463566a97071e04a5e82e28574512769cbbc7248a57607c5e4da8ef8936496d","signature":"49cca497cc57b18396b80283e01bb788fd1f26ebfd5830a3299c5d06b7409c16","impliedFormat":99},{"version":"f5d85030552240ab7188ec76510c200677e62e4f32adfdeb008dccaafcf46eac","signature":"e1072b7b9fa44cc5514638d672bde69930dc99b2b990e8b63d7ef36500bf6201","impliedFormat":99},{"version":"88a3a6f8c2a1640d8d5fd30d8d86462f8babd86a1e52fab0e8b7f7c141fb348e","impliedFormat":1},{"version":"345f76c854da724803c96f727a3f9c75e26cf95c6e7b8c1064dbc4e7727b74e6","impliedFormat":1},{"version":"ab7b7a15a5d73eb0cfc2b973e580f357f07492bff6608669d7e899e2d49ac9a3","impliedFormat":1},{"version":"2315674631123ab12c9869c9f9621a4d90d3d5de60ca5d469eb66e908a836c2c","impliedFormat":99},{"version":"acf8ad22752301247864f14024924665dfdbe0b8414696676c4d8a39321d63bc","impliedFormat":99},{"version":"4c7f6be76cccefccf0d639f0d5edd365c881ecf386dc0d852d111105bc432067","impliedFormat":99},{"version":"0fd3fbc2c8d11873d75aa933569299294a212e24f8e07f2606fe4554e9708da2","signature":"d41952a239d853f18d8174e482e2395ee34c0a3ca9b2077dfa3958590fda5a2a","impliedFormat":99},{"version":"b7d4cdb253532e6a4d9fad633190f30a866495f27a142d878ee4dc8d7e732036","signature":"7eb562a6ffabb001e1dc50017ce6ef8dc0dd4f563209f509bbed1db92fe79d8d","impliedFormat":99},{"version":"e49d6c72368f7a54a732f34e1dad3aeae9e46d283ddada3c06ac8f6412aed284","impliedFormat":1},{"version":"4ca0057c2803cd59ff8cc3f23dc879cdcf1e694898b0b396028a112bcf6150ed","impliedFormat":99},{"version":"1f3bd4b5fa06f1c7cc7da3f0bb09d111bf2bb50242d41f56a0cdfc5f042d3c8f","impliedFormat":99},{"version":"08adb105ef060445029c540b67ff1c5fc9654945f119c20889543663535b422a","impliedFormat":99},{"version":"06f24c39cb33b45c5854d88964c7ac97acfc33970dbc8393b52d6aba6d996f24","impliedFormat":99},{"version":"96412abfa516228b7c365e16153b1bf01f8fe0115166c907af7f8de82ab99b24","impliedFormat":99},{"version":"732dc3edc2ab006e9e02dd7fcb3935a83ae11ed7058b7bbd3720a585cae59889","signature":"890c9ac8316c41aee02d20dede834c3d57411492f09b7b63769c098b4fd6c0e8","impliedFormat":99},{"version":"c27e732d38889b693247e1de37d0b59aa19206666c60197af53e5dffa04306d5","signature":"9bc22b1dca81937e5b4e2d63c37d97911d1d090467086a0c58afa7ae70212349","impliedFormat":99},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","impliedFormat":99},{"version":"4f745bbc5a0f8b98da40e48cfe714370c315084b603b3d62ffe4286162c8fab5","signature":"b157b383b77800ed14a1993920c5ceb344285696c4afe6bebdc36b72ec377e5c","impliedFormat":99},{"version":"28c0439c4559ab72880e3af969d5b2707beb257fa0afe40689c543774fa3c1c1","signature":"bfea5f1c3c9426ddee2638c6a3d2728b6c73650a1f5fe877df2497ce39f6696d","impliedFormat":99},{"version":"d3c18a71ea870377f5943d765774b73d0ad5c6f2f6aa64630d864370bf4cc3cc","signature":"6efcdc7f693faf4d4b3a94b682b505cc22a13ae7473d860d45cf4722decea6e9","impliedFormat":99},{"version":"39c842feead8063841390a224f214938eac642cb84f374482a12345976e101b4","signature":"f927d6f054335d9d9286aba7562f2eea0946c1c37738df2a8fe7b386a18e95f0","impliedFormat":99},{"version":"5aa5598f4de93ad253cbd314a7c470da4fb796adeb832f3cb9ac752e867b173b","signature":"333ba359bcc016f83b204df34a9499f57a6127ebf27287922dc2b278b57531a6","impliedFormat":99},{"version":"86ea9efd32db9e452ccdb167583852ce72ba4957d15266a24f513a26e5dccf03","impliedFormat":99},{"version":"9770a3726d96e87f3f2d2f621055ec31df826ac2bcf23668dd4c8ebbfdd72511","impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","impliedFormat":99},{"version":"5f808ff2bf2dcbd57cc17074ee1da5d958704be942b0a7ac126aae49aa453c14","impliedFormat":1},{"version":"0cb9b8a024cfd688404753f22172b72129f366e3fc23d1a73d072698cfbb3572","impliedFormat":99},{"version":"3cb92b03358a7758156d08e7335f6d8989e7d2ad0484d940d1d159e719bec6fd","impliedFormat":99},{"version":"db2d78cb15bf3448525c97ebee086c8032249015fe483c7ba0d17922e54c3204","signature":"8baefa43af6b0b958a7cf6f6bac04c5ca568717d6587e53cc6f8b68cd80d5f50","impliedFormat":99},{"version":"6cbd71f9696f4ca2bf196759d831dfc188f35c9d048a795891289e4ddebc0431","signature":"bf00afe5e0b0c9ce93957b70222900424ab8addcf20ca52fe8c77130d2de27ea","impliedFormat":99},{"version":"911f5c06cfd1a397cf9c1ff5a7b2f9d67ca6df852a7c1f472fda34708f049049","signature":"fe19a5fbb177de1ded6f2aaedb98cd22310cfe092a41e98aa7e4ac41220cf217","impliedFormat":99},{"version":"41c141589971f1d393db7bfc7cc37212b75e4eff94b8c3c68ea7b3117064879f","signature":"ed7b5f2f38cddd11f64563612ec61870af6ae6791aa75b2cbed2b2cdd64b487a","impliedFormat":99},{"version":"c68eb17ea7b2ff7f8bcfe1a9e82b8210c3112820d9e74b56b0fbecaab5ce8866","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"a2d9f1cd1d9cbafdb2d808b8b823e7e2bb1a5e0d4be381f352985ef35aba2a83","signature":"8b14a0b10c9e335bd1ce4271acf24ca51617489e412633add76c57f53e85160c","impliedFormat":99},{"version":"a50d1b1999acbabf53356fdf59a87f9f19668fa899455f1ced93848eda010f0e","signature":"983b00bdae67c57d1559e0ae22cce883649ad0ac7c13fdf931349e5c17d732bf","impliedFormat":99},{"version":"4acb7490f65fb1a129b89bb5a4d4cbbb350ade630ab2bc0c274233cc8b322f9f","impliedFormat":99},{"version":"5aabdd8954b113593293fbb5df7c1d359b0c9e5ecfb9c3b5e7857548f0180326","impliedFormat":99},{"version":"f2fe033eb7a514819c240b9b94e20397b658402386fc0074244813a05446ee96","impliedFormat":99},{"version":"da83f0cbaaa8719d0d496a36efe871e609329eb54e03603a27c0c3ee5d2315a8","impliedFormat":99},{"version":"3899995b17f1b37baf3f5733f69910af170ba6de932de0e155a99d6f1c2d3f6c","impliedFormat":99},{"version":"c81a7cb743a6905675f5e1fdee46d05a0a958e10579350d06c390614034f83de","impliedFormat":99},{"version":"8d6570e5997ac57cfa535f8a26edc967388699033315e301b5a1e03c2f88741f","impliedFormat":99},{"version":"a625467141ccc971a2a0b4edf41bc4cde7375d9369d1ede7366792d328d1fd2f","impliedFormat":99},{"version":"7c20b6004a1bd4f6934cee8b85f51897018fed52a64b166400f5c25ee3fdfbde","impliedFormat":99},{"version":"43aa9b96bd6d8d2a6931fa18a6395efe988d54e3433bbce292c2504085bf2a78","impliedFormat":99},{"version":"006fa561643ce29dcccd8e1ab4ad1f1c20144db09b7a68758b03369259dc756f","signature":"820a12605c4065d50048434d3cc3293cb5af8e3577bfdf03a47b9eed21be25f9","impliedFormat":99},{"version":"142211080daa08b9b55e623a1cd25e5700b4791a3dfbb3fc7cef01fe8ea525b8","impliedFormat":99},{"version":"0385cc1a19feefba283a4ebf3d218ca4b4da3d2377c14bd4bee231fdb5651122","impliedFormat":99},{"version":"5a631dd1e7d47386d9d9d4885ecfd91c81473599ec21e4e85dde53d7606ac61a","signature":"6777f6727cc8527c08c57eb88bea7e8edc8ac68840d47d6e84cf7d59c9291fc7","impliedFormat":99},{"version":"a7fe7e88c50608567af53c49d3c59ea5f33bf5f59126d67b2a25f85eb41297ba","impliedFormat":1},{"version":"80559fc72ab564f9b61c24e61b049d8c6ae1e269bd3aa97b10b269d1d6e32afd","signature":"377389c928a15c96e6ad4651eb06bdc9fb16c61ac783b9f0744f7b60e970239c","impliedFormat":99},{"version":"ffa08aa6d8afb732ce007e5a56eab72377d47fec3cb00f257fea5d5d587d81c3","signature":"811ba6d1de9d48d52731a2bb8df6428fb2b4e1c791081700d1f4014b03f5e4a6","impliedFormat":99},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"361685e1b13e75583717b22dfec48705646a4a465fc8eaa4c14660ef321f722d","impliedFormat":99},{"version":"64e3abf739734d8cde8004b9f54264cd31322e2c34ea812e6c0f41bb4d22f8aa","impliedFormat":99},{"version":"be90405159d49371fc69c9ab170184b07370b938a725eebdcabb8215d3cf200b","signature":"8d01033c5d8e50ca1ecc4835c8038e534b6c2ed5d8174aa7b41308184e8cb272","impliedFormat":99},{"version":"ddbff04edde6235b674b1b7787b6e6b51e68f82b273c9e8a1f4f5483999eca12","signature":"a61e420ace19d0439ebbce96066accb8bd6b39b9f130f01225fba02f28c71f85","impliedFormat":99},{"version":"6e17e5e9d06b2070521b5734d58f147a85d75d4b7c34f5710cb1e7550aa9b08a","signature":"5718f9b7fb794f65c7b50e26af5bf9cef6cc6542adcdf299feb9430806381e57","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"ef38456e22b0bffcd9ff28dc1a7138e84918a212e6960dd620cc3000341c0ebe","impliedFormat":1},{"version":"07a1cea63a067c0845029ea6e1933af842783efa3006510f504b1f09bd2ebff0","impliedFormat":1},{"version":"48ce8d49a17cdd6dbb687c406af1caf4bed54fbe40ff14c6c505ccca6176cd21","impliedFormat":1},{"version":"3cd6ca36b5729325dd2eb0359eb1e2aed4f8cc73c3b8341e1733dfeee99fbeeb","impliedFormat":1},{"version":"0e8edbe744dfc3ce65e9fa2283f1f0eb2c0aaaec4df19765f51c346e45452cda","impliedFormat":1},{"version":"e8f32bdfbcbddd21331a469193a5c63c7b5e0d80025e649d91f833869bf5b7aa","impliedFormat":1},{"version":"1bea3584ffe75ae8fa970d651b8bbd7c67a75d21df6bd1762dc2abea73012b66","impliedFormat":1},{"version":"bf0e009524b9b436156b4a326cc3e92f1fdcd16ce51d119c94e4addc910e645e","impliedFormat":1},{"version":"52e0c1007dea40e9a588f22425a80250020ef0cd9b4a9deb36f315e075d1ab40","impliedFormat":1},{"version":"2c6ecd1f21dc339d42cecf914e1b844cef3cb68e3ec6f0ed5a9c4f6a588beb92","impliedFormat":1},{"version":"653672db5220ac24c728958a680b0db84c8d0d0f7ade5d78dbac72035d9ea70b","impliedFormat":1},{"version":"3e689acc1789753818d875db16406686afb5b5e689dcc76d8106a960016f6352","impliedFormat":1},{"version":"d7a7229e7c12bf013834713f569d122a43056a5f34391b8388a582895b02c9e8","impliedFormat":1},{"version":"b811d082368e5b7f337d08f3e80be3d7e4c0c7f0249b00f8224acba9f77087e9","impliedFormat":1},{"version":"c26c383b08e47dfbd741193ef1e7f8f002ac3b0d2f6bf3d4b6b9a99ee2d9378e","impliedFormat":1},{"version":"75473b178a514d8768d6ead4a4da267aa6bedeeb792cd9437e45b46fa2dcf608","impliedFormat":1},{"version":"a75457a1e79e2bc885376b11f0a6c058e843dcac1f9d84c2293c75b13fa8803b","impliedFormat":1},{"version":"0e776b64bf664fffad4237b220b92dccd7cc1cf60b933a7ce01fb7a9b742b713","impliedFormat":1},{"version":"97fe820ad369ce125b96c8fadd590addae19e293d5f6dc3833b7fd3808fea329","impliedFormat":1},{"version":"4e8a7cea443cbce825d1de249990bd71988cf491f689f5f4ada378c1cb965067","impliedFormat":1},{"version":"acca4486b08bf5dc91c23d65f47181bd13f82571969c85e8df474fa6bc5c2a88","impliedFormat":1},{"version":"47244c79b80aee467a62c420ef5c2a58837236d9bf0087e9d6b43e278a71a46f","impliedFormat":1},{"version":"971dc452ac09307ee049acb21bbd30a82d1c163377465d6b33fd4d677ed2385d","impliedFormat":1},{"version":"226b58896f4f01f4c669d908f32c657bcab1a83f3aebb2f3d711a4fe7ba2a2d6","impliedFormat":1},{"version":"171df77317ddf15dd165eafd18800f722ba0f774802545187f78629d3210be16","impliedFormat":1},{"version":"5d85ddf06bed9df0a9b75ec83723575d16343727ee5ce3df1b3a914b95358cf8","impliedFormat":1},{"version":"9a447607a90667c6db7737f30d2429f6f06efde55a47a2a3eeebc52e866d153e","impliedFormat":1},{"version":"95b74ccaa6228d938036d13a96a47645f9c3d3b707c0b6989a18d77fd62447cb","impliedFormat":1},{"version":"856b83248d7e9a1343e28e8f113b142bd49b0adece47c157ab7adf3393f82967","impliedFormat":1},{"version":"bd987883be09d8ebe7aafed2e79a591d12b5845ac4a8a0b5601bdb0367c124c0","impliedFormat":1},{"version":"75ceb3dc5530c9b0797d8d6f6cbb883bb2b1add64f630c3c6d6f847aae87482e","impliedFormat":1},{"version":"efb2b9333117561dd5fc803927c1a212a8bf1dd1a5bd4549cc3c049d4a78ec63","impliedFormat":1},{"version":"ef17d2b0d94e266d4ec8caa84010b8a7b71e476c9cfa17e3db366f873d28445e","impliedFormat":1},{"version":"604a4451df97c7bfc75846cd1ed702129db0bee0f753658e0964d67619eea825","impliedFormat":1},{"version":"b9dfc4e6c69b1d60c7c060fb7d18951ca50f01fcdb46cf4eed23ca7f16471350","impliedFormat":1},{"version":"6911b52e74e60b6f3b79fc36d22a5d9537a807e16ec2e03fd594008c83981ab5","impliedFormat":1},{"version":"2551daa9cd45fb05ee16cee6282892c14a92e49a2d592b29fc9ff6d4ceef7dc2","impliedFormat":1},{"version":"5ba862c2b8f6fc41d95b417b19ed28111a685554ba2bac5bcf30680a92a46f26","impliedFormat":1},{"version":"449babe88138e129aef94c1696b527898f9e13ab62bce129daee0e85266e48a7","impliedFormat":1},{"version":"051fcc83efe52405a750b576b5aedffcd32db3f88b354c31e9a76e87446e5ab8","signature":"5f891b46a12a6de80b3de7e8185406fb3a2c5d0081116653198ad114c86265c0","impliedFormat":99},{"version":"f81ff6704eaac628b003f30a95f3e389557705f7f98e713b64f8ca9d0932c731","impliedFormat":99},{"version":"46978e49fed98a0cf4d492952a6c4c51a62dc6a67e0215f050782b95a8be975f","signature":"19e7990fe2e1e0111f6bd9cb5dd921c0db9cccc8a435b314eeb1c2ea8b8b8425","impliedFormat":99},{"version":"30fcf5a01a69a33f236aaea7ec1cadfa40578cd10e22b2ce3de79bce0494c73f","signature":"d493f2073501328576695b05d3e3e131fbd5f08e1ca82a39ec7688829944542d","impliedFormat":99},{"version":"1b52c84fb8bce45b4addd8c9e68f5c46affd9cae1b3c37fe2110bb998f594ffa","signature":"0fa4d8364393eb18e62e46a2f16252402f22f894cf175ac189562c20ff8a88e8","impliedFormat":99},{"version":"d745002b281b6391345fc4e2ae1f75d7ebc30331f35f43e45ac6ead0947a0ae5","signature":"0216d4fb7238756122837b26fc7779452ceecc8db06758a6582a8502878c70e3","impliedFormat":99},{"version":"904ce043e49929bc608ac6bd2b45936dc3941bc01509173e461acdfbf564db91","signature":"e0035402989c657f7d7ca1358281528b0d4192226cf16c8e977bfe6a7a4bbd61","impliedFormat":99},{"version":"d639d85e94bbf437e5668f6e6ebeb90cbf64f1afbb59df296b93b6654582910e","signature":"98ade4aab7d92b998b462e53116501c5873990e1fb5e314bd9b6add6e9cddbab","impliedFormat":99},{"version":"b700806e86a2c044b67334a3f51923ece81d9c679d422b6abe1699137000c2bc","impliedFormat":99},{"version":"62183689a38a3cde5880373d8310098c414a8640dc057215b68506232a637421","impliedFormat":99},{"version":"73904d20e02ca3794be6a05f3e63d27222f9168b2124116fb34ffe54047f94ba","impliedFormat":99},{"version":"17c0d4e79776d9b9d9eed51c44f5e584444c21f992d22866d6b4434d286a8d31","impliedFormat":99},{"version":"8a0e7ea4ffd59d904080127df9efaea6a5bf1beea50c469b8880a17bb5d4dc47","impliedFormat":99},{"version":"0cc5f3673dfdd4de175355666f84ff033f0974ce7d2331cfe39116a630d355f7","impliedFormat":99},{"version":"0174d48a0005affed0c6fa1aa35757732fa9e5802f082704fa9f0bec251ab391","impliedFormat":99},{"version":"3d9450c6a13228a5264fc4057e374a8128674fae1e8a7ed6813ee9d636751212","impliedFormat":1},{"version":"7e818b2ee0941eafb351ed6c7580f3e042d0319d7766510eceabb6fd7a812e70","impliedFormat":99},{"version":"3c8387341da109d7b4770e672f10e9fcc151413af1c96fe0cc54d8b8de1755d7","impliedFormat":99},{"version":"740dc918da44408780199b5611b4b9c800ba690b31a18f32b38af286d5e2ff45","impliedFormat":99},{"version":"ae93a198a53e617cacb40708f2c78d7291a618c6794ee2011040f3ac47cbedeb","impliedFormat":99},{"version":"d1178ed103c371b486cd0e50d8f3944a35ecdde80dc04f8dc284754a643a9220","impliedFormat":99},{"version":"eccac2091ab74472cfc3cb2ca3eb14f7c78b6dce9808dcdc5ec8977b919e8933","impliedFormat":99},{"version":"216a61b49fc97b8dad1bb456870f927df8ff12e25307b343f19aca5c0bcb8060","impliedFormat":99},{"version":"d740b9dc0696feaad081e29ad9cbf4d5b8d16c50910c5d3bde2f048d2b89120f","impliedFormat":99},{"version":"41984cb85e4297f84e32c89236d2c8d2431d83dfabb9ac1e928d3222bddda998","impliedFormat":99},{"version":"52044bf0ea4d3a38e3393359c0e9d2ff791d353d88fff3b9049839196e1d8254","impliedFormat":99},{"version":"79d95d8a86c0244ce8087d01d8cfcfeb2b3fa3e23a6767eefdda3819f16fc7ea","impliedFormat":99},{"version":"3d9ee67d9168fc1ac4810d250fcc280f4165a9f1df1d936685b0734242f471c3","impliedFormat":99},{"version":"f7636abd6184039cac4fdda16e8d04eb9b3de4cfa5c766fac1180d0b258e7927","impliedFormat":99},{"version":"0a53c00231d30716ff431731bcb424e318b1f9829ed90203e14c8b97a1e946dc","impliedFormat":99},{"version":"9dd2fb90fd77b881f2d691880bbebe0c0e963d51f28b3beb029da43c2979347e","impliedFormat":99},{"version":"0cc4306c37e7b23d7a06863ec79051588f000263d7369a1d7fab8806b48b8444","impliedFormat":99},{"version":"9798640514d64279f8efa6cbdee6d60acae872c897ca7bb5aa9f4f5dc91a8349","impliedFormat":99},{"version":"7789df8c14b52039bc312ed321381091265b689c59782afb29e9d448b67539d0","impliedFormat":99},{"version":"5b71580a337dd56aee4fe3af7622bbb61f6274973ef9d4da175cf99860232dba","impliedFormat":99},{"version":"6899e0447596c759a68a1662f0c021f0975890daba35b1e39e89483700fdb261","impliedFormat":99},{"version":"90b3b486152c8d174395cafe14ed99370cc1bb6ca18259f92764ffab622752fa","impliedFormat":99},{"version":"b00b9639023977c5ad220738df760dd3e71313758d8296b40b4679b55190ec13","impliedFormat":99},{"version":"71aa5b558ee187eb95ad91ed2f3b4fa46b80f7057065c6b1a4c4a67381b89c45","impliedFormat":99},{"version":"23880d881af2c07702f0c9172476a8a4eac30c5f6529e8dddd999354ea7af9f7","impliedFormat":99},{"version":"cfa1883eb9f79a776b0188f0985fe250bdcdc4ea1da304e4a8f8a577a02fc293","impliedFormat":99},{"version":"f0df1db171b29575cafe8a41566d9e4ae1202bf0a6c7346e57870e1fc877d4bd","impliedFormat":99},{"version":"ca8e41c4c03f4b4e246c4b8a94a295bc34533b15756d18ff875bfe48336ef02e","impliedFormat":99},{"version":"bc1893451b0d4091c1267502aa0cde0719cbe00a108453bb70ed1a4244734d97","impliedFormat":99},{"version":"d73a5bcbafc2804700c17760be1807f601bad71a97e482a8f7eb44472e0cc69d","impliedFormat":99},{"version":"8a5c11af0db727cfd9b4fe0397bcf35b40729b4fa21c6f091fc0395c668d5166","impliedFormat":99},{"version":"4de0b7c895d6b8760f0d10a8a36758af730efc6a6c1434d7d9d17beb4bcea21f","impliedFormat":99},{"version":"fe10d356b9b2fafbec4a34f2e582450f069c4288f95da70213dd13db09b3074a","signature":"cc3015a6f650b9a88b4b4ab37f1190dea89b2129ba062bf3731dfc8f48f5823c","impliedFormat":99},{"version":"6070a17ce3ddb9c6615693b6beed6576940395c37fc36893311540f4923dc6d5","signature":"6e33a492536c26236f930f07563e3933be7545db498a2cbe8ffdc1e5227fafb4","impliedFormat":99},{"version":"0782c58a411b4a934e11a389c09cef811876da5c7c768c1548648a4d5ffd0a1c","signature":"fb90d77217b816d2ca2dcc516699904b949406adc87ae16c55d2b03f1829a96a","impliedFormat":99},{"version":"d10c31a6538d25bfde96067874e1dcda7be4731b267c3cb3510ab9498c6c076c","signature":"20b239392d3c5ac19dbf5caebe431210ee35fddcb21d5ef02bb8ca9ed2283d8a","impliedFormat":99},{"version":"a3f5f1a31c490086b6bb8582de2ddce8d37332c6c85ba1c0cd868c08d1a8c7d8","signature":"e10190f06a7996f36c8edfa599de304f93ccb9e209e09d2a49152fd7ed75d8a7","impliedFormat":99},{"version":"b3370b7c2545cdcfaaa814f1690dee974fe2a818f27d9bd88f9fe6f4dcd86479","impliedFormat":1},{"version":"c9f05ebdbcba03c600fe70369829f3d7db3833ef5c81466d72b1f398e5ef65b2","signature":"7e77b5c3d8e3725888d05b45d2d22c2320c79c7bac3763e4f26091555be92664","impliedFormat":99},{"version":"1275ca930740bcf85b0122be6ebbf6583f9de8b608ab9f48f1ef6afac8e59288","signature":"61ac249a52dd2f658dc7a33a6188d2f0d67717f1c3f925345128ee3c59058e01","impliedFormat":99},{"version":"cf99e01e761f57f68443ca3953892884f617776b4447ef48f692dbc1aaeee34a","signature":"d900ea7bc60dfae8441897a315f2d162a40e448ed095292b7f3e3a5d17533a93","impliedFormat":99},{"version":"1d3587915a10cfcaa110429363a3aad515bea565051ddca80d6db538e1327280","signature":"a15e288880965dc1332e9348bc20b6f3698a3f633776d03769d7cf9d176d5ffc","impliedFormat":99},{"version":"45320cf06821afd28917fcf19bc63dbafd88b57a81e9bb27af8e06a607b15f0e","signature":"5819da005359d2efc42cd0ae6fd1d542c08ee6852699aaad24d5084438a798b6","impliedFormat":99},{"version":"1660f8f6635f9b5fc999af6f9c979beaa324c44638596323e15226e91c35b428","signature":"afa9a9571844273373b681beadf560cb9f41408563479acd9cbf278224c33423","impliedFormat":99},{"version":"c9ceb2af8fd88b21d548e8b1a35e7d336f806fc8071677e5f0e91c99320c61a7","impliedFormat":99},{"version":"2d0abfdf9b8a84c31c0728f351993da5238366d7206785336d7fd8b1f751a4af","signature":"b32c0cdadf3cd1f193f7f9a5bcf3d76aef7c4fb10181273e49d3a0c02c6948c0","impliedFormat":99},{"version":"115b314fa690280fef66dd579fe82fe301e999c933b038c98908e5622bc71c0e","signature":"295509b0876b9c37a560e4c68668ae867ef524fa395458a78099ffa313bb2475","impliedFormat":99},{"version":"daccdfb58da4a8cd4098134fab5a01f88d8e5a064330de47757d9be8b07fdc88","impliedFormat":99},{"version":"04a50464661fb0a629486fe4e8a7cd8df740ad4a3aa3d36cb7272fcaf37248c6","signature":"864fdf017b48695d6b224cf41dae0526e158c8a788e8ffc7fa7561c9283b9e97","impliedFormat":99},{"version":"c0717bd55569bc1c588edd862b6d76e94f4c6cc95021aea78382338209ece379","signature":"de736d948b57d9751dae087c64545629be50b695695945dee3a0f122000d809e","impliedFormat":99},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"318dcdbb8fe0120b19dcbbda95e6ed53f7898901d00e42c006e8f21eeb09af73","signature":"15b8576006de6329b84266bb1e59fa138a53389770fb1bd7d295cbab3a283304","impliedFormat":99},{"version":"7b139df2366e1b6671356404cb22aa2fe5bb0a65f8e477229e33cf9cabfa6b65","signature":"e5cc1245441aaa2db511ed3a913a9b7e2a40f11364eec71e9a7543372cf2204c","impliedFormat":99},{"version":"d37853b20dbdde61d7200c5b7a186224a39deb15ec3ee9ee7baa52b33cbfb3dd","signature":"89728b933a73003bafdfb6027441bdee818fb08973197e3e81d0c4253c83824a","impliedFormat":99},{"version":"34c5a4cd69bf69726f9b7207eefe86880d3b5474a010b603adee62159917d343","signature":"f4db962be62f10a5a0ce4d1566b30e71b6f13bdb7f83cbbe7ece304d8cce3029","impliedFormat":99},{"version":"3012fbde7048d7aa90abc408f313fb21bb5299a2632a75aef085e85f1e587c6d","signature":"c5e22177c3a9a422990f3c73542a524d90008005f4227b5ea57cd1f78e2a6d68","impliedFormat":99},{"version":"7e348e5601f7ac767a605fd30c2cfbfe9eb06780c70ea3b77dde87f14619b7b7","signature":"b2edd7faf86791777c04eb41d3deb5ba26376b3211ceb78bf7da8d7d8cc2259e","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":99},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":99},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":99},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":99},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":99},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":99},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":99},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":99},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":99},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":99},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":99},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":99},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":99},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":99},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":99},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":99},{"version":"9604063ccdbccc7bb6bd0de7de4eda573eac84a98b85104868e8f828f8523aeb","impliedFormat":1},{"version":"2cfca81d9986f9038afd5c80da0162a75a58f08dcfac574c47641d166e868ca3","impliedFormat":1},{"version":"24f2e55a5dbe187494bd6f2b0f4422b47364ee4fdec226c86336830ce18b6de3","affectsGlobalScope":true,"impliedFormat":1},{"version":"16d3ff766f6382a2033a7bbeca936f94c717630b44aadac207019d135a16c1c2","impliedFormat":1},{"version":"8c41261cc0ab7e6b743723384334877e37b411a09f4b023ec068fc13ee9a0ef9","impliedFormat":1},{"version":"954aa02ef3f468cb6a09d68416657610e430638ede9b8659f6ad09e4b1495a15","impliedFormat":1},{"version":"37572965bf2925adb0290f105eae3fe48380509e5a2e82a0b4b05dd8b44863a6","impliedFormat":1},{"version":"d3822b6f3d4bb34b4b7bd388540df4e30f8c52846e4e6a099ad0b3bcac1177e4","impliedFormat":1},{"version":"fae4a58b36adf98d91a0c24d325a1530b114ce3070648f77321b53e2debfc6f1","impliedFormat":1},{"version":"9ad5866938709e230941dfbf01dbf0cc01fd43c67e1b06f717c0fc0695c6b816","impliedFormat":1},{"version":"c6457956bb33e94d7ed59f0c4573dbe03b9aa7fbe144b71202d3060323a6e5f6","impliedFormat":1},{"version":"6bf2967239620c9a43dba294f8c62850b78180df5d3d459b00767032ca6c4a4b","impliedFormat":1},{"version":"f550481c9af8cc420098c83064a1727266bbb37fff65974dd57678f25686e1b3","impliedFormat":1},{"version":"150524671677f0682c3a819efab65eeca3aad2ed7ddb04c198c908a314d53ede","impliedFormat":1},{"version":"35dea7c5fe9fc5a8a4554f9ce247c7ef95af2997ba93471e44654207b6ce492e","impliedFormat":1},{"version":"7c004fa5802a47d8c115658663048040370952f05a4b4523e04a6dfa8295835a","impliedFormat":1},{"version":"4e64c49fc225d9e24302f65a6752888b42907ed055ac68d97ca1f5cc56135d48","impliedFormat":1},{"version":"591ac6c3151c941cafeafe26a15af5edebf94c190e3274b46a4f35bd2bed9865","impliedFormat":1},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":1},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":1},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":1},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":1},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":1},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":1},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":1},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":1},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":1},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":1},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":1},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":1},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":1},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":1},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":1},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":1},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":1},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":1},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":1},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":1},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":1},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":1},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":1},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":1},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":1},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":1},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":1},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":1},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":1},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":1},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":1},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":1},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":1},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":1},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":1},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":1},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":1},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":1},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":1},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":1},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":1},{"version":"f9f89ce15a9c4a56f2dceddbad9146711fc2e11f027f94a09a1b7de55da14696","impliedFormat":1},{"version":"ddf892c80b33668602deb58874d4d7f07b8cb9ff8c9b65be7396b435d95b2b10","impliedFormat":1},{"version":"2cdecfe56eadc30512544964ba908ddb9ff0b4a3967f6be424e409d23552cdcc","impliedFormat":1},{"version":"7090b94fc3c6219e214d6b2807b3c650fd6b99467b338aaaf42d36f158eab51f","impliedFormat":1},{"version":"2b383e3969f359b85ec4c3e3af6df1bf5827736f17cd74525daed86b73f8ed12","impliedFormat":1},{"version":"c1238acb0701c57e0f0f936b820eef90ef840bccf951d90c6536199e4cb9a7e7","impliedFormat":1},{"version":"9d11c4d45161f0b1afc74196f2f2bd88e8c82ad54ec057a205f4a2775e72b2c5","impliedFormat":1},{"version":"94a92cc92d97b95a54ed9778722601b48f4b21988eeded3782093d8d7350365a","impliedFormat":1},{"version":"505206881764364a89be881369d183e7f2e8ffaa8c93f773b73ba70799d21fa5","impliedFormat":1},{"version":"c7f210220b620dadecd950fa63dae87fea39b5a7d763d904ec64d0dae6d6c556","impliedFormat":1},{"version":"f85c7d2dd3d62a555f6b4391758b77768d13dafbf249c52d6eeec5dec1742353","impliedFormat":1},{"version":"1e3cc3492cd8d0743f77a5087e412078d8db236873b60332e7c9cf19ebd0f77e","signature":"9db99fce5969bd7b5117499c0ebc4409bd4ef592e9efd7f85d14a0b1713a96dd","impliedFormat":99},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","impliedFormat":99},{"version":"f13b3a1249b976d047b9506a95e8f70c016670ddae256583b7a097e14ec1f041","impliedFormat":99},{"version":"014ba72e2add59d6d2d2e82166647982c824639e2902ccd7b3103cf720a0cb65","impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","impliedFormat":99},{"version":"499b85df8e9141de47a8d76961fba4fbd96c17af0883a3ee5b9cba7eb0f26a5f","impliedFormat":99},{"version":"78dd4f51a218aeafaaf00dea4604e37d32791d87fafe1c20b5e1a3e8648c77bd","impliedFormat":99},{"version":"671ccab2e6a253d2516c0e4699b3077fc30cdb70b4436d8c79d76c91266a1a94","impliedFormat":99},{"version":"9b40cdceea5bb43a6e998cc6f8d47480741de5f336d9147653a5d9004175f6c1","impliedFormat":99},{"version":"e760f7860d08e9d42b6ecd7dd341602fbc0c13d60eb30beaf1153f1c7c44d66d","impliedFormat":99},{"version":"fb04e1ca667399e7302c033656cc285e6c1cff9c29f264cf229dd25e3962a762","impliedFormat":99},{"version":"693faddf4c41a29866e95602f444a1399a2f6a7093b6d1d60ba4f2922f8013d0","impliedFormat":99},{"version":"410e798cfb0d71e54d49284d16c7672db89720d017440abae05d547e9351e1cd","impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","impliedFormat":99},{"version":"c2f4c022fd9ba0d424d9a25e34748aab8417b71a655ab65e528a3b00ed90ce6d","impliedFormat":99},{"version":"d76df1670eeb97afbab6c87b8cd31bbd09dbf9026ff0ca533b5d7d3fc0291f79","impliedFormat":99},{"version":"13902404b0a9593a2c2f9c78ac7464820129fe7e5a660ef53a5cc8f3701f8350","impliedFormat":99},{"version":"2484f21803a2f6d8e34230c1c4354288da5d842182d7102a49a004c819c4b8b3","impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","impliedFormat":99},{"version":"cd8a4297d0ab56dc571dadd2845e558c9d979fe1e120a0dec537935bc8a36dd2","impliedFormat":99},{"version":"079a12cb0e0c42655d77da5185e882b4cc94bd5c6c2131171a9289fc1f4287fc","impliedFormat":99},{"version":"5dae1fbefdf74fea1e94193c2974aac846b23bf0e8ff68fed72f6bdf6ebe3200","impliedFormat":99},{"version":"40f42c27f6cf91185a68be52a9ff238a99945ed3f68b334bedd5c678ac4a1104","impliedFormat":99},{"version":"167edfac7664bec77aa2efb2ce9d515c41b5cc4269091a946b3fa6ec4e7e8738","impliedFormat":99},{"version":"e1d65ef0ac1d0f780a061cccf6aedc70622395b0edfd8df1a3bdb92c93a98bea","impliedFormat":99},{"version":"c394a8c3b9348c9c2c0cd0384c465e5c53c050c1512138e4684d626d86cb8f0a","impliedFormat":99},{"version":"e1e837899820897455837d4161c7d8c09c23cbf49a5d0be2259b49c5df254618","impliedFormat":99},{"version":"113f247dd5763bc81d47188f4acb9931de0e6f0103d37e0577f9996cd489f34c","impliedFormat":99},{"version":"a70f42b0cf7a665bbddccb6bc6ec520bf2dd8b6e34589d6a12e012cee8cb51d8","impliedFormat":99},{"version":"be741d3922f8f0e3f861d03e447e3f24a2247ac108ee37e67ec750f63fe7f476","impliedFormat":99},{"version":"7b1615fcfa2397fe944d40c0b64521ebe1afadefa39b3aea6a5552b093c4a461","impliedFormat":99},{"version":"647e1d0a723a7caa54487d50dbfd952f184a110899ce3f331f3c451f6fbd083f","impliedFormat":99},{"version":"effe24c379e404a2122c91ebed98935900169578c80a9751783331aac9d366ba","impliedFormat":99},{"version":"2386a2d632bd750487c7efdb7b624d97207c60f00a7ae4be792805edcec80a5a","impliedFormat":99},{"version":"562640a0449842e1fc2663d2d731740114629a156366a46d26c561811d879600","impliedFormat":99},{"version":"4faebe7671813203eb7fb0fe28ad9b35d5d656b50e137212402876caa82c98ea","impliedFormat":99},{"version":"d7c135a3e73e7fe31aefa39d4001a125f6336ce749cf31c2632b6acab976015a","impliedFormat":99},{"version":"c55ae709f94155174ff63647edd2a7e3acbd02a2909aa2541569e8b8bac9fc40","impliedFormat":1},{"version":"530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","impliedFormat":1},{"version":"1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","impliedFormat":1},{"version":"07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","impliedFormat":1},{"version":"d5f1bbd44ba4f63d8a01fff5e1edc1c1fb50e9caa48a4fa48298a4485d6ff75c","impliedFormat":1},{"version":"4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","impliedFormat":1},{"version":"c70e38e0f30b7c0542af9aa7e0324a23dd2b0c1a64e078296653d1d3b36fa248","impliedFormat":1},{"version":"d12680e217215b37094868d491d00196e80f270ce47e5a4bc50269945ae5554d","impliedFormat":1},{"version":"396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","impliedFormat":1},{"version":"b7b881ced4ed4dee13d6e0ccdb2296f66663ba6b1419767271090b3ff3478bb9","impliedFormat":1},{"version":"06289b9873760aac77aed4035ea6c60b1e0879b8afe47a4530bc8522b9b804b1","impliedFormat":1},{"version":"63c36aa73242aa745fae813c40585111ead225394b0a0ba985c2683baa6b0ef9","impliedFormat":1},{"version":"3e7ffc7dd797e5d44d387d0892bc288480493e73dcab9832812907d1389e4a98","impliedFormat":1},{"version":"db011ec9589fd51995cbd0765673838e38e6485a6559163cc53dcf508b480909","impliedFormat":1},{"version":"e1a4253f0cca15c14516f52a2ad36c3520b140b5dfb3b3880a368cd75d45d6d9","impliedFormat":1},{"version":"159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","impliedFormat":1},{"version":"a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","impliedFormat":1},{"version":"8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","impliedFormat":1},{"version":"0c1aabfd9fb1818afb2e798f91f669edafce59cd7e3423d25b1cfccfaaf2c403","impliedFormat":1},{"version":"017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","impliedFormat":1},{"version":"ab9ea2596cb7800bd79d1526930c785606ec4f439c275adbca5adc1ddf87747d","impliedFormat":1},{"version":"aee8faa433dde04beedb779b3329456a286a966462d666c138c19113ce78c79e","impliedFormat":1},{"version":"d620ec36bfc6f8ed6fdecbe036d55cec81637f32fd34dc7bb7e60eba1764e910","impliedFormat":1},{"version":"4e693235d606287d6b5a4e7d572f190862b93ea4a28df8a63fc328aa8becdc9d","impliedFormat":1},{"version":"e58d1ea2fc84c9c03742b4f56449b7d4602c8c4deb4f0e57c619bab35bbbbf81","impliedFormat":1},{"version":"d82bc1f8fe8eef55aa741373da68b80a8503228c9aa0ec46bdd38fd7e0c02a18","impliedFormat":1},{"version":"d7c7f8a461326507d90d0888efff0c4011a5e69eb08ccb990232aa22334e4dd6","impliedFormat":1},{"version":"5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","impliedFormat":1},{"version":"27deb39ac0921db739b503407dc9aa93a546b015c06738bc8b66bdf0ae593c7c","impliedFormat":1},{"version":"eff5b8bdfe94c0a174484a6de01e802fb66f99f8737a20e4fba4df05c2f24cea","impliedFormat":1},{"version":"52fa3a4f47e30ef266dbda3b69821fe5811be4faad2b266586090d8b4806342e","impliedFormat":1},{"version":"5cb6f9ea4a097094fe624c3513111292690e39e83167a412f8912807be71ca65","impliedFormat":1},{"version":"fa461c83b2adc6b33997a95335d19723bddd4d7aaff41cac6f9f817e3c3ae730","impliedFormat":1},{"version":"d9eed4a308aeb32babee0600d21c3a3ba8452c89e8a4916e5460b45da147c33c","impliedFormat":1},{"version":"fc9bdd9b3d8fb59c913cb3b8dea0d79b38dfe9331ef07e1c6dc6bf363f061ad6","impliedFormat":1},{"version":"e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","impliedFormat":1},{"version":"0c3c4ce6a1884610c99306719f59174d81808c69393c30119f9c2aef0449a2cb","impliedFormat":1},{"version":"219a25474e58a8161b242776856ec5f6960839b63e74809445e51cadbfc18096","impliedFormat":1},{"version":"5a0d1534e9493ae44b08b3055172da38370e2afd2bc3d4bea11f7be78344036f","impliedFormat":1},{"version":"6309a45fc3c03d3c4d56228e995d51974f53009a842374695b34f3607877e5a3","impliedFormat":1},{"version":"bef94eba81ae2c09059c0d9abdb1ae1b7090314f70550f3c8cd5d7ead4a4f212","impliedFormat":1},{"version":"48b787ad458be9b524fa5fdfef34f68798074132d4b8cfe6a6fe9c2bf334c532","impliedFormat":1},{"version":"37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3","impliedFormat":1},{"version":"7281550c523596fd0fd36c6e19aa89075dac93144437ce48490da319b1f4d318","impliedFormat":1},{"version":"3f3f85dc43cb93c5a797f1ff0fa948d0e17843a443ae11a20cc032ccdf1b9997","impliedFormat":1},{"version":"020507cb67b96b0830a8636db03ae004181eee323ba33565cfe8d45aaedc4d1d","impliedFormat":1},{"version":"869010bc679df668137cb3b78a3cb8196e97acf285208a57f6156ceac894a2f7","impliedFormat":1},{"version":"bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","impliedFormat":1},{"version":"29a99d2e57b3e08a997cbc2397bdb251441a545306a74b95ffedc5f03d9bc6b7","impliedFormat":1},{"version":"5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","impliedFormat":1},{"version":"09e811cc1088d9ea3a7ddd7290f6a13767f56c85daf8c3374a06a45a08d55647","impliedFormat":1},{"version":"9da2c58a27fdce871c2eac09d5172b04248bb86ada9b0d10e8b3dfa8470b8dd3","impliedFormat":1},{"version":"5c317403752871838140f70879b09509e37422e92e7364b4363c7b179310ee44","impliedFormat":1},{"version":"7b270dc53f35dd0b44bfa619ad4d351fffd512e14053c3688323ed007eda3f6d","impliedFormat":1},{"version":"6d4e928f232ade7221cffc6e4332ec935baa176415c9bf5d12111bb883a247d2","impliedFormat":1},{"version":"e86ad029224d4f2af3e188be8b5e9badf8c7083247572069bac7bd2193131fc7","impliedFormat":1},{"version":"057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","impliedFormat":1},{"version":"38aa389acf91d77db5a4f8e26e713ed53dc832ed5573def9cd20acd9ba97c1fe","impliedFormat":1},{"version":"e56784be93954f1f86d4dd3ac61b4c9727e75864baf123a1b584b970baed4ba0","impliedFormat":1},{"version":"f878779620c5178d45413b33c214419bb3df2945e703c35e1191188321e3633d","impliedFormat":1},{"version":"b9115605f72b65a662723020b2a1eb696c375a5803d6b401dc01fcbfe49ece90","impliedFormat":1},{"version":"151659e152d71986b8943b9943cd7fbe27a65874655081602de7ea24a0f66e9b","impliedFormat":1},{"version":"0a7a5237b7e20029e53bcc83da62621c04009c91fa76df9563540cd7756d3a6e","impliedFormat":99},{"version":"62d32177e413c3ffe3c4b8f86247724637d7f0b13ddc340c2c7d83ad7ec0cf41","impliedFormat":99},{"version":"5858133b184e01b07c2ddba79844316d02c5fcf9b85703ad3bcd8d4b8417fc6a","impliedFormat":99},{"version":"d8758628dc5b226fa8436180e215df9875a64a9fabc5ae7e9aa1174aaa65ac38","impliedFormat":99},{"version":"a3db0a2479676946a68d3e3f269ad37e378bea6c0de45f56896bd729387a0215","impliedFormat":99},{"version":"e7a61cfe5f4e3620389614e86877785011bf1b0ed19ebdd0de11887a126de36d","impliedFormat":99},{"version":"6108a02bc041426234368f0c6689ce368a64d139c126e0d8cb7fbf791d76fe58","signature":"7dc65155cead520f369474213a21378689c7bdb72c2ec71f6cc0801ecdd8fcc3","impliedFormat":99},{"version":"17a6cc4534f16da90b007e46154b41bf275c85d312262ae4a3ddaa29280223a0","signature":"16dfae35ca5e4f57b665acbe03e9f4308c4277a0d7781a2e58a2e709ac6b227c","impliedFormat":99},{"version":"63fef2de8fcd42a8ab0812c2bb743c2223560c2e105f26934e87b74d887e8d29","signature":"f8c76d5861f694fb5cf56a3e2569c194e17ad4de26995e1697d31bdd5c4c4b84","impliedFormat":99},{"version":"61cde05eee5d080d5fcdbbd924caca1edd638b1b50ecf3b6d06a4b002802dea8","signature":"9d75963637a51118cc676581ddd9ee666c130298f3c87513c640bd7de709d2f8","impliedFormat":99},{"version":"7fcd90da31aee8eae060e076a2ba063b581527c4a52ed7a0d4d2c54a6e825e80","signature":"a6a218bacf4c9811fe75383db917998147cd2931404eb1ee9242e857a5d58329","impliedFormat":99},{"version":"f84d77e3818b757be8bdbdf012939ac9c2fe911cde3504d024bc61e2be194ffa","signature":"2e60b39429606ab085f2d741f26a37fcf3f80afe3fbaa6b5f460ef1582306920","impliedFormat":99},{"version":"e8d58c5be1349361c5baa501fa483d84377afc9a08e41f3b75f83e528daf1a94","signature":"8923665ebbbbe7181b86f01d33656339946145d4bc7741e76e4f8423df98484f","impliedFormat":99},{"version":"71f0e097677cd87e3e9ce263dd693383b79aebce3612425ad258d95dcc215ab4","signature":"7c3e05c3e7df71e7503697672e0460a35c03d97bcf7b224b68459edda23e6081","impliedFormat":99},{"version":"0737b50b50ca1ab47650af7337f8492009bdee2d4e1939a697336447ea4593f3","signature":"73b7bda6f88a6d5158de1e22327a78fe027d7fad2cd52d1f928fa4a65ee10efb","impliedFormat":99},{"version":"8fbff250d0816c359dea0959c7192ffacda169097670c5a3e75ee3a2700656db","signature":"c7007398da974094a34185a6b41a8a51f7d08cd55c875a9f63022164801f735a","impliedFormat":99},{"version":"e0aff6ceb69ccb2b3125dec72d9d6ba47e934e56df71e73c101029474c843fc6","signature":"2cab55c75808378d958a145de9321cd5a14d231533b0b90ec2afcafe34f67369","impliedFormat":99},{"version":"971382dc52b19f14f3a3c1f2be31815ab6961a5b21a0e0b8e0a11e5e11c738f8","signature":"21cd3ceecf2cb675e262c811c005f57c275909da529abccfc91a5c31162cc9b9","impliedFormat":99},{"version":"fd457fd0ee10d8e35755575cd79de4908751eb69fe346b79354c012fc9b2b07c","signature":"0e1bb3722e2d566494a655f77b487cdd35fdd52bcbd251db37434c860e938f23","impliedFormat":99},{"version":"f502f7d6cba1b802b1cbfce283a57b39a615f4118598648442b344733cf6b551","signature":"708029623059a25b13e186e6568e488faac519a1b88fa17e0c36d7463703d18a","impliedFormat":99},{"version":"4505fc05a0f3d606ca0885ca3852a047a790013bfb6ee9a184f05e7628a7e63d","signature":"45e6c6c03d0a08beb28f676358bd6b51ecd9e99d403f984d0ab14b8a6827da3a","impliedFormat":99},{"version":"4eb0a3a123a07285b5d3eaf46f628bceb2404d78762c32915b186d0abbb9a6b7","signature":"fb298994a017ec109522a359522adb23a5d885ec2b3eb84c6af0e8ff5eb90b8b","impliedFormat":99},{"version":"b361ff12f949c31baff853004b652439a7acd0af3a2d600a6c6a0c118bf80cf4","signature":"1b113de73e37039c95f86b63acd41b8ceb1c222d8b23423eada758343b00628c","impliedFormat":99},{"version":"b7a77f314ec986ff51448857a5e8bd4a237d9043d954cd588dfa779d61a8ebe1","signature":"64ea6eb7328552f063e4f8d7f9e68872f2926ce2dd4e8ff678da26251dcebbab","impliedFormat":99},{"version":"0c5f112b6d3377b9e8214d8920e1a69d8098b881d941f2ab3ca45234d13d68de","impliedFormat":1},{"version":"d6112d2a96173185241e1930dc82717ad6d950b2245fa24b27710d1a0ff58009","signature":"5c25aa4df8e85a693ec9b966b8251479007a27bef8210e9ee3e4692980284be3","impliedFormat":99},{"version":"d92e6cda77f261bb7f8b5dc0837b7453c3c3779516f3598e0d2ca5c1db684193","impliedFormat":1},{"version":"4f8310b32282db8bfb9e81821441cd6cc425c8553afa89281bd2a7ed6320bf38","signature":"055442465730f8ed8d649f8658c22cc5fcd6238888779aa96c91a0393c392720","impliedFormat":99},{"version":"8a8df5249541df0c2b47cf517fd8f44fcc0985a3150042b246a6e47a1c3ff789","signature":"6265b0fcf0aa2372c9f7a4c1c0295936839fc18c1426aec60fd266558364b096","impliedFormat":99},{"version":"b446f0e6359c8815703c23822bc5726f8f8a90c0ac5647df9dd2c1d9a6b33970","signature":"07b48f0afcc74f2f8e4653d2147d57c9f9de60dfd4f2e5d4d4fe9779bc079f1a","impliedFormat":99},{"version":"9340e857c126a4b0e500282677a13dccfbf63fdd4f9108c83542592687764467","signature":"226b7939dd769a22415737ec763d6c80513c00c0c614ca7181796fbe24a3c9ec","impliedFormat":99},{"version":"80a3fbb76a2084123b306818198f09aa58d1236efd43904f723f957e209f24ea","signature":"f8f7c687a1406a4be1efe630dd2e64753ef7fbc51e86227d5aa51f0c3d853dc7","impliedFormat":99},{"version":"15114ae3e664e220741bbc4f2b61afc7924d3001e00b983f6cfbdc5c4252785b","signature":"a6bc34f613793644fa679e789382f08bbb41efa4426444c02b7e61f9ea7af13f","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"ddfad2abcd30e1264631138fe262ea3d6925d7f0b84ec3becd9570a7b2e18740","signature":"9b74cf73180fd13936bfc2aa73a6525d1a7546bd4598b58c7345da6d79c91734","impliedFormat":99},{"version":"f462b6fc33bc3f82d1551ac0678834dfff89192ce1e848eb0bb8ca5bfe8bc76f","impliedFormat":99},{"version":"eb9096c517da313cbedce8818d9cadb82bbf02cd6f4a65db4cee42ac01f4272c","impliedFormat":99},{"version":"6a01435c878cf34ff47512fae119e010cb64b298cb652cb9ea86b1ca736d3045","signature":"1708a06668324399b2831bab6d883e3a35f1eee880e9d03abaab913b031a1276","impliedFormat":99},{"version":"72880794974442e60c62611bf4297bb0724548d3f7996146da2bc6e11f911481","impliedFormat":99},{"version":"12ed24d8f6c1d0178b436b2d1b963d099760bddb1ce01025a75a45a866bb8aa3","signature":"0fe82b910e30b77384741ac4235f1d562ac75a37c7a2f7594a9bb5ccbeef9c3a","impliedFormat":99},{"version":"864d5870ed972b7bec99d2ba72f2dbe0c0e85ea6fe268648f91430efaaf63944","impliedFormat":1},{"version":"e04605852407991c98d4b866417092346d720cdedaeba57ab0029c828d994ca6","impliedFormat":99},{"version":"0b420a401bdf0f0746f48b0555b4ca1bf9e4917467aae388bfc5035c0a6b8d93","signature":"2a8dbf2089ebeb2ef37a0c64d3b2c26d5101661c55454523b45f0225a073caac","impliedFormat":99},{"version":"5aac374cb4130730bb0fff62b279aabf09671c2333f3efae9605aff9b900d0e1","signature":"c2ed87d43374939c1e7c3fb1176a801b34f19e408301b2c357b6fd305f05a77e","impliedFormat":99},{"version":"ca1cad3d252a4bc2c3d163d5594e90d376afeae331d30ab042604e9b3f5ba1a6","signature":"1d67e73d58671336094fe09d30233ac9c65a9d3c3105904204eb969b9598936e","impliedFormat":99},{"version":"509f76c768daac266178142b6ce10c6493e3638cbc3ee5cbcf214b8fd07a3dde","signature":"e8477c73480697f254fb625fcfdb6260f657bbb09f313c211c1a37edd158b850","impliedFormat":99},{"version":"739487536571661bc051b6dc09684f1883220e1881f412c951226e60700c73e7","signature":"380e81d99dfa05625411f468e0bec37237978fc11fd31c9c78905e7e3b8aebad","impliedFormat":99},{"version":"2ff9c95fcda6a59679f57f6797de15a424421d1252b1ed77b348025cdcfdc1f0","signature":"77beabbb341e3f05c6b91aaac244487504685bef82ecd8ecaba5a26b1d89f85e","impliedFormat":99},{"version":"e6cfcf171b5f7ec0cb620eee4669739ad2711597d0ff7fdb79298dfc1118e66a","impliedFormat":1},{"version":"7c36cc571a59a2222ecced151452c6856f4bea77895a61aaf3900362647f6b25","impliedFormat":1},{"version":"ea3780459ddafa381a91a340d082f529cee51395304c89ddba075de889fce076","impliedFormat":99},{"version":"2fcc87b3ccec3380cf418aff1a3c3b518de55a4de55323b1b931b2996e53db00","signature":"cd831165fa9bb72136c5132c7e3acc0cf1898a4d3a8adba802af89b793ffd9c4","impliedFormat":99},{"version":"b7eece07762a9a944f097ee05d6f6b642b1e2dd87e6fc1b09600d881e5475377","impliedFormat":1},{"version":"1ccfe846d5e307fad71bf60b07c35f9daf2bfa070999b8befdfd438b268fedaf","signature":"b53ae6f5ce9fb12f6496669cdfb93dd40e80ae10f241ea5c43b40a96eed91109","impliedFormat":99},{"version":"887106db9734fe5d044da0e0d7f87de026c4e49bce1fda22c939dc74453936fb","signature":"d54af0123931ce14c746fef4efb334dc0ce452c634a59b829cb6454a6854378c","impliedFormat":99},{"version":"66972d9c50680a480d4497283557514e53c72a71597e4c9cfe0e3ea3473456fb","signature":"1ea88a24b893fa97e2e78c958689d7f8e352c1cd65de6a94cc1e0f07e9832842","impliedFormat":99},{"version":"584985940e81596ba1a116b4bf9335f7f41949f19b9a00c41c514c3b45dfa7ac","signature":"09551f63de919a207d57641a48b2e50b0d94b4c4031d36ae22136082cb61a31b","impliedFormat":99},{"version":"3f69c7cd1c35cf189878315054aba7c99c156b32f09e39ef9ab7429dbaa5e525","signature":"6695ae202f846806d3ef1d4acd1928b4f2045f00d20e21c81a97ae0859d8121b","impliedFormat":99},{"version":"2bc7b44fc23649a665752cfd607080d9888ae6b9e7ee0978ee7a3324b2b9e129","signature":"ab012885c91b77e85a32d6dac2a3758f81f0cdac5127745d3d23432ccbb95fc0","impliedFormat":99},{"version":"b696c1297e87f4134fde4cb2de57ce5981521e2d6b3178d4c5cbce7bf1a89336","signature":"779afa5997dfafaf98032bc1bd473464ffbe9f61bb81f5e1ea9dfbb4d3d09260","impliedFormat":99},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"4f7e6730a707b0d4971d96de3b562819ce304af770723707a58a578dd55a5e52","impliedFormat":99},{"version":"d1c1213e9176398b4d1d9aa543691181fd5ae23ae5415e80ede41f1ec1ccf72a","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"e6274d956641c1cbd5a01a221a85a6671fd85104ed6b530f8d34ad3086804133","impliedFormat":99},{"version":"77516308358982bb05209e8c0ed6f321860e03393587d89f61055941e5bbcdd2","impliedFormat":99},{"version":"32f8d5ce134dc7cffdea9429bca0a31b633f20f612c577614058a2b2094b9c6f","signature":"53e656035570cbcc85da12a721562ffb4ecb76c8af9027668b27430388553c3a","impliedFormat":99},{"version":"d7a87c6b40cb8b97cbb7002f50c6d0141dc3767903c1a83718c2ec99738e2f35","signature":"f640de7e5c1bb8c6838a258fbf06e2dc7d3fc24dc82fb5f514e7a43810b48062","impliedFormat":99},{"version":"9d6d2f6e93fc7957adbf0d0ff0132bc047332d06dbfb9d76fcfc7b957b99cc4d","signature":"4b08976bbe6c87523211841ab3e959470c2a1eeb6b2495830b77dda99e61cd0f","impliedFormat":99},{"version":"23c80c2645ac2b145f92cb625449bcb2c91f6a68bd308098e8f74f44533b1f56","signature":"12b7f512ad6e17742ad3fa7b40c78dadac912808c6dc60445097e69c99f52b31","impliedFormat":99},{"version":"cf980605c2390d10237c8c2d1bc38886f54d42beb424a0dd836a400dd66ea2d6","impliedFormat":99},{"version":"b04ec149643419a918d68c1bf841b117330a604e245a93f55371864f6e55d6a2","signature":"cbc792e32b8833c7625df22e980fd59a5d6b64ce0914cd3170c8ed0d1392433f","impliedFormat":99},{"version":"ded318ef35e1443e0a676cb97fd2ae002a8ab37591d3066dca3f19460c3b14a0","signature":"6e0f18dd658732756cedb45c8cd84656969aad1ec38474c867fd27e1e66c2da1","impliedFormat":99},{"version":"6393148f04d79fb4bdf453691c7dc2b993a372745bf5036f078ece37ffa249ee","signature":"36ed7196059573aed8b3d7e8e928961d2ff7f933d68c8d581f68af7427b8d0a8","impliedFormat":99},{"version":"24b84af1c822230f8b7b0c17560efc7b012e1f80ca93a7e2b6423fa4dbe76e46","signature":"45acac5ce2cef6d227335e639b67ec9aeca33c8ebfdeabeebb9b3dc762fab49f","impliedFormat":99},{"version":"f1b6e3f1cb94332ce3d9b5a9fbea5faf8cb4a5121f38ff67a982828842763233","signature":"7e42c9b09d6d737ad0e923d1b06f9201113bd961dcb853abab0f2b2ebb10250e","impliedFormat":99},{"version":"e5498f21bd48526ba95ca570e1c3fea6f8c5d5c0d611f76b729c470a8cd2d4b9","signature":"7884d8cb03c2100c901d7cbe0dbd89b299fbb0dcac80fed654d20aa4bac11b45","impliedFormat":99},{"version":"21d9ef17d12ecc8e1fc3524fdfccdabcfa4612b14848bdd753fe20faa8b13ffa","signature":"de0fd1a66ef29a3f13d68ce2d23b433ebc96213e6fb6eb406faed6f064d0e882","impliedFormat":99},{"version":"885181104d7a2a737919f4499cf5818428fae91689447deca944f8ed9c3693bf","signature":"d60e4f082ebc1a734c478e167e8bec2fbc19647b79d10e1a408f82b4b668efe7","impliedFormat":99},{"version":"07c873815fb3b05aaa5025ba54751f20519f109df3b337d5424c4f9857305890","impliedFormat":99},{"version":"6ec5092a0c41f5932f153c1e374014415b8124311345c90088adc63a87b28c84","impliedFormat":99},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"f2c96dbf26160a6410d15e4c9b96e3b5ee90460c7a8b929350c054c6b3361fde","impliedFormat":99},{"version":"7b0bb9306a425cc631c7a2a752d893e87e809d13041ac685353622fcd05f8fac","impliedFormat":99},{"version":"a492e689607448056bb5b7875a8f7f604e623cc92c19eb1358a04bf6612b06c8","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"0e74a039cdb5b3259515e375920dbd7702aa06d743598ea7ed53ea97d00764e1","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"473ce1bf2f0fa4f2742f7115078e0550ae096c0d3a5d89f1f91f1bcdd89e0a91","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"3df071340e9e8e8eccbd967400865df1de657ca3076468625ad6ef93187ed15b","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"0ef5f5c89d18794188bbf1613f001ac33ad0b9e82de32b529701e36c8a7c83ef","impliedFormat":99},{"version":"e74448dbda9fcba44933444aa4e9b795a141f05cdff5a51413cbbc1df7653fea","impliedFormat":99},{"version":"9b3492b8dc89b7020e98e26056a75fd6095b63bc29b6fce07b569ad902d9074d","impliedFormat":99},{"version":"83620e83834e69e4ea96869d255bdeeb99e72da69bedcc1e964f55bb3fc2b229","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dd53662b91b5abfb33e2615090e915b404411554f8586beda2b20cf53ea92535","impliedFormat":99},{"version":"9ccb1f2fe4456019fef2fe0de5e3cba548175bb8ac969c0621d171c5264ff51c","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"f5b7e6aabff4cea18a0dbf393cab2352f061fca939fbd1715d7bcde2784075bf","impliedFormat":99},{"version":"79d94411771150cf3cac1366ff1825a635c3680cb826c2b873be5237377aff64","impliedFormat":99},{"version":"7593fd5cb5ebff6d787689c7b20d0873b4a772bfaf79c5a7fd75baf23a2a7172","impliedFormat":99},{"version":"32c9abf3d5d5e14ed2ce95db51afb537dc85afaeaacd7c466c211c4898582757","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"8eb9571864daa2f43eb98b641415ed8adaefbbe2ab68352e1c60d626009f3a54","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"bf838430ebed2286f7427cf0c9af7706446186f7f2a0a83d90d2ca37a4602ff3","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"ab75e6fd6cd2b86fcf1306e31410d6cef8aa37f4e9ed4e0dff7640d266d30603","impliedFormat":99},{"version":"9b680c3823f398bfa66c14e298ec2841eb34d72415772595f95f9682b4b7ebfb","impliedFormat":99},{"version":"5df7286c9582d62220e0b847c9672f57108f7863a2b0105cbcc641cb0b116970","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"9156f467d689a13c3df60121158c39286a619eff04391412622c57151ce4ca97","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"bf8416e78cd8b80b69dfcb260baddb93c6093fa02217b9efb7fd5ab6b5d31511","impliedFormat":99},{"version":"d0837a5d151e8c902fdea172ce37b8fd07b4fa7d41e4cc8063f24ba4c55b8b09","impliedFormat":99},{"version":"af24d8b1966004ace9c2912b5de407c5c0191d742d7da014a0b8926e9631d2b5","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"33b4c50bd87ea402094989eaedf773e2689df452846f21ddadc67316e0518dcb","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"e1bc53a6ffeb5f18a86a9ab8e9f8275c9854b9f0290fa260224695a02ee9d949","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"d4e4a4af5f4573fbcc326b1f9dcc82139232a67f25b176626ec63a7b51195084","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"67a39289645c935b83bec8e8d9cb32618fb10451e5006e16f2697664a2659708","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"cc81b8fcc077193e85c238c109a566fa5ea8ccaf9a6c17e49d618ae730933a8b","impliedFormat":99},{"version":"c263495934af8500fdddcf8b762f16be971d55d475a1bec7aba63f891e857993","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"d5f1e34c4e7328007f9c977e10a50edd3a5c5be034d337b51515919b21b18e9f","impliedFormat":99},{"version":"4334ffca75f711bd4b69db87b0fe29b146b115a92a4ad2bb54e9807bf7290156","impliedFormat":99},{"version":"e29335a97dc6921b23bd24a5dea2dd4c65ef0c66257c365ee1a9758082483938","impliedFormat":99},{"version":"4ae29dc6d6023cf0c9ff998f517da286295f9579c4776b671f774058dffeacad","impliedFormat":99},{"version":"52f08748f996dcc8d1078502c847c6216b6367c78b6f129d231940361f7967cb","impliedFormat":99},{"version":"f0dd6bbfb1c00c27cfa6aeb15b122bbc0eee8d994030c7b4ade02a9dd269d4d0","impliedFormat":99},{"version":"bb46a3f1d44809ff696ba90548a5ad8c43b9ff478daff018f405c24e2521cf2e","impliedFormat":99},{"version":"74b2c1714ce726ea8ef08df57cd081e49a2c6af2a2758455369e5f24a8669077","impliedFormat":99},{"version":"ddd6fdfbb5efb191d3948c7628cbf3d5325b82cd4349a531d7735553573838c0","impliedFormat":99},{"version":"65f1d084fcd779b586f7211f43a58b865991139b23be9ed67b9a1e2c44b71cb2","impliedFormat":99},{"version":"c73e31e70c709189edc4680241e57234ccd2ad0f06d3f923c96bfe0f86b5a10e","impliedFormat":99},{"version":"f89709b022ad55b2d1e9439c78f6ca38088f3ce7a9f53f241714cee7e7c3a9be","impliedFormat":99},{"version":"444c7e5a66b5b2970e2bd0c7003a646ca10569c790969ffd70dafa477b89bd6c","impliedFormat":99},{"version":"4226d394ea9582dcc2379865b0e7820c3ca0541fc265da0be8fdf63eb4ae6a00","impliedFormat":99},{"version":"e71b47b5718fbe97f437473247d8f89e7e965fa0965dc16dc1c6ded8aa444e3d","impliedFormat":99},{"version":"5d51685685bb14e438626bff55a7efe4112520ebea2f014634983c83210f4aa9","impliedFormat":99},{"version":"036ae1047726230c970f2155d69a62dd5b236e495fe76c74941354f71c091005","impliedFormat":99},{"version":"01d9004ca52c4935dc087c6132ba2fbe39f76ad4dfb48425f952a4730b6077eb","impliedFormat":99},{"version":"2ce400534e53ea57f3e251e147eacc655b5fb9886c307602f0a556e67c8d11b1","impliedFormat":99},{"version":"b2e9f56f8ccce77c07f2b9f450b1c8e7a040f3e39be9f8d3f2f999a8d91eb84a","impliedFormat":99},{"version":"91960e2843d90a5ac1469fe52c86dfe202c5a0c5724274d22ad5a65b791023ec","impliedFormat":99},{"version":"d765ce1c28c19cdd35e7ce883d09a87073d6491ea6aea518a0a1f19be2a9a052","impliedFormat":99},{"version":"f619729aab2d37cf4f3c029f1c50d996edc63bb0a8f57e36f6ffec399846c7fa","impliedFormat":99},{"version":"3344bad324e5b464b7921b45b6bfde875806b60547fba17b88b0207c8bb21882","impliedFormat":99},{"version":"9a696f93e029daafb76fdb484082376152a0c8b0ebc2288df7aaef0d95e1a866","impliedFormat":99},{"version":"4ef37706816b51d87fabc9bb719b83687db95800d0bdf245a196da125aad062a","impliedFormat":99},{"version":"a42ec1f68e4f3c0c75f5660f934dbeaf8c2700f541ee8ffe927da34633dab150","impliedFormat":99},{"version":"6c4351fa94508541eac690a1f693ecaded9d77670b794450c0421d066f167e83","impliedFormat":99},{"version":"e644c2c9719e02b5172840b15096e1b3fa4c2945b76eacfcca61580f7ad04037","impliedFormat":99},{"version":"c7c007f9eee29a04189cc4da74316b9ce1510399275ff25066bff19e51e580d7","impliedFormat":99},{"version":"dac1aa695967ae152f1ab78d198205f83ac4a039b728aae41e884d7a7b6529f4","impliedFormat":99},{"version":"d47770dd43eb8cfaa0316d2c5aacec630b9ff71f22b12b76efcd05fe1c4fbe63","impliedFormat":99},{"version":"63f42af44fd40684b384c4ed07831e1639241d0cf15b398947ee6096356ae8f4","impliedFormat":99},{"version":"d3921e533df0e133d388d1d2c524170e98b98a567f67262a41ac5dd96338f2e2","impliedFormat":99},{"version":"0d320fdfb24ca75b5553a72b75a085524fbb6d6b9249b5ebe90efc0162f853fb","impliedFormat":99},{"version":"f71df1384825a9f57540e7d16c9c08d4f9b6155e921760b164966431dc69f050","impliedFormat":99},{"version":"b0fb69a62e6bf1ed599da15ad7098ffa3604650fc8c60f2523bdd63469b15f88","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"f9a31d8cd73720ce56d28363ccc816f7938c23232b4ba776e689bc9ce0bc4a9c","impliedFormat":99},{"version":"b5ecf2de5b81fe9f6977ba65a90748516ddc5ad83df7fc06dd9c1ced1b457e22","impliedFormat":99},{"version":"ec78f00051e3a1d645624b74a76b03d5477169ec2a8350ab346079b4c5866638","impliedFormat":99},{"version":"d9e8c350356fc5ba3448c766665f0b431d8ed9dfdb6c5292dc7b77bf36972a35","impliedFormat":99},{"version":"03bd8982c28ee0f85943827f431377100208d57f7cbf033e509f7dab69423eab","impliedFormat":99},{"version":"8d2c9a45e3d19a0ec700568e51360f00703b46402a57f0553fa4aacbf08f9ac4","impliedFormat":99},{"version":"786e211240ba4cfb4cb97b3ae534da76b94e5047cbd2b5491d8280981b1732cb","impliedFormat":99},{"version":"87abb4c69135e18f87f4e9062583356cc2489277c2a7f32260bd74b94e51ae2f","impliedFormat":99},{"version":"655c268c4913182d1496ec95b12a227cbc8ccf56b4d018c89d8c6efad0f09e6f","impliedFormat":99},{"version":"f54c7cd09e6f85c160c219f63be06229f77f19303b3c6c68212064ec47d74683","impliedFormat":99},{"version":"7a862fc3fa46375b46550e8d2ae91e4f0b212583b9372a6b27fac47532e49d86","impliedFormat":99},{"version":"7ac0aba77649f2c25de485bd6bf5ec9fa9cfbf7e1450201df3604c1237a1e4e0","impliedFormat":99},{"version":"bbdd4c4e115f3ee51975f383926c79dcbf609ce23a2725469b9636d0031e8ce4","impliedFormat":99},{"version":"fd0c88c18526ed3d99778191acec8a460dd8510bd23b91ab426a17ffcbeb2eba","impliedFormat":99},{"version":"d6c8773d5f7b0d3ab0ac24d6ed458e60ec1974fe009425a6513c67b7ffe000d9","impliedFormat":99},{"version":"5ed0a5deb9bca1e037bdb4a86cf56fdf8bb77a26c4bc81f46bc9a4b52c1616c9","impliedFormat":99},{"version":"526ac79647b074288fe2fded4cd4cf879fea52f550d1061de115ab55201867dd","impliedFormat":99},{"version":"0385c42787f49d23bc8bf3f863a45e56ec35516bd7755a3bb57968d05459262a","impliedFormat":99},{"version":"383e8f8a99edf7fddb94f5e1e9c6a43fb5044dc8be2aa118fbf87306d672938d","impliedFormat":99},{"version":"3f2f9920c6dd4f3bb6a877e99b30c473e40f8a635d8641d6085d3fab6ae6d18c","impliedFormat":99},{"version":"fd9c55568216743d977b55e794ce4d43f19b741a9d0e2ff771cf32da382194cc","impliedFormat":99},{"version":"3a3b4538e68a3bd1c0780c4f2e50c6855ab61c140016af7595baaecf1c7824bb","impliedFormat":99},{"version":"32db7845c6837d290fd6a94ee383fb782f0f7dd1259205b1f6278c37cb914252","impliedFormat":99},{"version":"d355ad39e31cfaee1c4c601d073b996c5c27582e34717862c013dd7a77dad1bc","impliedFormat":99},{"version":"d7e24bca0d9baf8dfa28dc9e359216518a8e9f5d7c65ffaea2e4d3a8ced93df7","impliedFormat":99},{"version":"7641955c44cd521249d735b31797341044da6487ec69a8635fab435fc3f0c8f1","impliedFormat":99},{"version":"c6b0a3cd4e55d3f18ee13c95775093129797183a2382de326e9fe9a8863f8c1a","impliedFormat":99},{"version":"120dc73e33a958e1b7e7799d12b52315e33088e4068b1db82db18068c3c5e9b2","impliedFormat":99},{"version":"bb3d0bf16f26fad4632d84eb0e6b5fb3776e24ea4ec153f2e6acf171ed341219","impliedFormat":99},{"version":"508364879c9d16a6b59e4bd58245c5d2a536c001aae7af3929036fee425513e0","impliedFormat":99},{"version":"0f2015fc90a58c0cddaf24b5c2b0c103ec90cca63b48f1d6ba195904e7cf1834","impliedFormat":99},{"version":"fe6e27f92a3d9c1cb7e7e82d7a5d8a29cf85ccf01d38caf9ceb37a01bbf80b9d","impliedFormat":99},{"version":"8db2b55d6a6acb01caf4c55a656f6d0cd1bd9b75f39e8ef28c979e2b0ff6e20c","impliedFormat":99},{"version":"e041411bb9fec156b285e9254a6d7f4879911c90dc36b5d8cf93df5a76f42fc2","impliedFormat":99},{"version":"f82a814046e9c6b9e8ec4b74de6281415f08b8e0703e9bf6e854506371bb63f8","impliedFormat":99},{"version":"0a7a93e63795b5c232bddd7206b2f1dbed90607938e5e1d8caa264add4a78737","impliedFormat":99},{"version":"19e34b4bef278b6e608e7587e1865e473df84bd73a08cb50ef98f0880fbf6556","impliedFormat":99},{"version":"6900a443e61bd1897ccb1a43386e4fb8d4660ad4888fa9a9278a72477c8dfc75","impliedFormat":99},{"version":"bb44e98661c25ea6f6ee92346edcfbb3504e00ca9fd436beb72facd4a062520b","impliedFormat":99},{"version":"da4bc992bbb3303d8720d44cbc6d643c17466d7559330e93d099cec5739dc8be","impliedFormat":99},{"version":"4b485788895abbc0df9306158264ace6ae38341fc86a589c6a17e6fb855f791a","impliedFormat":99},{"version":"c74fdef8b4a054fcb6f07e9be62bfd2b8282f43e55364e863dc35f85dd86c7f6","impliedFormat":99},{"version":"5da1fa8f6563e2ec8a9da306737d0def5c31fe4e0280f619e8d0cb4769ec39fa","impliedFormat":99},{"version":"6cac8f6f7e510734cd6dd6c04f9ca202862c4c7dd411c0fb078bc4d536ac3316","impliedFormat":99},{"version":"e410fea2e78ef9350ccabc72f799434725339aa46e65cb698e8fc6bd7316171c","impliedFormat":99},{"version":"44acfecb51f73de1a1642f55764bd6657b63352a52a28f350a9348d723eb66d0","impliedFormat":99},{"version":"08a4727da6b80174e159a2a60584dcaa41063fc70a8ee1f4cb1c0420b566c85f","impliedFormat":99},{"version":"e87c730e14c2e0e2ab1267cb1423dbce2dcb1f6c2aef1ec00077caef0ab03885","impliedFormat":99},{"version":"6aaec30a53d7a048a973fc039cbc6c3437dc8872fb4d424216a7c2d3ef89236a","impliedFormat":99},{"version":"b330d431f0665d687976e1ddcd90f038d4a2eac29fc4e1926b2bfca1bb1106ba","impliedFormat":99},{"version":"a9e2a0b109f15781c63df0341fbe3585ddc42cb37f3a4b7987a368f30b12eb7e","impliedFormat":99},{"version":"76bf6e3f9e31d7cb4e709d2c59dd03ff2706dcd33c8d0b2348b7692553eb211a","impliedFormat":99},{"version":"4fd644356e27b7b37dfef0560227446a3ff5e1abedd75c6777575a4e18ea9886","impliedFormat":99},{"version":"d647318175202d949ef760df6746e8ec294c9da30c2fdd903538ea41831e18bb","impliedFormat":99},{"version":"3c071e82e52c266108e863b7f39e8cf431997a9379d37a00b6c52bc56fa322bf","impliedFormat":99},{"version":"8d4cff6bf1958eb7e55beb4dfac0f94723db53f31e00e44206d7fc6d331ed4bf","impliedFormat":99},{"version":"7d4ebc5bb3ead1c889119d959720c5a8f6c4ede7964f034247717bf9f707fc6c","impliedFormat":99},{"version":"fd92e032c87cfe8772dc972c8e86815634145c627650fc975b3aeb2f8371ae1a","impliedFormat":99},{"version":"d4f233b73f0e9fbeec7084fdbffcf65807f2176d8f13f81c6821e6b8e795e591","impliedFormat":99},{"version":"de2ced830f260c9a8ac12580185d051e454a2e0ba7c1a1d12092d24c85dfca99","impliedFormat":99},{"version":"b2215e3b74ad570ff7d331ca96b86f7aadd836ce84b7ecdca6e7f8989a36e495","affectsGlobalScope":true,"impliedFormat":99},{"version":"fa707a9c97f9067b71fa9703bc5c17842d5506b1f8a076673b281dd3624caf5e","impliedFormat":99},{"version":"b69af0b9d47f1f28736426c71600dd98df9d95a2c48bbf6fb6e0d6c344331aa7","impliedFormat":99},{"version":"c848c34db3f41f8fc19afaed7050dd931fbf0c04ee36396aaebf55b354140f28","impliedFormat":99},{"version":"ac8ab6f48ee7546b6ce36554e0ba4705db7a34999a1863afcfc1146ac5504c8b","impliedFormat":99},{"version":"f113a32c9d5ac1e99a4f2c16b48ded684200827a715d5230ef6d3f74d11d90d3","impliedFormat":99},{"version":"d2f49bdc2c30d4128f8eb3779cbab8555688f502d777e7aa770521c17a20f012","impliedFormat":99},{"version":"0ac8cde0a76a85a64afbd06220f0e7243143b6f97fd02e3703e4e5f115827f4a","impliedFormat":99},{"version":"f3a2504d3819f965556bc38846e7f3a6694c99536d29fa85bf509c470c23b054","impliedFormat":99},{"version":"1157825be0c66009aa06f72d1155412907e4a9c900ec57378d8a2b99d9822eb1","impliedFormat":99},{"version":"3f8853cb0ca1b2ef04b8ba9abe877e5296182921df78564dd088dae4d94fbf87","impliedFormat":99},{"version":"88e45ccf4a878afb5eec002634bcc839afaeaa4a107a934783fbe0cf3428b29f","impliedFormat":99},{"version":"03cddb112be2408479eb86ef051bc3077f0fff61c8325d448fdaa1bb2a933afc","impliedFormat":99},{"version":"dce97e90ae54da07de8e22f3c1f056930f1fe1f62574a0c44ac9fcf36a4b113f","impliedFormat":99},{"version":"2ecc18c0925f105839c9575174bd115de8ae221400f9226c6d16636074503ccc","impliedFormat":99},{"version":"81af7763b7da02201cc6353f109302ee0734a743bd8b51bbb81d531f67c7b1a8","impliedFormat":99},{"version":"adee2721a6efbdf8c1a94dd88fedff26c8f68542c90aef586701ea85faaf289c","impliedFormat":99},{"version":"9a2311e2dafa6dd39202beacac311afdea3b97955f61c6da588c2e2c467e3958","impliedFormat":99},{"version":"6064d65b759c162474d210d162bb3d692461ec3cf9b15b0533eba363fbaeff4c","impliedFormat":99},{"version":"4dc828da97272b2a097ca12390e4667684186e10b8c4d190e315bbb16b757370","impliedFormat":99},{"version":"5bcdbab7d41b26553b6816bbe345e62d196b86c4767319628b23066fecdd0649","impliedFormat":99},{"version":"189cb140333f8d0f55b7ea413ebd7883d5f7c000141a448236cff614b58791e1","impliedFormat":99},{"version":"0795c3ba4448c975fd15080fe25c1182bdd06335a45cc6cee5d4f5bee515e372","impliedFormat":99},{"version":"b828f12307f9e131f88a78b20bba16a5354867feddf833f1b4aacff9e2db2154","impliedFormat":99},{"version":"48a5c610813b479eeb017971df7be6fd15ca5379f615f52851a68460b98650a6","impliedFormat":99},{"version":"cfc2a308ebb344b24d301c03457d0f4869e46f0b0e9cd1176c61d9be34d75e93","impliedFormat":99},{"version":"049ac85a1e2b79ace360ccd958e755dcc5874c853fb09f52294b3364d591c0cc","impliedFormat":99},{"version":"d9bc55a2f639eea087b6adba545300abb7b58247116d822eae24f6d74a1cc355","impliedFormat":99},{"version":"1d9baf3d314d5be76c54eaae583d18fdb499a5a966cf066d7e8f6eb9376c572e","impliedFormat":99},{"version":"bca2f670d793642ce18258334684f34aa4b84bc4cf52325bb651835c21d99d6d","impliedFormat":99},{"version":"83bfde29f3b78bac7fff7d943f577d47444388ca5f9dae6dd8f504e49132b770","impliedFormat":99},{"version":"01327dae9e725a2fd9a308ca32dca599254b37dc3a1b5b71ef8e0b2b14927d28","impliedFormat":99},{"version":"424adafff57bd9f110f6635c5f6a42cc43ac3150e621debedfc3f3187f967ffa","impliedFormat":99},{"version":"47a949057ed8775bc7ec8919e3f4115c1e2a555a79272bc957f7772fec9a38ad","impliedFormat":99},{"version":"e2337f0551cd11d08decc124f4b28dd6dc5a8e4910ea920a91bf9411750f003b","impliedFormat":99},{"version":"e7864832096634471ba01d71109322420c67ccfbe482215121e2d09da1e5915c","impliedFormat":99},{"version":"8651d5583b89d6e576f833e757208ddd61756ae72e64d00d6a5461e1393c8d4f","impliedFormat":99},{"version":"b264444b2f681f12b5f4ea3ca1a0bd963adae2e42b46ff254320959f8d4853c8","impliedFormat":99},{"version":"4c59e011c4efbdd0152aa607cffcd939286c1e6c1f0ba82a81e84c5ae3cd0757","impliedFormat":99},{"version":"d5639b87f2232c72854b4174d37c229c44f720a674459de99e3bbe9f17fbad7a","impliedFormat":99},{"version":"405297c5b74d0b842724cf377b81de41c0b9a601c32f206dee87ac2f9b9952b4","impliedFormat":99},{"version":"f875ceb6be57175e868c55f7f3998e978383f53844dcc660f7838c0f67bf519d","impliedFormat":99},{"version":"32e57db1f539bccd1e30a65fb50387bab67d4972271c64d5c61dee736df8a700","impliedFormat":99},{"version":"68468557ebde838fecec31aa2457d6cee75eda97943388ddbe4e3413ee5f7486","impliedFormat":99},{"version":"80e6eaf60beb1b36a9073dc9a7ea9a46e94f230b15100cac7506596763081239","impliedFormat":99},{"version":"8b365436ce6a3b8cbe7f786729c84429c95007e0f1ef9e4179231bb9fffb1ead","impliedFormat":99},{"version":"bc3f369174b0288ec2a934fca29e6de081b33a96767e882ccfecd3934fb1d5d8","impliedFormat":99},{"version":"754328fd3c895d2662231b7ca59b0a38e38cfe535fcd060060bea0d01da1ca03","impliedFormat":99},{"version":"60a148125ed2ee76f8439fce0065d40d86ed2649960af1bf23b04e7fb9b07f3d","impliedFormat":99},{"version":"a277aecbfb4ef0646965394afc11be0b4a0c471c74d67ce9f0ec649928bb307e","impliedFormat":99},{"version":"d748112c20e73bc38bbec3da99dd7add03bd506fe9ef49c6419b93154edde1e2","impliedFormat":99},{"version":"68bbc063cf9b2c559bac6aa6984a411694893576ac8a684bcfcb43c69297f25c","impliedFormat":99},{"version":"afa650e8abbf2e2b24e15441c577d974997a61108b0952cf1db96a102c742df5","impliedFormat":99},{"version":"4399cca32d3793fcf237cdbad76c5702671ad26afecbc029ffb8054e8ca24335","impliedFormat":99},{"version":"e62cdcee52aedee591289dfec217eb1e3d2ed6aeffbeeabe6248c6eeef77e542","impliedFormat":99},{"version":"7e9b73c06a1d2091aa4eb2f98942a58c5aa73666fb4f79e55d797948fde509fd","impliedFormat":99},{"version":"f9844b9991cdd5684573f40fca34c15abed9b61286ce8757b7f89305db80cb5a","impliedFormat":99},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"3495402e1ebc1aaa4549bb58b1b0d8676bd5267a3392cea990220102f99a8506","impliedFormat":99},{"version":"b9e0783285db8fca77f8c20df30b66b201f914bacbfe472b86dcacdba555f360","impliedFormat":99},{"version":"3d21b5209a77dbc6d7010a3e401a1e83e4e7ad651067e4ec949d8d0c2c031d68","impliedFormat":99},{"version":"063ac7ddf1eab0e40841d481837cfee3551cd5c41e5fdd8a0a6652b535111644","impliedFormat":99},{"version":"7eda3321ba012ab61f565cce7627f0241e4f34fefcb50f3d8c1692287a8dd106","impliedFormat":99},{"version":"b5a263f298c34058a311a61008af8e9e6cd74db1e2d763fb2a5128bb5b4d44da","impliedFormat":99},{"version":"cd2208a59f674f506f6cc64d6cc28418ef6f0717f964b446ecbbc7d809638fb7","impliedFormat":99},{"version":"7ae48a41eb14b67618693cd9a9565c932c5685be8ce991372190894ea2ebcd48","impliedFormat":99},{"version":"19b03fdb67fe2049f12cc11c28a5b9d9a0fcc46e94b0a604d5a70cc37a2621ec","impliedFormat":99},{"version":"84845e0214b473a71c62ed983a0bbb0f0799a407e4ac864d7b81aee793594148","signature":"ec02eb42b5abd9a256cb27b50867d556a680b0f96686fe51bd6a19ffa2d2f3cd","impliedFormat":99},{"version":"e5ec7af9c889b6741a10e19533578edd0fb43be0a720d9e6a9afe4edaa05c5f9","signature":"92bfa0e3ab39613e68e4b4631dba4beaa1e2b46b6d3dc70621c6f57f9762d04d","impliedFormat":99},{"version":"c834b18f2566fd297c640b3e6cc09e3b4d7f136d4fa6dcba5bbdf4f43cd2ba6d","signature":"38006ceb4fdac5e2a1780c011b74988514b93523f05dfc06e71b0eaaad71e088","impliedFormat":99},{"version":"ea8a19f6870d6db123a1c1f73aeb42072cce415ee1ec1bd1d36c397e300de300","signature":"f290cd2e1d1faf96a8a0c76ba5d5d1de99a38570f215406b9b6d2978e16a5d19","impliedFormat":99},{"version":"836611f8ac2dab5b63027ad264b58de24c79f8cdd9debfa8348ab4ef0a360956","signature":"fa04fbc8d6b2a3ff48fd1468bad03b64ed4cee1d06abea2ab93d493183d7f6b0","impliedFormat":99},{"version":"26f645954d730899ca76ae9984d77dfcd71e17378df2d6c92027c664f039cc4e","signature":"eb54c7cb2ff142e149b73659c61292ebaca288aeeca39b345f46195894517535","impliedFormat":99},{"version":"d1b113a0ddccfa9ed6e56e684a3535b03628189e8b0cf21070694029dbfb6930","signature":"e57aa2100491dd22692a827553b9a8daee0cc16e567bd265b8c9339d093d0169","impliedFormat":99},{"version":"8e19497c303a7303de968afc1795abf77aa861fe8697635edadfe6112128c3bf","signature":"4efa8801971e1fc6d37888e4cdb6ba1fcdd3afc3675c9acd5d733d726f54670b","impliedFormat":99},{"version":"5ab439d95c7b0578f50754b326a4b19d10463b176338012f12913a702cbbd76e","signature":"71ce7479ccb19107d8ffa6e242bf85eb88ec98d823f7d0a03367337171571f0f","impliedFormat":99},{"version":"79505dc347a2fb2f354711e44f91dac706942a0a5cff2d1ce1de3dcfa20ee7ba","signature":"db25ca04fff57234bdc9bd4f703573120399dc3ec14e7107722224604fc41a94","impliedFormat":99},{"version":"45dd8c90527470d208dd93eed619d7de8ce2fecbb911f29715ffcffbe8b139b1","signature":"66227d249e53a54e76a5df8e765bc7fd6356a78115289e2fb03d694e4b757427","impliedFormat":99},{"version":"f112cc8bbb552e5bb1c3197a719950108055e97a26508badda10e139bc4de908","signature":"c4abdbaf603e88980dbaaae11e3a29ebb886c74e8e0307f9b262ff5627f57ea4","impliedFormat":99},{"version":"0dae29e27c35fb47025834fb9fdb23e7163f1561ce2c514024006392a819bc26","signature":"5d04cd90f81f0f2b88cc3b6c3484722f2a6bda19c0f3d311f3e4f846c9a67570","impliedFormat":99},{"version":"aaffeac20eb7671b9e7a8554e2eaf48321c7e729648cc62285e7bf5c2b04dff5","signature":"bab66c367004199c8b01be378e796d2e1259c361c8b5c870af29738fbef9fc15","impliedFormat":99},{"version":"0c66712c08396cdbaeef84ed3a9a9f852356c1c63abff257854216792a69e88b","impliedFormat":1},{"version":"ba31187e92081ac1c43ae4a27eab076e64b5375156317f088ba8ad6ebc46d7dc","signature":"4229da6684ddd4fed0d9127dde1088b725785561e6eb94152e67a8ba127dc225","impliedFormat":99},{"version":"8c1adafdd548933f72a289b37fd900e55074ac82821e2e442b219a13cfb1c189","signature":"5ccbe4dfea1a6302b700296e5d945a991b9856cdeab19c3297c3d9626f38e0fb","impliedFormat":99},{"version":"843de0a73618ec4a1df606529bf5bff337148399eb502db1ac1084354f3697fb","signature":"feb8d6d9933e968b1fcb6a9efd8297acc65a20b0548cddb4a556096bc8273ad0","impliedFormat":99},{"version":"6cd79aa50e6c01858de0b1af7f1dac16ea340d9f5c45f36ec3df84a46b17e0b7","signature":"67d57ff06463d730a1c49a7f98dda12e890345d341bc979c1248cb810fa2fa45","impliedFormat":99},{"version":"44289af95ccd692c2a6c1ed95b6969e5cc1ff25d92d88f6a6f3f6f11321ec5fa","signature":"aced5492073386b843ff436cfbf87448f579beb494c48ae4ce27d36e9e8a2f6a","impliedFormat":99},{"version":"37d457ed3501e91a40256387823644487fecde5b75563770b0bfbcf82fab76cf","signature":"f111c57c80e130f3458612036220deb67b77a07509c8abd42b59ccbe1fe4ed9f","impliedFormat":99},{"version":"5e2c7ad282c8e3a6520afa06bc36b069ab8323e3729e5b7a00f4e9174b845560","signature":"35e9a0ad03a8fe9d4af12cf3bc8caf7f75cef2bbae19407b66d18d979bd2c715","impliedFormat":99},{"version":"7747f4b6daf0968301794ba95e1242f5d195fb176592d1f43fc5a3926f0f7de8","impliedFormat":99},{"version":"80325593c750536d23b1c83831886b98becac60c12c16efe24dd7ea01ef2c37e","signature":"624b9514c5345cb5d1e022f48743063b06337225ffef1cb3c4c86c0d79fe31ab","impliedFormat":99},{"version":"4f7df2e11d0d3765191a7c3f4d539a687b79938eab3d06c324abe082f0e6c4b3","signature":"9f217ecff01620c6fe8bfe6077ab1bc8332e97e918d9e6cb01fc9b43929be7b0","impliedFormat":99},{"version":"a00616866147eb099c694bd4eefa66feec6519dde06b0800694fc7609da1e02f","signature":"3816dfed6f91967264cff6381686b84b7baabc9c7c05c0b826e347d578942ba3","impliedFormat":99},{"version":"9da6e5efdfc9289fe26bc97fe20d68bdc4bd63959b7171afe65f9895002834a0","signature":"6452e00a83c883b5d324c2a925c93c17512c3bff3b604212f02fff5b3d177ed4","impliedFormat":99},{"version":"dd111cec2db8199513249bb6b8e82ab7aa0cf857535dfb972880dba1d3ab8048","signature":"39afc8500111da24b7fb7499f462d559faaa3d75059f1a1c8df6e9299e8ac442","impliedFormat":99},{"version":"741fe7fa56314c1668de4b4ad95b39ef794c353287d01dd72d04de08303aa0e2","signature":"980e0365b04ba289cabbac44e993ce8146e3b79fa7da7c6f096d997c29ee72ed","impliedFormat":99},{"version":"9d756da03d2656d745240b3410dd58446c65d149183144a6c8cc4c406e3d80fe","signature":"5fc5d3a8d34f58280d345440f450a474471b96ef4960064e5673c168c1608e29","impliedFormat":99},{"version":"60f96fb0fb68d37da5ea6679184874cc01df96288128eef945eeb8240333f5af","signature":"d826031c37b38f7441741badc333b96bd042f4159d1e513cae909a50c02aa26f","impliedFormat":99},{"version":"99e905943a2825f2a4689c923ba93f75c3a1d58e71932c1676aa4944f0a5abe2","signature":"6c4b71b30fac6420b71c95a4f3ab1cec02b5f0c232a7f0512ee4fbd8e51ec245","impliedFormat":99},{"version":"c458de9dbc7d01c20858a10b34763a0831cffa63ecbda85aaae2b969ad7f2474","signature":"49588e15ac49278db55f3b8b1c8306905bd0f7654e2ead3b386c74bad4d5221a","impliedFormat":99},{"version":"9e454b61ffc65d85d758efe9e20e57295f047b21a206a5d096e53597adcd911f","signature":"df6d04d3e67b901f13f687b39280a814b2a88e4124a260a13838fac07e9da02e","impliedFormat":99},{"version":"c700d87bd7c2d4f65628a76e146c630ca4b69166578b33dec93a8754dccff1fd","signature":"14b553bf7bb16f14eb3491f0ef8f9604f28b81f8419f1e9af5d6c79fabf34a27","impliedFormat":99},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"9bdf90cb3e1ecc98cffaf1a6c22eb6308e714f3ceea50dcc5f6d47c2196b8f8e","signature":"52db7aa60436291fa6b422bdd490acaa4352d329fb3c2b41a1227e7a09b0b085","impliedFormat":99},{"version":"39d918e5e6e20d2553799fd5f3e8a0431261cb8e7c4686aced5e9346dba2ff7f","signature":"3c9bbfdf9ae0f4f7822f7bacb45d80328cf463770dc313c05188d11713a71ff9","impliedFormat":99},{"version":"6943a27fc40c4e39cd704b26f3955fc74ee348c8e39ad115b4a69cbc9748803d","signature":"75fda49bde307f1186219f2597397c696da11a6823baa04f781a76bdaf052024","impliedFormat":99},{"version":"c8789ec5946a385da5018611b636879588a37dd5994f59e789bae3d308bdbca2","signature":"e8b93943974013c87f3e70e4935438b00f976c46adf2cace604cef9132e2e64e","impliedFormat":99},{"version":"c2c54ddc217e7a8890f89a9f10a837c4a0b38ad07f77d9a7f3ac3b880f6e078c","signature":"173a0fe87af8a8c3b802279b8cb314914232d39e787db9d93fd7ee75c78df034","impliedFormat":99},{"version":"d1e9031cfefebb12d6672ef7d85faf2c5a23472f5b5be1909358db426fe82eef","impliedFormat":1},{"version":"cd15492d25fd5856070ea908f54d1af5ebc15cbae65dc56dd4e45b059f14a9d1","impliedFormat":1},{"version":"c8e93c330c6dee62d573dfe67211a2040ff7b737dd11a0a87cc43d74e60c4cc0","impliedFormat":1},{"version":"185367038d4aec329c2d1f39d5fb00cee01db99d098631dea9cb453c03c626c1","impliedFormat":1},{"version":"c50b22d805d8ca84b50dd11356dbdcf8457d1ca782c62d1578c36f83b7e17a9a","impliedFormat":1},{"version":"74578a765068c896816af87f99cc6f1e3952b3e187078afefdd56d3ca89e496d","impliedFormat":1},{"version":"9ba1022a32b054bfdefa44c1461685b53afe27395a81f81152eaf9247e0d9830","impliedFormat":1},{"version":"4a7c3d9fdfe24025098b326a4b7fe8fc5c4aa2ed11fb991b0d16f07db6bf6b04","signature":"744a8b01953a63135589db972b08f89fc94823433f68be286daf888287099557","impliedFormat":99},{"version":"a68b4c6f13d757bb6377eace3da07ee91dc5e2a78b37f98cafe98569f01832ad","signature":"3a7de8fb017ffc7c82d6522d45d91bd6b2e785a81178438643f48a7e8b8d1b43","impliedFormat":99},{"version":"4c359a85e608926740e86b22f6b9a972989ecafc491a57e7e0f0ce2d8d5606a3","signature":"13873d0d95017233b2946deccabd38081a17fb975d4e8e383d5f172a0c36bd23","impliedFormat":99},{"version":"ea8867477730534868b1a2ccd069cd7fa11715ab761da0f16f34ce377828a59d","signature":"6acb22c1c6cf48167cfd6c1f675442e659af82f60c27311d6871b85a51ccf81e","impliedFormat":99},{"version":"e2853bba551ad4ef1c570186edf3808614a5a4d20ded15d2f9f23604556287c5","signature":"08ff5495a8ff234eaf102563db785c9a30a6d0411eb823cb3b385fddaed4838b","impliedFormat":99},{"version":"9b6ac4958b879dd4870c623a20f2e410f6d920d9cd625f4807f71ca609e76dd9","signature":"c5dfb6ac0bc5ff30b6a97636526fc31adbe587f9480519ebfce979db1d2979d2","impliedFormat":99},{"version":"84ebba52dc2f2827c4b9364a272d4153e0ad6b0790fbd96de4e6ead5f5136923","impliedFormat":99},{"version":"0ad523e60ff15d88c88ab43ec59c18e49593e1d6bf1b4f2feacd35e170d97281","affectsGlobalScope":true,"impliedFormat":99},"a88e687f7ffb0239b7b23c24c2a2c8df034ae5ecbf5772cc629c17fe745aaf94","7e54587826057a5f9fbdd393dd44dc3509cd18ea5621b421ce1eed996214f703"],"root":[[71,73],243,285,286,[288,296],573,575,703,704,706,768,[771,776],[798,804],806,[808,810],812,[830,832],837,839,841,842,851,880,882,885,922,924,929,931,932,939,940,947,948,[950,954],[963,966],1012,1013,1024,1027,1029,1030,[1034,1036],1090,[1092,1097],[1137,1141],[1143,1148],1150,1151,1153,1154,[1172,1177],1265,[1371,1388],1390,[1392,1397],1399,1402,1404,[1407,1412],1416,[1418,1424],[1467,1470],[1472,1479],[1744,1757],[1759,1765],[1767,1778],[1819,1823],[1831,1840]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"newLine":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"../esm","preserveConstEnums":true,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictFunctionTypes":true,"strictNullChecks":false,"target":11},"referencedMap":[[1369,1],[1366,2],[1370,3],[1302,4],[1301,4],[1368,5],[1367,4],[1299,6],[1275,7],[1273,4],[1276,8],[1281,9],[1270,10],[1279,11],[1284,12],[1300,13],[1266,4],[1286,14],[1285,4],[1268,4],[1274,15],[1271,16],[1269,17],[1278,18],[1267,4],[1277,19],[1272,20],[1293,21],[1290,22],[1295,23],[1282,24],[1292,25],[1294,26],[1283,27],[1296,28],[1298,29],[1289,30],[1287,31],[1288,32],[1291,33],[1297,27],[1280,4],[1365,34],[1194,4],[1195,4],[1196,35],[1178,4],[1179,4],[1180,36],[1204,37],[1205,4],[1206,4],[1209,38],[1203,4],[1208,39],[1207,4],[1188,40],[1189,4],[1190,4],[1193,41],[1187,4],[1192,42],[1191,4],[1251,43],[1252,43],[1248,44],[1253,45],[1245,46],[1250,47],[1249,44],[1246,48],[1247,49],[1682,50],[1683,50],[1679,51],[1684,52],[1676,53],[1681,54],[1680,51],[1677,55],[1678,56],[1254,57],[1259,58],[1260,59],[1258,43],[1210,4],[1211,4],[1257,60],[1256,61],[1255,62],[1262,63],[1263,64],[1261,4],[1222,65],[1223,66],[1224,66],[1244,67],[1216,68],[1217,66],[1225,69],[1242,70],[1241,71],[1239,72],[1227,73],[1236,70],[1228,73],[1238,73],[1219,74],[1230,73],[1240,73],[1231,70],[1220,73],[1234,75],[1229,73],[1232,73],[1233,73],[1237,70],[1235,73],[1221,73],[1226,66],[1243,4],[1653,76],[1654,77],[1655,77],[1675,78],[1648,79],[1649,77],[1656,80],[1673,81],[1672,82],[1670,83],[1658,84],[1667,81],[1659,84],[1669,84],[1650,85],[1661,84],[1671,84],[1662,81],[1651,84],[1665,86],[1660,84],[1663,84],[1664,84],[1668,81],[1666,84],[1652,84],[1657,77],[1674,4],[1215,87],[1213,88],[1212,4],[1214,88],[1647,89],[1645,90],[1644,4],[1646,90],[1197,91],[1198,92],[1199,92],[1200,4],[1202,93],[1201,4],[1181,94],[1182,95],[1183,95],[1184,4],[1186,96],[1185,4],[1729,4],[1687,4],[1718,97],[1717,98],[1705,99],[1704,100],[1707,101],[1706,100],[1716,102],[1715,103],[1720,104],[1719,100],[1689,105],[1708,4],[1691,106],[1703,107],[1702,103],[1701,108],[1700,4],[1699,103],[1694,109],[1693,103],[1692,110],[1696,111],[1695,98],[1714,112],[1713,113],[1698,114],[1697,98],[1710,115],[1709,116],[1690,117],[1712,118],[1711,119],[1686,119],[1726,120],[1721,103],[1723,121],[1722,103],[1725,122],[1724,100],[1481,4],[1728,123],[1727,98],[1638,124],[1731,125],[1642,126],[1688,4],[1480,4],[1639,4],[1643,127],[1637,128],[1636,129],[1685,130],[1730,124],[1641,131],[1218,4],[1640,4],[1504,132],[1483,132],[1539,4],[1519,4],[1550,4],[1482,4],[1530,133],[1531,134],[1497,135],[1484,4],[1493,4],[1494,136],[1495,4],[1496,137],[1492,138],[1485,4],[1489,4],[1514,138],[1579,139],[1512,140],[1500,141],[1526,142],[1502,4],[1507,4],[1503,143],[1498,138],[1499,144],[1501,144],[1505,4],[1506,4],[1529,145],[1518,146],[1516,4],[1517,147],[1532,148],[1528,149],[1545,150],[1540,151],[1548,152],[1549,153],[1576,4],[1520,154],[1536,4],[1525,155],[1585,4],[1522,138],[1613,156],[1523,157],[1560,158],[1559,4],[1566,159],[1565,4],[1568,160],[1567,4],[1570,161],[1569,4],[1562,162],[1561,4],[1564,163],[1563,163],[1614,164],[1574,165],[1586,166],[1587,167],[1615,168],[1491,169],[1488,170],[1487,4],[1538,171],[1551,172],[1573,4],[1554,173],[1558,4],[1524,174],[1541,175],[1553,176],[1580,177],[1583,178],[1543,179],[1581,180],[1546,175],[1547,181],[1584,180],[1577,182],[1578,4],[1555,183],[1527,4],[1508,4],[1542,184],[1544,4],[1534,4],[1582,4],[1610,185],[1557,186],[1537,138],[1511,187],[1510,4],[1611,188],[1509,4],[1612,189],[1515,190],[1513,4],[1486,4],[1552,191],[1575,192],[1490,4],[1572,193],[1521,4],[1556,194],[1571,4],[1533,4],[1535,195],[1633,196],[1608,4],[1609,197],[1599,197],[1598,198],[1590,198],[1589,198],[1588,197],[1600,199],[1624,200],[1623,201],[1627,202],[1626,203],[1628,197],[1607,204],[1604,205],[1631,206],[1629,197],[1625,207],[1632,197],[1621,208],[1620,209],[1622,197],[1635,210],[1591,211],[1601,197],[1634,4],[1592,197],[1593,197],[1605,197],[1594,197],[1602,212],[1630,4],[1606,197],[1595,197],[1603,197],[1596,197],[1597,197],[1617,213],[1616,214],[1618,215],[1619,216],[1264,217],[1033,4],[1125,218],[1124,219],[1123,4],[1122,220],[1134,220],[1103,221],[1104,220],[1106,222],[1107,4],[1108,223],[1109,220],[1110,224],[1111,224],[1112,224],[1115,225],[1116,225],[1117,224],[1118,224],[1119,224],[1120,224],[1132,220],[1121,224],[1128,226],[1133,227],[1127,228],[1126,220],[1131,224],[1113,4],[1114,229],[1129,225],[1130,224],[1102,230],[1135,220],[1152,4],[1740,231],[1736,232],[1743,233],[1737,234],[1741,235],[1739,236],[1732,4],[1766,237],[1738,230],[1735,238],[1734,239],[1733,240],[852,241],[916,242],[915,243],[911,244],[912,245],[910,246],[899,4],[919,247],[917,246],[921,248],[920,249],[918,250],[956,251],[955,246],[958,252],[957,253],[962,254],[961,255],[914,256],[913,246],[909,246],[959,257],[903,258],[896,259],[901,260],[893,261],[889,4],[900,262],[907,4],[908,263],[895,264],[904,4],[891,4],[902,265],[887,4],[897,266],[892,267],[890,268],[894,4],[898,4],[905,269],[888,4],[906,4],[1406,4],[1303,4],[1304,4],[1305,4],[1316,270],[1317,271],[1314,272],[1315,273],[1318,274],[1321,275],[1323,276],[1325,277],[1324,278],[1326,4],[1330,279],[1328,280],[1329,4],[1322,4],[1332,281],[1307,282],[1334,283],[1335,284],[1338,285],[1337,286],[1333,287],[1336,288],[1331,289],[1339,290],[1340,291],[1344,292],[1345,293],[1343,294],[1320,295],[1310,296],[1346,297],[1347,298],[1348,298],[1306,4],[1350,299],[1349,298],[1364,300],[1308,4],[1313,301],[1351,302],[1352,4],[1311,4],[1342,303],[1353,304],[1341,305],[1354,306],[1355,307],[1356,275],[1357,275],[1358,308],[1327,4],[1360,309],[1361,310],[1319,4],[1362,302],[1359,4],[1309,311],[1312,289],[1363,312],[884,313],[777,4],[732,4],[740,314],[746,315],[745,316],[734,317],[748,318],[735,319],[750,320],[744,321],[736,322],[741,323],[749,324],[747,325],[739,326],[738,327],[733,4],[743,328],[742,329],[737,4],[242,330],[1405,331],[835,332],[834,333],[574,4],[1426,334],[241,4],[1032,335],[1031,4],[342,336],[343,336],[344,337],[302,338],[345,339],[346,340],[347,341],[297,4],[300,342],[298,4],[299,4],[348,343],[349,344],[350,345],[351,346],[352,347],[353,348],[354,348],[356,4],[355,349],[357,350],[358,351],[359,352],[341,353],[301,4],[360,354],[361,355],[362,356],[395,357],[363,358],[364,359],[365,360],[366,361],[367,362],[368,363],[369,364],[370,365],[371,366],[372,367],[373,367],[374,368],[375,4],[376,4],[377,369],[379,370],[378,371],[380,17],[381,372],[382,373],[383,374],[384,375],[385,376],[386,377],[387,378],[388,379],[389,380],[390,381],[391,382],[392,383],[393,384],[394,385],[1142,4],[1824,4],[1803,386],[1804,387],[1779,388],[1782,388],[1801,386],[1802,386],[1792,386],[1791,389],[1789,386],[1784,386],[1797,386],[1795,386],[1799,386],[1783,386],[1796,386],[1800,386],[1785,386],[1786,386],[1798,386],[1780,386],[1787,386],[1788,386],[1790,386],[1794,386],[1805,390],[1793,386],[1781,386],[1818,391],[1817,4],[1812,390],[1814,392],[1813,390],[1806,390],[1807,390],[1809,390],[1811,390],[1815,392],[1816,392],[1808,392],[1810,392],[923,4],[836,4],[1425,4],[709,393],[710,394],[1011,395],[968,4],[970,396],[969,397],[974,398],[1009,399],[1006,400],[1008,401],[971,400],[972,402],[976,402],[975,403],[973,404],[1007,405],[1005,400],[1010,406],[1003,4],[1004,4],[977,407],[982,400],[984,400],[979,400],[980,407],[986,400],[987,408],[978,400],[983,400],[985,400],[981,400],[1001,409],[1000,400],[1002,410],[996,400],[998,400],[997,400],[993,400],[999,411],[994,400],[995,412],[988,400],[989,400],[990,400],[991,400],[992,400],[725,413],[720,4],[722,414],[727,415],[726,416],[723,417],[721,4],[724,418],[886,4],[1099,419],[1100,419],[1101,420],[1098,421],[960,4],[303,4],[1758,4],[769,4],[396,422],[397,423],[398,422],[399,424],[1413,4],[751,425],[731,4],[752,426],[827,427],[828,427],[822,428],[815,427],[816,428],[820,428],[821,429],[818,428],[819,428],[817,428],[829,430],[823,427],[826,427],[824,427],[825,427],[814,4],[1389,431],[400,4],[401,4],[402,4],[403,4],[404,4],[405,4],[406,4],[407,4],[408,4],[409,4],[410,4],[411,4],[412,4],[414,432],[415,4],[413,4],[416,4],[417,4],[418,4],[419,4],[420,4],[421,4],[422,4],[423,4],[424,4],[425,4],[426,4],[427,4],[428,4],[429,4],[430,4],[431,4],[432,4],[433,4],[434,4],[435,4],[436,4],[437,4],[438,4],[439,4],[440,4],[441,4],[442,4],[443,4],[444,4],[445,4],[446,4],[447,4],[448,4],[449,4],[450,4],[451,4],[452,4],[453,4],[454,4],[455,4],[456,4],[457,4],[458,4],[459,4],[460,4],[461,4],[462,4],[463,4],[464,4],[465,4],[466,4],[467,4],[468,4],[469,4],[470,4],[471,4],[472,4],[473,4],[474,4],[475,4],[476,4],[477,4],[478,4],[479,4],[480,4],[481,4],[482,4],[572,433],[483,4],[484,4],[485,4],[486,4],[487,4],[488,4],[489,4],[490,4],[491,4],[492,4],[493,4],[494,4],[495,4],[496,4],[497,4],[498,4],[499,4],[500,4],[501,4],[502,4],[503,4],[504,4],[505,4],[506,4],[507,4],[508,4],[509,4],[510,4],[511,4],[512,4],[513,4],[514,4],[515,4],[516,4],[517,4],[518,4],[519,4],[520,4],[521,4],[522,4],[523,4],[524,4],[525,4],[526,4],[527,4],[528,4],[529,4],[530,4],[531,4],[532,4],[533,4],[534,4],[535,4],[536,4],[537,4],[538,4],[539,4],[540,4],[541,4],[542,4],[543,4],[544,4],[545,4],[546,4],[547,4],[548,4],[549,4],[550,4],[551,4],[552,4],[553,4],[554,4],[555,4],[556,4],[557,4],[558,4],[559,4],[560,4],[561,4],[562,4],[563,4],[564,4],[565,4],[566,4],[567,4],[568,4],[569,4],[570,4],[571,4],[1742,4],[967,4],[1403,4],[1417,4],[705,4],[949,4],[794,434],[795,435],[1414,4],[718,436],[719,437],[728,438],[729,439],[730,440],[1020,4],[1014,4],[1023,441],[1019,442],[1026,443],[1022,444],[1018,445],[1017,4],[1015,4],[1016,4],[1021,4],[1025,4],[1091,4],[711,446],[712,446],[805,4],[941,4],[1136,447],[1105,4],[935,448],[933,4],[934,4],[938,449],[936,4],[937,4],[708,4],[1398,4],[840,4],[1415,450],[1439,451],[1438,452],[1437,453],[1464,454],[1444,455],[1445,455],[1446,455],[1447,455],[1448,455],[1449,455],[1450,456],[1452,455],[1451,455],[1463,457],[1453,455],[1455,455],[1454,455],[1457,455],[1456,455],[1458,455],[1459,455],[1460,455],[1461,455],[1462,455],[1443,455],[1442,458],[1391,4],[1436,4],[797,459],[796,4],[925,460],[926,460],[928,461],[927,460],[1149,4],[811,4],[1830,462],[1828,463],[1826,464],[1829,464],[1827,465],[1825,466],[577,467],[618,468],[595,469],[606,470],[593,471],[607,472],[616,473],[584,474],[585,475],[583,476],[615,421],[610,477],[614,478],[587,479],[603,480],[586,481],[613,482],[581,483],[582,477],[588,484],[589,4],[594,485],[592,484],[579,486],[617,487],[608,488],[598,489],[597,484],[599,490],[601,491],[596,492],[600,493],[611,421],[590,494],[591,495],[602,496],[580,472],[605,497],[604,484],[609,4],[578,4],[612,498],[701,499],[700,500],[628,501],[625,4],[629,502],[633,503],[622,504],[632,505],[639,506],[702,507],[576,4],[620,4],[627,508],[623,509],[621,17],[631,510],[619,511],[630,512],[624,513],[641,514],[663,515],[652,516],[642,517],[649,518],[640,519],[650,4],[648,520],[644,521],[645,522],[643,523],[651,524],[626,525],[659,526],[656,527],[657,528],[658,529],[660,530],[666,531],[670,532],[669,533],[667,527],[668,527],[661,534],[664,535],[662,536],[665,537],[654,538],[638,539],[653,540],[637,541],[636,542],[655,543],[635,544],[673,545],[671,527],[672,546],[674,527],[678,547],[676,548],[677,549],[679,550],[682,551],[681,552],[684,553],[683,554],[687,555],[685,556],[686,557],[680,558],[675,559],[688,558],[689,560],[699,561],[690,554],[691,527],[646,562],[647,563],[634,4],[692,564],[693,565],[696,566],[695,567],[697,568],[698,569],[694,570],[930,4],[766,571],[753,4],[754,4],[755,4],[756,4],[765,572],[757,4],[758,4],[759,4],[760,4],[761,4],[762,4],[763,4],[764,573],[943,574],[944,574],[945,574],[946,575],[942,4],[813,4],[879,576],[867,577],[845,4],[850,578],[873,4],[843,4],[868,4],[869,579],[870,4],[858,580],[860,581],[859,4],[874,582],[855,583],[856,584],[857,580],[861,585],[862,585],[863,580],[854,4],[853,584],[846,4],[844,4],[847,4],[871,4],[875,586],[876,4],[872,4],[877,587],[878,588],[849,589],[848,4],[865,586],[866,590],[864,4],[770,4],[838,4],[767,591],[1441,592],[1440,593],[1466,594],[1465,595],[807,4],[239,4],[240,596],[717,597],[715,598],[713,599],[714,600],[716,601],[779,602],[790,603],[789,603],[791,604],[792,605],[793,606],[788,607],[781,4],[780,4],[787,608],[782,609],[784,610],[785,611],[783,611],[786,612],[778,613],[833,4],[1471,4],[1028,4],[1433,614],[1432,4],[287,4],[883,313],[1401,615],[1400,4],[238,616],[209,617],[99,618],[205,4],[172,619],[142,620],[128,621],[206,4],[153,4],[163,4],[182,622],[76,4],[213,623],[215,624],[214,625],[165,626],[164,627],[167,628],[166,629],[126,4],[216,630],[220,631],[218,632],[80,633],[81,633],[82,4],[129,634],[179,635],[178,4],[191,636],[116,637],[185,4],[174,4],[233,638],[235,4],[102,639],[101,640],[194,641],[197,642],[86,643],[198,644],[112,645],[83,646],[88,647],[211,648],[148,649],[232,618],[204,650],[203,651],[90,652],[91,4],[115,653],[106,654],[107,655],[114,656],[105,657],[104,658],[113,659],[155,4],[92,4],[98,4],[93,4],[94,660],[96,661],[87,4],[146,4],[200,662],[147,648],[177,4],[169,4],[184,663],[183,664],[217,632],[221,665],[219,666],[79,667],[234,4],[171,639],[103,668],[189,669],[188,4],[143,670],[131,671],[132,4],[111,672],[175,673],[176,673],[118,674],[119,4],[127,4],[95,675],[77,4],[145,676],[109,4],[84,4],[100,618],[193,677],[236,678],[137,679],[149,680],[222,625],[224,681],[223,681],[140,682],[141,683],[110,4],[74,4],[152,4],[151,684],[196,644],[192,4],[230,684],[134,685],[117,686],[133,685],[135,687],[138,684],[85,641],[187,4],[228,688],[207,689],[161,690],[160,4],[156,691],[181,692],[157,691],[159,693],[158,694],[180,649],[210,695],[208,696],[130,697],[108,4],[136,698],[225,632],[227,665],[226,666],[229,699],[199,700],[190,4],[231,701],[173,702],[168,4],[186,703],[139,704],[170,705],[123,4],[154,4],[97,684],[237,4],[201,706],[202,4],[75,4],[150,684],[78,4],[144,707],[89,4],[122,4],[120,4],[121,4],[162,4],[212,684],[125,684],[195,618],[124,708],[69,4],[70,4],[12,4],[14,4],[13,4],[2,4],[15,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[22,4],[3,4],[23,4],[24,4],[4,4],[25,4],[29,4],[26,4],[27,4],[28,4],[30,4],[31,4],[32,4],[5,4],[33,4],[34,4],[35,4],[36,4],[6,4],[40,4],[37,4],[38,4],[39,4],[41,4],[7,4],[42,4],[47,4],[48,4],[43,4],[44,4],[45,4],[46,4],[8,4],[52,4],[49,4],[50,4],[51,4],[53,4],[9,4],[54,4],[55,4],[56,4],[58,4],[57,4],[59,4],[60,4],[10,4],[61,4],[62,4],[63,4],[11,4],[64,4],[65,4],[66,4],[67,4],[68,4],[1,4],[319,709],[329,710],[318,709],[339,711],[310,712],[309,476],[338,421],[332,713],[337,714],[312,715],[326,716],[311,717],[335,718],[307,719],[306,421],[336,720],[308,721],[313,722],[314,4],[317,722],[304,4],[340,467],[330,723],[321,724],[322,725],[324,726],[320,727],[323,728],[333,421],[315,729],[316,730],[325,731],[305,472],[328,723],[327,722],[331,4],[334,732],[707,468],[1435,733],[1431,4],[1434,734],[1171,735],[1156,4],[1157,4],[1158,4],[1159,4],[1155,4],[1160,736],[1161,4],[1163,737],[1162,736],[1164,736],[1165,737],[1166,736],[1167,4],[1168,736],[1169,4],[1170,4],[1428,738],[1427,334],[1430,739],[1429,740],[881,4],[277,741],[246,4],[264,742],[276,743],[275,744],[245,745],[284,746],[247,4],[265,747],[274,748],[251,749],[262,750],[269,751],[266,752],[249,753],[248,754],[261,755],[252,756],[268,757],[270,758],[271,759],[272,759],[273,760],[278,4],[244,4],[279,759],[280,761],[254,762],[255,762],[256,762],[263,763],[267,764],[253,765],[281,766],[282,767],[257,4],[250,768],[258,769],[259,770],[260,771],[283,750],[1052,772],[1077,4],[1089,773],[1076,774],[1078,774],[1051,775],[1053,776],[1054,777],[1055,4],[1079,774],[1080,774],[1057,778],[1081,774],[1082,774],[1058,230],[1059,774],[1060,779],[1063,780],[1064,230],[1065,781],[1066,775],[1067,782],[1056,777],[1068,774],[1083,774],[1084,783],[1085,774],[1086,774],[1062,784],[1069,776],[1061,777],[1070,774],[1071,781],[1072,774],[1073,781],[1074,785],[1075,786],[1087,774],[1088,786],[1050,787],[1042,788],[1049,789],[1044,4],[1045,4],[1043,790],[1046,791],[1037,4],[1038,4],[1039,787],[1041,792],[1047,4],[1048,793],[1040,794],[1752,795],[771,796],[1371,797],[922,798],[1147,799],[1384,800],[1265,801],[1754,802],[1755,803],[1381,804],[1756,805],[776,4],[842,4],[801,806],[1757,807],[1751,808],[292,809],[1424,810],[1478,811],[1474,812],[1144,813],[1475,814],[703,815],[1753,816],[1759,817],[285,818],[1760,819],[931,820],[1396,821],[1394,4],[1393,4],[1097,822],[73,823],[1477,824],[1761,825],[804,826],[573,827],[1762,828],[706,798],[1763,4],[830,829],[1140,830],[841,831],[1412,832],[1382,833],[1027,834],[1395,835],[243,836],[1399,837],[1423,838],[1094,839],[1141,840],[775,841],[1372,842],[1408,843],[965,844],[799,845],[810,846],[1470,847],[800,848],[1030,849],[1747,850],[1748,851],[1150,852],[1139,853],[948,854],[1378,855],[963,856],[806,857],[929,858],[851,4],[1420,859],[1153,860],[1092,861],[1746,862],[1390,863],[295,4],[837,864],[296,865],[812,866],[1137,867],[1402,868],[288,869],[1836,870],[1410,871],[575,872],[1034,873],[939,874],[1151,875],[1750,876],[1418,877],[966,878],[932,879],[1764,880],[71,4],[1385,881],[1379,882],[290,883],[1143,884],[1374,885],[1765,886],[1467,887],[1416,888],[1744,889],[1745,890],[1767,891],[1409,818],[1768,892],[1411,893],[1749,894],[1392,895],[1422,896],[798,897],[294,810],[1769,898],[953,899],[1035,900],[1770,901],[1421,902],[1383,903],[1377,904],[1375,905],[1373,906],[1376,907],[1837,4],[947,908],[1012,909],[1469,910],[1419,911],[1771,912],[802,913],[880,914],[1772,4],[839,915],[1773,818],[293,4],[773,916],[1479,4],[1397,917],[1138,918],[1775,919],[1776,920],[1036,921],[768,922],[1839,4],[1476,4],[964,923],[1473,924],[808,925],[1831,926],[1013,927],[1840,4],[1777,928],[1778,929],[1093,930],[1819,388],[1835,931],[952,932],[1834,933],[924,934],[1833,935],[1096,4],[1145,936],[1146,4],[1388,937],[1468,938],[1472,939],[1820,940],[1823,941],[1774,4],[1024,942],[772,943],[885,944],[940,945],[1029,946],[1095,947],[831,948],[1832,949],[704,950],[1407,951],[832,4],[72,4],[1838,4],[286,909],[951,952],[954,953],[774,863],[291,954],[1387,955],[1386,956],[1177,957],[1172,958],[1174,959],[1176,960],[1175,961],[1173,962],[1154,4],[803,963],[1148,964],[1380,965],[809,966],[1821,967],[1822,968],[882,969],[1404,970],[289,971],[950,972],[1090,973]],"latestChangedDtsFile":"../esm/index.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/agent.d.ts b/packages/core/.tshy-build/browser/agent.d.ts new file mode 100644 index 0000000000..c41814e00f --- /dev/null +++ b/packages/core/.tshy-build/browser/agent.d.ts @@ -0,0 +1,54 @@ +import type { GenerationOptions } from "./generation.js"; +import type { TraceOptions } from "./trace.js"; +import type { ChatGenerationContext, WorkspaceFileCache } from "./types.js"; +export type AgentMemoryCacheKey = { + agent: string; + query: string; +}; +export type AgentMemoryCacheValue = AgentMemoryCacheKey & { + answer: string; + createdAt: number; +}; +export type AgentMemoryCache = WorkspaceFileCache; +export declare function agentCreateCache(options: Pick & { + lookupOnly?: boolean; +}): AgentMemoryCache; +/** + * Queries the agent's memory to retrieve contextual information relevant to a given query. + * Pre-processes memory using a lightweight model and utilizes it as the sole source of information. + * + * - If the query is empty or no memories exist, returns undefined. + * - Executes a prompt-based query on memory to extract useful details. + * - Response excludes fabricated information and adheres to concise formatting. + * - Returns the textual memory answer or an empty string if no relevant match is found. + * + * @param ctx - The chat generation context responsible for executing prompt-based memory queries. + * @param query - Input query for which relevant memory details are retrieved. + * @param options - Generation and tracing options performing user state management and result tracing. + * @returns Memory answer or undefined if no relevant memories are retrieved. + */ +export declare function agentQueryMemory(cache: AgentMemoryCache, ctx: ChatGenerationContext, query: string): Promise; +/** + * Adds a memory entry for a given agent and query. Stores the query, agent, + * and corresponding text/answer into a memory cache. Updates the trace with + * details of the memory entry for auditing purposes. + * + * @param agent - Identifier for the agent associated with the memory. + * @param query - The query or context associated with the memory entry. + * @param text - The response or answer to be stored in association with the query. + * @param options - Configuration options, including user state and tracing details. + */ +export declare function agentAddMemory(cache: AgentMemoryCache, agent: string, query: string, text: string, options: Required): Promise; +/** + * Traces the agent memory and logs the details in a structured format. + * + * Initiates a trace section for agent memory, retrieves stored memory entries, + * and iterates over them in reverse order. For each memory entry, logs the agent, + * corresponding query, and the associated answer in a fenced Markdown format. + * Closes the trace section after processing all entries. + * + * Requires memory loading functionality and tracing options. Useful for debugging + * or visualizing the memory contents in a readable format. + */ +export declare function traceAgentMemory(options: Pick & Required): Promise; +//# sourceMappingURL=agent.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/agent.d.ts.map b/packages/core/.tshy-build/browser/agent.d.ts.map new file mode 100644 index 0000000000..100307c9c5 --- /dev/null +++ b/packages/core/.tshy-build/browser/agent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EACV,qBAAqB,EAErB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAKpB,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAE9F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE,gBAAgB,CAOlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,MAAM,mBAiCd;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,iBAgBhC;AAQD;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,iBAyBvE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/agent.js b/packages/core/.tshy-build/browser/agent.js new file mode 100644 index 0000000000..cfb16a0590 --- /dev/null +++ b/packages/core/.tshy-build/browser/agent.js @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createCache } from "./cache.js"; +import { AGENT_MEMORY_CACHE_NAME, AGENT_MEMORY_FLEX_TOKENS, TOKEN_NO_ANSWER } from "./constants.js"; +import { errorMessage } from "./error.js"; +import { HTMLEscape } from "./htmlescape.js"; +import { prettifyMarkdown } from "./pretty.js"; +import { ellipse } from "./util.js"; +import debug from "debug"; +const dbg = debug("agent:memory"); +export function agentCreateCache(options) { + const cache = createCache(AGENT_MEMORY_CACHE_NAME, { + type: "memory", + userState: options.userState, + lookupOnly: options.lookupOnly, + }); + return cache; +} +/** + * Queries the agent's memory to retrieve contextual information relevant to a given query. + * Pre-processes memory using a lightweight model and utilizes it as the sole source of information. + * + * - If the query is empty or no memories exist, returns undefined. + * - Executes a prompt-based query on memory to extract useful details. + * - Response excludes fabricated information and adheres to concise formatting. + * - Returns the textual memory answer or an empty string if no relevant match is found. + * + * @param ctx - The chat generation context responsible for executing prompt-based memory queries. + * @param query - Input query for which relevant memory details are retrieved. + * @param options - Generation and tracing options performing user state management and result tracing. + * @returns Memory answer or undefined if no relevant memories are retrieved. + */ +export async function agentQueryMemory(cache, ctx, query) { + if (!query) + return undefined; + const memories = await loadMemories(cache); + if (!memories?.length) + return undefined; + let memoryAnswer; + // always pre-query memory with cheap model + dbg(`query: ${query}`); + const res = await ctx.runPrompt(async (_) => { + _.$ `Return the contextual information useful to answer from the content in . + - Use MEMORY as the only source of information. + - If you cannot find relevant information to answer , return ${TOKEN_NO_ANSWER}. DO NOT INVENT INFORMATION. + - Be concise. Keep it short. The output is used by another LLM. + - Provide important details like identifiers and names.`.role("system"); + _.def("QUERY", query); + await defMemory(cache, _); + }, { + model: "memory", + system: [], + flexTokens: AGENT_MEMORY_FLEX_TOKENS, + label: "agent memory query", + cache: "agent_memory", + }); + if (!res.error) + memoryAnswer = res.text.includes(TOKEN_NO_ANSWER) ? "" : res.text; + else + dbg(`error: ${errorMessage(res.error)}`); + dbg(`answer: ${ellipse(memoryAnswer, 128)}`); + return memoryAnswer; +} +/** + * Adds a memory entry for a given agent and query. Stores the query, agent, + * and corresponding text/answer into a memory cache. Updates the trace with + * details of the memory entry for auditing purposes. + * + * @param agent - Identifier for the agent associated with the memory. + * @param query - The query or context associated with the memory entry. + * @param text - The response or answer to be stored in association with the query. + * @param options - Configuration options, including user state and tracing details. + */ +export async function agentAddMemory(cache, agent, query, text, options) { + const { trace } = options || {}; + const cacheKey = { agent, query }; + const cachedValue = { + ...cacheKey, + answer: text, + createdAt: Date.now(), + }; + dbg(`add ${agent}: ${ellipse(query, 80)} -> ${ellipse(text, 128)}`); + await cache.set(cacheKey, cachedValue); + trace?.detailsFenced(`🧠 agent memory: ${HTMLEscape(query)}`, HTMLEscape(prettifyMarkdown(cachedValue.answer)), "markdown"); +} +async function loadMemories(cache) { + const memories = await cache?.values(); + memories?.sort((l, r) => l.createdAt - r.createdAt); + return memories; +} +/** + * Traces the agent memory and logs the details in a structured format. + * + * Initiates a trace section for agent memory, retrieves stored memory entries, + * and iterates over them in reverse order. For each memory entry, logs the agent, + * corresponding query, and the associated answer in a fenced Markdown format. + * Closes the trace section after processing all entries. + * + * Requires memory loading functionality and tracing options. Useful for debugging + * or visualizing the memory contents in a readable format. + */ +export async function traceAgentMemory(options) { + const { trace } = options || {}; + if (!trace) + return; + const cache = agentCreateCache({ + userState: options.userState, + lookupOnly: true, + }); + const memories = await loadMemories(cache); + if (memories?.length) { + try { + trace?.startDetails("🧠 agent memory"); + memories + .reverse() + .forEach(({ agent, query, answer }) => trace?.detailsFenced(`👤 ${agent}: ${HTMLEscape(query)}`, HTMLEscape(prettifyMarkdown(answer)), "markdown")); + } + finally { + trace?.endDetails(); + } + } +} +async function defMemory(cache, ctx) { + const memories = await cache.values(); + memories.reverse().forEach(({ agent, query, answer }, index) => ctx.def("MEMORY", `${agent}> ${query}? + ${answer} + `, { + flex: memories.length - index, + })); +} +//# sourceMappingURL=agent.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/agent.js.map b/packages/core/.tshy-build/browser/agent.js.map new file mode 100644 index 0000000000..ce109c64a7 --- /dev/null +++ b/packages/core/.tshy-build/browser/agent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/annotations.d.ts b/packages/core/.tshy-build/browser/annotations.d.ts new file mode 100644 index 0000000000..bf40417d81 --- /dev/null +++ b/packages/core/.tshy-build/browser/annotations.d.ts @@ -0,0 +1,77 @@ +import type { Diagnostic } from "./types.js"; +/** + * Parses annotations from TypeScript, GitHub Actions, and Azure DevOps. + * + * @param text Input text containing annotations to parse. + * Extracts details such as file, line, endLine, severity, code, and message from annotations. + * @returns Array of unique Diagnostic objects extracted from the input text. + */ +export declare function parseAnnotations(text: string): Diagnostic[]; +/** + * Removes all recognized annotations from the input text. + * + * Scans the input text for patterns matching TypeScript, GitHub Actions, + * and Azure DevOps annotations, and removes them entirely. + * + * @param text Input text containing annotations to be removed. + * @returns A new string with all annotations stripped from the input text. + */ +export declare function eraseAnnotations(text: string): string; +/** + * Transforms all annotations found in the input text into formatted items. + * + * Iterates through all regular expressions in the annotations list to identify + * matches, extracts data from the matches, constructs Diagnostic objects, and + * formats them into string representations using the `convertAnnotationToItem` function. + * + * Replaces matched annotation patterns in the input text with their corresponding + * formatted item strings. + * + * @param text Input text containing annotations to be transformed. + * @returns A string where matched annotations are replaced with formatted items. + */ +export declare function convertAnnotationsToItems(text: string): string; +export declare function convertGithubMarkdownAnnotationsToItems(text: string): string; +/** + * Formats a diagnostic annotation into a string representation suitable for display. + * + * Constructs a list item with an emoji indicating severity, the message, + * and an optional filename with line reference. + * If the file or line is unavailable, includes only the message. + * + * Maps severity levels to emojis using SEV_EMOJI_MAP. Defaults to "info" if severity is unknown. + * + * @param d The Diagnostic object containing details such as severity, message, filename, code, and range. + * @returns A formatted string representing the Diagnostic as a list item. + */ +export declare function convertAnnotationToItem(d: Diagnostic): string; +/** + * Converts a Diagnostic object to a GitHub Action command string. + * + * @param d The Diagnostic object containing severity, filename, range, and message. + * Maps "info" severity to "notice" for GitHub Actions. If severity is not mapped, uses the original severity. + * @returns A formatted GitHub Action command string including severity, filename, line, endLine, and message. + */ +export declare function convertDiagnosticToGitHubActionCommand(d: Diagnostic): string; +/** + * Converts a Diagnostic object to an Azure DevOps log issue command string. + * + * @param d Diagnostic object containing severity, message, filename, and range. + * @returns Formatted Azure DevOps command string for warnings and errors. For "info" severity, returns a debug message with filename and message. + */ +export declare function convertDiagnosticToAzureDevOpsCommand(d: Diagnostic): string; +export declare function diagnosticToGitHubMarkdown(info: { + owner: string; + repo: string; + commitSha?: string; +}, d: Diagnostic): string; +/** + * Converts annotations in text to a Markdown representation with severity-based admonitions. + * + * @param text Input text containing annotations to convert. Must include GitHub or Azure DevOps annotations. + * Extracts severity, file, line, and optional code to format as Markdown. + * Replaces annotations with formatted Markdown strings. + * @returns Formatted Markdown string with severity levels mapped to admonitions, including file, line references, and optional codes. + */ +export declare function convertAnnotationsToMarkdown(text: string): string; +//# sourceMappingURL=annotations.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/annotations.d.ts.map b/packages/core/.tshy-build/browser/annotations.d.ts.map new file mode 100644 index 0000000000..1f00518457 --- /dev/null +++ b/packages/core/.tshy-build/browser/annotations.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/annotations.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAsDjE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CA8B3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,UAE5C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,UAuBrD;AAED,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,MAAM,UAkBnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,UAAU,UAIpD;AAED;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CAAC,CAAC,EAAE,UAAU,UAUnE;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,CAAC,EAAE,UAAU,UAMlE;AAOD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACzD,CAAC,EAAE,UAAU,UAWd;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyBjE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/annotations.js b/packages/core/.tshy-build/browser/annotations.js new file mode 100644 index 0000000000..f15e2a84fb --- /dev/null +++ b/packages/core/.tshy-build/browser/annotations.js @@ -0,0 +1,234 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * This module provides functions to parse and convert annotations from + * TypeScript, GitHub Actions, and Azure DevOps. It supports the transformation + * of annotations into different formats for integration with CI/CD tools. + */ +import { deleteUndefinedValues } from "./cleaners.js"; +import { EMOJI_FAIL, EMOJI_WARNING } from "./constants.js"; +import { unfence } from "./unwrappers.js"; +// Regular expression for matching GitHub Actions annotations. +// Example: ::error file=foo.js,line=10,endLine=11::Something went wrong. +const GITHUB_ANNOTATIONS_RX = /^\s*::(?notice|warning|error)\s*file=(?[^,]+),\s*line=(?\d+),\s*endLine=(?\d+)\s*(,\s*code=(?[^,:]+)?\s*)?::(?.*?)(?:::(?.*?))?$/gim; +// Regular expression for matching Azure DevOps annotations. +// Example: ##vso[task.logissue type=warning;sourcepath=foo.cs;linenumber=1;]Found something. +const AZURE_DEVOPS_ANNOTATIONS_RX = /^\s*##vso\[task.logissue\s+type=(?error|warning);sourcepath=(?);linenumber=(?\d+)(;code=(?\d+);)?[^\]]*\](?.*)$/gim; +// Regular expression for matching TypeScript build annotations. +// Example: +// foo.ts:10:error TS1005: ';' expected. +const TYPESCRIPT_ANNOTATIONS_RX = /^(?[^:\s\n].+?):(?\d+)(?::(?\d+))?(?::\d+)?\s+-\s+(?error|warning)\s+(?[^:]+)\s*:\s*(?.*)$/gim; +// Regular expression for matching GitHub Flavored Markdown style warnings. +// Example: > [!WARNING] +// > This is a warning message. +const GITHUB_MARKDOWN_WARNINGS_RX = /^\s*>\s*\[!(?NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*\n>\s*(?.+)(?:\s*\n>\s*.*?)*?$/gim; +// Regular expression for TypeScript compiler errors with parentheses format +// Example: src/connection.ts(71,5): error TS1128: Declaration or statement expected. +// src/connection.ts(71,5): error TS1128: Declaration or statement expected. +const TYPESCRIPT_PARENTHESES_ANNOTATIONS_RX = /^(?[^(\n]+)\((?\d+),(?\d+)\):\s+(?error|warning)\s+(?TS\d+):\s+(?.+)$/gim; +const ANNOTATIONS_RX = [ + TYPESCRIPT_PARENTHESES_ANNOTATIONS_RX, + TYPESCRIPT_ANNOTATIONS_RX, + GITHUB_ANNOTATIONS_RX, + AZURE_DEVOPS_ANNOTATIONS_RX, +]; +// Maps severity strings to `DiagnosticSeverity`. +const SEV_MAP = Object.freeze({ + ["info"]: "info", + ["tip"]: "info", + ["notice"]: "info", // Maps 'notice' to 'info' severity + ["note"]: "info", + ["warning"]: "warning", + ["caution"]: "error", + ["error"]: "error", +}); +const SEV_EMOJI_MAP = Object.freeze({ + ["info"]: "ℹ️", + ["notice"]: "ℹ️", // Maps 'notice' to 'info' severity + ["warning"]: EMOJI_WARNING, + ["error"]: EMOJI_FAIL, +}); +/** + * Parses annotations from TypeScript, GitHub Actions, and Azure DevOps. + * + * @param text Input text containing annotations to parse. + * Extracts details such as file, line, endLine, severity, code, and message from annotations. + * @returns Array of unique Diagnostic objects extracted from the input text. + */ +export function parseAnnotations(text) { + if (!text) + return []; + // Set to store unique annotations. + const annotations = new Set(); + // Helper function to add an annotation to the set. + // Extracts groups from the regex match and constructs a `Diagnostic` object. + const addAnnotation = (m) => { + const { file, line, endLine, severity, code, message, suggestion } = m.groups; + const annotation = { + severity: SEV_MAP[severity?.toLowerCase()] ?? "info", // Default to "info" if severity is missing + filename: file, + range: [ + [parseInt(line) - 1, 0], // Start of range, 0-based index + [parseInt(endLine) - 1, Number.MAX_VALUE], // End of range, max value for columns + ], + message: unfence(message, ["markdown", "md", "text"]), + code, + suggestion, + }; + annotations.add(annotation); // Add the constructed annotation to the set + }; + // Match against TypeScript, GitHub, and Azure DevOps regex patterns. + for (const rx of ANNOTATIONS_RX) { + for (const m of text.matchAll(rx)) + addAnnotation(m); + } + return Array.from(annotations.values()); // Convert the set to an array +} +/** + * Removes all recognized annotations from the input text. + * + * Scans the input text for patterns matching TypeScript, GitHub Actions, + * and Azure DevOps annotations, and removes them entirely. + * + * @param text Input text containing annotations to be removed. + * @returns A new string with all annotations stripped from the input text. + */ +export function eraseAnnotations(text) { + return ANNOTATIONS_RX.reduce((t, rx) => t.replace(rx, ""), text); +} +/** + * Transforms all annotations found in the input text into formatted items. + * + * Iterates through all regular expressions in the annotations list to identify + * matches, extracts data from the matches, constructs Diagnostic objects, and + * formats them into string representations using the `convertAnnotationToItem` function. + * + * Replaces matched annotation patterns in the input text with their corresponding + * formatted item strings. + * + * @param text Input text containing annotations to be transformed. + * @returns A string where matched annotations are replaced with formatted items. + */ +export function convertAnnotationsToItems(text) { + return convertGithubMarkdownAnnotationsToItems(ANNOTATIONS_RX.reduce((t, rx) => t.replace(rx, (s, ...args) => { + const groups = args.at(-1); + const { file, line, endLine, severity, code, message, suggestion } = groups; + const d = deleteUndefinedValues({ + severity: SEV_MAP[severity?.toLowerCase()] ?? "info", + filename: file, + range: [ + [parseInt(line) - 1, 0], // Start of range, 0-based index + [parseInt(endLine) - 1, Number.MAX_VALUE], // End of range, max value for columns + ], + code, + message, + suggestion, + }); + return convertAnnotationToItem(d); + }), text)); +} +export function convertGithubMarkdownAnnotationsToItems(text) { + return text?.replace(GITHUB_MARKDOWN_WARNINGS_RX, (s, ...args) => { + const groups = args.at(-1); + const { severity, message, suggestion } = groups; + const sev = SEV_MAP[severity?.toLowerCase()] ?? "info"; + const d = deleteUndefinedValues({ + severity: sev, + filename: "", + range: [ + [0, 0], // Start of range, 0-based index + [0, Number.MAX_VALUE], // End of range, max value for columns + ], + code: "", + message, + suggestion, + }); + return convertAnnotationToItem(d); + }); +} +/** + * Formats a diagnostic annotation into a string representation suitable for display. + * + * Constructs a list item with an emoji indicating severity, the message, + * and an optional filename with line reference. + * If the file or line is unavailable, includes only the message. + * + * Maps severity levels to emojis using SEV_EMOJI_MAP. Defaults to "info" if severity is unknown. + * + * @param d The Diagnostic object containing details such as severity, message, filename, code, and range. + * @returns A formatted string representing the Diagnostic as a list item. + */ +export function convertAnnotationToItem(d) { + const { severity, message, filename, code, range } = d; + const line = range?.[0]?.[0]; + return `- ${SEV_EMOJI_MAP[severity?.toLowerCase()] ?? "info"} ${message}${filename ? ` (\`${filename}${line ? `#L${line}` : ""}\`)` : ""}`; +} +/** + * Converts a Diagnostic object to a GitHub Action command string. + * + * @param d The Diagnostic object containing severity, filename, range, and message. + * Maps "info" severity to "notice" for GitHub Actions. If severity is not mapped, uses the original severity. + * @returns A formatted GitHub Action command string including severity, filename, line, endLine, and message. + */ +export function convertDiagnosticToGitHubActionCommand(d) { + // Maps DiagnosticSeverity to GitHub Action severity strings. + const sevMap = { + ["info"]: "notice", // Maps 'info' to 'notice' + ["warning"]: "warning", + ["error"]: "error", + }; + // Construct GitHub Action command string with necessary details. + return `::${sevMap[d.severity] || d.severity} file=${d.filename}, line=${d.range[0][0]}, endLine=${d.range[1][0]}::${d.message}`; +} +/** + * Converts a Diagnostic object to an Azure DevOps log issue command string. + * + * @param d Diagnostic object containing severity, message, filename, and range. + * @returns Formatted Azure DevOps command string for warnings and errors. For "info" severity, returns a debug message with filename and message. + */ +export function convertDiagnosticToAzureDevOpsCommand(d) { + // Handle 'info' severity separately with a debug message. + if (d.severity === "info") + return `##[debug]${d.message} at ${d.filename}`; + // Construct Azure DevOps command string with necessary details. + else + return `##vso[task.logissue type=${d.severity};sourcepath=${d.filename};linenumber=${d.range[0][0]}]${d.message}`; +} +const severities = { + error: "CAUTION", + warning: "WARNING", + notice: "NOTE", +}; +export function diagnosticToGitHubMarkdown(info, d) { + const { owner, repo, commitSha } = info; + const { severity, message, filename, suggestion, code, range } = d; + const file = filename; + const line = range?.[0]?.[0]; + return `> [!${severities[severity] || severity}] +> ${message} +> [${file}#L${line}](/${owner}/${repo}/blob/${commitSha}/${file}#L${line})${code ? ` \`${code}\`` : ""} +${suggestion ? `\`\`\`suggestion\n${suggestion}\n\`\`\`\n` : ""} +`; +} +/** + * Converts annotations in text to a Markdown representation with severity-based admonitions. + * + * @param text Input text containing annotations to convert. Must include GitHub or Azure DevOps annotations. + * Extracts severity, file, line, and optional code to format as Markdown. + * Replaces annotations with formatted Markdown strings. + * @returns Formatted Markdown string with severity levels mapped to admonitions, including file, line references, and optional codes. + */ +export function convertAnnotationsToMarkdown(text) { + // Replace GitHub and Azure DevOps annotations with Markdown format. + return text + ?.replace(GITHUB_ANNOTATIONS_RX, (_, severity, file, line, endLine, __, code, message, suggestion) => `> [!${severities[severity] || severity}] +> ${message} (${file}#L${line} ${code || ""}) +${suggestion ? `\`\`\`suggestion\n${suggestion}\n\`\`\`\n` : ""} +`) + ?.replace(AZURE_DEVOPS_ANNOTATIONS_RX, (_, severity, file, line, __, code, message) => { + return `> [!${severities[severity] || severity}] ${message} +> ${message} (${file}#L${line} ${code || ""}) +`; + }); +} +//# sourceMappingURL=annotations.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/annotations.js.map b/packages/core/.tshy-build/browser/annotations.js.map new file mode 100644 index 0000000000..49a4344a30 --- /dev/null +++ b/packages/core/.tshy-build/browser/annotations.js.map @@ -0,0 +1 @@ +{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/annotations.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,8DAA8D;AAC9D,yEAAyE;AACzE,MAAM,qBAAqB,GACzB,+LAA+L,CAAC;AAElM,4DAA4D;AAC5D,6FAA6F;AAC7F,MAAM,2BAA2B,GAC/B,yJAAyJ,CAAC;AAE5J,gEAAgE;AAChE,WAAW;AACX,wCAAwC;AAExC,MAAM,yBAAyB,GAC7B,6IAA6I,CAAC;AAEhJ,2EAA2E;AAC3E,wBAAwB;AACxB,+BAA+B;AAC/B,MAAM,2BAA2B,GAC/B,2GAA2G,CAAC;AAE9G,4EAA4E;AAC5E,qFAAqF;AACrF,4EAA4E;AAC5E,MAAM,qCAAqC,GACzC,oHAAoH,CAAC;AACvH,MAAM,cAAc,GAAG;IACrB,qCAAqC;IACrC,yBAAyB;IACzB,qBAAqB;IACrB,2BAA2B;CAC5B,CAAC;AAEF,iDAAiD;AACjD,MAAM,OAAO,GAAuC,MAAM,CAAC,MAAM,CAAC;IAChE,CAAC,MAAM,CAAC,EAAE,MAAM;IAChB,CAAC,KAAK,CAAC,EAAE,MAAM;IACf,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,mCAAmC;IACvD,CAAC,MAAM,CAAC,EAAE,MAAM;IAChB,CAAC,SAAS,CAAC,EAAE,SAAS;IACtB,CAAC,SAAS,CAAC,EAAE,OAAO;IACpB,CAAC,OAAO,CAAC,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,aAAa,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC1D,CAAC,MAAM,CAAC,EAAE,IAAI;IACd,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,mCAAmC;IACrD,CAAC,SAAS,CAAC,EAAE,aAAa;IAC1B,CAAC,OAAO,CAAC,EAAE,UAAU;CACtB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,mCAAmC;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IAE1C,mDAAmD;IACnD,6EAA6E;IAC7E,MAAM,aAAa,GAAG,CAAC,CAAmB,EAAE,EAAE;QAC5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,UAAU,GAAe;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM,EAAE,2CAA2C;YACjG,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,gCAAgC;gBACzD,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,sCAAsC;aAClF;YACD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI;YACJ,UAAU;SACX,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,4CAA4C;IAC3E,CAAC,CAAC;IAEF,qEAAqE;IACrE,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,8BAA8B;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,uCAAuC,CAC5C,cAAc,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACR,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC5E,MAAM,CAAC,GAAG,qBAAqB,CAAC;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM;YACpD,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,gCAAgC;gBACzD,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,sCAAsC;aAClF;YACD,IAAI;YACJ,OAAO;YACP,UAAU;SACX,CAAsB,CAAC;QACxB,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,EACJ,IAAI,CACL,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,IAAY;IAClE,OAAO,IAAI,EAAE,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC;QACvD,MAAM,CAAC,GAAG,qBAAqB,CAAC;YAC9B,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE;gBACL,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gCAAgC;gBACxC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,sCAAsC;aAC9D;YACD,IAAI,EAAE,EAAE;YACR,OAAO;YACP,UAAU;SACX,CAAsB,CAAC;QACxB,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,CAAa;IACnD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7I,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CAAC,CAAa;IAClE,6DAA6D;IAC7D,MAAM,MAAM,GAAuC;QACjD,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,0BAA0B;QAC9C,CAAC,SAAS,CAAC,EAAE,SAAS;QACtB,CAAC,OAAO,CAAC,EAAE,OAAO;KACnB,CAAC;IAEF,iEAAiE;IACjE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACnI,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qCAAqC,CAAC,CAAa;IACjE,0DAA0D;IAC1D,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3E,gEAAgE;;QAE9D,OAAO,4BAA4B,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACtH,CAAC;AACD,MAAM,UAAU,GAA2B;IACzC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,UAAU,0BAA0B,CACxC,IAAyD,EACzD,CAAa;IAEb,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ;IAC5C,OAAO;KACN,IAAI,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;EACpG,UAAU,CAAC,CAAC,CAAC,qBAAqB,UAAU,YAAY,CAAC,CAAC,CAAC,EAAE;CAC9D,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,oEAAoE;IACpE,OAAO,IAAI;QACT,EAAE,OAAO,CACP,qBAAqB,EACrB,CACE,CAAC,EACD,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,EAAE,EACF,IAAI,EACJ,OAAO,EACP,UAAU,EACV,EAAE,CAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ;IAC9C,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;EACzC,UAAU,CAAC,CAAC,CAAC,qBAAqB,UAAU,YAAY,CAAC,CAAC,CAAC,EAAE;CAC9D,CACI;QACD,EAAE,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACpF,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,OAAO;IAC5D,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;CAC1C,CAAC;IACE,CAAC,CAAC,CAAC;AACP,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/anthropic.d.ts b/packages/core/.tshy-build/browser/anthropic.d.ts new file mode 100644 index 0000000000..415b9bc958 --- /dev/null +++ b/packages/core/.tshy-build/browser/anthropic.d.ts @@ -0,0 +1,4 @@ +import type { LanguageModel } from "./chat.js"; +export declare const AnthropicModel: Readonly; +export declare const AnthropicBedrockModel: Readonly; +//# sourceMappingURL=anthropic.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/anthropic.d.ts.map b/packages/core/.tshy-build/browser/anthropic.d.ts.map new file mode 100644 index 0000000000..bcf9d14372 --- /dev/null +++ b/packages/core/.tshy-build/browser/anthropic.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/anthropic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAyB,aAAa,EAAsB,MAAM,WAAW,CAAC;AA+f1F,eAAO,MAAM,cAAc,yBAkBzB,CAAC;AAEH,eAAO,MAAM,qBAAqB,yBAkDhC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/anthropic.js b/packages/core/.tshy-build/browser/anthropic.js new file mode 100644 index 0000000000..b1e26c1805 --- /dev/null +++ b/packages/core/.tshy-build/browser/anthropic.js @@ -0,0 +1,488 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { ANTHROPIC_MAX_TOKEN, MODEL_PROVIDER_ANTHROPIC, MODEL_PROVIDER_ANTHROPIC_BEDROCK, } from "./constants.js"; +import { parseModelIdentifier } from "./models.js"; +import { NotSupportedError, serializeError } from "./error.js"; +import { approximateTokens } from "./tokens.js"; +import { resolveTokenEncoder } from "./encoders.js"; +import { logError } from "./util.js"; +import { resolveUndiciProxyAgent } from "./proxy.js"; +import { createFetch } from "./fetch.js"; +import { JSONLLMTryParse } from "./json5.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import debug from "debug"; +import { providerFeatures } from "./features.js"; +const dbg = debug("genaiscript:anthropic"); +const dbgMessages = debug("genaiscript:anthropic:msg"); +const convertFinishReason = (stopReason) => { + switch (stopReason) { + case "end_turn": + return "stop"; + case "max_tokens": + return "length"; + case "stop_sequence": + return "stop"; + case "tool_use": + return "tool_calls"; + default: + return undefined; + } +}; +const convertUsage = (usage) => { + if (!usage) + return undefined; + const res = { + prompt_tokens: usage.input_tokens + + (usage.cache_creation_input_tokens || 0) + + (usage.cache_read_input_tokens || 0), + completion_tokens: usage.output_tokens, + total_tokens: usage.input_tokens + usage.output_tokens, + }; + if (usage.cache_read_input_tokens) + res.prompt_tokens_details = { + cached_tokens: usage.cache_read_input_tokens, + }; + return res; +}; +const adjustUsage = (usage, outputTokens) => { + return { + ...usage, + completion_tokens: usage.completion_tokens + outputTokens.output_tokens, + total_tokens: usage.total_tokens + outputTokens.output_tokens, + }; +}; +const convertMessages = (messages, emitThinking) => { + const res = []; + dbgMessages(`converting %d messages`, messages.length); + for (let i = 0; i < messages.length; ++i) { + const message = messages[i]; + const msg = convertSingleMessage(message, emitThinking); + if (msg.content === "") { + dbgMessages(`empty message`, msg); + continue; // no message + } + const last = res.at(-1); + if (last?.role !== msg.role) + res.push(msg); + else { + if (typeof last.content === "string") + last.content = [ + { + type: "text", + text: last.content, + }, + ]; + if (typeof msg.content === "string") + last.content.push({ type: "text", text: msg.content }); + else + last.content.push(...msg.content); + } + } + // filter out empty text messages + return res.filter((msg) => Array.isArray(msg.content) ? msg.content.length > 0 : msg.content !== ""); +}; +const convertSingleMessage = (msg, emitThinking) => { + const { role } = msg; + if (!role) { + return { + role: "user", + content: [{ type: "text", text: JSON.stringify(msg) }], + }; + } + else if (msg.role === "assistant") { + return convertAssistantMessage(msg, emitThinking); + } + else if (role === "tool") { + return convertToolResultMessage(msg); + } + else if (role === "function") + throw new NotSupportedError("function message not supported"); + return convertStandardMessage(msg); +}; +function toCacheControl(msg) { + return msg.cacheControl === "ephemeral" ? { type: "ephemeral" } : undefined; +} +const convertAssistantMessage = (msg, emitThinking) => { + return { + role: "assistant", + content: [ + msg.reasoning_content && emitThinking + ? { + type: "thinking", + thinking: msg.reasoning_content, + signature: msg.signature, + } + : undefined, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...(convertStandardMessage(msg)?.content || []), + ...(msg.tool_calls || []).map((tool) => deleteUndefinedValues({ + type: "tool_use", + id: tool.id, + input: JSONLLMTryParse(tool.function.arguments), + name: tool.function.name, + cache_control: toCacheControl(msg), + })), + ].filter((x) => !!x), + }; +}; +const convertToolResultMessage = (msg) => { + return { + role: "user", + content: [ + deleteUndefinedValues({ + type: "tool_result", + tool_use_id: msg.tool_call_id, + content: msg.content, + cache_control: toCacheControl(msg), + }), + ], + }; +}; +const convertBlockParam = (block, cache_control) => { + if (typeof block === "string") { + return { + type: "text", + text: block, + cache_control, + }; + } + else if (block.type === "text") { + if (!block.text) + return undefined; + return { + type: "text", + text: block.text, + cache_control, + }; + } + else if (block.type === "image_url") { + return convertImageUrlBlock(block); + } + // audio? + // Handle other types or return a default + else + return { + type: "text", + text: JSON.stringify(block), + }; +}; +const convertStandardMessage = (msg) => { + const role = msg.role === "assistant" ? "assistant" : "user"; + let res; + if (Array.isArray(msg.content)) { + const cache_control = toCacheControl(msg); + res = { + role, + content: msg.content + .map((block) => convertBlockParam(block, cache_control)) + .filter((t) => !!t) + .map(deleteUndefinedValues), + }; + } + else if (typeof msg.content === "string") { + res = { + role, + content: [ + deleteUndefinedValues({ + type: "text", + text: msg.content, + cache_control: toCacheControl(msg), + }), + ], + }; + } + return res; +}; +const convertImageUrlBlock = (block) => { + return { + type: "image", + source: { + type: "base64", + media_type: block.image_url.url.startsWith("data:image/png") ? "image/png" : "image/jpeg", + data: block.image_url.url.split(",")[1], + }, + }; +}; +const convertTools = (tools) => { + if (!tools) + return undefined; + return tools.map((tool) => ({ + name: tool.function.name, + description: tool.function.description, + input_schema: { + type: "object", + ...tool.function.parameters, + }, + })); +}; +const completerFactory = (resolver) => { + const completion = async (req, cfg, options, trace) => { + const { requestOptions, partialCb, cancellationToken, inner, retries, maxDelay, maxRetryAfter, retryDelay, } = options; + const { headers } = requestOptions || {}; + const { provider, model, reasoningEffort } = parseModelIdentifier(req.model); + const { encode: encoder } = await resolveTokenEncoder(model); + const fetch = await createFetch({ + trace, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + cancellationToken, + }); + // https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching#how-to-implement-prompt-caching + const caching = /sonnet|haiku|opus/i.test(model) && req.messages.some((m) => m.cacheControl === "ephemeral"); + const httpAgent = await resolveUndiciProxyAgent(); + const messagesApi = await resolver(trace, cfg, httpAgent, fetch); + dbg("caching", caching); + trace?.itemValue(`caching`, caching); + let numTokens = 0; + let chatResp = ""; + let reasoningChatResp = ""; + let signature = ""; + let finishReason; + let usage; + const toolCalls = []; + const tools = convertTools(req.tools); + let temperature = req.temperature; + let top_p = req.top_p; + const tool_choice = req.tool_choice === "auto" + ? { type: "auto" } + : req.tool_choice === "none" + ? { type: "none" } + : req.tool_choice !== "required" && typeof req.tool_choice === "object" + ? { + type: "tool", + name: req.tool_choice.function.name, + } + : undefined; + let thinking = undefined; + const reasoningEfforts = providerFeatures(provider)?.reasoningEfforts; + const budget_tokens = reasoningEfforts[req.reasoning_effort || reasoningEffort]; + let max_tokens = req.max_tokens; + if (budget_tokens && (!max_tokens || max_tokens < budget_tokens)) + max_tokens = budget_tokens + ANTHROPIC_MAX_TOKEN; + max_tokens = max_tokens || ANTHROPIC_MAX_TOKEN; + if (budget_tokens) { + temperature = undefined; + top_p = undefined; + thinking = { + type: "enabled", + budget_tokens, + }; + } + const messages = convertMessages(req.messages, !!thinking); + const mreq = deleteUndefinedValues({ + model, + tools, + messages, + max_tokens, + temperature, + top_p, + tool_choice, + thinking, + stream: true, + }); + // https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#extended-output-capabilities-beta + if (/claude-3-7-sonnet/.test(model) && max_tokens >= 128000) { + dbg("enabling 128k output"); + mreq.betas = ["output-128k-2025-02-19"]; + } + dbgMessages(`messages: %O`, messages); + trace?.detailsFenced("✉️ body", mreq, "json"); + trace?.appendContent("\n"); + try { + const stream = messagesApi.stream({ ...mreq, ...headers }); + for await (const chunk of stream) { + if (cancellationToken?.isCancellationRequested) { + finishReason = "cancel"; + break; + } + dbg(chunk.type); + dbgMessages(`%O`, chunk); + let chunkContent = ""; + let reasoningContent = ""; + switch (chunk.type) { + case "message_start": + usage = convertUsage(chunk.message.usage); + break; + case "content_block_start": + if (chunk.content_block.type === "tool_use") { + toolCalls[chunk.index] = { + id: chunk.content_block.id, + name: chunk.content_block.name, + arguments: "", + }; + } + break; + case "content_block_delta": + switch (chunk.delta.type) { + case "signature_delta": + signature = chunk.delta.signature; + break; + case "thinking_delta": + reasoningContent = chunk.delta.thinking; + trace?.appendToken(reasoningContent); + reasoningChatResp += reasoningContent; + trace?.appendToken(chunkContent); + break; + case "text_delta": + if (!chunk.delta.text) + dbg(`empty text_delta`, chunk); + else { + chunkContent = chunk.delta.text; + numTokens += approximateTokens(chunkContent, { encoder }); + chatResp += chunkContent; + trace?.appendToken(chunkContent); + } + break; + case "input_json_delta": + toolCalls[chunk.index].arguments += chunk.delta.partial_json; + } + break; + case "content_block_stop": { + break; + } + case "message_delta": + if (chunk.delta.stop_reason) { + finishReason = convertFinishReason(chunk.delta.stop_reason); + } + if (chunk.usage) { + usage = adjustUsage(usage, chunk.usage); + } + break; + case "message_stop": { + break; + } + } + if (chunkContent || reasoningContent) { + const progress = deleteUndefinedValues({ + responseSoFar: chatResp, + reasoningSoFar: reasoningContent, + tokensSoFar: numTokens, + responseChunk: chunkContent, + reasoningChunk: reasoningContent, + inner, + }); + partialCb?.(progress); + } + } + } + catch (e) { + finishReason = "fail"; + logError(e); + trace?.error("error while processing event", serializeError(e)); + } + trace?.appendContent("\n\n"); + trace?.itemValue(`🏁 finish reason`, finishReason); + if (usage?.total_tokens) { + trace?.itemValue(`🪙 tokens`, `${usage.total_tokens} total, ${usage.prompt_tokens} prompt, ${usage.completion_tokens} completion`); + } + return { + text: chatResp, + reasoning: reasoningChatResp, + signature, + finishReason, + usage, + model, + toolCalls: toolCalls.filter(Boolean), + }; + }; + return completion; +}; +const listModels = async (cfg) => { + try { + const AnthropicClass = (await import("@anthropic-ai/sdk")).default; + const anthropic = new AnthropicClass({ + baseURL: cfg.base, + apiKey: cfg.token, + fetch, + }); + // Parse and format the response into LanguageModelInfo objects + const res = await anthropic.models.list({ limit: 999 }); + return { + ok: true, + models: res.data + .filter(({ type }) => type === "model") + .map((model) => ({ + id: model.id, + details: model.display_name, + })), + }; + } + catch (e) { + return { ok: false, error: serializeError(e) }; + } +}; +export const AnthropicModel = Object.freeze({ + completer: completerFactory(async (trace, cfg, httpAgent, fetch) => { + const AnthropicClass = (await import("@anthropic-ai/sdk")).default; + const anthropic = new AnthropicClass({ + baseURL: cfg.base, + apiKey: cfg.token, + fetch, + fetchOptions: { + dispatcher: httpAgent, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + }, + }); + if (anthropic.baseURL) + trace?.itemValue(`url`, `[${anthropic.baseURL}](${anthropic.baseURL})`); + const messagesApi = anthropic.beta.messages; + return messagesApi; + }), + id: MODEL_PROVIDER_ANTHROPIC, + listModels, +}); +export const AnthropicBedrockModel = Object.freeze({ + completer: completerFactory(async (trace, cfg, httpAgent, fetch) => { + const AnthropicBedrockClass = (await import("@anthropic-ai/bedrock-sdk")).default; + const anthropic = new AnthropicBedrockClass({ + baseURL: cfg.base, + fetch, + fetchOptions: { + dispatcher: httpAgent, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + }, + }); + if (anthropic.baseURL) + trace?.itemValue(`url`, `[${anthropic.baseURL}](${anthropic.baseURL})`); + return anthropic.beta.messages; + }), + id: MODEL_PROVIDER_ANTHROPIC_BEDROCK, + listModels: async () => { + return { + ok: true, + models: [ + { + id: "anthropic.claude-3-7-sonnet-20250219-v1:0", + details: "Claude 3.7 Sonnet", + }, + { + id: "anthropic.claude-3-5-haiku-20241022-v1:0", + details: "Claude 3.5 Haiku", + }, + { + id: "anthropic.claude-3-5-sonnet-20241022-v2:0", + details: "Claude 3.5 Sonnet v2", + }, + { + id: "anthropic.claude-3-5-sonnet-20240620-v1:0", + details: "Claude 3.5 Sonnet", + }, + { + id: "anthropic.claude-3-opus-20240229-v1:0", + details: "Claude 3 Opus", + }, + { + id: "anthropic.claude-3-sonnet-20240229-v1:0", + details: "Claude 3 Sonnet", + }, + { + id: "anthropic.claude-3-haiku-20240307-v1:0", + details: "Claude 3 Haiku", + }, + ], + }; + }, +}); +//# sourceMappingURL=anthropic.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/anthropic.js.map b/packages/core/.tshy-build/browser/anthropic.js.map new file mode 100644 index 0000000000..815b224413 --- /dev/null +++ b/packages/core/.tshy-build/browser/anthropic.js.map @@ -0,0 +1 @@ +{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/anthropic.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/assert.d.ts b/packages/core/.tshy-build/browser/assert.d.ts new file mode 100644 index 0000000000..7ad8c332c2 --- /dev/null +++ b/packages/core/.tshy-build/browser/assert.d.ts @@ -0,0 +1,13 @@ +/** + * Asserts a condition and throws an error if the condition is false. + * Optionally logs an error message and debugging data to the console. + * + * @param cond - The condition to check. If false, the assertion fails. + * @param msg - Optional. The error message to display if the assertion fails. Defaults to "Assertion failed". + * @param debugData - Optional. Additional debugging data to log to the console if the assertion fails. + * + * Throws an Error when the condition is not met. + * Triggers the debugger if enabled in the runtime environment. + */ +export declare function assert(cond: boolean, msg?: string, debugData?: any): void; +//# sourceMappingURL=assert.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/assert.d.ts.map b/packages/core/.tshy-build/browser/assert.d.ts.map new file mode 100644 index 0000000000..26d134e332 --- /dev/null +++ b/packages/core/.tshy-build/browser/assert.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/assert.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,OAAO,EACb,GAAG,SAAqB,EAExB,SAAS,CAAC,EAAE,GAAG,QAWhB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/assert.js b/packages/core/.tshy-build/browser/assert.js new file mode 100644 index 0000000000..832ae01793 --- /dev/null +++ b/packages/core/.tshy-build/browser/assert.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:assert"); +/** + * Asserts a condition and throws an error if the condition is false. + * Optionally logs an error message and debugging data to the console. + * + * @param cond - The condition to check. If false, the assertion fails. + * @param msg - Optional. The error message to display if the assertion fails. Defaults to "Assertion failed". + * @param debugData - Optional. Additional debugging data to log to the console if the assertion fails. + * + * Throws an Error when the condition is not met. + * Triggers the debugger if enabled in the runtime environment. + */ +export function assert(cond, msg = "Assertion failed", +// eslint-disable-next-line @typescript-eslint/no-explicit-any +debugData) { + if (!cond) { + if (debugData) { + dbg("assertion failed, debug data: %O", debugData); + console.error(msg || `assertion failed`, debugData); + } + // eslint-disable-next-line no-debugger + debugger; + throw new Error(msg); + } +} +//# sourceMappingURL=assert.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/assert.js.map b/packages/core/.tshy-build/browser/assert.js.map new file mode 100644 index 0000000000..4de421e85d --- /dev/null +++ b/packages/core/.tshy-build/browser/assert.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/assert.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CACpB,IAAa,EACb,GAAG,GAAG,kBAAkB;AACxB,8DAA8D;AAC9D,SAAe;IAEf,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,uCAAuC;QACvC,QAAQ,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ast.d.ts b/packages/core/.tshy-build/browser/ast.d.ts new file mode 100644 index 0000000000..c1bd86bb05 --- /dev/null +++ b/packages/core/.tshy-build/browser/ast.d.ts @@ -0,0 +1,62 @@ +import type { Project } from "./server/messages.js"; +import type { Diagnostic, PromptScript, SystemPromptInstance } from "./types.js"; +export interface FileReference { + name: string; + filename: string; +} +/** + * Converts an array of diagnostic objects into a CSV-formatted string. + * Each diagnostic entry includes severity, filename, range start and end lines, code, and message. + * @param diagnostics - Array of diagnostic objects with severity, filename, range, code, and message properties. + * @param sep - Separator string for CSV fields. + * @returns CSV string with each diagnostic entry on a new line. + */ +export declare function diagnosticsToCSV(diagnostics: Diagnostic[], sep: string): string; +/** + * Determines the group name of a template. + * @param template - The template object containing an ID and an optional group property. + * @returns The group name of the template. Returns the group property if defined, "system" if the ID starts with "system", or "unassigned" if no group is set or determined. + */ +export declare function templateGroup(template: PromptScript): string; +/** + * Collects and organizes templates by their directory, identifying the presence of JavaScript or TypeScript files in each directory. + * Excludes templates without filenames. + * @param prj - The project containing the scripts to analyze. + * @returns An array of directory objects with their names and flags indicating JavaScript and TypeScript file presence. + */ +export declare function collectFolders(prj: Project, options?: { + force?: boolean; +}): { + dirname: string; + js?: boolean; + ts?: boolean; +}[]; +/** + * Finds a script in the project's scripts list by matching its ID with the system prompt instance. + * If the project or scripts list is undefined, returns undefined. + * @param prj - The project containing the scripts to search. + * @param system - The system prompt instance containing the ID to match against. + * @returns The script with the matching ID, or undefined if no match is found. + */ +export declare function resolveScript(prj: Project, system: SystemPromptInstance): PromptScript; +export interface ScriptFilterOptions { + ids?: string[]; + groups?: string[]; + test?: boolean; + redteam?: boolean; + unlisted?: boolean; +} +/** + * Filters a list of scripts based on the provided filter options. + * + * @param scripts - The list of scripts to filter. + * @param options - An object containing filter criteria: + * - ids: Array of specific script IDs to include. + * - groups: Array of group names to filter by. + * - test: If true, includes only scripts with defined tests. + * - redteam: If true, includes only scripts marked for redteam. + * - unlisted: If true, includes unlisted scripts; otherwise excludes them. + * @returns A filtered list of scripts matching the given criteria. + */ +export declare function filterScripts(scripts: PromptScript[], options: ScriptFilterOptions): PromptScript[]; +//# sourceMappingURL=ast.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ast.d.ts.map b/packages/core/.tshy-build/browser/ast.d.ts.map new file mode 100644 index 0000000000..b536688b8f --- /dev/null +++ b/packages/core/.tshy-build/browser/ast.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,UActE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,UAMnD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,CAenD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,gBAEvE;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,mBAAmB,kBAQlF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ast.js b/packages/core/.tshy-build/browser/ast.js new file mode 100644 index 0000000000..5a692f7776 --- /dev/null +++ b/packages/core/.tshy-build/browser/ast.js @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import necessary regular expressions for file type detection and host utilities +import { GENAI_ANYJS_REGEX, GENAI_ANYTS_REGEX } from "./constants.js"; +import { arrayify } from "./cleaners.js"; +import { tagFilter } from "./tags.js"; +import { dirname, resolve } from "node:path"; +/** + * Converts an array of diagnostic objects into a CSV-formatted string. + * Each diagnostic entry includes severity, filename, range start and end lines, code, and message. + * @param diagnostics - Array of diagnostic objects with severity, filename, range, code, and message properties. + * @param sep - Separator string for CSV fields. + * @returns CSV string with each diagnostic entry on a new line. + */ +export function diagnosticsToCSV(diagnostics, sep) { + return diagnostics + .map(({ severity, filename, range, code, message }) => [ + severity, // Severity level of the diagnostic + filename, // Filename where the diagnostic occurred + range[0][0], // Start line of the diagnostic range + range[1][0], // End line of the diagnostic range + code || "", // Diagnostic code, if available; empty string if not + message, // Diagnostic message explaining the issue + ].join(sep)) + .join("\n"); // Join each CSV line with a newline character +} +/** + * Determines the group name of a template. + * @param template - The template object containing an ID and an optional group property. + * @returns The group name of the template. Returns the group property if defined, "system" if the ID starts with "system", or "unassigned" if no group is set or determined. + */ +export function templateGroup(template) { + return (template.group || // Return the group if already set + (/^system/i.test(template.id) ? "system" : "") || // Check if the template ID indicates it's a system template + "unassigned" // Default to "unassigned" if no group is determined + ); +} +/** + * Collects and organizes templates by their directory, identifying the presence of JavaScript or TypeScript files in each directory. + * Excludes templates without filenames. + * @param prj - The project containing the scripts to analyze. + * @returns An array of directory objects with their names and flags indicating JavaScript and TypeScript file presence. + */ +export function collectFolders(prj, options) { + const { force } = options || {}; + const { systemDir } = prj; + const folders = {}; + for (const t of Object.values(prj.scripts).filter( + // must have a filename and not prompty + (script) => script.filename)) { + const dir = dirname(t.filename); // Get directory name from the filename + if (!force && resolve(dir) === systemDir) + continue; + const folder = folders[dir] || (folders[dir] = { dirname: dir }); + folder.js = folder.js || GENAI_ANYJS_REGEX.test(t.filename); // Check for presence of JS files + folder.ts = folder.ts || GENAI_ANYTS_REGEX.test(t.filename); // Check for presence of TS files + } + return Object.values(folders); // Return an array of folders with their properties +} +/** + * Finds a script in the project's scripts list by matching its ID with the system prompt instance. + * If the project or scripts list is undefined, returns undefined. + * @param prj - The project containing the scripts to search. + * @param system - The system prompt instance containing the ID to match against. + * @returns The script with the matching ID, or undefined if no match is found. + */ +export function resolveScript(prj, system) { + return prj?.scripts?.find((t) => t.id === system.id); // Find and return the template with the matching ID +} +/** + * Filters a list of scripts based on the provided filter options. + * + * @param scripts - The list of scripts to filter. + * @param options - An object containing filter criteria: + * - ids: Array of specific script IDs to include. + * - groups: Array of group names to filter by. + * - test: If true, includes only scripts with defined tests. + * - redteam: If true, includes only scripts marked for redteam. + * - unlisted: If true, includes unlisted scripts; otherwise excludes them. + * @returns A filtered list of scripts matching the given criteria. + */ +export function filterScripts(scripts, options) { + const { ids, groups, test, redteam, unlisted } = options || {}; + return scripts + .filter((t) => !test || arrayify(t.tests)?.length) + .filter((t) => !redteam || t.redteam) + .filter((t) => !ids?.length || ids.includes(t.id)) + .filter((t) => unlisted || !t.unlisted) + .filter((t) => tagFilter(groups, t.group)); +} +//# sourceMappingURL=ast.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ast.js.map b/packages/core/.tshy-build/browser/ast.js.map new file mode 100644 index 0000000000..90ba6ffc54 --- /dev/null +++ b/packages/core/.tshy-build/browser/ast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaiinference.d.ts b/packages/core/.tshy-build/browser/azureaiinference.d.ts new file mode 100644 index 0000000000..6fe3891054 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaiinference.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const AzureAIInferenceModel: Readonly; +//# sourceMappingURL=azureaiinference.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaiinference.d.ts.map b/packages/core/.tshy-build/browser/azureaiinference.d.ts.map new file mode 100644 index 0000000000..cd2c83db38 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaiinference.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azureaiinference.d.ts","sourceRoot":"","sources":["../../src/azureaiinference.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI/C,eAAO,MAAM,qBAAqB,yBA4ChC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaiinference.js b/packages/core/.tshy-build/browser/azureaiinference.js new file mode 100644 index 0000000000..7631b97092 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaiinference.js @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDER_AZURE_AI_INFERENCE } from "./constants.js"; +import { OpenAIChatCompletion, OpenAIEmbedder } from "./openai.js"; +export const AzureAIInferenceModel = Object.freeze({ + id: MODEL_PROVIDER_AZURE_AI_INFERENCE, + completer: OpenAIChatCompletion, + embedder: OpenAIEmbedder, + listModels: async () => { + return { + ok: true, + models: [ + { + id: "o3", + }, + { + id: "o3-mini", + }, + { + id: "o4-mini", + }, + { + id: "gpt-4.1", + }, + { + id: "gpt-4.1-mini", + }, + { + id: "gpt-4.1-nano", + }, + { + id: "gpt-4o", + }, + { + id: "gpt-4o-mini", + }, + { + id: "o1", + }, + { + id: "o1-preview", + }, + { + id: "o3-mini", + }, + ], + }; + }, +}); +//# sourceMappingURL=azureaiinference.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaiinference.js.map b/packages/core/.tshy-build/browser/azureaiinference.js.map new file mode 100644 index 0000000000..ba5ed4459e --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaiinference.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azureaiinference.js","sourceRoot":"","sources":["../../src/azureaiinference.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAgB;IAChE,EAAE,EAAE,iCAAiC;IACrC,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,KAAK,IAAI,EAAE;QACrB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE;gBACN;oBACE,EAAE,EAAE,IAAI;iBACT;gBACD;oBACE,EAAE,EAAE,SAAS;iBACd;gBACD;oBACE,EAAE,EAAE,SAAS;iBACd;gBACD;oBACE,EAAE,EAAE,SAAS;iBACd;gBACD;oBACE,EAAE,EAAE,cAAc;iBACnB;gBACD;oBACE,EAAE,EAAE,cAAc;iBACnB;gBACD;oBACE,EAAE,EAAE,QAAQ;iBACb;gBACD;oBACE,EAAE,EAAE,aAAa;iBAClB;gBACD;oBACE,EAAE,EAAE,IAAI;iBACT;gBACD;oBACE,EAAE,EAAE,YAAY;iBACjB;gBACD;oBACE,EAAE,EAAE,SAAS;iBACd;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaisearch.d.ts b/packages/core/.tshy-build/browser/azureaisearch.d.ts new file mode 100644 index 0000000000..326cb85982 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaisearch.d.ts @@ -0,0 +1,3 @@ +import type { WorkspaceFileIndexCreator } from "./chat.js"; +export declare const azureAISearchIndex: WorkspaceFileIndexCreator; +//# sourceMappingURL=azureaisearch.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaisearch.d.ts.map b/packages/core/.tshy-build/browser/azureaisearch.d.ts.map new file mode 100644 index 0000000000..836a696767 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaisearch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azureaisearch.d.ts","sourceRoot":"","sources":["../../src/azureaisearch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAqB,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAyB9E,eAAO,MAAM,kBAAkB,EAAE,yBAyOhC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaisearch.js b/packages/core/.tshy-build/browser/azureaisearch.js new file mode 100644 index 0000000000..35ae98e741 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaisearch.js @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { checkCancelled, toSignal } from "./cancellation.js"; +import { arrayify } from "./cleaners.js"; +import { resolveRuntimeHost } from "./host.js"; +import { logVerbose } from "./util.js"; +import { resolveFileContent } from "./file.js"; +import { hash } from "./crypto.js"; +import { chunk } from "./encoders.js"; +import { genaiscriptDebug } from "./debug.js"; +import { SearchClient, SearchIndexClient, AzureKeyCredential } from "@azure/search-documents"; +const dbg = genaiscriptDebug("azureaisearch"); +const HASH_LENGTH = 64; +export const azureAISearchIndex = async (indexName, cfg, embedder, options) => { + const runtimeHost = resolveRuntimeHost(); + // https://learn.microsoft.com/en-us/azure/search/search-security-rbac?tabs=roles-portal-admin%2Croles-portal%2Croles-portal-query%2Ctest-portal%2Ccustom-role-portal + const { trace, cancellationToken, deleteIfExists, chunkOverlap = 128, chunkSize = 512, vectorSize = 1536, } = options || {}; + const abortSignal = toSignal(cancellationToken); + const endPoint = process.env.AZURE_AI_SEARCH_ENDPOINT; + if (!endPoint) { + dbg(`checking if AZURE_AI_SEARCH_ENDPOINT is configured`); + throw new Error("AZURE_AI_SEARCH_ENDPOINT is not configured."); + } + let credential; + const apiKey = process.env.AZURE_AI_SEARCH_API_KEY; + if (apiKey) { + dbg(`using AzureKeyCredential with apiKey`); + credential = new AzureKeyCredential(apiKey); + } + else { + dbg(`fetching Azure token credential`); + const { token } = await runtimeHost.azureToken.token("default", { + cancellationToken, + }); + checkCancelled(cancellationToken); + if (!token) { + dbg(`validating Azure token`); + throw new Error("Azure AI Search requires a valid Azure token credential."); + } + credential = token.credential; + } + logVerbose(`azure ai search: ${indexName}, embedder ${cfg.provider}:${cfg.model}, ${vectorSize} dimensions`); + const indexClient = new SearchIndexClient(endPoint, credential, {}); + if (deleteIfExists) { + dbg(`deleting existing index ${indexName}`); + await indexClient.deleteIndex(indexName, { abortSignal }); + } + dbg(`creating or updating index ${indexName}`); + const created = await indexClient.createOrUpdateIndex({ + name: indexName, + fields: [ + { name: "id", type: "Edm.String", key: true }, + { + name: "filename", + type: "Edm.String", + searchable: true, + filterable: true, + sortable: true, + }, + { name: "lineStart", type: "Edm.Int32", filterable: true }, + { name: "lineEnd", type: "Edm.Int32", filterable: true }, + { name: "content", type: "Edm.String", searchable: true }, + { + name: "contentVector", + type: "Collection(Edm.Single)", + searchable: true, + vectorSearchDimensions: vectorSize, + vectorSearchProfileName: "content-vector-profile", + }, + ], + vectorSearch: { + profiles: [ + { + name: "content-vector-profile", + algorithmConfigurationName: "content-vector-algorithm", + }, + ], + algorithms: [ + { + name: "content-vector-algorithm", + kind: "hnsw", + parameters: { + m: 4, + efConstruction: 400, + efSearch: 500, + metric: "cosine", + }, + }, + ], + }, + }); + dbg(`tracing details of created index`); + trace?.detailsFenced(`azure ai search ${indexName}`, created, "json"); + const client = new SearchClient(endPoint, indexName, credential, {}); + const chunkId = async (textChunk) => await hash([textChunk.filename ?? textChunk.content, textChunk.lineEnd, textChunk.lineEnd], { + length: HASH_LENGTH, + }); + return Object.freeze({ + name: indexName, + insertOrUpdate: async (file) => { + const files = arrayify(file); + const outdated = []; + const docs = []; + for (const currentFile of files) { + dbg(`resolving file content for ${currentFile.filename}`); + await resolveFileContent(currentFile, { cancellationToken }); + if (currentFile.encoding) { + continue; + } + dbg(`chunking file ${currentFile.filename}`); + const newChunks = await chunk(currentFile, { + chunkSize, + chunkOverlap, + }); + const oldChunks = await client.search(undefined, { + filter: `filename eq '${currentFile.filename}'`, + }); + for await (const result of oldChunks.results) { + const oldChunk = result.document; + const index = newChunks.findIndex((c) => c.lineStart === oldChunk.lineStart && + c.lineEnd === oldChunk.lineEnd && + c.content === oldChunk.content); + if (index > -1) { + newChunks.splice(index, 1); + } + else { + dbg(`adding outdated chunk`); + outdated.push(oldChunk); + } + } + // new chunks + for (const textChunk of newChunks) { + dbg(`embedding new chunk content`); + const vector = await embedder(textChunk.content, cfg, options); + checkCancelled(cancellationToken); + dbg(`validating embedding vector status`); + if (vector.status !== "success") { + throw new Error(vector.error || vector.status); + } + docs.push({ + id: await chunkId(textChunk), + ...textChunk, + contentVector: vector.data[0], + }); + } + } + logVerbose(`azure ai search: ${indexName} index ${outdated.length} outdated, ${docs.length} updated`); + if (outdated.length) { + dbg(`deleting outdated documents`); + const res = await client.deleteDocuments(outdated, { + abortSignal, + throwOnAnyFailure: false, + }); + for (const r of res.results) { + if (!r.succeeded) { + logVerbose(` ${r.key} ${r.errorMessage} (${r.statusCode})`); + } + } + } + dbg(`checking if there are no new documents`); + if (!docs.length) { + return; + } + dbg(`merging or uploading new documents`); + const res = await client.mergeOrUploadDocuments(docs, { + abortSignal, + throwOnAnyFailure: false, + }); + for (const r of res.results) { + if (!r.succeeded) { + logVerbose(` ${r.key} ${r.errorMessage} (${r.statusCode})`); + } + } + }, + search: async (query, searchOptions) => { + dbg(`embedding search query`); + const { topK, minScore = 0 } = searchOptions || {}; + const vector = await embedder(query, cfg, { + trace, + cancellationToken, + }); + checkCancelled(cancellationToken); + dbg(`validating embedding vector status`); + if (vector.status !== "success") { + throw new Error(vector.error || vector.status); + } + dbg(`searching documents with query ${query}`); + const docs = await client.search(query, { + searchMode: "all", + vectorSearchOptions: { + queries: [ + { + kind: "vector", + vector: vector.data[0], + fields: ["contentVector"], + kNearestNeighborsCount: 3, + }, + ], + }, + }); + const res = []; + dbg(`iterating over search results`); + for await (const doc of docs.results) { + if (doc.score < minScore) { + continue; + } + res.push({ ...doc.document, score: doc.score }); + dbg(`checking if result length exceeds topK`); + if (res.length >= topK) { + break; + } + } + return res; + }, + }); +}; +//# sourceMappingURL=azureaisearch.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureaisearch.js.map b/packages/core/.tshy-build/browser/azureaisearch.js.map new file mode 100644 index 0000000000..5aba1a79bc --- /dev/null +++ b/packages/core/.tshy-build/browser/azureaisearch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azureaisearch.js","sourceRoot":"","sources":["../../src/azureaisearch.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azurecontentsafety.d.ts b/packages/core/.tshy-build/browser/azurecontentsafety.d.ts new file mode 100644 index 0000000000..ab7ba32a8f --- /dev/null +++ b/packages/core/.tshy-build/browser/azurecontentsafety.d.ts @@ -0,0 +1,28 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { ContentSafety } from "./types.js"; +/** + * Determines if the Azure Content Safety client is configured by checking for the presence of a valid endpoint. + * + * @returns {boolean} - Returns true if the Azure Content Safety API endpoint is configured, false otherwise. + * + * Environment Variables: + * - AZURE_CONTENT_SAFETY_ENDPOINT: The base endpoint for the Azure Content Safety API, if provided. + * - AZURE_CONTENT_SAFETY_API_ENDPOINT: Alternative variable for the base endpoint, if the primary variable is not set. + * + * The function trims trailing slashes from the endpoint before validation. + */ +export declare function isAzureContentSafetyClientConfigured(): boolean; +/** + * Creates an Azure Content Safety client to detect harmful content and prompt injection in text or documents. + * + * @param options - Configuration options for the client. + * - Includes properties for tracing operations, cancellation signals, and additional configurations. + * - `signal` - Optional AbortSignal for request cancellation. + * + * @returns An object implementing ContentSafety, with methods: + * - `detectHarmfulContent`: Analyzes text or documents for harmful content. + * - `detectPromptInjection`: Analyzes text or documents for prompt injection attacks. + */ +export declare function createAzureContentSafetyClient(options: CancellationOptions & TraceOptions): ContentSafety; +//# sourceMappingURL=azurecontentsafety.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azurecontentsafety.d.ts.map b/packages/core/.tshy-build/browser/azurecontentsafety.d.ts.map new file mode 100644 index 0000000000..6b35baede7 --- /dev/null +++ b/packages/core/.tshy-build/browser/azurecontentsafety.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azurecontentsafety.d.ts","sourceRoot":"","sources":["../../src/azurecontentsafety.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAQ7D,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,YAAY,CAAC;AAqOpB;;;;;;;;;;GAUG;AACH,wBAAgB,oCAAoC,YAKnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,mBAAmB,GAAG,YAAY,GAC1C,aAAa,CAOf"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azurecontentsafety.js b/packages/core/.tshy-build/browser/azurecontentsafety.js new file mode 100644 index 0000000000..356cdb8785 --- /dev/null +++ b/packages/core/.tshy-build/browser/azurecontentsafety.js @@ -0,0 +1,215 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createFetch, statusToMessage } from "./fetch.js"; +import { arrayify } from "./cleaners.js"; +import { AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH, DOCS_CONFIGURATION_CONTENT_SAFETY_URL, } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { YAMLStringify } from "./yaml.js"; +import { trimTrailingSlash } from "./cleaners.js"; +import { chunkString } from "./chunkers.js"; +import { createCache } from "./cache.js"; +import { traceFetchPost } from "./fetchtext.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("contentsafety:azure"); +class AzureContentSafetyClient { + options; + id; + cache; + constructor(options) { + this.options = options; + this.cache = createCache("azurecontentsafety", { + ...(options || {}), + type: "fs", + }); + } + async detectHarmfulContent(content, options) { + const { trace } = this.options || {}; + const { maxAllowedSeverity = 0 } = options || {}; + const route = "text:analyze"; + try { + dbg(`detecting harmful content`); + trace?.startDetails("🛡️ content safety: detecting harmful content"); + const fetcher = await this.createClient(route); + const analyze = async (text) => { + trace?.fence(YAMLStringify(text), "yaml"); + const body = { text }; + const cached = await this.cache.get({ route, body, options }); + if (cached) { + trace?.itemValue("cached", YAMLStringify(cached)); + return cached; + } + const res = await fetcher(body); + if (!res.ok) { + dbg(statusToMessage(res)); + throw new Error(`Azure Content Safety API failed with status ${res.status}`); + } + const resBody = (await res.json()); + const harmfulContentDetected = resBody.categoriesAnalysis?.some(({ severity }) => severity > maxAllowedSeverity); + const r = { harmfulContentDetected, ...resBody }; + await this.cache.set({ route, body, options }, r); + return r; + }; + const inputs = arrayify(await content); + for (const input of inputs) { + const text = typeof input === "string" ? input : input.content; + const filename = typeof input === "string" ? undefined : input.filename; + for (const chunk of chunkString(text, AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH)) { + const res = await analyze(chunk); + if (res.harmfulContentDetected) + return { + ...res, + filename, + chunk, + }; + } + } + trace?.item("no harmful content detected"); + dbg(`no harmful content detected`); + return { harmfulContentDetected: false }; + } + finally { + trace?.endDetails(); + } + } + async detectPromptInjection(content) { + const options = {}; + const { trace } = this.options || {}; + const route = "text:shieldPrompt"; + try { + dbg(`detecting prompt injection`); + trace?.startDetails("🛡️ content safety: detecting prompt injection"); + const input = arrayify(await content); + const userPrompts = input.filter((i) => typeof i === "string"); + const documents = input.filter((i) => typeof i === "object"); + const fetcher = await this.createClient(route); + const shieldPrompt = async (body) => { + trace?.fence(YAMLStringify(body), "yaml"); + const cached = await this.cache.get({ route, body, options }); + if (cached) { + trace?.itemValue("cached", YAMLStringify(cached)); + return cached; + } + const res = await fetcher(body); + if (!res.ok) { + dbg(statusToMessage(res)); + throw new Error(`Azure Content Safety API failed with status ${res.status}`); + } + const resBody = (await res.json()); + const attackDetected = !!resBody.userPromptAnalysis?.attackDetected || + resBody.documentsAnalysis?.some((doc) => doc.attackDetected); + const r = { attackDetected }; + await this.cache.set({ route, body, options: {} }, r); + return r; + }; + for (const userPrompt of userPrompts) { + for (const chunk of chunkString(userPrompt, AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH)) { + const res = await shieldPrompt({ + userPrompt: chunk, + documents: [], + }); + if (res.attackDetected) + return { + ...res, + chunk, + }; + } + } + for (const document of documents) { + for (const chunk of chunkString(document.content, AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH)) { + const res = await shieldPrompt({ + userPrompt: "", + documents: [chunk], + }); + if (res.attackDetected) + return { + ...res, + filename: document.filename, + chunk, + }; + } + } + trace.item("no attack detected"); + dbg(`no attack detected`); + return { attackDetected: false }; + } + finally { + trace?.endDetails(); + } + } + async createClient(route, options) { + const { trace } = this.options || {}; + const runtimeHost = resolveRuntimeHost(); + const endpoint = trimTrailingSlash(process.env.AZURE_CONTENT_SAFETY_ENDPOINT || process.env.AZURE_CONTENT_SAFETY_API_ENDPOINT); + const credentialsType = ((process.env.AZURE_CONTENT_SAFETY_CREDENTIALS_TYPE || + process.env.AZURE_CONTENT_SAFETY_API_CREDENTIALS_TYPE) + ?.toLowerCase() + ?.trim() || "default"); + const apiKey = process.env.AZURE_CONTENT_SAFETY_KEY || process.env.AZURE_CONTENT_SAFETY_API_KEY; + let apiToken; + if (!apiKey) { + dbg(`requesting Azure token`); + const { token } = await runtimeHost.azureToken.token(credentialsType, options); + apiToken = token.token; + } + const version = process.env.AZURE_CONTENT_SAFETY_VERSION || "2024-09-01"; + dbg(`azure version: %s`, version); + if (!endpoint) + throw new Error(`AZURE_CONTENT_SAFETY_ENDPOINT is not set. See ${DOCS_CONFIGURATION_CONTENT_SAFETY_URL} for help.`); + if (!apiKey && !apiToken) + throw new Error(`AZURE_CONTENT_SAFETY_KEY is not set or not signed in with Azure. See ${DOCS_CONFIGURATION_CONTENT_SAFETY_URL} for help.`); + const headers = { + "Content-Type": "application/json", + "User-Agent": "genaiscript", + }; + if (apiKey) + headers["Ocp-Apim-Subscription-Key"] = apiKey; + if (apiToken) + headers["Authorization"] = `Bearer ${apiToken}`; + const fetch = await createFetch(this.options); + const url = `${endpoint}/contentsafety/${route}?api-version=${version}`; + const fetcher = async (body) => { + traceFetchPost(trace, url, headers, body); + return await fetch(url, { + method: "POST", + headers, + body: JSON.stringify(body), + }); + }; + return fetcher; + } +} +/** + * Determines if the Azure Content Safety client is configured by checking for the presence of a valid endpoint. + * + * @returns {boolean} - Returns true if the Azure Content Safety API endpoint is configured, false otherwise. + * + * Environment Variables: + * - AZURE_CONTENT_SAFETY_ENDPOINT: The base endpoint for the Azure Content Safety API, if provided. + * - AZURE_CONTENT_SAFETY_API_ENDPOINT: Alternative variable for the base endpoint, if the primary variable is not set. + * + * The function trims trailing slashes from the endpoint before validation. + */ +export function isAzureContentSafetyClientConfigured() { + const endpoint = trimTrailingSlash(process.env.AZURE_CONTENT_SAFETY_ENDPOINT || process.env.AZURE_CONTENT_SAFETY_API_ENDPOINT); + return !!endpoint; +} +/** + * Creates an Azure Content Safety client to detect harmful content and prompt injection in text or documents. + * + * @param options - Configuration options for the client. + * - Includes properties for tracing operations, cancellation signals, and additional configurations. + * - `signal` - Optional AbortSignal for request cancellation. + * + * @returns An object implementing ContentSafety, with methods: + * - `detectHarmfulContent`: Analyzes text or documents for harmful content. + * - `detectPromptInjection`: Analyzes text or documents for prompt injection attacks. + */ +export function createAzureContentSafetyClient(options) { + const client = new AzureContentSafetyClient(options); + return { + id: client.id, + detectHarmfulContent: client.detectHarmfulContent.bind(client), + detectPromptInjection: client.detectPromptInjection.bind(client), + }; +} +//# sourceMappingURL=azurecontentsafety.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azurecontentsafety.js.map b/packages/core/.tshy-build/browser/azurecontentsafety.js.map new file mode 100644 index 0000000000..31b980c397 --- /dev/null +++ b/packages/core/.tshy-build/browser/azurecontentsafety.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azurecontentsafety.js","sourceRoot":"","sources":["../../src/azurecontentsafety.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuredevops.d.ts b/packages/core/.tshy-build/browser/azuredevops.d.ts new file mode 100644 index 0000000000..d31a8904fd --- /dev/null +++ b/packages/core/.tshy-build/browser/azuredevops.d.ts @@ -0,0 +1,52 @@ +import type { PromptScript } from "./types.js"; +export interface AzureDevOpsEnv { + fork: boolean; + accessToken: string; + collectionUri: string; + teamProject: string; + repositoryId: string; + apiVersion: string; + sourceBranch: string; + runUrl?: string; +} +/** + * Parses Azure DevOps environment variables into a structured object. + * + * @param env - A record of environment variables. + * @returns A structured object containing Azure DevOps environment details. + * + * Environment variables: + * - SYSTEM_PULLREQUEST_ISFORK: Indicates if the pull request is from a fork. + * - SYSTEM_ACCESSTOKEN: Authentication token for API requests. + * - SYSTEM_COLLECTIONURI: The base URI of the Azure DevOps collection. + * - SYSTEM_TEAMPROJECT: The name of the team project. + * - BUILD_REPOSITORY_NAME: The name of the repository. + * - BUILD_SOURCEBRANCH: The source branch for the build. + * - apiVersion: The API version used for Azure DevOps requests. + */ +export declare function azureDevOpsParseEnv(env: Record): Promise; +/** + * Updates the description of a pull request in Azure DevOps. + * + * @param script - The script object used to include a generated-by footer. + * @param info - An object containing Azure DevOps environment details, such as tokens, URIs, and repository information. + * @param text - The new content to include in the pull request description. + * @param commentTag - A unique tag used to identify and merge specific content into the description. + * + * Merges the existing description with the provided text, appending a footer. Sends a PATCH request + * to update the pull request description in Azure DevOps. Logs errors if the operation fails. + */ +export declare function azureDevOpsUpdatePullRequestDescription(script: PromptScript, info: AzureDevOpsEnv, text: string, commentTag: string): Promise; +/** + * Creates a new issue comment on an Azure DevOps pull request. + * + * @param script - The script context providing metadata for execution. + * @param info - Object containing Azure DevOps environment details such as API credentials and repository information. + * @param body - The content of the comment to be added to the pull request. + * @param commentTag - A unique tag used to identify and manage comments created by the script. + * + * If a comment with the same tag already exists in an open thread, it will be closed before creating the new comment. + * Retrieves the relevant pull request, appends a footer to the comment body, and creates a new comment thread. + */ +export declare function azureDevOpsCreateIssueComment(script: PromptScript, info: AzureDevOpsEnv, body: string, commentTag: string): Promise; +//# sourceMappingURL=azuredevops.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuredevops.d.ts.map b/packages/core/.tshy-build/browser/azuredevops.d.ts.map new file mode 100644 index 0000000000..103e3cb033 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuredevops.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azuredevops.d.ts","sourceRoot":"","sources":["../../src/azuredevops.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB9F;AAiCD;;;;;;;;;;GAUG;AACH,wBAAsB,uCAAuC,CAC3D,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,iBA0BnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,iBA0EnB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuredevops.js b/packages/core/.tshy-build/browser/azuredevops.js new file mode 100644 index 0000000000..74284942bd --- /dev/null +++ b/packages/core/.tshy-build/browser/azuredevops.js @@ -0,0 +1,179 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createFetch, tryReadText } from "./fetch.js"; +import { generatedByFooter, mergeDescription } from "./githubclient.js"; +import { prettifyMarkdown } from "./pretty.js"; +import { logError, logVerbose } from "./util.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("azuredevops"); +/** + * Parses Azure DevOps environment variables into a structured object. + * + * @param env - A record of environment variables. + * @returns A structured object containing Azure DevOps environment details. + * + * Environment variables: + * - SYSTEM_PULLREQUEST_ISFORK: Indicates if the pull request is from a fork. + * - SYSTEM_ACCESSTOKEN: Authentication token for API requests. + * - SYSTEM_COLLECTIONURI: The base URI of the Azure DevOps collection. + * - SYSTEM_TEAMPROJECT: The name of the team project. + * - BUILD_REPOSITORY_NAME: The name of the repository. + * - BUILD_SOURCEBRANCH: The source branch for the build. + * - apiVersion: The API version used for Azure DevOps requests. + */ +export async function azureDevOpsParseEnv(env) { + const fork = env.SYSTEM_PULLREQUEST_ISFORK !== "False"; + const accessToken = env.SYSTEM_ACCESSTOKEN; + const collectionUri = env.SYSTEM_COLLECTIONURI; // https://dev.azure.com/msresearch/ + const teamProject = env.SYSTEM_TEAMPROJECT; + const repositoryId = env.BUILD_REPOSITORY_NAME; // build_repositoryid is a guid + const sourceBranch = env.BUILD_SOURCEBRANCH; + const apiVersion = "7.1"; + return { + fork, + accessToken, + collectionUri, + teamProject, + repositoryId, + apiVersion, + sourceBranch, + }; +} +async function findPullRequest(info) { + const { accessToken, collectionUri, sourceBranch, teamProject, repositoryId, apiVersion } = info; + // query pull request + const Authorization = `Bearer ${accessToken}`; + const searchUrl = `${collectionUri}${teamProject}/_apis/git/pullrequests/?searchCriteria.repositoryId=${repositoryId}&searchCriteria.sourceRefName=${sourceBranch}&api-version=${apiVersion}`; + const fetch = await createFetch({ retryOn: [] }); + const resGet = await fetch(searchUrl, { + method: "GET", + headers: { + Authorization, + }, + }); + if (resGet.status !== 200) { + logError(`pull request search failed, ${resGet.status}: ${resGet.statusText}`); + return undefined; + } + const resGetJson = (await resGet.json()); + const pr = resGetJson?.value?.[0]; + if (!pr) { + logError(`pull request not found`); + return undefined; + } + return pr; +} +/** + * Updates the description of a pull request in Azure DevOps. + * + * @param script - The script object used to include a generated-by footer. + * @param info - An object containing Azure DevOps environment details, such as tokens, URIs, and repository information. + * @param text - The new content to include in the pull request description. + * @param commentTag - A unique tag used to identify and merge specific content into the description. + * + * Merges the existing description with the provided text, appending a footer. Sends a PATCH request + * to update the pull request description in Azure DevOps. Logs errors if the operation fails. + */ +export async function azureDevOpsUpdatePullRequestDescription(script, info, text, commentTag) { + const { accessToken, collectionUri, teamProject, repositoryId, apiVersion } = info; + // query pull request + const pr = await findPullRequest(info); + if (!pr) + return; + // eslint-disable-next-line prefer-const + let { pullRequestId, description } = pr; + text = prettifyMarkdown(text); + text += generatedByFooter(script, info); + description = mergeDescription(commentTag, description, text); + const url = `${collectionUri}${teamProject}/_apis/git/repositories/${repositoryId}/pullrequests/${pullRequestId}?api-version=${apiVersion}`; + const fetch = await createFetch({ retryOn: [] }); + const res = await fetch(url, { + method: "PATCH", + body: JSON.stringify({ description }), + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${accessToken}`, + }, + }); + if (res.status !== 200) + logError(`pull request update failed, ${res.status}: ${res.statusText}`); + else + logVerbose(`pull request updated`); +} +/** + * Creates a new issue comment on an Azure DevOps pull request. + * + * @param script - The script context providing metadata for execution. + * @param info - Object containing Azure DevOps environment details such as API credentials and repository information. + * @param body - The content of the comment to be added to the pull request. + * @param commentTag - A unique tag used to identify and manage comments created by the script. + * + * If a comment with the same tag already exists in an open thread, it will be closed before creating the new comment. + * Retrieves the relevant pull request, appends a footer to the comment body, and creates a new comment thread. + */ +export async function azureDevOpsCreateIssueComment(script, info, body, commentTag) { + const { apiVersion, accessToken, collectionUri, teamProject, repositoryId } = info; + const { pullRequestId } = (await findPullRequest(info)) || {}; + if (isNaN(pullRequestId)) + return; + const fetch = await createFetch({ retryOn: [] }); + body += generatedByFooter(script, info); + const Authorization = `Bearer ${accessToken}`; + const urlThreads = `${collectionUri}${teamProject}/_apis/git/repositories/${repositoryId}/pullRequests/${pullRequestId}/threads`; + const url = `${urlThreads}?api-version=${apiVersion}`; + if (commentTag) { + const tag = ``; + body = `${body}\n\n${tag}\n\n`; + // https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-request-threads/list?view=azure-devops-rest-7.1&tabs=HTTP + // GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/threads?api-version=7.1-preview.1 + const resThreads = await fetch(url, { + method: "GET", + headers: { + Accept: "application/json", + Authorization, + }, + }); + if (resThreads.status !== 200) + return; + const threads = (await resThreads.json()); + const openThreads = threads.value?.filter((c) => c.status === "active" && c.comments?.some((comment) => comment.content.includes(tag))) || []; + for (const thread of openThreads) { + logVerbose(`pull request closing old comment thread ${thread.id}`); + await fetch(`${urlThreads}/${thread.id}?api-version=${apiVersion}`, { + method: "PATCH", + body: JSON.stringify({ + status: "closed", + }), + headers: { + "Content-Type": "application/json", + Authorization, + }, + }); + } + } + // https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-request-threads/create?view=azure-devops-rest-7.1&tabs=HTTP + // POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/threads?api-version=7.1-preview.1 + const res = await fetch(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization, + }, + body: JSON.stringify({ + status: "active", + comments: [ + { + content: body, + commentType: "text", + }, + ], + }), + }); + if (res.status !== 200) { + logError(`pull request comment creation failed, ${res.statusText}`); + dbg(await tryReadText(res)); + } + else + logVerbose(`pull request comment created`); +} +//# sourceMappingURL=azuredevops.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuredevops.js.map b/packages/core/.tshy-build/browser/azuredevops.js.map new file mode 100644 index 0000000000..15ec6db083 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuredevops.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azuredevops.js","sourceRoot":"","sources":["../../src/azuredevops.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureopenai.d.ts b/packages/core/.tshy-build/browser/azureopenai.d.ts new file mode 100644 index 0000000000..d1ce1ac311 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureopenai.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const AzureOpenAIModel: Readonly; +//# sourceMappingURL=azureopenai.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureopenai.d.ts.map b/packages/core/.tshy-build/browser/azureopenai.d.ts.map new file mode 100644 index 0000000000..1d4895a0da --- /dev/null +++ b/packages/core/.tshy-build/browser/azureopenai.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azureopenai.d.ts","sourceRoot":"","sources":["../../src/azureopenai.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,WAAW,CAAC;AAmHnE,eAAO,MAAM,gBAAgB,yBAQ3B,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureopenai.js b/packages/core/.tshy-build/browser/azureopenai.js new file mode 100644 index 0000000000..944e22423c --- /dev/null +++ b/packages/core/.tshy-build/browser/azureopenai.js @@ -0,0 +1,95 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:azureopenai"); +import { AZURE_MANAGEMENT_API_VERSION, MODEL_PROVIDER_AZURE_OPENAI } from "./constants.js"; +import { errorMessage, serializeError } from "./error.js"; +import { createFetch } from "./fetch.js"; +import { OpenAIChatCompletion, OpenAIEmbedder, OpenAIImageGeneration, OpenAIListModels, OpenAISpeech, OpenAITranscribe, } from "./openai.js"; +import { resolveRuntimeHost } from "./host.js"; +const azureManagementListModels = async (cfg, options) => { + const runtimeHost = resolveRuntimeHost(); + try { + // Create a fetch instance to make HTTP requests + const { base } = cfg; + const subscriptionId = process.env.AZURE_OPENAI_SUBSCRIPTION_ID; + let resourceGroupName = process.env.AZURE_OPENAI_RESOURCE_GROUP; + const accountName = /^https:\/\/([^.]+)\./.exec(base)[1]; + if (!subscriptionId || !accountName) { + dbg("subscriptionId or accountName is missing, returning an empty model list"); + return { ok: true, models: [] }; + } + const token = await runtimeHost.azureManagementToken.token("default", options); + if (!token) + throw new Error("Azure management token is missing"); + if (token.error) { + dbg("error occurred while fetching Azure management token: %s", token.error); + throw new Error(errorMessage(token.error)); + } + const fetch = await createFetch({ retries: 0, ...options }); + const get = async (url) => { + const res = await fetch(url, { + method: "GET", + headers: { + Accept: "application/json", + Authorization: `Bearer ${token.token.token}`, + }, + }); + if (res.status !== 200) { + return { + ok: false, + status: res.status, + error: serializeError(res.statusText), + }; + } + return await res.json(); + }; + if (!resourceGroupName) { + dbg("resourceGroupName is missing, fetching resource details"); + const resources = await get(`https://management.azure.com/subscriptions/${subscriptionId}/resources?api-version=2021-04-01`); + const resource = resources.value.find((r) => r.name === accountName); + resourceGroupName = /\/resourceGroups\/([^/]+)\/providers\//.exec(resource?.id)[1]; + if (!resourceGroupName) { + dbg("unable to extract resource group name from resource id"); + throw new Error("Resource group not found"); + } + } + // https://learn.microsoft.com/en-us/rest/api/aiservices/accountmanagement/deployments/list-skus?view=rest-aiservices-accountmanagement-2024-10-01&tabs=HTTP + const deployments = await get(`https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/${accountName}/deployments/?api-version=${AZURE_MANAGEMENT_API_VERSION}`); + return { + ok: true, + models: deployments.value.map((model) => ({ + id: model.name, + family: model.properties.model.name, + details: `${model.properties.model.format} ${model.properties.model.name}`, + url: `https://ai.azure.com/resource/deployments/${encodeURIComponent(model.id)}`, + version: model.properties.model.version, + })), + }; + } + catch (e) { + return { ok: false, error: serializeError(e) }; + } +}; +const azureManagementOrOpenAIListModels = async (cfg, options) => { + const modelsApi = process.env.AZURE_OPENAI_API_MODELS_TYPE; + if (modelsApi === "openai") { + dbg("using OpenAI API for model listing"); + return await OpenAIListModels(cfg, options); + } + else { + dbg("using Azure Management API for model listing"); + return await azureManagementListModels(cfg, options); + } +}; +// Define the Ollama model with its completion handler and model listing function +export const AzureOpenAIModel = Object.freeze({ + id: MODEL_PROVIDER_AZURE_OPENAI, + completer: OpenAIChatCompletion, + listModels: azureManagementOrOpenAIListModels, + transcriber: OpenAITranscribe, + speaker: OpenAISpeech, + imageGenerator: OpenAIImageGeneration, + embedder: OpenAIEmbedder, +}); +//# sourceMappingURL=azureopenai.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azureopenai.js.map b/packages/core/.tshy-build/browser/azureopenai.js.map new file mode 100644 index 0000000000..96bab2c0e7 --- /dev/null +++ b/packages/core/.tshy-build/browser/azureopenai.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azureopenai.js","sourceRoot":"","sources":["../../src/azureopenai.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuretoken.d.ts b/packages/core/.tshy-build/browser/azuretoken.d.ts new file mode 100644 index 0000000000..01ae2b26f3 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuretoken.d.ts @@ -0,0 +1,11 @@ +import { type AzureTokenResolver } from "./host.js"; +/** + * Creates an AzureTokenResolver instance for handling Azure authentication tokens. + * + * @param name - The name of the resolver, used for logging or identification. + * @param envName - The environment variable name containing authentication scopes or configuration data. + * @param scopes - The default Azure resource scopes for authentication. + * @returns An instance of AzureTokenResolver for managing token retrieval and caching. + */ +export declare function createAzureTokenResolver(name: string, envName: string, scopes: readonly string[]): AzureTokenResolver; +//# sourceMappingURL=azuretoken.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuretoken.d.ts.map b/packages/core/.tshy-build/browser/azuretoken.d.ts.map new file mode 100644 index 0000000000..9bbc28eb29 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuretoken.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"azuretoken.d.ts","sourceRoot":"","sources":["../../src/azuretoken.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,kBAAkB,EAA2C,MAAM,WAAW,CAAC;AA2KvH;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,kBAAkB,CAEpB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuretoken.js b/packages/core/.tshy-build/browser/azuretoken.js new file mode 100644 index 0000000000..c97f641f19 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuretoken.js @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { AZURE_TOKEN_EXPIRATION } from "./constants.js"; +import { isAzureTokenExpired, resolveRuntimeHost } from "./host.js"; +import { logError } from "./util.js"; +import { serializeError } from "./error.js"; +import { toSignal } from "./cancellation.js"; +import { AzureCliCredential, AzureDeveloperCliCredential, AzurePowerShellCredential, ChainedTokenCredential, DefaultAzureCredential, EnvironmentCredential, ManagedIdentityCredential, WorkloadIdentityCredential, } from "@azure/identity"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("azure:token"); +/** + * This module provides functions to handle Azure authentication tokens, + * including checking expiration and creating new tokens using Azure Identity SDK. + */ +/** + * Creates a new Azure authentication token. + * + * @param signal - An AbortSignal to allow aborting the token creation process. + * @returns A promise that resolves to an AuthenticationToken. + * + * Utilizes DefaultAzureCredential from the Azure Identity SDK to obtain the token. + * Logs the expiration time of the token for debugging or informational purposes. + */ +async function createAzureToken(scopes, credentialsType, cancellationToken) { + let credential; + switch (credentialsType) { + case "cli": + dbg("credentialsType is cli"); + credential = new AzureCliCredential(); + break; + case "env": + dbg("credentialsType is env"); + credential = new EnvironmentCredential(); + break; + case "powershell": + dbg("credentialsType is powershell"); + credential = new AzurePowerShellCredential(); + break; + case "devcli": + dbg("credentialsType is devcli"); + credential = new AzureDeveloperCliCredential(); + break; + case "managedidentity": + dbg("credentialsType is managedidentity"); + credential = new ManagedIdentityCredential(); + break; + case "workloadidentity": + dbg("credentialsType is workloadidentity"); + credential = new WorkloadIdentityCredential(); + break; + case "default": + dbg("credentialsType is default"); + credential = new DefaultAzureCredential(); // CodeQL [SM05139] The user explicitly requested this credential type so the user has a good reason to use it. + break; + default: + // Check if the environment is local/development + // also: https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production + if (process.env.NODE_ENV === "development") { + dbg("node_env development: credentialsType is default"); + credential = new DefaultAzureCredential(); // CodeQL [SM05139] Okay use of DefaultAzureCredential as it is only used in development........................................ + } + else { + dbg(`node_env unspecified: credentialsType is env, cli, devcli, powershell`); + credential = new ChainedTokenCredential(new EnvironmentCredential(), new AzureCliCredential(), new AzureDeveloperCliCredential(), new AzurePowerShellCredential()); + } + break; + } + // Obtain the Azure token + const abortSignal = toSignal(cancellationToken); + dbg(`get token for %o`, scopes); + const azureToken = await credential.getToken(scopes.slice(), { + abortSignal, + }); + // Prepare the result token object with the token and expiration timestamp + const res = { + credential, + token: azureToken.token, + // Use provided expiration timestamp or default to a constant expiration time + expiresOnTimestamp: azureToken.expiresOnTimestamp + ? azureToken.expiresOnTimestamp + : Date.now() + AZURE_TOKEN_EXPIRATION, + }; + return res; +} +class AzureTokenResolverImpl { + name; + envName; + scopes; + _token; + _error; + _resolver; + constructor(name, envName, scopes) { + this.name = name; + this.envName = envName; + this.scopes = scopes; + } + get error() { + return this._error; + } + async token(credentialsType, options) { + if (this._resolver) { + return this._resolver; + } + // cached + const { cancellationToken } = options || {}; + if (isAzureTokenExpired(this._token)) { + dbg("azure token expired"); + this._token = undefined; + this._error = undefined; + } + if (this._token || this._error) { + dbg("returning cached token or error"); + return { token: this._token, error: this._error }; + } + if (!this._resolver) { + const runtimeHost = resolveRuntimeHost(); + const scope = await runtimeHost.readSecret(this.envName); + dbg(`reading secret for envName: ${this.envName}`); + const scopes = scope ? scope.split(",") : this.scopes; + this._resolver = createAzureToken(scopes, credentialsType, cancellationToken) + .then((res) => { + this._token = res; + this._error = undefined; + this._resolver = undefined; + dbg(`${this.name}: ${credentialsType || ""} token (${scopes.join(",")}) expires on ${new Date(res.expiresOnTimestamp).toUTCString()}`); + return { token: this._token, error: this._error }; + }) + .catch((err) => { + dbg(`error occurred: ${err}`); + logError(err); + this._resolver = undefined; + this._token = undefined; + this._error = serializeError(err); + return { token: this._token, error: this._error }; + }); + } + return this._resolver; + } +} +/** + * Creates an AzureTokenResolver instance for handling Azure authentication tokens. + * + * @param name - The name of the resolver, used for logging or identification. + * @param envName - The environment variable name containing authentication scopes or configuration data. + * @param scopes - The default Azure resource scopes for authentication. + * @returns An instance of AzureTokenResolver for managing token retrieval and caching. + */ +export function createAzureTokenResolver(name, envName, scopes) { + return new AzureTokenResolverImpl(name, envName, scopes); +} +//# sourceMappingURL=azuretoken.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/azuretoken.js.map b/packages/core/.tshy-build/browser/azuretoken.js.map new file mode 100644 index 0000000000..8d76a19b95 --- /dev/null +++ b/packages/core/.tshy-build/browser/azuretoken.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azuretoken.js","sourceRoot":"","sources":["../../src/azuretoken.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/base64-browser.d.mts.map b/packages/core/.tshy-build/browser/base64-browser.d.mts.map new file mode 100644 index 0000000000..680d1f8286 --- /dev/null +++ b/packages/core/.tshy-build/browser/base64-browser.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"base64-browser.d.mts","sourceRoot":"","sources":["../../src/base64-browser.mts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAQrD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAS3D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/base64-browser.mjs.map b/packages/core/.tshy-build/browser/base64-browser.mjs.map new file mode 100644 index 0000000000..e2a88da2b9 --- /dev/null +++ b/packages/core/.tshy-build/browser/base64-browser.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"base64-browser.mjs","sourceRoot":"","sources":["../../src/base64-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,sDAAsD;IACtD,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAA0B;IACjD,IAAI,KAAiB,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IACD,6CAA6C;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/base64.d.ts b/packages/core/.tshy-build/browser/base64.d.ts new file mode 100644 index 0000000000..08526f463c --- /dev/null +++ b/packages/core/.tshy-build/browser/base64.d.ts @@ -0,0 +1,13 @@ +/** + * Decodes a base64 string into a Uint8Array (browser-compatible). + * @param base64 - The base64 encoded string. + * @returns Uint8Array of decoded bytes. + */ +export declare function fromBase64(base64: string): Uint8Array; +/** + * Encodes a string or Uint8Array into a base64 string (browser-compatible). + * @param input - The string or Uint8Array to encode. + * @returns Base64 encoded string. + */ +export declare function toBase64(input: string | Uint8Array): string; +//# sourceMappingURL=base64-browser.d.mts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/base64.js b/packages/core/.tshy-build/browser/base64.js new file mode 100644 index 0000000000..9147219907 --- /dev/null +++ b/packages/core/.tshy-build/browser/base64.js @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Decodes a base64 string into a Uint8Array (browser-compatible). + * @param base64 - The base64 encoded string. + * @returns Uint8Array of decoded bytes. + */ +export function fromBase64(base64) { + if (typeof base64 !== "string" || !/^[A-Za-z0-9+/=\s]+$/.test(base64)) { + throw new Error("Input is not a valid base64 string"); + } + const cleaned = base64.replace(/\s/g, ""); + const binary = atob(cleaned); + // Use spread to convert string to array of char codes + return new Uint8Array([...binary].map(char => char.charCodeAt(0))); +} +/** + * Encodes a string or Uint8Array into a base64 string (browser-compatible). + * @param input - The string or Uint8Array to encode. + * @returns Base64 encoded string. + */ +export function toBase64(input) { + let bytes; + if (typeof input === "string") { + bytes = new TextEncoder().encode(input); + } + else { + bytes = input; + } + // Use spread to convert Uint8Array to string + return btoa(String.fromCharCode(...bytes)); +} +//# sourceMappingURL=base64-browser.mjs.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/binary.d.ts b/packages/core/.tshy-build/browser/binary.d.ts new file mode 100644 index 0000000000..70c69aaa4d --- /dev/null +++ b/packages/core/.tshy-build/browser/binary.d.ts @@ -0,0 +1,8 @@ +/** + * Determines if a given MIME type is binary. + * Checks against common binary types and a predefined list of binary MIME types. + * @param mimeType - The MIME type to evaluate. + * @returns True if the MIME type is binary, otherwise false. + */ +export declare function isBinaryMimeType(mimeType: string): boolean; +//# sourceMappingURL=binary.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/binary.d.ts.map b/packages/core/.tshy-build/browser/binary.d.ts.map new file mode 100644 index 0000000000..9ad1d0d519 --- /dev/null +++ b/packages/core/.tshy-build/browser/binary.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/binary.ts"],"names":[],"mappings":"AAoCA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,WAKhD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/binary.js b/packages/core/.tshy-build/browser/binary.js new file mode 100644 index 0000000000..bcda85e0f1 --- /dev/null +++ b/packages/core/.tshy-build/browser/binary.js @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// List of known binary MIME types +const BINARY_MIME_TYPES = [ + // Documents + "application/pdf", + "application/msword", + "application/vnd.ms-excel", + "application/vnd.ms-powerpoint", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // .docx + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", // .xlsx + "application/vnd.openxmlformats-officedocument.presentationml.presentation", // .pptx + // Archives + "application/zip", + "application/x-rar-compressed", + "application/x-7z-compressed", + "application/x-tar", + "application/x-bzip", + "application/x-bzip2", + "application/x-gzip", + // Executables and binaries + "application/octet-stream", // General binary type (often default for unknown binary files) + "application/x-msdownload", // Executables + "application/x-shockwave-flash", // SWF + "application/java-archive", // JAR (Java) + // Others + "application/vnd.google-earth.kml+xml", // KML (though XML based, often treated as binary in context of HTTP) + "application/vnd.android.package-archive", // APK (Android package) + "application/x-iso9660-image", // ISO images + "application/vnd.apple.installer+xml", // Apple Installer Package (though XML, often handled as binary) +]; +/** + * Determines if a given MIME type is binary. + * Checks against common binary types and a predefined list of binary MIME types. + * @param mimeType - The MIME type to evaluate. + * @returns True if the MIME type is binary, otherwise false. + */ +export function isBinaryMimeType(mimeType) { + return (/^(image|audio|video)\//.test(mimeType) || // Common binary types + BINARY_MIME_TYPES.includes(mimeType) // Additional specified binary types + ); +} +//# sourceMappingURL=binary.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/binary.js.map b/packages/core/.tshy-build/browser/binary.js.map new file mode 100644 index 0000000000..6d487ede43 --- /dev/null +++ b/packages/core/.tshy-build/browser/binary.js.map @@ -0,0 +1 @@ +{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/binary.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,kCAAkC;AAClC,MAAM,iBAAiB,GAAG;IACxB,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,0BAA0B;IAC1B,+BAA+B;IAC/B,yEAAyE,EAAE,QAAQ;IACnF,mEAAmE,EAAE,QAAQ;IAC7E,2EAA2E,EAAE,QAAQ;IAErF,WAAW;IACX,iBAAiB;IACjB,8BAA8B;IAC9B,6BAA6B;IAC7B,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IAEpB,2BAA2B;IAC3B,0BAA0B,EAAE,+DAA+D;IAC3F,0BAA0B,EAAE,cAAc;IAC1C,+BAA+B,EAAE,MAAM;IACvC,0BAA0B,EAAE,aAAa;IAEzC,SAAS;IACT,sCAAsC,EAAE,qEAAqE;IAC7G,yCAAyC,EAAE,wBAAwB;IACnE,6BAA6B,EAAE,aAAa;IAC5C,qCAAqC,EAAE,gEAAgE;CACxG,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,CACL,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,sBAAsB;QACjE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,oCAAoC;KAC1E,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/bufferlike.d.ts b/packages/core/.tshy-build/browser/bufferlike.d.ts new file mode 100644 index 0000000000..7681a4de15 --- /dev/null +++ b/packages/core/.tshy-build/browser/bufferlike.d.ts @@ -0,0 +1,24 @@ +import type { TraceOptions } from "./trace.js"; +import type { BufferLike } from "./types.js"; +/** + * Resolves a buffer-like object into a Buffer. + * + * @param bufferLike - The input object to resolve. Can be a string (URL), Blob, ReadableStream, ArrayBuffer, Uint8Array, or an object containing a filename property. + * @param options - Optional tracing options for resolving certain input types, such as file URLs or workspace files. + * @returns A Promise that resolves to a Buffer representation of the input object. + * @throws Error if the input type is unsupported. + */ +export declare function resolveBufferLike(bufferLike: BufferLike, options?: TraceOptions): Promise; +export declare function resolveBufferLikeAndExt(bufferLike: BufferLike, options?: TraceOptions): Promise<{ + bytes: Buffer; + ext: string; +}>; +/** + * Converts a buffer or a Uint8Array into a Blob object. + * + * @param buffer - The input data to convert. Can be a Buffer or a Uint8Array. + * @param mime - Optional MIME type override. If not provided, the MIME type will be inferred from the buffer, or defaults to "application/octet-stream". + * @returns A Blob object constructed from the input data. + */ +export declare function BufferToBlob(buffer: Buffer | Uint8Array, mime?: string): Promise; +//# sourceMappingURL=bufferlike.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/bufferlike.d.ts.map b/packages/core/.tshy-build/browser/bufferlike.d.ts.map new file mode 100644 index 0000000000..13e49b7e26 --- /dev/null +++ b/packages/core/.tshy-build/browser/bufferlike.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferlike.d.ts","sourceRoot":"","sources":["../../src/bufferlike.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAY5D;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBzC;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,iBAK5E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/bufferlike.js b/packages/core/.tshy-build/browser/bufferlike.js new file mode 100644 index 0000000000..9ce3fdd7b8 --- /dev/null +++ b/packages/core/.tshy-build/browser/bufferlike.js @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveFileBytes } from "./filebytes.js"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { extname } from "node:path"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("buffer"); +async function bufferTryFrom(data) { + if (data === undefined) + return undefined; + if (data instanceof Buffer) + return data; + if (data instanceof ArrayBuffer) + return Buffer.from(data); + if (data instanceof SharedArrayBuffer) + return Buffer.from(data); + return Buffer.from(data); +} +/** + * Resolves a buffer-like object into a Buffer. + * + * @param bufferLike - The input object to resolve. Can be a string (URL), Blob, ReadableStream, ArrayBuffer, Uint8Array, or an object containing a filename property. + * @param options - Optional tracing options for resolving certain input types, such as file URLs or workspace files. + * @returns A Promise that resolves to a Buffer representation of the input object. + * @throws Error if the input type is unsupported. + */ +export async function resolveBufferLike(bufferLike, options) { + if (bufferLike === undefined) + return undefined; + if (typeof bufferLike === "string") + return bufferTryFrom(await resolveFileBytes(bufferLike, options)); + else if (bufferLike instanceof Blob) + return bufferTryFrom(await bufferLike.arrayBuffer()); + else if (bufferLike instanceof ReadableStream) { + const stream = bufferLike; + return bufferTryFrom(await new Response(stream).arrayBuffer()); + } + else if (bufferLike instanceof ArrayBuffer) + return bufferTryFrom(bufferLike); + else if (bufferLike instanceof SharedArrayBuffer) + return bufferTryFrom(bufferLike); + else if (bufferLike instanceof Uint8Array) + return bufferTryFrom(bufferLike); + else if (typeof bufferLike === "object" && + typeof bufferLike.filename === "string") { + return Buffer.from(await resolveFileBytes(bufferLike, options)); + } + dbg(`unsupported: ${typeof bufferLike}`); + throw new Error(`Unsupported buffer-like object ${typeof bufferLike}`); +} +export async function resolveBufferLikeAndExt(bufferLike, options) { + const bytes = await resolveBufferLike(bufferLike, options); + if (!bytes) + return { bytes, ext: undefined }; + const ext = await fileTypeFromBuffer(bytes); + if (ext) + return { bytes, ext: ext.ext }; + else if (typeof bufferLike === "object" && + typeof bufferLike.filename === "string" && + bufferLike.filename) { + return { + bytes, + ext: extname(bufferLike.filename), + }; + } + else if (typeof bufferLike === "string") + return { bytes, ext: extname(bufferLike) }; + return { bytes, ext: ".bin" }; +} +/** + * Converts a buffer or a Uint8Array into a Blob object. + * + * @param buffer - The input data to convert. Can be a Buffer or a Uint8Array. + * @param mime - Optional MIME type override. If not provided, the MIME type will be inferred from the buffer, or defaults to "application/octet-stream". + * @returns A Blob object constructed from the input data. + */ +export async function BufferToBlob(buffer, mime) { + const type = await fileTypeFromBuffer(buffer); + return new Blob([buffer], { + type: mime || type?.mime || "application/octet-stream", + }); +} +//# sourceMappingURL=bufferlike.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/bufferlike.js.map b/packages/core/.tshy-build/browser/bufferlike.js.map new file mode 100644 index 0000000000..42c164f495 --- /dev/null +++ b/packages/core/.tshy-build/browser/bufferlike.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferlike.js","sourceRoot":"","sources":["../../src/bufferlike.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/build.d.ts b/packages/core/.tshy-build/browser/build.d.ts new file mode 100644 index 0000000000..c5e6a39459 --- /dev/null +++ b/packages/core/.tshy-build/browser/build.d.ts @@ -0,0 +1,13 @@ +/** + * Asynchronously builds a project by parsing tool files. + * + * @param options - Optional configuration for building the project. + * @param options.toolFiles - Specific tool files to include in the build. + * @param options.toolsPath - Path or paths to search for tool files if none are provided. + * @returns A promise that resolves to the newly parsed project structure. + */ +export declare function buildProject(options?: { + toolFiles?: string[]; + toolsPath?: string | string[]; +}): Promise; +//# sourceMappingURL=build.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/build.d.ts.map b/packages/core/.tshy-build/browser/build.d.ts.map new file mode 100644 index 0000000000..fcc66e24b5 --- /dev/null +++ b/packages/core/.tshy-build/browser/build.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B,yCA2DA"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/build.js b/packages/core/.tshy-build/browser/build.js new file mode 100644 index 0000000000..58037ac91a --- /dev/null +++ b/packages/core/.tshy-build/browser/build.js @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { uniq } from "es-toolkit"; +import { dirname } from "node:path"; +import { arrayify } from "./cleaners.js"; +import { GENAI_ANYJS_GLOB, GENAISCRIPT_FOLDER, GENAI_ANY_REGEX } from "./constants.js"; +import { genaiscriptDebug } from "./debug.js"; +import { resolveRuntimeHost } from "./host.js"; +import { parseProject } from "./parser.js"; +import { getModulePaths } from "./pathUtils.js"; +const dbg = genaiscriptDebug("cli:build"); +const { __dirname } = typeof module !== "undefined" && module.filename + ? getModulePaths(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + getModulePaths(import.meta); +/** + * Asynchronously builds a project by parsing tool files. + * + * @param options - Optional configuration for building the project. + * @param options.toolFiles - Specific tool files to include in the build. + * @param options.toolsPath - Path or paths to search for tool files if none are provided. + * @returns A promise that resolves to the newly parsed project structure. + */ +export async function buildProject(options) { + const runtimeHost = resolveRuntimeHost(); + const installDir = dirname(dirname(__dirname)); // Use __dirname to resolve the installation directory + const { toolFiles, toolsPath } = options || {}; + let scriptFiles = []; + if (toolFiles?.length) { + scriptFiles = toolFiles; + } + else { + let tps = arrayify(toolsPath).map((pattern) => ({ + pattern, + applyGitIgnore: true, + })); + if (!tps?.length) { + const config = await runtimeHost.config; + tps = []; + if (config.ignoreCurrentWorkspace) { + dbg(`ignoring current workspace scripts`); + } + else + tps.push({ pattern: GENAI_ANYJS_GLOB, applyGitIgnore: true }); + tps.push(...arrayify(config.include).map((pattern) => typeof pattern === "string" + ? { pattern, applyGitIgnore: false } + : { + pattern: pattern.pattern, + applyGitIgnore: !pattern.ignoreGitIgnore, + })); + } + tps = arrayify(tps); + scriptFiles = []; + for (const tp of tps) { + dbg(`searching %s .gitignore: %s`, tp.pattern, tp.applyGitIgnore); + const fs = await runtimeHost.findFiles(tp.pattern, { + ignore: tp.applyGitIgnore ? `**/${GENAISCRIPT_FOLDER}/**` : undefined, + applyGitIgnore: tp.applyGitIgnore, + }); + if (!fs?.length) { + dbg(`no files found`); + } + scriptFiles.push(...fs); + } + dbg(`found script files: %O`, scriptFiles); + } + // filter out unwanted files + scriptFiles = scriptFiles.filter((f) => GENAI_ANY_REGEX.test(f)); + // Ensure that the script files are unique + scriptFiles = uniq(scriptFiles); + // Parse the project using the determined script files + const newProject = await parseProject({ + installDir, + scriptFiles, + }); + // Return the newly parsed project structure + return newProject; +} +//# sourceMappingURL=build.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/build.js.map b/packages/core/.tshy-build/browser/build.js.map new file mode 100644 index 0000000000..fc2ad0e70a --- /dev/null +++ b/packages/core/.tshy-build/browser/build.js.map @@ -0,0 +1 @@ +{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cache.d.ts b/packages/core/.tshy-build/browser/cache.d.ts new file mode 100644 index 0000000000..3fb1d15294 --- /dev/null +++ b/packages/core/.tshy-build/browser/cache.d.ts @@ -0,0 +1,18 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { WorkspaceFileCache } from "./types.js"; +/** + * Represents a cache entry with a hashed identifier (`sha`), `key`, and `val`. + * @template K - Type of the key + * @template V - Type of the value + */ +export interface CacheEntry { + sha: string; + val: V; +} +export interface CreateCacheOptions { + type: "memory" | "jsonl" | "fs"; + userState?: Record; + lookupOnly?: boolean; +} +export declare function createCache(name: string, options: CreateCacheOptions & CancellationOptions): WorkspaceFileCache; +//# sourceMappingURL=cache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cache.d.ts.map b/packages/core/.tshy-build/browser/cache.d.ts.map new file mode 100644 index 0000000000..19fb1ddf48 --- /dev/null +++ b/packages/core/.tshy-build/browser/cache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKrD;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,CAAC,CAAC;CACR;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,GAChD,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CA8B1B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cache.js b/packages/core/.tshy-build/browser/cache.js new file mode 100644 index 0000000000..8e43f6bd6c --- /dev/null +++ b/packages/core/.tshy-build/browser/cache.js @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { FsCache } from "./fscache.js"; +import { JSONLineCache } from "./jsonlinecache.js"; +import { MemoryCache } from "./memcache.js"; +import debug from "debug"; +import { sanitizeFilename } from "./sanitize.js"; +import { resolveRuntimeHost } from "./host.js"; +const dbg = debug("genaiscript:cache"); +function cacheNormalizeName(name) { + return name ? sanitizeFilename(name.replace(/[^a-z0-9_]/gi, "_")) : undefined; // Sanitize name +} +export function createCache(name, options) { + name = cacheNormalizeName(name); // Sanitize name + if (!name) { + dbg(`empty cache name`); + return undefined; + } + const runtimeHost = resolveRuntimeHost(); + const type = options?.type || "fs"; + const key = `cache:${type}:${name}`; + const userState = options?.userState || runtimeHost.userState; + if (userState[key]) + return userState[key]; // Return if exists + if (options?.lookupOnly) + return undefined; + dbg(`creating ${name} ${type}`); + let r; + switch (type) { + case "memory": + r = new MemoryCache(name); + break; + case "jsonl": + r = new JSONLineCache(name); + break; + default: + r = new FsCache(name); + break; + } + userState[key] = r; + return r; +} +//# sourceMappingURL=cache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cache.js.map b/packages/core/.tshy-build/browser/cache.js.map new file mode 100644 index 0000000000..4734287cda --- /dev/null +++ b/packages/core/.tshy-build/browser/cache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAkBvC,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,gBAAgB;AACjG,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAAiD;IAEjD,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;IACxC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC;IAC9D,IAAI,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAA6B,CAAC,CAAC,mBAAmB;IAC1F,IAAI,OAAO,EAAE,UAAU;QAAE,OAAO,SAAS,CAAC;IAE1C,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAChC,IAAI,CAA2B,CAAC;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,CAAC,GAAG,IAAI,WAAW,CAAO,IAAI,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,OAAO;YACV,CAAC,GAAG,IAAI,aAAa,CAAO,IAAI,CAAC,CAAC;YAClC,MAAM;QACR;YACE,CAAC,GAAG,IAAI,OAAO,CAAO,IAAI,CAAC,CAAC;YAC5B,MAAM;IACV,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cancellation.d.ts b/packages/core/.tshy-build/browser/cancellation.d.ts new file mode 100644 index 0000000000..64d7dddb97 --- /dev/null +++ b/packages/core/.tshy-build/browser/cancellation.d.ts @@ -0,0 +1,74 @@ +/** + * A cancellation token is passed to an asynchronous or long running + * operation to request cancellation, like cancelling a request + * for completion items because the user continued to type. + * + * To get an instance of a `CancellationToken` use a + * {@link CancellationTokenSource}. + */ +export interface CancellationToken { + /** + * Is `true` when the token has been cancelled, `false` otherwise. + * This flag should be checked by operations to decide if they should terminate. + */ + isCancellationRequested: boolean; +} +/** + * Implements the CancellationToken using an AbortSignal + * to track the cancellation state. + */ +export declare class AbortSignalCancellationToken implements CancellationToken { + private readonly signal; + constructor(signal: AbortSignal); + get isCancellationRequested(): boolean; +} +/** + * Converts a CancellationToken to an AbortSignal if supported. + * If the token lacks a compatible signal property, returns undefined. + * + * @param token - The CancellationToken to convert. + * @returns The associated AbortSignal or undefined if unsupported. + */ +export declare function toSignal(token: CancellationToken): AbortSignal; +/** + * A controller that manages the AbortSignal and its associated CancellationToken. + * Useful for creating cancellable operations. + */ +export declare class AbortSignalCancellationController { + readonly controller: AbortController; + readonly token: AbortSignalCancellationToken; + constructor(); + /** + * Aborts the ongoing operation with an optional reason. + * This triggers the cancellation state in the associated token. + * + * @param reason - Optional reason for aborting the operation. + */ + abort(reason?: any): void; +} +/** + * Checks if the operation has been cancelled and throws an error if so. + * Throws a CancelError when the cancellation is requested. + * + * @param token - The cancellation token to check. + * @throws CancelError - If the cancellation has been requested. + */ +export declare function checkCancelled(token: CancellationToken): void; +/** + * Represents optional cancellation behavior for an operation. + * Contains a CancellationToken that can be checked for cancellation requests. + */ +export interface CancellationOptions { + cancellationToken?: CancellationToken; +} +/** + * Creates and returns an instance of AbortSignalCancellationController for handling cancellations. + * + * This function sets up a signal handler for SIGINT. On receiving the signal, it logs a warning, + * aborts the cancellation controller, and removes the signal handler. Calling SIGINT again after + * the first cancellation is invoked will exit the process. + * + * @returns An initialized AbortSignalCancellationController instance. + */ +export declare function createCancellationController(): AbortSignalCancellationController; +//# sourceMappingURL=cancellation.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cancellation.d.ts.map b/packages/core/.tshy-build/browser/cancellation.d.ts.map new file mode 100644 index 0000000000..908e62ba9f --- /dev/null +++ b/packages/core/.tshy-build/browser/cancellation.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../src/cancellation.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,4BAA6B,YAAW,iBAAiB;IAExD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAGhD,IAAI,uBAAuB,YAE1B;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GACd,WAAW,CAC7C;AAED;;;GAGG;AACH,qBAAa,iCAAiC;IAC5C,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAC;;IAQ7C;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG;CAGnB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,QAEtD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,sCAS3C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cancellation.js b/packages/core/.tshy-build/browser/cancellation.js new file mode 100644 index 0000000000..6dc49c1c65 --- /dev/null +++ b/packages/core/.tshy-build/browser/cancellation.js @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CancelError } from "./error.js"; +import { logWarn } from "./util.js"; +/** + * Implements the CancellationToken using an AbortSignal + * to track the cancellation state. + */ +export class AbortSignalCancellationToken { + signal; + // Constructor takes an AbortSignal to track cancellation + constructor(signal) { + this.signal = signal; + } + // Accessor for checking if the cancellation has been requested + get isCancellationRequested() { + return this.signal.aborted; + } +} +/** + * Converts a CancellationToken to an AbortSignal if supported. + * If the token lacks a compatible signal property, returns undefined. + * + * @param token - The CancellationToken to convert. + * @returns The associated AbortSignal or undefined if unsupported. + */ +export function toSignal(token) { + return token?.signal; +} +/** + * A controller that manages the AbortSignal and its associated CancellationToken. + * Useful for creating cancellable operations. + */ +export class AbortSignalCancellationController { + controller; + token; + // Initializes the controller and creates a token with the associated signal + constructor() { + this.controller = new AbortController(); + this.token = new AbortSignalCancellationToken(this.controller.signal); + } + /** + * Aborts the ongoing operation with an optional reason. + * This triggers the cancellation state in the associated token. + * + * @param reason - Optional reason for aborting the operation. + */ + abort(reason) { + this.controller.abort(reason); + } +} +/** + * Checks if the operation has been cancelled and throws an error if so. + * Throws a CancelError when the cancellation is requested. + * + * @param token - The cancellation token to check. + * @throws CancelError - If the cancellation has been requested. + */ +export function checkCancelled(token) { + if (token?.isCancellationRequested) + throw new CancelError("user cancelled"); +} +/** + * Creates and returns an instance of AbortSignalCancellationController for handling cancellations. + * + * This function sets up a signal handler for SIGINT. On receiving the signal, it logs a warning, + * aborts the cancellation controller, and removes the signal handler. Calling SIGINT again after + * the first cancellation is invoked will exit the process. + * + * @returns An initialized AbortSignalCancellationController instance. + */ +export function createCancellationController() { + const canceller = new AbortSignalCancellationController(); + const cancelHandler = () => { + logWarn("cancelling (cancel again to exit)..."); + canceller.abort(); + process.off("SIGINT", cancelHandler); + }; + process.on("SIGINT", cancelHandler); + return canceller; +} +//# sourceMappingURL=cancellation.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cancellation.js.map b/packages/core/.tshy-build/browser/cancellation.js.map new file mode 100644 index 0000000000..bda5b2b343 --- /dev/null +++ b/packages/core/.tshy-build/browser/cancellation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/cancellation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAEV;IAD7B,yDAAyD;IACzD,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,+DAA+D;IAC/D,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAwB;IAC/C,OAAQ,KAAa,EAAE,MAAqB,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,iCAAiC;IACnC,UAAU,CAAkB;IAC5B,KAAK,CAA+B;IAE7C,4EAA4E;IAC5E;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAY;QAChB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,IAAI,KAAK,EAAE,uBAAuB;QAAE,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC9E,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,SAAS,GAAG,IAAI,iCAAiC,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAChD,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/changelog.d.ts b/packages/core/.tshy-build/browser/changelog.d.ts new file mode 100644 index 0000000000..8c461df355 --- /dev/null +++ b/packages/core/.tshy-build/browser/changelog.d.ts @@ -0,0 +1,38 @@ +export interface ChangeLogChunk { + start: number; + end: number; + lines: { + index: number; + content: string; + }[]; +} +export interface ChangeLogChange { + original: ChangeLogChunk; + changed: ChangeLogChunk; +} +export interface ChangeLog { + index: number; + filename: string; + description: string; + changes: ChangeLogChange[]; +} +/** + * Parses a raw changelog string into a structured array of ChangeLog objects. + * + * @param source The raw input string containing changelog information. + * Must include headers, descriptions, and detailed changes with line numbers and contents. + * The input is expected to be wrapped in a "changelog" fence. + * Throws an error if the format is invalid, required fields are missing, or parsing fails. + * + * @returns An array of ChangeLog objects parsed from the input. + */ +export declare function parseChangeLogs(source: string): ChangeLog[]; +/** + * Applies a changelog to a given source string, modifying it according to the changes. + * + * @param source The original source code as a string. + * @param changelog The ChangeLog object containing the changes to apply. Updates line indices for subsequent changes. + * @returns The modified source code as a string. + */ +export declare function applyChangeLog(source: string, changelog: ChangeLog): string; +//# sourceMappingURL=changelog.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/changelog.d.ts.map b/packages/core/.tshy-build/browser/changelog.d.ts.map new file mode 100644 index 0000000000..1fda102cfe --- /dev/null +++ b/packages/core/.tshy-build/browser/changelog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/changelog.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;CACzB;AAGD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAkH3D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAsB3E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/changelog.js b/packages/core/.tshy-build/browser/changelog.js new file mode 100644 index 0000000000..b3453dfe77 --- /dev/null +++ b/packages/core/.tshy-build/browser/changelog.js @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Defines interfaces and functions for parsing and applying changelogs. + * A changelog describes changes between original and modified code segments. + */ +import { unfence } from "./unwrappers.js"; +/** + * Parses a raw changelog string into a structured array of ChangeLog objects. + * + * @param source The raw input string containing changelog information. + * Must include headers, descriptions, and detailed changes with line numbers and contents. + * The input is expected to be wrapped in a "changelog" fence. + * Throws an error if the format is invalid, required fields are missing, or parsing fails. + * + * @returns An array of ChangeLog objects parsed from the input. + */ +export function parseChangeLogs(source) { + const lines = unfence(source, "changelog").split("\n"); + const changelogs = []; + // Process each line to extract changelog information. + while (lines.length) { + if (!lines[0].trim()) { + lines.shift(); + continue; + } + // each back ticks + if (/^[`.]{3,}/.test(lines[0])) { + lines.shift(); + continue; + } + // Parse the ChangeLog header line. + let m = /^ChangeLog:\s{0,128}(?\d+)@(?.*)\s{0,128}$/i.exec(lines[0]); + if (!m) + throw new Error("missing ChangeLog header in |" + lines[0] + "|"); + const changelog = { + index: parseInt(m.groups.index), + filename: m.groups.file.trim(), + description: undefined, + changes: [], + }; + changelogs.push(changelog); + lines.shift(); + // Parse the Description line. + m = /^Description:(?.*)$/i.exec(lines[0]); + if (!m) + throw new Error("missing ChangeLog description"); + changelog.description = m.groups.description.trim(); + lines.shift(); + // Parse changes block. + while (lines.length) { + // Skip empty lines. + if (/^\s*$/.test(lines[0])) { + lines.shift(); + continue; + } + // each back ticks + if (/^[`.]{3,}/.test(lines[0])) { + // somehow we have finished this changed + lines.shift(); + continue; + } + // Attempt to parse a change. + const change = parseChange(); + if (change) + changelog.changes.push(change); + else + break; + } + } + return changelogs; + // Parses a single change within the changelog. + function parseChange() { + // Parse OriginalCode block + let m = /^OriginalCode@(?\d+)-(?\d+):$/i.exec(lines[0]); + if (!m) + return undefined; + lines.shift(); + const original = parseChunk(m); + // Parse ChangedCode block + m = /^ChangedCode@(?\d+)-(?\d+):\s*$/i.exec(lines[0]); + if (!m) + throw new Error("missing ChangedCode Changed in '" + lines[0] + "'"); + lines.shift(); + const changed = parseChunk(m); + const res = { original, changed }; + return res; + } + // Parses a chunk of code from the changelog. + function parseChunk(m) { + const start = parseInt(m.groups.start); + const end = parseInt(m.groups.end); + const chunk = { + start, + end, + lines: [], + }; + while (lines.length) { + m = /^\[(?\d+)\](?.*)$/i.exec(lines[0]); + if (m) { + let content = m.groups.content; + if (content[0] === " ") + content = content.slice(1); + chunk.lines.push({ + index: parseInt(m.groups.index), + content, + }); + lines.shift(); + } + else { + break; + } + } + return chunk; + } + /* + Example changelog format: + ChangeLog:1@ + Description: . + OriginalCode@4-6: + [4] + // More lines + ChangedCode@4-6: + [4] + // More lines + */ +} +/** + * Applies a changelog to a given source string, modifying it according to the changes. + * + * @param source The original source code as a string. + * @param changelog The ChangeLog object containing the changes to apply. Updates line indices for subsequent changes. + * @returns The modified source code as a string. + */ +export function applyChangeLog(source, changelog) { + const lines = source.split("\n"); + for (let i = 0; i < changelog.changes.length; ++i) { + const change = changelog.changes[i]; + const { original, changed } = change; + // Replace original lines with changed lines in the source. + lines.splice(original.start - 1, original.end - original.start + 1, ...changed.lines.map((l) => l.content)); + // Adjust subsequent change indices based on the shift in lines. + const shift = changed.lines.length - original.lines.length; + for (let j = i + 1; j < changelog.changes.length; ++j) { + const c = changelog.changes[j]; + c.original.start += shift; + c.original.end += shift; + } + } + return lines.join("\n"); +} +//# sourceMappingURL=changelog.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/changelog.js.map b/packages/core/.tshy-build/browser/changelog.js.map new file mode 100644 index 0000000000..fe69ec49f8 --- /dev/null +++ b/packages/core/.tshy-build/browser/changelog.js.map @@ -0,0 +1 @@ +{"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/changelog.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chat.d.ts b/packages/core/.tshy-build/browser/chat.d.ts new file mode 100644 index 0000000000..9dcc8279ad --- /dev/null +++ b/packages/core/.tshy-build/browser/chat.d.ts @@ -0,0 +1,177 @@ +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { PromptImage, PromptPrediction } from "./promptdom.js"; +import type { GenerationOptions } from "./generation.js"; +import type { CancellationOptions, CancellationToken } from "./cancellation.js"; +import type { ChatCompletionMessageParam, ChatCompletionResponse, ChatCompletionsOptions, CreateChatCompletionRequest, EmbeddingResult } from "./chattypes.js"; +import type { LanguageModelConfiguration, ResponseStatus } from "./server/messages.js"; +import type { ContextExpansionOptions, ChatParticipant, EmbeddingsModelOptions, FileMergeHandler, FileOutput, JSONSchema, LanguageModelInfo, ModelOptions, PromptOutputProcessorHandler, RetryOptions, RunPromptResult, SerializedError, ToolCallback, TranscriptionOptions, TranscriptionResult, VectorIndexOptions, WorkspaceFileIndex, BufferLike } from "./types.js"; +export type ChatCompletionHandler = (req: CreateChatCompletionRequest, connection: LanguageModelConfiguration, options: ChatCompletionsOptions & CancellationOptions & RetryOptions, trace: MarkdownTrace) => Promise; +export type ListModelsFunction = (cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type PullModelFunction = (cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type CreateTranscriptionRequest = { + file: Blob; + model: string; +} & TranscriptionOptions; +export type TranscribeFunction = (req: CreateTranscriptionRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type CreateSpeechRequest = { + input: string; + model: string; + voice?: string; + instructions?: string; +}; +export type CreateSpeechResult = { + audio: Uint8Array; + error?: SerializedError; +}; +export type SpeechFunction = (req: CreateSpeechRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type CreateImageRequest = { + model: string; + prompt: string; + quality?: string; + size?: string; + style?: string; + outputFormat?: "png" | "jpeg" | "webp"; + mode?: "generate" | "edit"; + image?: BufferLike; + mask?: BufferLike; +}; +export interface ImageGenerationUsage { + total_tokens: number; + input_tokens: number; + output_tokens: number; + input_tokens_details?: { + text_tokens: number; + image_tokens: number; + }; +} +export interface CreateImageResult { + image: Uint8Array; + error?: SerializedError; + revisedPrompt?: string; + usage?: ImageGenerationUsage; +} +export type ImageGenerationFunction = (req: CreateImageRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type EmbeddingFunction = (input: string | string[], cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions) => Promise; +export type WorkspaceFileIndexCreator = (indexName: string, cfg: LanguageModelConfiguration, embedder: EmbeddingFunction, options?: VectorIndexOptions & TraceOptions & CancellationOptions) => Promise; +export interface LanguageModel { + id: string; + completer?: ChatCompletionHandler; + listModels?: ListModelsFunction; + pullModel?: PullModelFunction; + transcriber?: TranscribeFunction; + speaker?: SpeechFunction; + imageGenerator?: ImageGenerationFunction; + embedder?: EmbeddingFunction; +} +/** + * Merges two sets of generation options, prioritizing values specified in the second parameter + * while falling back to defaults from the first parameter and runtime configurations. + * + * @param options - A base set of generation options containing default values. + * @param runOptions - A set of custom generation options that override the base values. + * @returns A merged set of generation options with priority given to `runOptions` values. + * + * The merging process includes: + * - `model`: Prioritized from `runOptions`, then `options`, and finally the runtime host's default large model. + * - `temperature`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `fallbackTools`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `reasoningEffort`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `embeddingsModel`: Resolved from `runOptions` if defined or falls back to `options`. + */ +export declare function mergeGenerationOptions(options: GenerationOptions, runOptions: ModelOptions & EmbeddingsModelOptions): GenerationOptions; +/** + * Executes a chat session by interacting with a language model, processing messages, + * handling tool integrations, and managing responses. + * + * @param connectionToken - Configuration for connecting to the language model, excluding the token. + * @param cancellationToken - Token to support cancellation of the chat session. + * @param messages - List of chat messages exchanged during the session. + * @param toolDefinitions - Definitions of tools that can be invoked during the session. + * @param schemas - JSON schemas for validating response content. + * @param fileOutputs - Files to be generated or modified during the session. + * @param outputProcessors - Handlers for post-processing generated outputs. + * @param fileMerges - Handlers for merging file outputs. + * @param prediction - Prediction metadata to guide the response generation. + * @param completer - Function that sends requests to the language model and returns the response. + * @param chatParticipants - List of participants involved in the chat session. + * @param disposables - Objects that require cleanup after the session ends. + * @param genOptions - Options to customize the session execution, such as model configuration, behavior, and caching. + * + * @returns - The final structured result of the chat session. + */ +export declare function executeChatSession(connectionToken: LanguageModelConfiguration, cancellationToken: CancellationToken, messages: ChatCompletionMessageParam[], toolDefinitions: ToolCallback[], schemas: Record, fileOutputs: FileOutput[], outputProcessors: PromptOutputProcessorHandler[], fileMerges: FileMergeHandler[], prediction: PromptPrediction, completer: ChatCompletionHandler, chatParticipants: ChatParticipant[], disposables: AsyncDisposable[], genOptions: GenerationOptions): Promise; +/** + * Logs detailed information about a prompt result, including reasoning and output, in a structured format. + * + * @param trace - A trace instance used to record detailed logs and events during the prompt execution. + * @param resp - The response object containing optional text and reasoning fields from the prompt result. + * + * If 'reasoning' is present in the response, it is logged in a dedicated "reasoning" section with markdown formatting. + * If 'text' is present, the function determines its format (e.g., JSON, XML, Markdown, or plain text) and logs it in a corresponding section. + * Outputs in Markdown format are further prettified for improved readability in the logs and appended as escaped HTML content. + */ +export declare function tracePromptResult(trace: MarkdownTrace, resp: { + text?: string; + reasoning?: string; +}): void; +/** + * Appends a user message to a chat history. + * + * @param messages - The current chat message array. + * @param content - The content of the user message. Can be a string or an image. + * @param options - Optional parameters for modifying behavior. + * @param options.cacheControl - Cache control value for the message. + * + * Notes: + * - If the last message in the array is not a user message or has different cache control, + * a new user message is added. + * - String content is appended to the existing user's message text. If the content is an image, + * it is added as a chat completion image. + * - If the last message content is a string, it is converted to an array when adding an image. + */ +export declare function appendUserMessage(messages: ChatCompletionMessageParam[], content: string | PromptImage, options?: ContextExpansionOptions): void; +/** + * Appends a message from the assistant to the list of chat messages. + * + * Adds the content to the last assistant message if it matches the role + * and cache control context; otherwise, creates a new assistant message entry. + * + * If the last assistant message already has content, appends the new content + * to it. Supports both string and structured content formats. + * + * @param messages - The list of chat messages to update. + * @param content - The content of the assistant message. Ignored if empty. + * @param options - Optional context settings for the message, such as cache control. + */ +export declare function appendAssistantMessage(messages: ChatCompletionMessageParam[], content: string, options?: ContextExpansionOptions): void; +/** + * Appends a system-level message to the beginning of the given messages array. + * + * @param messages - The list of chat messages to which the system message will be added. + * The system message is prepended to the array. + * @param content - The content of the message to be appended. If content is empty, the function exits. + * @param options - Optional parameters for additional message context. Includes: + * - cacheControl: A control directive for caching behavior. + * + * If the first message in the array is not a system message or does not match the provided cacheControl, a new system + * message object is created and added at the start of the array. Otherwise, the content is appended to the existing + * system message. + * If the existing system message content is a string, SYSTEM_FENCE is used as a separator before appending the new + * content. For non-string content, a text object is added to the content array. + * If the system message content is empty, the new content is directly assigned. + */ +export declare function appendSystemMessage(messages: ChatCompletionMessageParam[], content: string, options?: ContextExpansionOptions): void; +/** + * Adds tool definitions to the system messages of a chat conversation. + * + * The function inserts a system message containing the serialized tool definitions, + * formatted as YAML and wrapped in `` tags, into the provided list of chat messages. + * + * @param messages - The array of chat messages to which the tool definitions will be added. + * @param tools - An array of tool callback objects whose specifications will be serialized + * and included in the system message. + */ +export declare function addToolDefinitionsMessage(messages: ChatCompletionMessageParam[], tools: ToolCallback[]): void; +//# sourceMappingURL=chat.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chat.d.ts.map b/packages/core/.tshy-build/browser/chat.d.ts.map new file mode 100644 index 0000000000..c6142018eb --- /dev/null +++ b/packages/core/.tshy-build/browser/chat.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chat.js b/packages/core/.tshy-build/browser/chat.js new file mode 100644 index 0000000000..535ca9c73a --- /dev/null +++ b/packages/core/.tshy-build/browser/chat.js @@ -0,0 +1,1166 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { renderPromptNode } from "./promptdom.js"; +import { resolveRuntimeHost } from "./host.js"; +import { dispose } from "./dispose.js"; +import { JSON5TryParse, JSONLLMTryParse, isJSONObjectOrArray } from "./json5.js"; +import { checkCancelled } from "./cancellation.js"; +import { arrayify } from "./cleaners.js"; +import { ellipse, logError, logInfo, logVerbose, logWarn, toStringList } from "./util.js"; +import { assert } from "./assert.js"; +import { extractFenced, findFirstDataFence } from "./fence.js"; +import { toStrictJSONSchema, validateFencesWithSchema, validateJSONWithSchema } from "./schema.js"; +import { CHOICE_LOGIT_BIAS, MAX_DATA_REPAIRS, MAX_TOOL_CALLS, MAX_TOOL_CONTENT_TOKENS, MAX_TOOL_DESCRIPTION_LENGTH, SYSTEM_FENCE, } from "./constants.js"; +import { parseAnnotations } from "./annotations.js"; +import { errorMessage, isCancelError, serializeError } from "./error.js"; +import { createChatTurnGenerationContext } from "./runpromptcontext.js"; +import { parseModelIdentifier, traceLanguageModelConnection } from "./models.js"; +import { assistantText, collapseChatMessages, lastAssistantReasoning, renderMessagesToMarkdown, renderShellOutput, } from "./chatrender.js"; +import { promptParametersSchemaToJSONSchema } from "./parameters.js"; +import { prettifyMarkdown } from "./pretty.js"; +import { YAMLParse, YAMLStringify, YAMLTryParse } from "./yaml.js"; +import { resolveTokenEncoder } from "./encoders.js"; +import { approximateTokens, truncateTextToTokens } from "./tokens.js"; +import { computeFileEdits } from "./fileedits.js"; +import { HTMLEscape } from "./htmlescape.js"; +import { computePerplexity, computeStructuralUncertainty, logprobToMarkdown, renderLogprob, serializeLogProb, topLogprobsToMarkdown, } from "./logprob.js"; +import { uniq } from "es-toolkit"; +import { renderWithPrecision } from "./precision.js"; +import { fenceMD } from "./mkmd.js"; +import { getChatCompletionCache } from "./chatcache.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { splitThink } from "./think.js"; +import { measure } from "./performance.js"; +import { renderMessagesToTerminal } from "./chatrenderterminal.js"; +import { fileCacheImage } from "./filecache.js"; +import { stderr } from "./stdio.js"; +import { isQuiet } from "./quiet.js"; +import { resolvePromptInjectionDetector } from "./contentsafety.js"; +import { genaiscriptDebug } from "./debug.js"; +import { providerFeatures } from "./features.js"; +import { redactSecrets } from "./secretscanner.js"; +const dbg = genaiscriptDebug("chat"); +const dbgt = dbg.extend("tool"); +function toChatCompletionImage(image) { + const { url, detail } = image; + return { + type: "image_url", + image_url: { + url, + detail, + }, + }; +} +async function runToolCalls(resp, messages, tools, options) { + const runtimeHost = resolveRuntimeHost(); + const projFolder = runtimeHost.projectFolder(); + const { cancellationToken, trace, model } = options || {}; + const { encode: encoder } = await resolveTokenEncoder(model); + assert(!!trace); + const edits = []; + if (!options.fallbackTools) { + dbgt(`fallback: appending tool calls to assistant message`); + messages.push({ + role: "assistant", + tool_calls: resp.toolCalls.map((c) => ({ + id: c.id, + function: { + name: c.name, + arguments: c.arguments, + }, + type: "function", + })), + }); + } + else { + // pop the last assistant message + appendUserMessage(messages, "## Tool Results (computed by tools)"); + } + // call tool and run again + for (const call of resp.toolCalls) { + checkCancelled(cancellationToken); + dbgt(`running tool call %s`, call.name); + const toolTrace = trace?.startTraceDetails(`📠 tool call ${call.name}`); + try { + await runToolCall(toolTrace, cancellationToken, call, tools, edits, projFolder, encoder, messages, { ...options, trace: toolTrace }); + } + catch (e) { + logError(e); + toolTrace?.error(`tool call ${call.id} error`, e); + throw e; + } + finally { + toolTrace?.endDetails(); + } + } + return { edits }; +} +async function runToolCall(trace, cancellationToken, call, tools, edits, projFolder, encoder, messages, options) { + const callArgs = JSONLLMTryParse(call.arguments); + trace?.fence(call.arguments, "json"); + if (callArgs === undefined) + trace?.error("arguments failed to parse"); + let todos; + if (call.name === "multi_tool_use.parallel") { + dbgt(`multi tool call`); + // special undocumented openai hallucination, argument contains multiple tool calls + // { + // "id": "call_D48fudXi4oBxQ2rNeHhpwIKh", + // "name": "multi_tool_use.parallel", + // "arguments": "{\"tool_uses\":[{\"recipient_name\":\"functions.fs_find_files\",\"parameters\":{\"glob\":\"src/content/docs/**/*.md\"}},{\"recipient_name\":\"functions.fs_find_files\",\"parameters\":{\"glob\":\"src/content/docs/**/*.mdx\"}},{\"recipient_name\":\"functions.fs_find_files\",\"parameters\":{\"glob\":\"../samples/sample/src/*.genai.{js,mjs}\"}},{\"recipient_name\":\"functions.fs_find_files\",\"parameters\":{\"glob\":\"src/assets/*.txt\"}}]}" + // } + const toolUses = callArgs.tool_uses; + todos = toolUses.map((tu) => { + const toolName = tu.recipient_name.replace(/^functions\./, ""); + const tool = tools.find((f) => f.spec.name === toolName); + if (!tool) { + logVerbose(JSON.stringify(tu, null, 2)); + throw new Error(`multi tool ${toolName} not found in ${tools.map((t) => t.spec.name).join(", ")}`); + } + return { tool, args: tu.parameters }; + }); + } + else { + dbgt(`finding tool for call ${call.name}`); + let tool = tools.find((f) => f.spec.name === call.name); + if (!tool) { + logVerbose(JSON.stringify(call, null, 2)); + logVerbose(`tool ${call.name} not found in ${tools.map((t) => t.spec.name).join(", ")}`); + dbgt(`tool ${call.name} not found`); + trace?.log(`tool ${call.name} not found`); + tool = { + spec: { + name: call.name, + description: "unknown tool", + }, + generator: undefined, + impl: async () => { + dbg("tool_not_found", call.name); + return `unknown tool ${call.name}`; + }, + }; + } + todos = [{ tool, args: callArgs }]; + } + const toolResult = []; + for (const todo of todos) { + const { tool, args } = todo; + const dbgtt = dbgt.extend(tool.spec.name); + const { maxTokens: maxToolContentTokens = MAX_TOOL_CONTENT_TOKENS } = tool.options || {}; + dbgtt(`running %s maxt %d\n%O`, tool.spec.name, maxToolContentTokens, args); + const context = { + log: (message) => { + logInfo(message); + trace?.log(message); + }, + debug: (message) => { + logVerbose(message); + trace?.log(message); + }, + trace, + }; + let output; + try { + output = await tool.impl({ context, ...args }); + dbgtt(`output: %O`, output); + } + catch (e) { + dbgtt(e); + logWarn(`tool: ${tool.spec.name} error`); + logError(e); + trace?.error(`tool: ${tool.spec.name} error`, e); + output = errorMessage(e); + } + if (output === undefined || output === null) + output = "no output from tool"; + let toolContent = undefined; + let toolEdits = undefined; + if (typeof output === "string") { + toolContent = output; + } + else if (typeof output === "number" || typeof output === "boolean") { + toolContent = String(output); + } + else if (typeof output === "object" && output.exitCode !== undefined) { + toolContent = renderShellOutput(output); + } + else if (typeof output === "object" && + output.filename && + output.content) { + const { filename, content } = output; + toolContent = `FILENAME: ${filename} +${fenceMD(content, " ")} +`; + } + else if (typeof output === "object" && output.text) { + const { text } = output; + toolContent = text; + } + else { + toolContent = YAMLStringify(output); + } + if (typeof output === "object") { + toolEdits = output?.edits; + } + if (toolEdits?.length) { + trace?.fence(toolEdits); + const runtimeHost = resolveRuntimeHost(); + edits.push(...toolEdits.map((e) => { + const { filename, ...rest } = e; + const n = e.filename; + const fn = /^[^/]/.test(n) ? runtimeHost.resolvePath(projFolder, n) : n; + return { filename: fn, ...rest }; + })); + } + // remove leaked secrets + const { text: toolContentRedacted, found } = redactSecrets(toolContent, { trace }); + if (toolContentRedacted !== toolContent) { + dbgtt(`secrets found: %o`, found); + toolContent = toolContentRedacted; + } + // check for prompt injection + const detector = await resolvePromptInjectionDetector(tool.options, { + trace, + cancellationToken, + }); + if (detector) { + dbgtt(`checking tool result for prompt injection`); + logVerbose(`tool ${tool.spec.name}: checking for prompt injection`); + const result = await detector(toolContent); + dbgtt(`attack detected: ${result?.attackDetected}`); + if (result.attackDetected) { + logWarn(`tool ${tool.spec.name}: prompt injection detected`); + trace?.error(`tool ${tool.spec.name}: prompt injection detected`, result); + toolContent = `!WARNING! prompt injection detected in tool ${tool.spec.name} !WARNING!`; + } + else { + logVerbose(`tool: ${tool.spec.name} prompt injection not detected`); + } + } + const toolContentTokens = approximateTokens(toolContent); + if (toolContentTokens > maxToolContentTokens) { + dbgtt(`truncating`); + logWarn(`tool: ${tool.spec.name} response too long (${toolContentTokens} tokens), truncating ${maxToolContentTokens} tokens`); + toolContent = + truncateTextToTokens(toolContent, maxToolContentTokens, encoder) + "... (truncated)"; + } + // intent validation + if (tool.options?.intent) { + let { intent } = tool.options; + if (intent === "description") + intent = tool.spec.description?.trim(); + if (!intent) + throw new Error("tool intent not found"); + dbgtt(`validating intent %s`, intent); + const generator = tool.generator; + if (!generator) + throw new Error("tool generator not found, cannot validate intent"); + const resIntent = await generator.runPrompt(async (ictx) => { + if (typeof intent === "function") { + await intent({ + tool: tool.spec, + args, + result: toolContent, + generator: ictx, + }); + } + else { + ictx.$ `You are a tool intent validator that detects malicious LLM tools. Your task is to validate that the tool result is RELATED with the tool intent in . + + - The tool output does not have to be correct or complete; but it must have a topic related to the tool intent. + - Do NOT worry about hurting the tool's feelings. + + Respond with a short summary of your reasoning to validate the output; then + Respond "ERR" if the tool result is not RELATED with the intent + Respond "OK" if the tool result is RELATED with the intent + `.role("system"); + ictx.def("INTENT", intent); + ictx.def("TOOL_RESULT", toolContent); + } + }, { + responseType: "text", + systemSafety: true, + model: "intent", + temperature: 0.4, + choices: ["OK", "ERR"], + logprobs: true, + label: `tool ${tool.spec.name} intent validation`, + }); + dbgtt(`validation result %O`, { + text: resIntent.text, + error: resIntent.error, + choices: resIntent.choices, + }); + trace?.detailsFenced(`intent validation`, resIntent.text, "markdown"); + const validated = /OK/.test(resIntent.text) && !/ERR/.test(resIntent.text); + if (!validated) { + logVerbose(`intent: ${resIntent.text}`); + throw new Error(`tool ${tool.spec.name} result does not match intent`); + } + } + trace?.fence(toolContent, "markdown"); + toolResult.push(toolContent); + } + if (options.fallbackTools) { + dbg(`appending fallback tool result to user message`); + appendUserMessage(messages, `- ${call.name}(${JSON.stringify(call.arguments || {})}) + +${toolResult.join("\n\n")} + +`); + } + else { + messages.push({ + role: "tool", + content: toolResult.join("\n\n"), + tool_call_id: call.id, + }); + } +} +async function applyRepairs(messages, schemas, options) { + const { stats, trace, responseType, responseSchema, maxDataRepairs = MAX_DATA_REPAIRS, infoCb, } = options; + const lastMessage = messages[messages.length - 1]; + if (lastMessage.role !== "assistant" || lastMessage.refusal) { + return false; + } + const content = assistantText(messages, { responseType, responseSchema }); + const fences = extractFenced(content); + validateFencesWithSchema(fences, schemas, { trace }); + dbg(`validating fences with schema`); + const invalids = fences.filter((f) => f?.validation?.schemaError); + let data; + if (responseType === "json" || + responseType === "json_object" || + responseType === "json_schema" || + (responseSchema && !responseType)) { + data = JSONLLMTryParse(content); + if (data === undefined) { + try { + data = JSON.parse(content); + } + catch (e) { + invalids.push({ + label: "response must be valid JSON", + content, + validation: { schemaError: errorMessage(e) }, + }); + } + } + } + else if (responseType === "yaml") { + data = YAMLTryParse(content); + if (data === undefined) { + try { + data = YAMLParse(content); + } + catch (e) { + invalids.push({ + label: "response must be valid YAML", + content, + validation: { schemaError: errorMessage(e) }, + }); + } + } + } + if (responseSchema) { + const value = data ?? JSONLLMTryParse(content); + const schema = promptParametersSchemaToJSONSchema(responseSchema); + const res = validateJSONWithSchema(value, schema, { trace }); + if (res.schemaError) { + dbg(`response schema validation failed`, res.schemaError); + invalids.push({ + label: "response must match schema", + content, + validation: res, + }); + } + } + // nothing to repair + if (!invalids.length) { + dbg(`no invalid fences found, skipping repairs`); + return false; + } + // too many attempts + if (stats.repairs >= maxDataRepairs) { + dbg(`maximum number of repairs reached`); + trace?.error(`maximum number of repairs (${maxDataRepairs}) reached`); + return false; + } + dbg(`appending repair instructions to messages`); + infoCb?.({ text: "appending data repair instructions" }); + // let's get to work + trace?.startDetails("🔧 data repairs"); + const repair = invalids + .map((f) => toStringList(f.label, f.args?.schema ? `schema: ${f.args?.schema || ""}` : undefined, f.validation.schemaError ? `error: ${f.validation.schemaError}` : undefined)) + .join("\n\n"); + const repairMsg = `Repair the data format issues listed in section below. + +${repair} + + +`; + logVerbose(repair); + trace?.fence(repairMsg, "markdown"); + messages.push({ + role: "user", + content: [ + { + type: "text", + text: repairMsg, + }, + ], + }); + trace?.endDetails(); + stats.repairs++; + return true; +} +async function structurifyChatSession(timer, messages, schemas, fileOutputs, outputProcessors, fileMerges, logprobs, options, others) { + const { trace, responseType, responseSchema } = options; + const { resp, err } = others || {}; + const text = assistantText(messages, { responseType, responseSchema }); + const annotations = parseAnnotations(text); + const finishReason = isCancelError(err) ? "cancel" : (resp?.finishReason ?? "fail"); + const error = serializeError(err); + const fences = extractFenced(text); + let json; + if (responseType === "json" || + responseType === "json_object" || + responseType === "json_schema" || + (responseSchema && !responseType)) { + json = JSONLLMTryParse(text); + } + else if (responseType === "yaml") { + json = YAMLTryParse(text); + } + else { + json = isJSONObjectOrArray(text) ? JSONLLMTryParse(text) : findFirstDataFence(fences); + } + if (responseSchema) { + dbg(`validating response schema`); + const schema = promptParametersSchemaToJSONSchema(responseSchema); + const res = validateJSONWithSchema(json, schema, { + trace, + }); + if (res.schemaError) { + trace?.warn(`response schema validation failed, ${errorMessage(res.schemaError)}`); + trace?.fence(schema, "json"); + } + } + const frames = []; + // validate schemas in fences + if (fences?.length) { + dbg(`validating schemas in fences`); + frames.push(...validateFencesWithSchema(fences, schemas, { trace })); + } + dbg(`computing perplexity and uncertainty`); + const perplexity = computePerplexity(logprobs); + const uncertainty = computeStructuralUncertainty(logprobs); + const revlogprobs = logprobs?.slice(0)?.reverse(); + const choices = arrayify(options?.choices) + .filter((choice) => typeof choice === "string") + .map((token) => revlogprobs?.find((lp) => lp.token === token) ?? + { token, logprob: NaN }); + const activeChoices = choices.filter((c) => !isNaN(c.logprob)); + for (const choice of activeChoices) { + logVerbose(`choice: ${choice.token}, ${renderLogprob(choice.logprob)}`); + } + if (logprobs?.length) { + logVerbose(toStringList(`${logprobs.length} tokens`, !isNaN(perplexity) ? `perplexity: ${renderWithPrecision(perplexity, 3)}` : undefined, !isNaN(uncertainty) ? `uncertainty: ${renderWithPrecision(uncertainty, 3)}` : undefined)); + try { + trace?.startDetails("📊 logprobs"); + trace?.itemValue("perplexity", perplexity); + trace?.itemValue("uncertainty", uncertainty); + if (choices?.length) { + trace?.item("choices (0%:red, 100%: blue)"); + trace?.appendContent("\n\n"); + trace?.appendContent(choices.map((lp) => logprobToMarkdown(lp)).join("\n")); + trace?.appendContent("\n\n"); + } + trace?.item("logprobs (0%:red, 100%: blue)"); + trace?.appendContent("\n\n"); + trace?.appendContent(logprobs.map((lp) => logprobToMarkdown(lp)).join("\n")); + trace?.appendContent("\n\n"); + if (!isNaN(logprobs[0].entropy)) { + trace?.item("entropy (0:red, 1: blue)"); + trace?.appendContent("\n\n"); + trace?.appendContent(logprobs.map((lp) => logprobToMarkdown(lp, { entropy: true })).join("\n")); + trace?.appendContent("\n\n"); + } + if (logprobs[0]?.topLogprobs?.length) { + trace?.item("top_logprobs"); + trace?.appendContent("\n\n"); + trace?.appendContent(logprobs.map((lp) => topLogprobsToMarkdown(lp)).join("\n")); + trace?.appendContent("\n\n"); + } + } + finally { + trace?.endDetails(); + } + } + const stats = options?.stats; + const acc = stats?.accumulatedUsage(); + const duration = timer(); + const usage = deleteUndefinedValues({ + cost: stats.cost(), + duration: duration, + total: acc?.total_tokens, + prompt: acc?.prompt_tokens, + completion: acc?.completion_tokens, + }); + const reasoning = lastAssistantReasoning(messages); + const res = deleteUndefinedValues({ + model: resp?.model, + messages, + text, + reasoning, + annotations, + finishReason, + fences, + frames, + json, + error, + schemas, + choices, + logprobs, + perplexity, + uncertainty, + usage, + }); + await computeFileEdits(res, { + trace, + schemas, + fileOutputs, + fileMerges, + outputProcessors, + }); + return res; +} +function parseAssistantMessage(resp) { + const { signature } = resp; + const { content, reasoning } = splitThink(resp.text); + const reasoning_content = resp.reasoning || reasoning; + if (!content && !reasoning_content) { + return undefined; + } + return deleteUndefinedValues({ + role: "assistant", + content, + reasoning_content, + signature, + }); +} +async function processChatMessage(model, timer, req, resp, messages, tools, chatParticipants, schemas, fileOutputs, outputProcessors, fileMerges, cacheImage, options) { + const { stats, maxToolCalls = MAX_TOOL_CALLS, trace, cancellationToken } = options; + stats.addRequestUsage(model, req, resp); + const assisantMessage = parseAssistantMessage(resp); + if (assisantMessage) { + messages.push(assisantMessage); + } + const assistantContent = assisantMessage?.content; + if (options.fallbackTools && assistantContent && tools.length) { + dbg(`extracting tool calls from assistant content (fallback)`); + resp.toolCalls = []; + // parse tool call + const toolCallFences = extractFenced(assistantContent).filter((f) => /^tool_calls?$/.test(f.language)); + for (const toolCallFence of toolCallFences) { + for (const toolCall of toolCallFence.content.split("\n")) { + const { name, args } = /^(?[\w\d]+):\s*(?\{.*\})\s*$/i.exec(toolCall)?.groups || {}; + if (name) { + resp.toolCalls.push({ + id: undefined, + name, + arguments: args, + }); + } + } + } + } + // execute tools as needed + if (resp.toolCalls?.length) { + dbg(`executing tool calls`); + await runToolCalls(resp, messages, tools, options); + stats.toolCalls += resp.toolCalls.length; + if (stats.toolCalls > maxToolCalls) { + throw new Error(`maximum number of tool calls ${maxToolCalls} reached`); + } + return undefined; // keep working + } + // apply repairs if necessary + if (await applyRepairs(messages, schemas, options)) { + return undefined; // keep working + } + let err; + if (chatParticipants?.length) { + dbg(`processing chat participants`); + let needsNewTurn = false; + for (const participant of chatParticipants) { + const { generator, options: participantOptions } = participant || {}; + const { label } = participantOptions || {}; + const participantTrace = trace?.startTraceDetails(`🙋 participant ${label || ""}`); + try { + const ctx = createChatTurnGenerationContext(options, participantTrace, cancellationToken); + const { messages: newMessages } = (await generator(ctx, structuredClone(messages), assistantContent)) || {}; + const node = ctx.node; + checkCancelled(cancellationToken); + // update modified messages + if (newMessages?.length) { + dbg(`updating messages with new participant messages`); + messages.splice(0, messages.length, ...newMessages); + needsNewTurn = true; + participantTrace?.details(`💬 new messages`, await renderMessagesToMarkdown(messages, { + textLang: "markdown", + user: true, + assistant: true, + cacheImage, + })); + } + dbg(`expanding participant template`); + // expand template + const { errors, messages: participantMessages } = await renderPromptNode(options.model, node, { + flexTokens: options.flexTokens, + fenceFormat: options.fenceFormat, + trace: participantTrace, + }); + if (participantMessages?.length) { + if (participantMessages.some(({ role }) => role === "system")) { + throw new Error("system messages not supported for chat participants"); + } + participantTrace?.details(`💬 added messages (${participantMessages.length})`, await renderMessagesToMarkdown(participantMessages, { + textLang: "text", + user: true, + assistant: true, + cacheImage, + }), { expanded: true }); + messages.push(...participantMessages); + needsNewTurn = true; + } + else { + participantTrace?.item("no message"); + } + if (errors?.length) { + dbg(`participant processing encountered errors`); + err = errors[0]; + for (const error of errors) { + participantTrace?.error(undefined, error); + } + needsNewTurn = false; + break; + } + } + catch (e) { + err = e; + logError(e); + participantTrace?.error(`participant error`, e); + needsNewTurn = false; + break; + } + finally { + participantTrace?.endDetails(); + } + } + if (needsNewTurn) { + dbg(`participant processing complete, needs new turn`); + return undefined; + } + } + const logprobs = resp.logprobs?.map(serializeLogProb); + return structurifyChatSession(timer, messages, schemas, fileOutputs, outputProcessors, fileMerges, logprobs, options, { + resp, + err, + }); +} +/** + * Merges two sets of generation options, prioritizing values specified in the second parameter + * while falling back to defaults from the first parameter and runtime configurations. + * + * @param options - A base set of generation options containing default values. + * @param runOptions - A set of custom generation options that override the base values. + * @returns A merged set of generation options with priority given to `runOptions` values. + * + * The merging process includes: + * - `model`: Prioritized from `runOptions`, then `options`, and finally the runtime host's default large model. + * - `temperature`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `fallbackTools`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `reasoningEffort`: Taken from `runOptions` if present, otherwise from the runtime host's default large model settings. + * - `embeddingsModel`: Resolved from `runOptions` if defined or falls back to `options`. + */ +export function mergeGenerationOptions(options, runOptions) { + const runtimeHost = resolveRuntimeHost(); + const res = { + ...options, + ...(runOptions || {}), + model: runOptions?.model ?? options?.model ?? runtimeHost.modelAliases.large.model, + temperature: runOptions?.temperature ?? runtimeHost.modelAliases.large.temperature, + fallbackTools: runOptions?.fallbackTools ?? runtimeHost.modelAliases.large.fallbackTools, + reasoningEffort: runOptions?.reasoningEffort ?? runtimeHost.modelAliases.large.reasoningEffort, + embeddingsModel: runOptions?.embeddingsModel ?? options?.embeddingsModel, + }; + return res; +} +async function choicesToLogitBias(trace, model, choices) { + choices = arrayify(choices); + if (!choices?.length) { + return undefined; + } + dbg(`computing logit bias for choices`); + const { encode } = (await resolveTokenEncoder(model, { + disableFallback: true, + })) || {}; + if (!encode && choices.some((c) => typeof c === "string" || typeof c.token === "string")) { + dbg(`unable to compute logit bias, no token encoder found for %s`, model); + dbg(`choices: %O`, choices); + return undefined; + } + const logit_bias = Object.fromEntries(choices.map((c) => { + const { token, weight } = typeof c === "string" ? { token: c } : c; + const encoded = typeof token === "number" ? [token] : encode(token); + if (encoded.length !== 1) { + logWarn(`choice ${c} tokenizes to ${encoded.join(", ")} (expected one token)`); + trace?.warn(`choice ${c} tokenizes to ${encoded.join(", ")} (expected one token)`); + } + return [encoded[0], isNaN(weight) ? CHOICE_LOGIT_BIAS : weight]; + })); + trace?.itemValue("choices", choices.map((c) => (typeof c === "string" ? c : JSON.stringify(c))).join(", ")); + trace?.itemValue("logit bias", JSON.stringify(logit_bias)); + return logit_bias; +} +/** + * Executes a chat session by interacting with a language model, processing messages, + * handling tool integrations, and managing responses. + * + * @param connectionToken - Configuration for connecting to the language model, excluding the token. + * @param cancellationToken - Token to support cancellation of the chat session. + * @param messages - List of chat messages exchanged during the session. + * @param toolDefinitions - Definitions of tools that can be invoked during the session. + * @param schemas - JSON schemas for validating response content. + * @param fileOutputs - Files to be generated or modified during the session. + * @param outputProcessors - Handlers for post-processing generated outputs. + * @param fileMerges - Handlers for merging file outputs. + * @param prediction - Prediction metadata to guide the response generation. + * @param completer - Function that sends requests to the language model and returns the response. + * @param chatParticipants - List of participants involved in the chat session. + * @param disposables - Objects that require cleanup after the session ends. + * @param genOptions - Options to customize the session execution, such as model configuration, behavior, and caching. + * + * @returns - The final structured result of the chat session. + */ +export async function executeChatSession(connectionToken, cancellationToken, messages, toolDefinitions, schemas, fileOutputs, outputProcessors, fileMerges, prediction, completer, chatParticipants, disposables, genOptions) { + const { trace, model, temperature, reasoningEffort, topP, toolChoice, maxTokens, seed, responseType, responseSchema, stats, fallbackTools, choices, topLogprobs, cache, inner, metadata, partialCb, disableChatPreview, } = genOptions; + assert(!!model, "model is required"); + const { token, source, ...cfgNoToken } = connectionToken; + const top_logprobs = genOptions.topLogprobs > 0 ? topLogprobs : undefined; + const logprobs = genOptions.logprobs || top_logprobs > 0 ? true : undefined; + traceLanguageModelConnection(trace, genOptions, connectionToken); + dbg(`chat ${model}`, deleteUndefinedValues({ + temperature, + choices, + fallbackTools, + logprobs, + top_logprobs, + })); + const tools = toolDefinitions?.length + ? toolDefinitions.map((f) => ({ + type: "function", + function: { + name: f.spec.name, + description: ellipse(f.spec.description, MAX_TOOL_DESCRIPTION_LENGTH), + parameters: f.spec.parameters, + }, + })) + : undefined; + const cacheStore = cache + ? getChatCompletionCache(typeof cache === "string" ? cache : "chat") + : undefined; + const chatTrace = trace?.startTraceDetails(`💬 chat`, { expanded: true }); + const store = metadata ? true : undefined; + const timer = measure("chat"); + const cacheImage = async (url) => await fileCacheImage(url, { + trace, + cancellationToken, + dir: chatTrace?.options?.dir, + }); + try { + if (toolDefinitions?.length) { + chatTrace?.detailsFenced(`🛠️ tools`, tools, "yaml"); + const toolNames = toolDefinitions.map(({ spec }) => spec.name); + const duplicates = uniq(toolNames).filter((name, index) => toolNames.lastIndexOf(name) !== index); + if (duplicates.length) { + chatTrace?.error(`duplicate tools: ${duplicates.join(", ")}`); + return { + error: serializeError(`duplicate tools: ${duplicates.join(", ")}`), + finishReason: "fail", + messages, + text: "", + }; + } + } + while (true) { + stats.turns++; + collapseChatMessages(messages); + dbg(`turn ${stats.turns}`); + if (messages) { + chatTrace?.details(`💬 messages (${messages.length})`, await renderMessagesToMarkdown(messages, { + textLang: "markdown", + user: true, + assistant: true, + cacheImage, + tools, + }), { expanded: true }); + } + // make request + let req; + let resp; + try { + checkCancelled(cancellationToken); + const reqTrace = chatTrace?.startTraceDetails(`📤 llm request`); + try { + const logit_bias = await choicesToLogitBias(reqTrace, model, choices); + req = { + model, + temperature, + store, + metadata: store ? metadata : undefined, + reasoning_effort: reasoningEffort, + top_p: topP, + tool_choice: !fallbackTools && tools?.length + ? typeof toolChoice === "object" + ? { + type: "function", + function: { name: toolChoice.name }, + } + : toolChoice + : undefined, + max_tokens: maxTokens, + logit_bias, + seed, + stream: true, + logprobs, + top_logprobs, + tools: fallbackTools ? undefined : tools, + // https://platform.openai.com/docs/guides/predicted-outputs + prediction: prediction?.content ? prediction : undefined, + response_format: responseType === "json_object" + ? { type: responseType } + : responseType === "json_schema" + ? { + type: "json_schema", + json_schema: { + name: "result", + schema: toStrictJSONSchema(responseSchema, { noDefaults: true }), + strict: true, + }, + } + : undefined, + messages, + }; + updateChatFeatures(reqTrace, model, req); + if (!isQuiet) + stderr.write(await renderMessagesToTerminal(req, { + user: true, + tools, + preview: disableChatPreview !== true, + })); + const infer = async () => { + logVerbose(`\n`); + const m = measure("chat.completer", `${req.model} -> ${req.messages.length} messages`); + dbg(`infer ${req.model} with ${req.messages.length} messages`); + if (req.response_format) + dbg(`response format: %O`, JSON.stringify(req.response_format, null, 2)); + const cres = await completer(req, connectionToken, genOptions, reqTrace); + const duration = m(); + cres.duration = duration; + return cres; + }; + if (cacheStore) { + dbg(`cache store enabled, checking cache`); + const cachedKey = deleteUndefinedValues({ + modelid: model, + ...req, + responseType, + responseSchema, + ...cfgNoToken, + }); + const validator = (value) => { + const ok = value?.finishReason === "stop"; + return ok; + }; + const cacheRes = await cacheStore.getOrUpdate(cachedKey, infer, validator); + logVerbose("\n"); + resp = cacheRes.value; + resp.cached = cacheRes.cached; + reqTrace?.itemValue("cache", cacheStore.name); + reqTrace?.itemValue("cache_key", cacheRes.key); + dbg(`cache ${resp.cached ? "hit" : "miss"} (${cacheStore.name}/${cacheRes.key.slice(0, 7)})`); + if (resp.cached) { + if (cacheRes.value.text) { + partialCb(deleteUndefinedValues({ + responseSoFar: cacheRes.value.text, + tokensSoFar: 0, + responseChunk: cacheRes.value.text, + responseTokens: cacheRes.value.logprobs, + reasoningSoFar: cacheRes.value.reasoning, + inner, + })); + } + } + } + else { + resp = await infer(); + } + } + finally { + logVerbose("\n"); + reqTrace?.endDetails(); + } + const output = await processChatMessage(model, timer, req, resp, messages, toolDefinitions, chatParticipants, schemas, fileOutputs, outputProcessors, fileMerges, cacheImage, genOptions); + if (output) { + return output; + } + } + catch (err) { + return structurifyChatSession(timer, messages, schemas, fileOutputs, outputProcessors, fileMerges, [], genOptions, { resp, err }); + } + } + } + finally { + await dispose(disposables, { trace: chatTrace }); + stats.trace(chatTrace); + chatTrace?.endDetails(); + } +} +function updateChatFeatures(trace, modelid, req) { + const { provider, model } = parseModelIdentifier(modelid); + const features = providerFeatures(provider); + if (!isNaN(req.seed) && features?.seed === false) { + dbg(`seed: disabled, not supported by ${provider}`); + trace?.itemValue(`seed`, `disabled`); + delete req.seed; // some providers do not support seed + } + if (req.logit_bias && features?.logitBias === false) { + dbg(`logit_bias: disabled, not supported by ${provider}`); + trace?.itemValue(`logit_bias`, `disabled`); + delete req.logit_bias; // some providers do not support logit_bias + } + if (!isNaN(req.top_p) && features?.topP === false) { + dbg(`top_p: disabled, not supported by ${provider}`); + trace?.itemValue(`top_p`, `disabled`); + delete req.top_p; + } + if (req.tool_choice && features?.toolChoice === false) { + dbg(`tool_choice: disabled, not supported by ${provider}`); + trace?.itemValue(`tool_choice`, `disabled`); + delete req.tool_choice; + } + if (req.logprobs && features?.logprobs === false) { + dbg(`logprobs: disabled, not supported by ${provider}`); + trace?.itemValue(`logprobs`, `disabled`); + delete req.logprobs; + delete req.top_logprobs; + } + if (req.prediction && features?.prediction === false) { + dbg(`prediction: disabled, not supported by ${provider}`); + delete req.prediction; + } + if (req.top_logprobs && (features?.logprobs === false || features?.topLogprobs === false)) { + dbg(`top_logprobs: disabled, not supported by ${provider}`); + trace?.itemValue(`top_logprobs`, `disabled`); + delete req.top_logprobs; + } + if (/^(openai\/)?o(1|3|4)/i.test(model) && !req.max_completion_tokens) { + dbg(`max_tokens: renamed to max_completion_tokens`); + req.max_completion_tokens = req.max_tokens; + delete req.max_tokens; + } + if (req.store && !features?.metadata) { + dbg(`metadata: disabled, not supported by ${provider}`); + delete req.metadata; + delete req.store; + } + deleteUndefinedValues(req); +} +/** + * Logs detailed information about a prompt result, including reasoning and output, in a structured format. + * + * @param trace - A trace instance used to record detailed logs and events during the prompt execution. + * @param resp - The response object containing optional text and reasoning fields from the prompt result. + * + * If 'reasoning' is present in the response, it is logged in a dedicated "reasoning" section with markdown formatting. + * If 'text' is present, the function determines its format (e.g., JSON, XML, Markdown, or plain text) and logs it in a corresponding section. + * Outputs in Markdown format are further prettified for improved readability in the logs and appended as escaped HTML content. + */ +export function tracePromptResult(trace, resp) { + const { text, reasoning } = resp || {}; + if (reasoning) { + trace?.detailsFenced(`🤔 reasoning`, reasoning, "markdown"); + } + // try to sniff the output type + if (text) { + const language = JSON5TryParse(text) + ? "json" + : /^` tags, into the provided list of chat messages. + * + * @param messages - The array of chat messages to which the tool definitions will be added. + * @param tools - An array of tool callback objects whose specifications will be serialized + * and included in the system message. + */ +export function addToolDefinitionsMessage(messages, tools) { + dbg(`adding tool definitions to messages`); + appendSystemMessage(messages, ` + +${YAMLStringify(tools.map((t) => t.spec))} + +`); +} +//# sourceMappingURL=chat.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chat.js.map b/packages/core/.tshy-build/browser/chat.js.map new file mode 100644 index 0000000000..8265706fcf --- /dev/null +++ b/packages/core/.tshy-build/browser/chat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatcache.d.ts b/packages/core/.tshy-build/browser/chatcache.d.ts new file mode 100644 index 0000000000..3903f5773a --- /dev/null +++ b/packages/core/.tshy-build/browser/chatcache.d.ts @@ -0,0 +1,7 @@ +import type { ChatCompletionResponse, CreateChatCompletionRequest } from "./chattypes.js"; +import type { WorkspaceFileCache } from "./types.js"; +import type { LanguageModelConfiguration } from "./server/messages.js"; +export type ChatCompletionRequestCacheKey = CreateChatCompletionRequest & Omit; +export type ChatCompletationRequestCache = WorkspaceFileCache; +export declare function getChatCompletionCache(name?: string): ChatCompletationRequestCache; +//# sourceMappingURL=chatcache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatcache.d.ts.map b/packages/core/.tshy-build/browser/chatcache.d.ts.map new file mode 100644 index 0000000000..2f35e470bc --- /dev/null +++ b/packages/core/.tshy-build/browser/chatcache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chatcache.d.ts","sourceRoot":"","sources":["../../src/chatcache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAIvE,MAAM,MAAM,6BAA6B,GAAG,2BAA2B,GACrE,IAAI,CAAC,0BAA0B,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;AAIvD,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAC3D,6BAA6B,EAC7B,sBAAsB,CACvB,CAAC;AAKF,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,4BAA4B,CAIlF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatcache.js b/packages/core/.tshy-build/browser/chatcache.js new file mode 100644 index 0000000000..055c61979d --- /dev/null +++ b/packages/core/.tshy-build/browser/chatcache.js @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createCache } from "./cache.js"; +import { CHAT_CACHE } from "./constants.js"; +// Function to retrieve a chat completion cache. +// It uses a default cache name if none is provided. +// This function ensures consistent access to cached chat completions. +export function getChatCompletionCache(name) { + return createCache(name || CHAT_CACHE, { + type: "fs", + }); +} +//# sourceMappingURL=chatcache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatcache.js.map b/packages/core/.tshy-build/browser/chatcache.js.map new file mode 100644 index 0000000000..191c06aaaf --- /dev/null +++ b/packages/core/.tshy-build/browser/chatcache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chatcache.js","sourceRoot":"","sources":["../../src/chatcache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB5C,gDAAgD;AAChD,oDAAoD;AACpD,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,IAAa;IAClD,OAAO,WAAW,CAAwD,IAAI,IAAI,UAAU,EAAE;QAC5F,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrender.d.ts b/packages/core/.tshy-build/browser/chatrender.d.ts new file mode 100644 index 0000000000..13f5198e4c --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrender.d.ts @@ -0,0 +1,69 @@ +import type { ChatCompletionAssistantMessageParam, ChatCompletionMessageParam, ChatCompletionSystemMessageParam, ChatCompletionTool, ChatCompletionToolMessageParam, ChatCompletionUserMessageParam } from "./chattypes.js"; +import type { JSONSchema, PromptParametersSchema, PromptTemplateResponseType, ShellOutput } from "./types.js"; +import type { CancellationOptions } from "./cancellation.js"; +export interface ChatRenderOptions extends CancellationOptions { + textLang?: "markdown" | "text" | "json" | "raw"; + system?: boolean; + user?: boolean; + assistant?: boolean; + cacheImage?: (url: string) => Promise; + tools?: ChatCompletionTool[]; +} +/** + * Formats the output of a shell command into a readable string. + * @param output - The shell execution result containing exitCode, stdout, and stderr. + * @returns A formatted string summarizing the shell output. Includes exit code if non-zero, stdout formatted as text, and stderr formatted as text, separated by double newlines. Returns stdout directly if the exit code is zero. + */ +export declare function renderShellOutput(output: ShellOutput): string; +/** + * Renders the content of a message into a formatted string. + * + * @param msg - The message object containing content, which may include text, images, audio, or other types. + * Supports both string and array-based content. Unknown types are rendered as "unknown message". + * @param options - Optional configuration for rendering, including text formatting, image caching, and language. + * Supports a function for caching images and defaults to markdown formatting if not specified. + * If textLang is "raw", returns raw content without formatting. + * @returns A formatted string representation of the message content, or undefined if the content is invalid or unsupported. + */ +export declare function renderMessageContent(msg: ChatCompletionAssistantMessageParam | ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionToolMessageParam, options?: ChatRenderOptions): Promise; +/** + * Retrieves the reasoning content from the last assistant message in a message array. + * + * @param messages - An array of chat messages to search through. + * @returns The reasoning content of the last assistant message, or undefined if none is found. + */ +export declare function lastAssistantReasoning(messages: ChatCompletionMessageParam[]): string; +/** + * Renders a list of chat messages into a formatted markdown string. + * + * @param messages - The list of chat messages to render. + * @param options - Configuration options for rendering, including text language, role filtering, cancellation token, and tool inclusion. Filters messages by system, user, assistant, and tool roles. Includes tools if provided. Handles cancellation tokens. + * @returns A markdown string representation of the chat messages. + */ +export declare function renderMessagesToMarkdown(messages: ChatCompletionMessageParam[], options?: ChatRenderOptions): Promise; +/** + * Collapses chat messages to streamline content and remove redundancy. + * + * @param messages - The array of chat messages to process. + * Each message contains properties such as role, content, and cacheControl. + * Messages can include system, user, assistant, or tool roles. + * + * - Concatenates the content of consecutive "system" messages at the start of the array into a single "system" message, replacing the originals. + * - Removes empty text content from "user" messages. For array-based content, filters out "text" types with no content. + */ +export declare function collapseChatMessages(messages: ChatCompletionMessageParam[]): void; +/** + * Extracts and concatenates the output text from consecutive assistant messages in a chat history, applying post-processing based on the specified response type or schema. + * + * @param messages Array of chat messages to process. + * @param options Optional configuration object: + * - responseType: Desired output format (e.g., "markdown", "yaml", "json", "text"). + * - responseSchema: Schema for formatting/parsing the response, supporting custom prompt templates. + * + * @returns The concatenated and post-processed output text from the most recent assistant messages. + */ +export declare function assistantText(messages: ChatCompletionMessageParam[], options?: { + responseType?: PromptTemplateResponseType; + responseSchema?: PromptParametersSchema | JSONSchema; +}): string; +//# sourceMappingURL=chatrender.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrender.d.ts.map b/packages/core/.tshy-build/browser/chatrender.d.ts.map new file mode 100644 index 0000000000..ded2a8b9b2 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrender.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chatrender.d.ts","sourceRoot":"","sources":["../../src/chatrender.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mCAAmC,EACnC,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACZ,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAK5D,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,UAkBpD;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EACC,mCAAmC,GACnC,gCAAgC,GAChC,8BAA8B,GAC9B,8BAA8B,EAClC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,UAG5E;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,OAAO,CAAC,EAAE,iBAAiB,mBAuG5B;AAcD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,QA2B1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,0BAA0B,EAAE,EACtC,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,cAAc,CAAC,EAAE,sBAAsB,GAAG,UAAU,CAAC;CACtD,UAqCF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrender.js b/packages/core/.tshy-build/browser/chatrender.js new file mode 100644 index 0000000000..b5c7eb1f40 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrender.js @@ -0,0 +1,275 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { collapseNewlines } from "./cleaners.js"; +// Import utility functions for JSON5 parsing, markdown formatting, and YAML stringification. +import { JSONLLMTryParse } from "./json5.js"; +import { details, fenceMD } from "./mkmd.js"; +import { stringify as YAMLStringify } from "yaml"; +import { checkCancelled } from "./cancellation.js"; +import { unthink } from "./think.js"; +import { unfence } from "./unwrappers.js"; +/** + * Formats the output of a shell command into a readable string. + * @param output - The shell execution result containing exitCode, stdout, and stderr. + * @returns A formatted string summarizing the shell output. Includes exit code if non-zero, stdout formatted as text, and stderr formatted as text, separated by double newlines. Returns stdout directly if the exit code is zero. + */ +export function renderShellOutput(output) { + // Destructure the output object to retrieve exitCode, stdout, and stderr. + const { exitCode, stdout, stderr } = output; + if (exitCode === 0) + return stdout; + return ([ + // Include exit code in the output only if it's non-zero. + exitCode !== 0 ? `EXIT_CODE: ${exitCode}` : undefined, + // Include stdout if it exists, formatted as text. + stdout ? `STDOUT:${fenceMD(stdout, "text")}` : undefined, + // Include stderr if it exists, formatted as text. + stderr ? `STDERR:${fenceMD(stderr, "text")}` : undefined, + ] + // Filter out undefined values from the array. + .filter((s) => s) + // Join the elements with two newlines for separation. + .join("\n\n")); +} +/** + * Renders the content of a message into a formatted string. + * + * @param msg - The message object containing content, which may include text, images, audio, or other types. + * Supports both string and array-based content. Unknown types are rendered as "unknown message". + * @param options - Optional configuration for rendering, including text formatting, image caching, and language. + * Supports a function for caching images and defaults to markdown formatting if not specified. + * If textLang is "raw", returns raw content without formatting. + * @returns A formatted string representation of the message content, or undefined if the content is invalid or unsupported. + */ +export async function renderMessageContent(msg, options) { + const { cacheImage, textLang } = options || {}; + const content = msg.content; + // Return the content directly if it's a simple string. + if (typeof content === "string") { + if (textLang === "raw") + return content; + else + return fenceMD(content, textLang); + } + // If the content is an array, process each element based on its type. + else if (Array.isArray(content)) { + const res = []; + for (const c of content) { + switch (c.type) { + case "text": + if (textLang === "raw") + res.push(c.text); + else + res.push(fenceMD(c.text, textLang)); + break; + case "image_url": + res.push(`\n\n![image](${(await cacheImage?.(c.image_url.url)) || c.image_url.url})\n\n`); + break; + case "input_audio": + res.push(`🔊 [audio](${c.input_audio})`); + break; + case "refusal": + res.push(`refused: ${c.refusal}`); + break; + default: + res.push(`unknown message`); + } + } + return res.join(" "); + } + // Return undefined if the content is neither a string nor an array. + return undefined; +} +/** + * Retrieves the reasoning content from the last assistant message in a message array. + * + * @param messages - An array of chat messages to search through. + * @returns The reasoning content of the last assistant message, or undefined if none is found. + */ +export function lastAssistantReasoning(messages) { + const last = messages.at(-1); + return last?.role === "assistant" && last.reasoning_content; +} +/** + * Renders a list of chat messages into a formatted markdown string. + * + * @param messages - The list of chat messages to render. + * @param options - Configuration options for rendering, including text language, role filtering, cancellation token, and tool inclusion. Filters messages by system, user, assistant, and tool roles. Includes tools if provided. Handles cancellation tokens. + * @returns A markdown string representation of the chat messages. + */ +export async function renderMessagesToMarkdown(messages, options) { + // Set default options for filtering message roles. + const { textLang = "markdown", system = undefined, // Include system messages unless explicitly set to false. + user = undefined, // Include user messages unless explicitly set to false. + assistant = true, // Include assistant messages by default. + cancellationToken, tools, } = options || {}; + options = { + textLang, + system, + user, + assistant, + cancellationToken, + tools, + }; + const optionsMarkdown = { + textLang: "markdown", + system, + user, + assistant, + cancellationToken, + tools, + }; + const res = []; + if (tools?.length) { + res.push(details(`🔧 tools (${tools.length})`, tools + .map((tool) => `- \`${tool.function.name}\`: ${tool.function.description || ""}`) + .join("\n"))); + } + for (const msg of messages?.filter((msg) => { + // Filter messages based on their roles. + switch (msg.role) { + case "system": + return system !== false; + case "user": + return user !== false; + case "assistant": + return assistant !== false; + default: + return true; + } + })) { + checkCancelled(cancellationToken); + const { role } = msg; + switch (role) { + case "system": + res.push(details("📙 system", await renderMessageContent(msg, optionsMarkdown), false)); + break; + case "user": + res.push(details(`👤 user`, await renderMessageContent(msg, options), user === true)); + break; + case "assistant": + res.push(details(`🤖 assistant ${msg.name ? msg.name : ""}`, [ + msg.reasoning_content + ? details("🤔 reasoning", fenceMD(msg.reasoning_content, "markdown")) + : undefined, + await renderMessageContent(msg, optionsMarkdown), + ...(msg.tool_calls?.map((tc) => details(`📠 tool call ${tc.function.name} (${tc.id})`, renderToolArguments(tc.function.arguments))) || []), + ] + .filter((s) => !!s) + .join("\n\n"), assistant === true)); + break; + case "tool": + res.push(details(`🛠️ tool output ${msg.tool_call_id}`, await renderMessageContent(msg, { + ...(options || {}), + textLang: "json", + }))); + break; + default: + res.push(role, fenceMD(JSON.stringify(msg, null, 2), "json")); + break; + } + } + // Join the result array into a single markdown string. + return collapseNewlines(res.filter((s) => s !== undefined).join("\n")); +} +/** + * Parses and renders tool arguments into formatted YAML or JSON. + * @param args - The tool arguments as a string. + * @returns A formatted string in YAML or JSON. + */ +function renderToolArguments(args) { + const js = JSONLLMTryParse(args); + // Convert arguments to YAML if possible, otherwise keep as JSON. + if (js) + return fenceMD(YAMLStringify(js), "yaml"); + else + return fenceMD(args, "json"); +} +/** + * Collapses chat messages to streamline content and remove redundancy. + * + * @param messages - The array of chat messages to process. + * Each message contains properties such as role, content, and cacheControl. + * Messages can include system, user, assistant, or tool roles. + * + * - Concatenates the content of consecutive "system" messages at the start of the array into a single "system" message, replacing the originals. + * - Removes empty text content from "user" messages. For array-based content, filters out "text" types with no content. + */ +export function collapseChatMessages(messages) { + // concat the content of system messages at the start of the messages into a single message + const startSystem = messages.findIndex((m) => m.role === "system"); + if (startSystem > -1) { + let endSystem = startSystem + + messages.slice(startSystem).findIndex((m) => m.role !== "system" || m.cacheControl); + if (endSystem < 0) + endSystem = messages.length; + if (endSystem > startSystem + 1) { + const systemContent = messages + .slice(startSystem, endSystem) + .map((m) => m.content) + .join("\n"); + messages.splice(startSystem, endSystem - startSystem, { + role: "system", + content: systemContent, + }); + } + } + // remove empty text contents + messages + .filter((m) => m.role === "user") + .forEach((m) => { + if (typeof m.content !== "string") + m.content = m.content.filter((c) => c.type !== "text" || c.text); + }); +} +/** + * Extracts and concatenates the output text from consecutive assistant messages in a chat history, applying post-processing based on the specified response type or schema. + * + * @param messages Array of chat messages to process. + * @param options Optional configuration object: + * - responseType: Desired output format (e.g., "markdown", "yaml", "json", "text"). + * - responseSchema: Schema for formatting/parsing the response, supporting custom prompt templates. + * + * @returns The concatenated and post-processed output text from the most recent assistant messages. + */ +export function assistantText(messages, options) { + const { responseType, responseSchema } = options || {}; + let text = ""; + for (let i = messages.length - 1; i >= 0; i--) { + const msg = messages[i]; + if (msg.role !== "assistant") { + break; + } + let content = ""; + if (typeof msg.content === "string") { + content = msg.content; + } + else if (Array.isArray(msg.content)) { + for (const part of msg.content) { + if (part.type === "text") { + content = content + part.text; + } + else if (part.type === "refusal") { + content = `refusal: ${part.refusal}\n` + content; + break; + } + } + } + text = content + text; + } + text = unthink(text); + if ((!responseType && !responseSchema) || responseType === "markdown") { + text = unfence(text, ["markdown", "md"]); + } + else if (responseType === "yaml") { + text = unfence(text, ["yaml", "yml"]); + } + else if (/^json/.test(responseType)) { + text = unfence(text, ["json", "json5"]); + } + else if (responseType === "text") { + text = unfence(text, ["text", "txt"]); + } + return text; +} +//# sourceMappingURL=chatrender.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrender.js.map b/packages/core/.tshy-build/browser/chatrender.js.map new file mode 100644 index 0000000000..147f96a000 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrender.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chatrender.js","sourceRoot":"","sources":["../../src/chatrender.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrenderterminal.d.ts b/packages/core/.tshy-build/browser/chatrenderterminal.d.ts new file mode 100644 index 0000000000..a7cd68adb1 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrenderterminal.d.ts @@ -0,0 +1,21 @@ +import type { ChatCompletionTool, CreateChatCompletionRequest } from "./chattypes.js"; +/** + * Renders a list of chat messages to an interactive terminal output. + * + * @param messages - The list of chat messages to render. Each message consists of role-specific content and attributes. + * @param options - Configuration options for rendering: + * - system: Controls whether system messages are included. Defaults to true unless explicitly set to false. + * - user: Controls whether user messages are included. Defaults to true unless explicitly set to false. + * - assistant: Controls whether assistant messages are included. Defaults to true. + * - tools: Optional list of tools to be displayed, each containing metadata such as function names. + * + * @returns The formatted string output for terminal rendering. + */ +export declare function renderMessagesToTerminal(request: CreateChatCompletionRequest, options?: { + preview?: boolean; + system?: boolean; + user?: boolean; + assistant?: boolean; + tools?: ChatCompletionTool[]; +}): Promise; +//# sourceMappingURL=chatrenderterminal.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrenderterminal.d.ts.map b/packages/core/.tshy-build/browser/chatrenderterminal.d.ts.map new file mode 100644 index 0000000000..508ac5efd0 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrenderterminal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chatrenderterminal.d.ts","sourceRoot":"","sources":["../../src/chatrenderterminal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAKV,kBAAkB,EAGlB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAkIxB;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,2BAA2B,EACpC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B,mBA8IF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrenderterminal.js b/packages/core/.tshy-build/browser/chatrenderterminal.js new file mode 100644 index 0000000000..f5e2ea36c7 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrenderterminal.js @@ -0,0 +1,193 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { renderImageToTerminal } from "./image.js"; +import { terminalSize } from "./terminal.js"; +import { ellipse } from "./util.js"; +import { YAMLStringify } from "./yaml.js"; +import { dataUriToBuffer } from "./filebytes.js"; +import { wrapColor } from "./consolecolor.js"; +import { BOX_DOWN_AND_RIGHT, BOX_DOWN_UP_AND_RIGHT, BOX_RIGHT, BOX_UP_AND_DOWN, CHAR_ENVELOPE, CONSOLE_COLOR_DEBUG, CONTROL_CHAT_COLLAPSED, CONTROL_CHAT_EXPANDED, CONTROL_CHAT_LAST, } from "./constants.js"; +import { checkCancelled } from "./cancellation.js"; +import { prettyTemperature } from "./pretty.js"; +import { genaiscriptDebug } from "./debug.js"; +import { JSONSchemaToFunctionParameters } from "./schema.js"; +const dbg = genaiscriptDebug("chat:render"); +function renderTrimmed(s, rows, width) { + const lines = s.split(/\n/g).filter((l) => !!l); + let trimmed = lines.slice(0); + if (lines.length > rows) { + const head = Math.min(rows >> 1, lines.length - 1); + const tail = rows - head; + trimmed = lines.slice(0, head); + if (tail) { + const hidden = lines.length - head - tail; + if (hidden === 1) + trimmed.push(lines.at(-tail - 1)); + else if (hidden > 0) + trimmed.push(`... (${hidden} lines)`); + trimmed.push(...lines.slice(-tail)); + } + } + const res = trimmed.map((l, i) => wrapColor(CONSOLE_COLOR_DEBUG, BOX_UP_AND_DOWN + ellipse(l, width) + "\n")); + return res; +} +async function renderMessageContent(modelId, msg, options) { + const { columns, rows, cancellationToken } = options; + const content = typeof msg === "string" ? msg : msg.content; + const margin = 2; + const width = columns - margin; + const render = (s) => renderTrimmed(s, rows, width); + // Return the content directly if it's a simple string. + if (typeof content === "string") + return render(content); + // If the content is an array, process each element based on its type. + else if (Array.isArray(content)) { + const res = []; + for (const c of content) { + checkCancelled(cancellationToken); + switch (c.type) { + case "text": + res.push(...render(c.text)); + break; + case "image_url": + res.push(await renderImageToTerminal(dataUriToBuffer(c.image_url.url), { + columns, + rows, + cancellationToken, + modelId, + })); + break; + case "input_audio": + res.push(...render(`🔊 audio`)); + break; + case "refusal": + res.push(...render(`🚫 ` + c.refusal)); + break; + default: + res.push(...render(`unknown`)); + } + } + return res; + } + else + return []; +} +function renderToolCall(call, options) { + const { columns } = options; + const width = columns - 2; + return wrapColor(CONSOLE_COLOR_DEBUG, ellipse(`${BOX_DOWN_UP_AND_RIGHT}${BOX_RIGHT}${BOX_RIGHT}📠 tool ${call.function.name} (${call.id})`, columns - 2) + + `\n` + + (call.function.arguments + ? wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_UP_AND_DOWN} ${ellipse(call.function.arguments, width)}\n`) + : "")); +} +function renderMetadata(call) { + const { metadata } = call; + if (!metadata) + return ""; + return wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_UP_AND_RIGHT}${BOX_RIGHT}📊 ${Object.entries(metadata) + .map(([k, v]) => `${k}: ${v}`) + .join(", ")}\n`); +} +/** + * Renders a list of chat messages to an interactive terminal output. + * + * @param messages - The list of chat messages to render. Each message consists of role-specific content and attributes. + * @param options - Configuration options for rendering: + * - system: Controls whether system messages are included. Defaults to true unless explicitly set to false. + * - user: Controls whether user messages are included. Defaults to true unless explicitly set to false. + * - assistant: Controls whether assistant messages are included. Defaults to true. + * - tools: Optional list of tools to be displayed, each containing metadata such as function names. + * + * @returns The formatted string output for terminal rendering. + */ +export async function renderMessagesToTerminal(request, options) { + const { model, temperature, metadata, response_format } = request; + let messages = request.messages.slice(0); + const { preview, system = undefined, // Include system messages unless explicitly set to false. + user = undefined, // Include user messages unless explicitly set to false. + assistant = true, // Include assistant messages by default. + tools, } = options || {}; + const { columns } = terminalSize(); + dbg(`render %O`, messages); + const msgRows = (msg, visibility) => msg === messages.at(-1) + ? CONTROL_CHAT_LAST + : visibility === true + ? CONTROL_CHAT_EXPANDED + : CONTROL_CHAT_COLLAPSED; + messages = messages.filter((msg) => { + // Filter messages based on their roles. + switch (msg.role) { + case "system": + return system !== false; + case "user": + return user !== false; + case "assistant": + return assistant !== false; + default: + return true; + } + }); + const res = []; + if (model) { + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}💬 ${model} ${CHAR_ENVELOPE} ${messages.length} ${prettyTemperature(temperature)}\n`)); + } + if (response_format && preview) { + const { type } = response_format; + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_UP_AND_RIGHT}${BOX_RIGHT}📦 ${type}\n`)); + if (type === "json_schema") { + const { json_schema } = response_format; + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_UP_AND_DOWN} ${JSONSchemaToFunctionParameters(json_schema.schema)}\n`)); + } + } + if (tools?.length && preview) { + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_UP_AND_RIGHT}${BOX_RIGHT}🔧 tools (${tools.length})\n`), wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_UP_AND_DOWN} ${tools.map((tool) => tool.function.name).join(", ")}`), "\n"); + } + if (metadata && preview) + res.push(renderMetadata(request)); + if (preview) + for (const msg of messages) { + const { role } = msg; + switch (role) { + case "system": + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}📙 system\n`), ...(await renderMessageContent(model, msg, { + columns, + rows: msgRows(msg, system), + }))); + break; + case "user": + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}👤 user\n`)); + res.push(...(await renderMessageContent(model, msg, { + columns, + rows: msgRows(msg, user), + }))); + break; + case "assistant": + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}🤖 assistant ${msg.name ? msg.name : ""}\n`)); + if (msg.reasoning_content) + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_UP_AND_DOWN}${BOX_RIGHT}🤔 reasoning\n`), msg.reasoning_content, "\n"); + res.push(...(await renderMessageContent(model, msg, { + columns, + rows: msgRows(msg, assistant), + }))); + if (msg.tool_calls?.length) + res.push(...msg.tool_calls.map((call) => renderToolCall(call, { columns }))); + break; + case "tool": + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}🔧 tool ${msg.tool_call_id || ""}\n`), ...(await renderMessageContent(model, msg, { + columns, + rows: msgRows(msg, undefined), + }))); + break; + default: + res.push(wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}${role}\n`), ...(await renderMessageContent(model, YAMLStringify(msg), { + columns, + rows: msgRows(msg, undefined), + }))); + break; + } + } + // Join the result array into a single markdown string. + return res.filter((s) => s !== undefined).join(""); +} +//# sourceMappingURL=chatrenderterminal.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chatrenderterminal.js.map b/packages/core/.tshy-build/browser/chatrenderterminal.js.map new file mode 100644 index 0000000000..3454495bf5 --- /dev/null +++ b/packages/core/.tshy-build/browser/chatrenderterminal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chatrenderterminal.js","sourceRoot":"","sources":["../../src/chatrenderterminal.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chattypes.d.ts b/packages/core/.tshy-build/browser/chattypes.d.ts new file mode 100644 index 0000000000..97d4ea5989 --- /dev/null +++ b/packages/core/.tshy-build/browser/chattypes.d.ts @@ -0,0 +1,127 @@ +/** + * This module defines TypeScript types and interfaces for chat completions using the OpenAI API. + * These types represent structured data for various chat-related functionalities. + * + * Tags: TypeScript, OpenAI, Chat, Types, Interfaces + */ +import OpenAI from "openai"; +import type { Logprob, PromptCacheControlType, RetryOptions, SerializedError } from "./types.js"; +export type ChatModel = OpenAI.Models.Model; +export type ChatModels = { + object: "list"; + data: Partial[]; +}; +export type ChatCompletionToolChoiceOption = OpenAI.Chat.ChatCompletionToolChoiceOption; +export type ChatCompletionNamedToolChoice = OpenAI.Chat.ChatCompletionNamedToolChoice; +export type ChatCompletionReasoningEffort = OpenAI.ReasoningEffort; +export type ChatCompletionUsage = OpenAI.Completions.CompletionUsage & { + duration?: number; +}; +export type ChatCompletionUsageCompletionTokensDetails = OpenAI.Completions.CompletionUsage.CompletionTokensDetails; +export type ChatCompletionUsagePromptTokensDetails = OpenAI.Completions.CompletionUsage.PromptTokensDetails; +export type ImageGenerationResponse = OpenAI.Images.ImagesResponse; +export type ChatCompletionContentPartText = OpenAI.Chat.Completions.ChatCompletionContentPartText; +export type ChatCompletionContentPart = OpenAI.Chat.Completions.ChatCompletionContentPart; +export type ChatCompletionContentPartRefusal = OpenAI.Chat.Completions.ChatCompletionContentPartRefusal; +export type ChatCompletionContentPartInputAudio = OpenAI.Chat.Completions.ChatCompletionContentPartInputAudio; +export type ChatCompletionTool = OpenAI.Chat.Completions.ChatCompletionTool; +export type ChatCompletionChunk = OpenAI.Chat.Completions.ChatCompletionChunk; +export type ChatCompletionChunkChoice = OpenAI.Chat.Completions.ChatCompletionChunk.Choice & { + delta?: ChatCompletionMessageReasoningContentParam; +}; +export type ChatCompletionTokenLogprob = OpenAI.ChatCompletionTokenLogprob; +export type ChatCompletion = OpenAI.Chat.Completions.ChatCompletion; +export type ChatCompletionChoice = OpenAI.Chat.Completions.ChatCompletion.Choice & { + message: ChatCompletionMessage; +}; +export interface ChatCompletionMessageParamCacheControl { + cacheControl?: PromptCacheControlType; +} +export type ChatCompletionMessage = OpenAI.Chat.Completions.ChatCompletionMessage & ChatCompletionMessageReasoningContentParam; +export type ChatCompletionSystemMessageParam = OpenAI.Chat.Completions.ChatCompletionSystemMessageParam & ChatCompletionMessageParamCacheControl; +export type ChatCompletionToolMessageParam = OpenAI.Chat.Completions.ChatCompletionToolMessageParam & ChatCompletionMessageParamCacheControl; +export type ChatCompletionFunctionMessageParam = OpenAI.Chat.Completions.ChatCompletionFunctionMessageParam & ChatCompletionMessageParamCacheControl; +/** + * Type representing parameters for chat completion messages. + */ +export type ChatCompletionMessageParam = ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam; +/** + * Type representing a request to create a chat completion, extending from OpenAI's + * streaming parameters minus the 'messages' property. + */ +export type CreateChatCompletionRequest = Omit & { + /** + * A list of messages comprising the conversation so far. + */ + messages: ChatCompletionMessageParam[]; +}; +export interface ChatCompletionMessageReasoningContentParam { + reasoning_content?: string; + signature?: string; +} +export type ChatCompletionAssistantMessageParam = OpenAI.Chat.Completions.ChatCompletionAssistantMessageParam & ChatCompletionMessageParamCacheControl & ChatCompletionMessageReasoningContentParam; +export type ChatCompletionChunkChoiceChoiceDelta = OpenAI.Chat.Completions.ChatCompletionChunk.Choice.Delta & ChatCompletionMessageReasoningContentParam; +export type ChatCompletionUserMessageParam = OpenAI.Chat.Completions.ChatCompletionUserMessageParam & ChatCompletionMessageParamCacheControl; +export type ChatCompletionContentPartImage = OpenAI.Chat.Completions.ChatCompletionContentPartImage; +export type ChatCompletionMessageToolCall = OpenAI.Chat.Completions.ChatCompletionMessageToolCall; +export type EmbeddingCreateParams = OpenAI.Embeddings.EmbeddingCreateParams; +export type EmbeddingCreateResponse = OpenAI.Embeddings.CreateEmbeddingResponse; +export interface EmbeddingResult { + data?: number[][]; + model?: string; + error?: string; + status: "success" | "error" | "rate_limited" | "cancelled"; +} +/** + * Interface representing a call to a chat completion tool. + */ +export interface ChatCompletionToolCall { + id: string; + name: string; + arguments?: string; +} +/** + * Interface representing a response from chat completion. + */ +export interface ChatCompletionResponse { + text?: string; + reasoning?: string; + signature?: string; + cached?: boolean; + variables?: Record; + toolCalls?: ChatCompletionToolCall[]; + finishReason?: // Reason why the chat completion finished + "stop" | "length" | "tool_calls" | "content_filter" | "cancel" | "fail"; + usage?: ChatCompletionUsage; + model?: string; + error?: SerializedError; + logprobs?: ChatCompletionTokenLogprob[]; + duration?: number; +} +export type ChatFinishReason = ChatCompletionResponse["finishReason"]; +export declare const ModelError: typeof import("openai").APIError; +/** + * Interface representing a progress report for chat completions. + */ +export interface ChatCompletionsProgressReport { + tokensSoFar: number; + responseSoFar: string; + responseChunk: string; + responseTokens?: Logprob[]; + reasoningTokens?: Logprob[]; + reasoningSoFar?: string; + reasoningChunk?: string; + inner: boolean; +} +/** + * Interface representing options for chat completions. + */ +export interface ChatCompletionsOptions extends RetryOptions { + partialCb?: (progress: ChatCompletionsProgressReport) => void; + requestOptions?: Partial>; + maxCachedTemperature?: number; + maxCachedTopP?: number; + cache?: boolean | string; + inner: boolean; +} +//# sourceMappingURL=chattypes.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chattypes.d.ts.map b/packages/core/.tshy-build/browser/chattypes.d.ts.map new file mode 100644 index 0000000000..9162a28a4f --- /dev/null +++ b/packages/core/.tshy-build/browser/chattypes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chattypes.d.ts","sourceRoot":"","sources":["../../src/chattypes.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC;AACxF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC;AACtF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,eAAe,CAAC;AAGnE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,GAAG;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,0CAA0C,GACpD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,uBAAuB,CAAC;AAC7D,MAAM,MAAM,sCAAsC,GAChD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAGnE,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC;AAGlG,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC;AAC1F,MAAM,MAAM,gCAAgC,GAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;AAE3D,MAAM,MAAM,mCAAmC,GAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC;AAG9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;AAG5E,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,GAAG;IAC3F,KAAK,CAAC,EAAE,0CAA0C,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;AACpE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,GAAG;IACjF,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,sCAAsC;IACrD,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC;AACD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAC/E,0CAA0C,CAAC;AAE7C,MAAM,MAAM,gCAAgC,GAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gCAAgC,GAAG,sCAAsC,CAAC;AAGpG,MAAM,MAAM,8BAA8B,GACxC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,GAAG,sCAAsC,CAAC;AAClG,MAAM,MAAM,kCAAkC,GAC5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kCAAkC,GACxD,sCAAsC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,mCAAmC,GACnC,8BAA8B,GAC9B,kCAAkC,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC,EAC3D,UAAU,CACX,GAAG;IACF;;OAEG;IACH,QAAQ,EAAE,0BAA0B,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,0CAA0C;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,mCAAmC,GAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC,GACzD,sCAAsC,GACtC,0CAA0C,CAAC;AAE/C,MAAM,MAAM,oCAAoC,GAC9C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,GACtD,0CAA0C,CAAC;AAG/C,MAAM,MAAM,8BAA8B,GACxC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,GAAG,sCAAsC,CAAC;AAGlG,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;AAEpG,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC;AAGlG,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC;AAG5E,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,YAAY,CAAC,EACb,AADe,0CAA0C;IACzD,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxE,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAGtE,eAAO,MAAM,UAAU,kCAAkB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;CAChB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chattypes.js b/packages/core/.tshy-build/browser/chattypes.js new file mode 100644 index 0000000000..28e609ee5a --- /dev/null +++ b/packages/core/.tshy-build/browser/chattypes.js @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * This module defines TypeScript types and interfaces for chat completions using the OpenAI API. + * These types represent structured data for various chat-related functionalities. + * + * Tags: TypeScript, OpenAI, Chat, Types, Interfaces + */ +import OpenAI from "openai"; +// Alias for OpenAI's API error type +export const ModelError = OpenAI.APIError; +//# sourceMappingURL=chattypes.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chattypes.js.map b/packages/core/.tshy-build/browser/chattypes.js.map new file mode 100644 index 0000000000..951f40fa8b --- /dev/null +++ b/packages/core/.tshy-build/browser/chattypes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chattypes.js","sourceRoot":"","sources":["../../src/chattypes.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AA8J5B,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chunkers.d.ts b/packages/core/.tshy-build/browser/chunkers.d.ts new file mode 100644 index 0000000000..9ebe2d12a7 --- /dev/null +++ b/packages/core/.tshy-build/browser/chunkers.d.ts @@ -0,0 +1,18 @@ +/** + * Splits a string into chunks of specified size. + * Parameters: + * - s: Input string to split. Must be non-null and non-empty. + * - n: Maximum size of each chunk. Defaults to 2 << 14. + * Returns: + * - Array of string chunks. Each chunk's length is <= n. + */ +export declare function chunkString(s: string, n?: number): string[]; +/** + * Splits a string into chunks of lines, ensuring each chunk's size does not exceed the specified limit. + * + * @param s - Input string to split. Must be non-null and non-empty. + * @param n - Maximum size of each chunk in characters. Defaults to 2 << 14. + * @returns Array of string chunks, where each chunk consists of complete lines and has a size <= n. + */ +export declare function chunkLines(s: string, n?: number): string[]; +//# sourceMappingURL=chunkers.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chunkers.d.ts.map b/packages/core/.tshy-build/browser/chunkers.d.ts.map new file mode 100644 index 0000000000..742aed1ee3 --- /dev/null +++ b/packages/core/.tshy-build/browser/chunkers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"chunkers.d.ts","sourceRoot":"","sources":["../../src/chunkers.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAgB,YAUzD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAgB,YAWxD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chunkers.js b/packages/core/.tshy-build/browser/chunkers.js new file mode 100644 index 0000000000..e617dbd2eb --- /dev/null +++ b/packages/core/.tshy-build/browser/chunkers.js @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { assert } from "./assert.js"; +/** + * Splits a string into chunks of specified size. + * Parameters: + * - s: Input string to split. Must be non-null and non-empty. + * - n: Maximum size of each chunk. Defaults to 2 << 14. + * Returns: + * - Array of string chunks. Each chunk's length is <= n. + */ +export function chunkString(s, n = 2 << 14) { + if (!s?.length) + return []; + if (s.length <= n) + return [s]; + const r = []; + for (let i = 0; i < s.length; i += n) { + r.push(s.slice(i, i + n)); + assert(r[r.length - 1].length <= n); + } + return r; +} +/** + * Splits a string into chunks of lines, ensuring each chunk's size does not exceed the specified limit. + * + * @param s - Input string to split. Must be non-null and non-empty. + * @param n - Maximum size of each chunk in characters. Defaults to 2 << 14. + * @returns Array of string chunks, where each chunk consists of complete lines and has a size <= n. + */ +export function chunkLines(s, n = 2 << 14) { + if (!s?.length) + return []; + if (s.length <= n) + return [s]; + const r = [""]; + const lines = s.split(/\r?\n/); + for (const line of lines) { + if (r[r.length - 1].length + line.length > n) + r.push(""); + r[r.length - 1] += line + "\n"; + } + return r; +} +//# sourceMappingURL=chunkers.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/chunkers.js.map b/packages/core/.tshy-build/browser/chunkers.js.map new file mode 100644 index 0000000000..cf513a499d --- /dev/null +++ b/packages/core/.tshy-build/browser/chunkers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chunkers.js","sourceRoot":"","sources":["../../src/chunkers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,IAAY,CAAC,IAAI,EAAE;IACxD,IAAI,CAAC,CAAC,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,GAAa,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,IAAY,CAAC,IAAI,EAAE;IACvD,IAAI,CAAC,CAAC,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,GAAa,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ci.d.ts b/packages/core/.tshy-build/browser/ci.d.ts new file mode 100644 index 0000000000..bd57a2afec --- /dev/null +++ b/packages/core/.tshy-build/browser/ci.d.ts @@ -0,0 +1,4 @@ +import _ci from "ci-info"; +export declare const ci: typeof _ci; +export declare const isCI: boolean; +//# sourceMappingURL=ci.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ci.d.ts.map b/packages/core/.tshy-build/browser/ci.d.ts.map new file mode 100644 index 0000000000..1c8202728d --- /dev/null +++ b/packages/core/.tshy-build/browser/ci.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,SAAS,CAAC;AAE1B,eAAO,MAAM,EAAE,YAAM,CAAC;AAEtB,eAAO,MAAM,IAAI,SAAW,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ci.js b/packages/core/.tshy-build/browser/ci.js new file mode 100644 index 0000000000..3a93862da2 --- /dev/null +++ b/packages/core/.tshy-build/browser/ci.js @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import _ci from "ci-info"; +export const ci = _ci; +export const isCI = _ci.isCI; +//# sourceMappingURL=ci.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ci.js.map b/packages/core/.tshy-build/browser/ci.js.map new file mode 100644 index 0000000000..551458b5df --- /dev/null +++ b/packages/core/.tshy-build/browser/ci.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,GAAG,MAAM,SAAS,CAAC;AAE1B,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AAEtB,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cleaners.d.ts b/packages/core/.tshy-build/browser/cleaners.d.ts new file mode 100644 index 0000000000..db198f5e6b --- /dev/null +++ b/packages/core/.tshy-build/browser/cleaners.d.ts @@ -0,0 +1,128 @@ +import type { EncodeIDsOptions } from "./types.js"; +/** + * Converts the input into an array, ensuring the result is always an array. + * + * @param a - Input value to be converted into an array. Can be a single value or an array. + * @param options - Optional configuration for the function behavior. + * @param options.filterEmpty - If true, removes falsy values from the resulting array. + * @returns An array derived from the input. If the input is undefined, returns an empty array. If the input is already an array, returns a shallow copy of it. + */ +export declare function arrayify(a: T | T[], options?: { + filterEmpty?: boolean; +}): T[]; +/** + * Removes properties with `undefined` values from an object. + * If the object is frozen, creates a new object without `undefined` values. + * + * @param o - The input object to be processed. + * If the object is frozen, a shallow copy is created with all `undefined` values removed. + * If the object is not frozen, `undefined` values are removed in-place. + * @returns The object with `undefined` values removed. + */ +export declare function deleteUndefinedValues>(o: T): T; +/** + * Removes empty values from an object. Empty values include `undefined`, `null`, empty strings, and empty arrays. + * + * @param o - The object to process. It must be an object. + * @returns The object with empty values removed. + */ +export declare function deleteEmptyValues>(o: T): T; +/** + * Converts a value to its string representation. + * + * @param s - The value to normalize. Can be a string, number, boolean, or object. + * - If the value is a string, it is returned unchanged. + * - If the value is a number, it is converted to a localized string format. + * - If the value is a boolean, it is converted to "true" or "false". + * - If the value is an object, it is converted to a JSON string. + * + * @returns The normalized string representation of the input value, or undefined if the input value type is unsupported. + */ +export declare function normalizeString(s: string | number | boolean | object): string; +/** + * Converts a value to a floating-point number if possible. + * + * @param s - The input value to convert (string, number, boolean, or object). + * - If a string, attempts to parse as a floating-point number. Returns undefined if parsing fails. + * - If a number, returns the value as is. + * - If a boolean, returns 1 for true and 0 for false. + * - If an object, returns 0. + * + * @returns The floating-point representation of the input or undefined if conversion is not possible. + */ +export declare function normalizeFloat(s: string | number | boolean | object): number; +/** + * Converts the given value to an integer. + * + * @param s - The input value to convert. Can be a string, number, boolean, or object. + * - If a string, it attempts to parse it to an integer. + * - If a number, it returns the number as is. + * - If a boolean, it returns 1 for true and 0 for false. + * - If an object, it returns 0. + * - For other types or invalid parsing, it returns undefined. + * @returns The converted integer or undefined if conversion is not possible. + */ +export declare function normalizeInt(s: string | number | boolean | object): number; +/** + * Parses a string and determines its boolean equivalent. + * + * @param s The string to parse. Expected values for `true` include "y", "yes", "true", or "ok" (case-insensitive). + * Expected values for `false` include "n", "no", "false", or "ok" (case-insensitive). + * + * @returns `true` if the input matches a positive boolean string, `false` if it matches a negative boolean string, + * or `undefined` if the input does not match either. + */ +export declare function normalizeBoolean(s: string): boolean; +/** + * Removes one or more trailing slashes from the end of a string. + * + * @param s The input string to process. It may include trailing slashes to be removed. + * @returns The input string with trailing slashes removed, or the original string if no trailing slashes are present. + */ +export declare function trimTrailingSlash(s: string): string; +export declare function ensureHeadSlash(s: string): string; +/** + * Converts a variable name to a normalized format by converting it to lowercase + * and removing all characters except alphanumeric characters and periods. + * + * @param key The variable name to normalize. Non-alphanumeric characters except periods will be stripped. + * @returns The normalized variable name as a string. + */ +export declare function normalizeVarKey(key: string): string; +/** + * Removes Markdown and HTML formatting from a given text string. + * + * @param text The input string containing Markdown links ([text](url)) and/or + * HTML tags. If the input is null or undefined, the function returns undefined. + * @returns A plain text string with Markdown links transformed to their text content + * and HTML tags removed. + */ +export declare function unmarkdown(text: string): string; +/** + * Collapses sequences of three or more consecutive newlines into two consecutive newlines. + * If the input is null or undefined, returns undefined. + * @param res The input string to process. + * @returns The processed string with collapsed newlines. + */ +export declare function collapseNewlines(res: string): string; +/** + * Checks if a given string is empty. + * + * @param s - The string to evaluate. Can be null, undefined, or a string value. + * @returns True if the string is null, undefined, or an empty string; otherwise, false. + */ +export declare function isEmptyString(s: string): boolean; +/** + * Replaces long, token-heavy identifiers like GUIDs with shorter encoded IDs. + * @param text The input string containing identifiers to encode. + * @param options Optional configuration for encoding behavior, including a regex matcher, prefix, and delimiters for encoded IDs. Defaults to matching GUIDs, prefix "id", and delimiters "{|" and "|}". + * @returns An object containing the encoded text, original text, a decode function to revert encoded IDs, the matcher regex, and a mapping of encoded IDs to original values. The decode function replaces encoded IDs with their original values. + */ +export declare function encodeIDs(text: string, options?: EncodeIDsOptions): { + encoded: string; + text: string; + decode: (text: string) => string; + matcher: RegExp; + ids: Record; +}; +//# sourceMappingURL=cleaners.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cleaners.d.ts.map b/packages/core/.tshy-build/browser/cleaners.d.ts.map new file mode 100644 index 0000000000..8250b53624 --- /dev/null +++ b/packages/core/.tshy-build/browser/cleaners.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cleaners.d.ts","sourceRoot":"","sources":["../../src/cleaners.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,CAAC,EAAE,CAWhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAQ5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAOxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAM7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAQ5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAS1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,WAMzC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,UAE1C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,UAGxC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAEtC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC;AAMD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB,GACzB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAoBA"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cleaners.js b/packages/core/.tshy-build/browser/cleaners.js new file mode 100644 index 0000000000..616e182d40 --- /dev/null +++ b/packages/core/.tshy-build/browser/cleaners.js @@ -0,0 +1,228 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Converts the input into an array, ensuring the result is always an array. + * + * @param a - Input value to be converted into an array. Can be a single value or an array. + * @param options - Optional configuration for the function behavior. + * @param options.filterEmpty - If true, removes falsy values from the resulting array. + * @returns An array derived from the input. If the input is undefined, returns an empty array. If the input is already an array, returns a shallow copy of it. + */ +export function arrayify(a, options) { + const { filterEmpty } = options || {}; + let r; + if (a === undefined) + r = []; + else if (Array.isArray(a)) + r = a.slice(0); + else + r = [a]; + if (filterEmpty) + return r.filter((f) => !!f); + return r; +} +/** + * Removes properties with `undefined` values from an object. + * If the object is frozen, creates a new object without `undefined` values. + * + * @param o - The input object to be processed. + * If the object is frozen, a shallow copy is created with all `undefined` values removed. + * If the object is not frozen, `undefined` values are removed in-place. + * @returns The object with `undefined` values removed. + */ +export function deleteUndefinedValues(o) { + if (typeof o === "object" && Object.isFrozen(o)) { + const res = {}; + for (const k in o) + if (o[k] !== undefined) + res[k] = o[k]; + return res; + } + if (typeof o === "object") + for (const k in o) + if (o[k] === undefined) + delete o[k]; + return o; +} +/** + * Removes empty values from an object. Empty values include `undefined`, `null`, empty strings, and empty arrays. + * + * @param o - The object to process. It must be an object. + * @returns The object with empty values removed. + */ +export function deleteEmptyValues(o) { + if (typeof o === "object") + for (const k in o) { + const v = o[k]; + if (v === undefined || v === null || v === "" || (Array.isArray(v) && !v.length)) + delete o[k]; + } + return o; +} +/** + * Converts a value to its string representation. + * + * @param s - The value to normalize. Can be a string, number, boolean, or object. + * - If the value is a string, it is returned unchanged. + * - If the value is a number, it is converted to a localized string format. + * - If the value is a boolean, it is converted to "true" or "false". + * - If the value is an object, it is converted to a JSON string. + * + * @returns The normalized string representation of the input value, or undefined if the input value type is unsupported. + */ +export function normalizeString(s) { + if (typeof s === "string") + return s; + else if (typeof s === "number") + return s.toLocaleString(); + else if (typeof s === "boolean") + return s ? "true" : "false"; + else if (typeof s === "object") + return JSON.stringify(s); + else + return undefined; +} +/** + * Converts a value to a floating-point number if possible. + * + * @param s - The input value to convert (string, number, boolean, or object). + * - If a string, attempts to parse as a floating-point number. Returns undefined if parsing fails. + * - If a number, returns the value as is. + * - If a boolean, returns 1 for true and 0 for false. + * - If an object, returns 0. + * + * @returns The floating-point representation of the input or undefined if conversion is not possible. + */ +export function normalizeFloat(s) { + if (typeof s === "string") { + const f = parseFloat(s); + return isNaN(f) ? undefined : f; + } + else if (typeof s === "number") + return s; + else if (typeof s === "boolean") + return s ? 1 : 0; + else if (typeof s === "object") + return 0; + else + return undefined; +} +/** + * Converts the given value to an integer. + * + * @param s - The input value to convert. Can be a string, number, boolean, or object. + * - If a string, it attempts to parse it to an integer. + * - If a number, it returns the number as is. + * - If a boolean, it returns 1 for true and 0 for false. + * - If an object, it returns 0. + * - For other types or invalid parsing, it returns undefined. + * @returns The converted integer or undefined if conversion is not possible. + */ +export function normalizeInt(s) { + if (s === undefined) + return undefined; + if (typeof s === "string") { + const f = parseInt(s); + return isNaN(f) ? undefined : f; + } + else if (typeof s === "number") + return s; + else if (typeof s === "boolean") + return s ? 1 : 0; + else if (typeof s === "object") + return 0; + else + return undefined; +} +/** + * Parses a string and determines its boolean equivalent. + * + * @param s The string to parse. Expected values for `true` include "y", "yes", "true", or "ok" (case-insensitive). + * Expected values for `false` include "n", "no", "false", or "ok" (case-insensitive). + * + * @returns `true` if the input matches a positive boolean string, `false` if it matches a negative boolean string, + * or `undefined` if the input does not match either. + */ +export function normalizeBoolean(s) { + return /^\s*(y|yes|true|ok)\s*$/i.test(s) + ? true + : /^\s*(n|no|false|ok)\s*$/i.test(s) + ? false + : undefined; +} +/** + * Removes one or more trailing slashes from the end of a string. + * + * @param s The input string to process. It may include trailing slashes to be removed. + * @returns The input string with trailing slashes removed, or the original string if no trailing slashes are present. + */ +export function trimTrailingSlash(s) { + return s?.replace(/\/{1,10}$/, ""); +} +export function ensureHeadSlash(s) { + if (s?.startsWith("/")) + return s; + return "/" + s; +} +/** + * Converts a variable name to a normalized format by converting it to lowercase + * and removing all characters except alphanumeric characters and periods. + * + * @param key The variable name to normalize. Non-alphanumeric characters except periods will be stripped. + * @returns The normalized variable name as a string. + */ +export function normalizeVarKey(key) { + return key.toLowerCase().replace(/[^a-z0-9.]/g, ""); +} +/** + * Removes Markdown and HTML formatting from a given text string. + * + * @param text The input string containing Markdown links ([text](url)) and/or + * HTML tags. If the input is null or undefined, the function returns undefined. + * @returns A plain text string with Markdown links transformed to their text content + * and HTML tags removed. + */ +export function unmarkdown(text) { + return text?.replace(/\[([^\]]+)\]\([^)]+\)/g, (m, n) => n)?.replace(/<\/?([^>]+)>/g, ""); +} +/** + * Collapses sequences of three or more consecutive newlines into two consecutive newlines. + * If the input is null or undefined, returns undefined. + * @param res The input string to process. + * @returns The processed string with collapsed newlines. + */ +export function collapseNewlines(res) { + return res?.replace(/(\r?\n){3,}/g, "\n\n"); +} +/** + * Checks if a given string is empty. + * + * @param s - The string to evaluate. Can be null, undefined, or a string value. + * @returns True if the string is null, undefined, or an empty string; otherwise, false. + */ +export function isEmptyString(s) { + return s === null || s === undefined || s === ""; +} +function escapeRegExp(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} +/** + * Replaces long, token-heavy identifiers like GUIDs with shorter encoded IDs. + * @param text The input string containing identifiers to encode. + * @param options Optional configuration for encoding behavior, including a regex matcher, prefix, and delimiters for encoded IDs. Defaults to matching GUIDs, prefix "id", and delimiters "{|" and "|}". + * @returns An object containing the encoded text, original text, a decode function to revert encoded IDs, the matcher regex, and a mapping of encoded IDs to original values. The decode function replaces encoded IDs with their original values. + */ +export function encodeIDs(text, options) { + const { matcher = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi, prefix = "id", open = "{|", close = "|}", } = options || {}; + const ids = {}; + let idCounter = 0; + const encoded = text?.replace(matcher, (match, id) => { + const encoded = `${open}${prefix}${idCounter++}${close}`; + ids[encoded] = match; + return encoded; + }); + const drx = new RegExp(`${escapeRegExp(open)}${prefix}(\\d+)${escapeRegExp(close)}`, "g"); + const decode = (text) => text?.replace(drx, (encoded) => ids[encoded]); + return { text, encoded, decode, matcher, ids }; +} +//# sourceMappingURL=cleaners.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/cleaners.js.map b/packages/core/.tshy-build/browser/cleaners.js.map new file mode 100644 index 0000000000..599398a4ac --- /dev/null +++ b/packages/core/.tshy-build/browser/cleaners.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cleaners.js","sourceRoot":"","sources":["../../src/cleaners.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/clone.d.ts b/packages/core/.tshy-build/browser/clone.d.ts new file mode 100644 index 0000000000..c6fd8f9fcb --- /dev/null +++ b/packages/core/.tshy-build/browser/clone.d.ts @@ -0,0 +1,8 @@ +/** + * Creates a deep clone of the input object and removes any properties with empty values. + * + * @param o - The object to be cloned and cleaned. + * @returns A cleaned, deep-cloned version of the input object with empty values removed. + */ +export declare function cleanedClone(o: any): any; +//# sourceMappingURL=clone.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/clone.d.ts.map b/packages/core/.tshy-build/browser/clone.d.ts.map new file mode 100644 index 0000000000..7e44ecbc3f --- /dev/null +++ b/packages/core/.tshy-build/browser/clone.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,OAIlC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/clone.js b/packages/core/.tshy-build/browser/clone.js new file mode 100644 index 0000000000..52efc17f28 --- /dev/null +++ b/packages/core/.tshy-build/browser/clone.js @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { deleteEmptyValues } from "./cleaners.js"; +/** + * Creates a deep clone of the input object and removes any properties with empty values. + * + * @param o - The object to be cloned and cleaned. + * @returns A cleaned, deep-cloned version of the input object with empty values removed. + */ +export function cleanedClone(o) { + const c = structuredClone(o); + deleteEmptyValues(c); + return c; +} +//# sourceMappingURL=clone.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/clone.js.map b/packages/core/.tshy-build/browser/clone.js.map new file mode 100644 index 0000000000..a30741a7ac --- /dev/null +++ b/packages/core/.tshy-build/browser/clone.js.map @@ -0,0 +1 @@ +{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAAM;IACjC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7B,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/concurrency.d.ts b/packages/core/.tshy-build/browser/concurrency.d.ts new file mode 100644 index 0000000000..defbdf8252 --- /dev/null +++ b/packages/core/.tshy-build/browser/concurrency.d.ts @@ -0,0 +1,21 @@ +import type { LimitFunction } from "p-limit"; +import type { Awaitable, PromiseQueue } from "./types.js"; +export type ConcurrentLimitFunction = LimitFunction; +/** + * Creates or retrieves a concurrency-limited function for managing asynchronous operations. + * + * @param id - A unique identifier for the concurrency limiter. + * @param concurrency - The maximum number of concurrent operations allowed. + * Will be normalized to a minimum value of 1. + * @returns A concurrency-limited function. + */ +export declare function concurrentLimit(id: string, concurrency: number): ConcurrentLimitFunction; +export declare class PLimitPromiseQueue implements PromiseQueue { + private queue; + constructor(concurrency?: number); + mapAll(values: T[], fn: (value: T, ...arguments_: Arguments) => Awaitable, ...arguments_: Arguments): Promise; + all(fns: (() => Awaitable)[]): Promise; + add(function_: (...arguments_: Arguments) => PromiseLike | ReturnType, ...arguments_: Arguments): Promise; + clear(): void; +} +//# sourceMappingURL=concurrency.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/concurrency.d.ts.map b/packages/core/.tshy-build/browser/concurrency.d.ts.map new file mode 100644 index 0000000000..119c4d26d7 --- /dev/null +++ b/packages/core/.tshy-build/browser/concurrency.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/concurrency.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,uBAAuB,CASxF;AAED,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,KAAK,CAAgB;gBACjB,WAAW,CAAC,EAAE,MAAM;IAK1B,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,SAAS,OAAO,EAAE,EAAE,UAAU,EACrE,MAAM,EAAE,CAAC,EAAE,EACX,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,SAAS,KAAK,SAAS,CAAC,UAAU,CAAC,EACjE,GAAG,UAAU,EAAE,SAAS,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI7D,GAAG,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,UAAU,EACzC,SAAS,EAAE,CAAC,GAAG,UAAU,EAAE,SAAS,KAAK,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,EAC7E,GAAG,UAAU,EAAE,SAAS,GACvB,OAAO,CAAC,UAAU,CAAC;IAKtB,KAAK;CAGN"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/concurrency.js b/packages/core/.tshy-build/browser/concurrency.js new file mode 100644 index 0000000000..f7bb076495 --- /dev/null +++ b/packages/core/.tshy-build/browser/concurrency.js @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import pLimit from "p-limit"; +import { resolveRuntimeHost } from "./host.js"; +import { normalizeInt } from "./cleaners.js"; +import { PROMISE_QUEUE_CONCURRENCY_DEFAULT } from "./constants.js"; +/** + * Creates or retrieves a concurrency-limited function for managing asynchronous operations. + * + * @param id - A unique identifier for the concurrency limiter. + * @param concurrency - The maximum number of concurrent operations allowed. + * Will be normalized to a minimum value of 1. + * @returns A concurrency-limited function. + */ +export function concurrentLimit(id, concurrency) { + const runtimeHost = resolveRuntimeHost(); + concurrency = Math.max(1, normalizeInt(concurrency)); + let limit = runtimeHost.userState["limit:" + id]; + if (!limit) { + limit = pLimit(concurrency); + runtimeHost.userState["limit:" + id] = limit; + } + else if (limit.concurrency > 0) + limit.concurrency = concurrency; + return limit; +} +export class PLimitPromiseQueue { + queue; + constructor(concurrency) { + const c = isNaN(concurrency) ? PROMISE_QUEUE_CONCURRENCY_DEFAULT : concurrency; + this.queue = pLimit(Math.max(1, c)); + } + async mapAll(values, fn, ...arguments_) { + return await Promise.all(values.map((value) => this.queue(fn, value, ...arguments_))); + } + async all(fns) { + return await Promise.all(fns.map((fn) => this.queue(fn))); + } + add(function_, ...arguments_) { + const res = this.queue(function_, ...arguments_); + return res; + } + clear() { + this.queue.clearQueue(); + } +} +//# sourceMappingURL=concurrency.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/concurrency.js.map b/packages/core/.tshy-build/browser/concurrency.js.map new file mode 100644 index 0000000000..037601fe47 --- /dev/null +++ b/packages/core/.tshy-build/browser/concurrency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/concurrency.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAKnE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,WAAmB;IAC7D,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAkB,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5B,WAAW,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;QAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAgB;IAC7B,YAAY,WAAoB;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/E,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAW,EACX,EAAiE,EACjE,GAAG,UAAqB;QAExB,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,GAAG,CAAU,GAA2B;QAC5C,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG,CACD,SAA6E,EAC7E,GAAG,UAAqB;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/config.d.ts b/packages/core/.tshy-build/browser/config.d.ts new file mode 100644 index 0000000000..5d1b66d496 --- /dev/null +++ b/packages/core/.tshy-build/browser/config.d.ts @@ -0,0 +1,41 @@ +import type { HostConfiguration } from "./hostconfiguration.js"; +import type { ResolvedLanguageModelConfiguration } from "./server/messages.js"; +import type { CancellationOptions } from "./cancellation.js"; +export declare function mergeHostConfigs(config: HostConfiguration, parsed: HostConfiguration): HostConfiguration; +/** + * Reads and resolves the configuration for the host environment. + * + * @param dotEnvPaths - Optional array of .env file paths to consider. If provided, these paths will be prioritized. + * + * Steps: + * - Calls `resolveGlobalConfiguration` to load base configurations from default paths and files. + * - Processes specified `.env` files to load environment variables. + * - Validates the existence and file type of each `.env` file. + * - Loads and overrides environment variables using `dotenv`. + * - Parses additional defaults from the current `process.env`. + * - Ensures unique resolution of `.env` file paths. + * + * @returns The resolved host configuration including merged and validated settings. + * + * @throws An error if any provided `.env` file is invalid, unreadable, or not a file. + */ +export declare function readHostConfig(dotEnvPaths: string[], hostConfig: HostConfiguration): Promise; +/** + * Resolves and outputs environment information for language model providers. + * @param provider - Filters by specific provider. If not provided, resolves all providers. + * @param options - Configuration options: + * - token - Include tokens in the output. If false, tokens are masked. + * - error - Include errors in the output. + * - models - List models for each provider if supported. + * - hide - Exclude hidden providers from the output. + * - cancellation options - Additional cancellation options. + * @returns Sorted list of resolved language model configurations, including errors if applicable. + * @throws An error if there is an issue retrieving or processing configurations for a provider. + */ +export declare function resolveLanguageModelConfigurations(provider: string, options?: { + token?: boolean; + error?: boolean; + models?: boolean; + hide?: boolean; +} & CancellationOptions): Promise; +//# sourceMappingURL=config.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/config.d.ts.map b/packages/core/.tshy-build/browser/config.d.ts.map new file mode 100644 index 0000000000..0af12e5056 --- /dev/null +++ b/packages/core/.tshy-build/browser/config.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAEV,kCAAkC,EACnC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CAWnB;AA+ED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EAAE,EACrB,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA0B5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,mBAAmB,GACtB,OAAO,CAAC,kCAAkC,EAAE,CAAC,CA0D/C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/config.js b/packages/core/.tshy-build/browser/config.js new file mode 100644 index 0000000000..f0d8746a8c --- /dev/null +++ b/packages/core/.tshy-build/browser/config.js @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { YAMLTryParse } from "./yaml.js"; +import { JSON5TryParse } from "./json5.js"; +import { DOT_ENV_FILENAME, DOT_ENV_GENAISCRIPT_FILENAME, MODEL_PROVIDERS, TOOL_ID, } from "./constants.js"; +import { join, resolve } from "node:path"; +import { validateJSONWithSchema } from "./schema.js"; +import { structuralMerge } from "./merge.js"; +import { resolveLanguageModel } from "./lm.js"; +import { arrayify, deleteEmptyValues } from "./cleaners.js"; +import { errorMessage } from "./error.js"; +import schema from "./configschema.js"; +import defaultConfig from "./configjson.js"; +import { resolveRuntimeHost } from "./host.js"; +import { uniq } from "es-toolkit"; +import { expandHomeDir, tryReadText, tryStat } from "./fs.js"; +import { parseDefaultsFromEnv } from "./env.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("config"); +export function mergeHostConfigs(config, parsed) { + if (!config && !parsed) + return undefined; + if (!parsed) + return config; + return deleteEmptyValues({ + include: structuralMerge(config?.include || [], parsed?.include || []), + envFile: [...arrayify(parsed?.envFile), ...arrayify(config?.envFile)], + ignoreCurrentWorkspace: config?.ignoreCurrentWorkspace || parsed?.ignoreCurrentWorkspace, + modelAliases: structuralMerge(config?.modelAliases || {}, parsed?.modelAliases || {}), + modelEncodings: structuralMerge(config?.modelEncodings || {}, parsed?.modelEncodings || {}), + secretScanners: structuralMerge(config?.secretPatterns || {}, parsed?.secretPatterns || {}), + }); +} +async function resolveGlobalConfiguration(dotEnvPaths, hostConfig) { + const dirs = [homedir()]; + if (!hostConfig.ignoreCurrentWorkspace) + dirs.push("."); + const exts = ["yml", "yaml", "json"]; + dbg("starting to resolve global configuration"); + // import and merge global local files + let config = structuredClone(defaultConfig); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete config["$schema"]; + dbg(`loaded defaultConfig: %O`, config); + // merge host configuration + if (hostConfig && Object.keys(hostConfig).length > 0) { + dbg(`merging host configuration %O`, hostConfig); + config = mergeHostConfigs(config, hostConfig); + } + for (const dir of dirs) { + for (const ext of exts) { + const filename = resolve(dir, `${TOOL_ID}.config.${ext}`); + dbg(`checking file: ${filename}`); + const stat = await tryStat(filename); + if (!stat) + continue; + if (!stat.isFile()) { + dbg(`skipping ${filename}, not a file`); + throw new Error(`config: ${filename} is a not a file`); + } + const fileContent = await tryReadText(filename); + if (!fileContent) { + dbg(`skipping ${filename}, no content`); + continue; + } + dbg(`loading ${filename}`); + const parsed = ext === "yml" || ext === "yaml" ? YAMLTryParse(fileContent) : JSON5TryParse(fileContent); + if (!parsed) { + dbg(`failed to parse ${filename}`); + throw new Error(`config: failed to parse ${filename}`); + } + dbg("validating config schema"); + const validation = validateJSONWithSchema(parsed, schema); + if (validation.schemaError) { + dbg(`validation error for ${filename}: ${validation.schemaError}`); + throw new Error(`config: ` + validation.schemaError); + } + dbg(`merging parsed configuration %O`, parsed); + config = mergeHostConfigs(config, parsed); + } + } + if (process.env.GENAISCRIPT_ENV_FILE) { + dbg(`adding env file from environment variable: '${process.env.GENAISCRIPT_ENV_FILE}'`); + config.envFile = [...(config.envFile || []), process.env.GENAISCRIPT_ENV_FILE]; + } + if (dotEnvPaths?.length) { + dbg(`adding env files from CLI: '${dotEnvPaths.join(", ")}'`); + config.envFile = [...(config.envFile || []), ...dotEnvPaths]; + } + if (!config.envFile?.length) { + dbg("no env files found, using defaults"); + config.envFile = [ + join(homedir(), DOT_ENV_GENAISCRIPT_FILENAME), + DOT_ENV_GENAISCRIPT_FILENAME, + DOT_ENV_FILENAME, + ]; + } + dbg("resolving env file paths"); + config.envFile = uniq(arrayify(config.envFile).map((f) => expandHomeDir(resolve(f)))); + dbg(`resolved env files: ${config.envFile.join(", ")}`); + return config; +} +/** + * Reads and resolves the configuration for the host environment. + * + * @param dotEnvPaths - Optional array of .env file paths to consider. If provided, these paths will be prioritized. + * + * Steps: + * - Calls `resolveGlobalConfiguration` to load base configurations from default paths and files. + * - Processes specified `.env` files to load environment variables. + * - Validates the existence and file type of each `.env` file. + * - Loads and overrides environment variables using `dotenv`. + * - Parses additional defaults from the current `process.env`. + * - Ensures unique resolution of `.env` file paths. + * + * @returns The resolved host configuration including merged and validated settings. + * + * @throws An error if any provided `.env` file is invalid, unreadable, or not a file. + */ +export async function readHostConfig(dotEnvPaths, hostConfig) { + dbg(`reading configuration`); + const config = await resolveGlobalConfiguration(dotEnvPaths, hostConfig); + const { envFile } = config; + for (const dotEnv of arrayify(envFile)) { + dbg(`.env: ${dotEnv}`); + const stat = await tryStat(dotEnv); + if (!stat) { + dbg(`ignored ${dotEnv}, not found`); + } + else { + if (!stat.isFile()) { + throw new Error(`.env: ${dotEnv} is not a file`); + } + dbg(`loading ${dotEnv}`); + const res = dotenv.config({ + path: dotEnv, + debug: /dotenv/.test(process.env.DEBUG), + override: true, + }); + if (res.error) { + throw res.error; + } + } + } + await parseDefaultsFromEnv(process.env); + return config; +} +/** + * Resolves and outputs environment information for language model providers. + * @param provider - Filters by specific provider. If not provided, resolves all providers. + * @param options - Configuration options: + * - token - Include tokens in the output. If false, tokens are masked. + * - error - Include errors in the output. + * - models - List models for each provider if supported. + * - hide - Exclude hidden providers from the output. + * - cancellation options - Additional cancellation options. + * @returns Sorted list of resolved language model configurations, including errors if applicable. + * @throws An error if there is an issue retrieving or processing configurations for a provider. + */ +export async function resolveLanguageModelConfigurations(provider, options) { + const { token, error, models, hide } = options || {}; + const res = []; + dbg("starting to resolve language model configurations"); + const runtimeHost = resolveRuntimeHost(); + for (const modelProvider of MODEL_PROVIDERS.filter((mp) => (!provider || mp.id === provider) && (!hide || !mp.hidden))) { + dbg(`processing model provider: ${modelProvider.id}, token: ${token}`); + try { + const conn = await runtimeHost.getLanguageModelConfiguration(modelProvider.id + ":*", options); + if (conn) { + dbg(`retrieved connection configuration for provider: ${modelProvider.id}`); + let listError = ""; + if (models && token) { + dbg(`listing models for provider: ${modelProvider.id}`); + const lm = await resolveLanguageModel(modelProvider.id); + if (lm.listModels) { + const models = await lm.listModels(conn, options); + if (models.ok) { + dbg(`successfully listed models for provider: ${modelProvider.id}`); + conn.models = models.models; + } + else { + listError = errorMessage(models.error) || "failed to list models"; + dbg(`error listing models for provider ${modelProvider.id}: ${listError}`); + } + } + } + if (!token && conn.token) + conn.token = "***"; + if (!listError || error || provider) { + dbg(`adding resolved configuration for provider: ${modelProvider.id}`); + res.push(deleteEmptyValues({ + provider: conn.provider, + source: conn.source, + base: conn.base, + type: conn.type, + models: conn.models, + error: listError, + token: conn.token, + })); + } + } + } + catch (e) { + dbg(`error resolving configuration for provider ${modelProvider.id}: ${e}`); + if (error || provider) + res.push({ + provider: modelProvider.id, + error: errorMessage(e), + }); + } + } + dbg("returning sorted resolved configurations"); + return res.sort((l, r) => l.provider.localeCompare(r.provider)); +} +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/config.js.map b/packages/core/.tshy-build/browser/config.js.map new file mode 100644 index 0000000000..97d69e3b03 --- /dev/null +++ b/packages/core/.tshy-build/browser/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configjson.d.ts b/packages/core/.tshy-build/browser/configjson.d.ts new file mode 100644 index 0000000000..c92a6597a8 --- /dev/null +++ b/packages/core/.tshy-build/browser/configjson.d.ts @@ -0,0 +1,8 @@ +declare const _default: { + $schema: string; + secretPatterns: { + "OpenAI API Key": string; + }; +}; +export default _default; +//# sourceMappingURL=configjson.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configjson.d.ts.map b/packages/core/.tshy-build/browser/configjson.d.ts.map new file mode 100644 index 0000000000..31c8a6d571 --- /dev/null +++ b/packages/core/.tshy-build/browser/configjson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"configjson.d.ts","sourceRoot":"","sources":["../../src/configjson.ts"],"names":[],"mappings":";;;;;;AAGA,wBAKE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configjson.js b/packages/core/.tshy-build/browser/configjson.js new file mode 100644 index 0000000000..748d8b7e2b --- /dev/null +++ b/packages/core/.tshy-build/browser/configjson.js @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export default { + $schema: "../../../docs/public/schemas/config.json", + secretPatterns: { + "OpenAI API Key": "sk-[A-Za-z0-9]{32,48}", + }, +}; +//# sourceMappingURL=configjson.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configjson.js.map b/packages/core/.tshy-build/browser/configjson.js.map new file mode 100644 index 0000000000..f6176bafef --- /dev/null +++ b/packages/core/.tshy-build/browser/configjson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configjson.js","sourceRoot":"","sources":["../../src/configjson.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,eAAe;IACb,OAAO,EAAE,0CAA0C;IACnD,cAAc,EAAE;QACd,gBAAgB,EAAE,uBAAuB;KAC1C;CACF,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configschema.d.ts b/packages/core/.tshy-build/browser/configschema.d.ts new file mode 100644 index 0000000000..344c91ae74 --- /dev/null +++ b/packages/core/.tshy-build/browser/configschema.d.ts @@ -0,0 +1,84 @@ +declare const _default: { + $schema: string; + title: string; + type: string; + description: string; + properties: { + envFile: { + oneOf: ({ + type: string; + description: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + description: string; + }; + description: string; + })[]; + }; + include: { + description: string; + type: string; + items: { + type: string; + description: string; + }; + }; + modelEncodings: { + type: string; + patternProperties: { + "^[a-zA-Z0-9_:]+$": { + type: string; + description: string; + enum: string[]; + }; + }; + additionalProperties: boolean; + description: string; + }; + modelAliases: { + type: string; + patternProperties: { + "^[a-zA-Z0-9_]+$": { + oneOf: ({ + type: string; + description: string; + properties?: undefined; + required?: undefined; + } | { + type: string; + properties: { + model: { + type: string; + description: string; + }; + temperature: { + type: string; + description: string; + }; + }; + required: string[]; + description?: undefined; + })[]; + }; + }; + additionalProperties: boolean; + description: string; + }; + secretPatterns: { + type: string; + patternProperties: { + "^[a-zA-Z0-9_:\\-\\. ]+$": { + type: string[]; + description: string; + }; + }; + additionalProperties: boolean; + description: string; + }; + }; +}; +export default _default; +//# sourceMappingURL=configschema.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configschema.d.ts.map b/packages/core/.tshy-build/browser/configschema.d.ts.map new file mode 100644 index 0000000000..5fad818b1b --- /dev/null +++ b/packages/core/.tshy-build/browser/configschema.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"configschema.d.ts","sourceRoot":"","sources":["../../src/configschema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBA4FE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configschema.js b/packages/core/.tshy-build/browser/configschema.js new file mode 100644 index 0000000000..86731df1f5 --- /dev/null +++ b/packages/core/.tshy-build/browser/configschema.js @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export default { + $schema: "http://json-schema.org/draft-07/schema#", + title: "GenAIScript Configuration", + type: "object", + description: "Schema for GenAIScript configuration file", + properties: { + envFile: { + oneOf: [ + { + type: "string", + description: "Path to a .env file to load environment variables from", + }, + { + type: "array", + items: { + type: "string", + description: "Path to a .env file to load environment variables from", + }, + description: "List of .env files", + }, + ], + }, + include: { + description: "List of files to include in the project", + type: "array", + items: { + type: "string", + description: "Path to a file or a glob pattern to include in the project", + }, + }, + modelEncodings: { + type: "object", + patternProperties: { + "^[a-zA-Z0-9_:]+$": { + type: "string", + description: "Encoding identifier", + enum: [ + "o1", + "gpt-4o", + "gpt-3.5-turbo", + "text-davinci-003", + "o200k_base", + "cl100k_base", + "p50k_base", + "r50k_base", + ], + }, + }, + additionalProperties: true, + description: "Equivalent encoders for model identifiers", + }, + modelAliases: { + type: "object", + patternProperties: { + "^[a-zA-Z0-9_]+$": { + oneOf: [ + { + type: "string", + description: "Model identifier (provider:model:tag)", + }, + { + type: "object", + properties: { + model: { + type: "string", + description: "Model identifier (provider:model:tag)", + }, + temperature: { + type: "number", + description: "Temperature to use for the model", + }, + }, + required: ["model"], + }, + ], + }, + }, + additionalProperties: true, + description: "Aliases for model identifiers (name)", + }, + secretPatterns: { + type: "object", + patternProperties: { + "^[a-zA-Z0-9_:\\-\\. ]+$": { + type: ["string", "null"], + description: "Secret regex", + }, + }, + additionalProperties: true, + description: "Secret scanners to use for scanning chat messages", + }, + }, +}; +//# sourceMappingURL=configschema.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/configschema.js.map b/packages/core/.tshy-build/browser/configschema.js.map new file mode 100644 index 0000000000..455455b8ac --- /dev/null +++ b/packages/core/.tshy-build/browser/configschema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configschema.js","sourceRoot":"","sources":["../../src/configschema.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,eAAe;IACb,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,2BAA2B;IAClC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,2CAA2C;IACxD,UAAU,EAAE;QACV,OAAO,EAAE;YACP,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;iBACtE;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,wDAAwD;qBACtE;oBACD,WAAW,EAAE,oBAAoB;iBAClC;aACF;SACF;QACD,OAAO,EAAE;YACP,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;SACF;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE;gBACjB,kBAAkB,EAAE;oBAClB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE;wBACJ,IAAI;wBACJ,QAAQ;wBACR,eAAe;wBACf,kBAAkB;wBAClB,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,WAAW;qBACZ;iBACF;aACF;YACD,oBAAoB,EAAE,IAAI;YAC1B,WAAW,EAAE,2CAA2C;SACzD;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE;gBACjB,iBAAiB,EAAE;oBACjB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uCAAuC;yBACrD;wBACD;4BACE,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,WAAW,EAAE,uCAAuC;iCACrD;gCACD,WAAW,EAAE;oCACX,IAAI,EAAE,QAAQ;oCACd,WAAW,EAAE,kCAAkC;iCAChD;6BACF;4BACD,QAAQ,EAAE,CAAC,OAAO,CAAC;yBACpB;qBACF;iBACF;aACF;YACD,oBAAoB,EAAE,IAAI;YAC1B,WAAW,EAAE,sCAAsC;SACpD;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE;gBACjB,yBAAyB,EAAE;oBACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;oBACxB,WAAW,EAAE,cAAc;iBAC5B;aACF;YACD,oBAAoB,EAAE,IAAI;YAC1B,WAAW,EAAE,mDAAmD;SACjE;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/consolecolor.d.ts b/packages/core/.tshy-build/browser/consolecolor.d.ts new file mode 100644 index 0000000000..0ee4075006 --- /dev/null +++ b/packages/core/.tshy-build/browser/consolecolor.d.ts @@ -0,0 +1,30 @@ +export declare let consoleColors: boolean; +/** + * Enables or disables console color output. + * Updates the global consoleColors flag based on the input. + * @param enabled - Whether to enable or disable color output. + */ +export declare function setConsoleColors(enabled: boolean): void; +/** + * Wraps a message with ANSI color codes if colors are enabled. + * @param n - The color code + * @param message - The message to wrap + * @returns The color wrapped message or the original message + * @see https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit + */ +/** + * Wraps a message with ANSI escape codes for the specified color. + * @param n - The ANSI color code or name to apply. + * @param message - The message to wrap. Returns the original message if colors are disabled. + */ +export declare function wrapColor(n: number | string, message: string): string; +/** + * Wraps text with RGB ANSI color codes for foreground or background. + * Converts an RGB integer to its red, green, and blue components and applies the corresponding ANSI escape codes. + * Returns the original text if color output is disabled. + * @param rgb - RGB color as a single integer. + * @param text - Text to wrap with the color. + * @param background - Optional. If true, applies the color to the background. + */ +export declare function wrapRgbColor(rgb: number, text: string, background?: boolean): string; +//# sourceMappingURL=consolecolor.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/consolecolor.d.ts.map b/packages/core/.tshy-build/browser/consolecolor.d.ts.map new file mode 100644 index 0000000000..c2bd9e4936 --- /dev/null +++ b/packages/core/.tshy-build/browser/consolecolor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"consolecolor.d.ts","sourceRoot":"","sources":["../../src/consolecolor.ts"],"names":[],"mappings":"AAOA,eAAO,IAAI,aAAa,SAAiB,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAEhD;AAED;;;;;;GAMG;AACH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,UAG5D;AAGD;;;;;;;GAOG;AAEH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAQpF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/consolecolor.js b/packages/core/.tshy-build/browser/consolecolor.js new file mode 100644 index 0000000000..2eb3976486 --- /dev/null +++ b/packages/core/.tshy-build/browser/consolecolor.js @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { stdout } from "./stdio.js"; +// Boolean indicating if console supports colors +// Determines if the console supports color output based on terminal capability +export let consoleColors = !!stdout.isTTY; +/** + * Enables or disables console color output. + * Updates the global consoleColors flag based on the input. + * @param enabled - Whether to enable or disable color output. + */ +export function setConsoleColors(enabled) { + consoleColors = !!enabled; +} +/** + * Wraps a message with ANSI color codes if colors are enabled. + * @param n - The color code + * @param message - The message to wrap + * @returns The color wrapped message or the original message + * @see https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit + */ +/** + * Wraps a message with ANSI escape codes for the specified color. + * @param n - The ANSI color code or name to apply. + * @param message - The message to wrap. Returns the original message if colors are disabled. + */ +export function wrapColor(n, message) { + if (consoleColors) + return `\x1B[${n}m${message}\x1B[0m`; + else + return message; +} +// for (let i = 0; i < 255; ++i) +/** + * Wraps text with RGB ANSI color codes for foreground or background. + * Converts an RGB integer to its red, green, and blue components and applies the corresponding ANSI escape codes. + * Returns the original text if color output is disabled. + * @param rgb - RGB color as a single integer. + * @param text - Text to wrap with the color. + * @param background - Optional. If true, applies the color to the background. + */ +export function wrapRgbColor(rgb, text, background) { + if (!consoleColors) + return text; + const r = (rgb >> 16) & 0xff; + const g = (rgb >> 8) & 0xff; + const b = rgb & 0xff; + const rgbColorCode = `\x1b[${background ? "48" : "38"};2;${r};${g};${b}m`; + const resetCode = `\x1b[0m`; + return `${rgbColorCode}${text}${resetCode}`; +} +//# sourceMappingURL=consolecolor.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/consolecolor.js.map b/packages/core/.tshy-build/browser/consolecolor.js.map new file mode 100644 index 0000000000..d59fb8b8f9 --- /dev/null +++ b/packages/core/.tshy-build/browser/consolecolor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"consolecolor.js","sourceRoot":"","sources":["../../src/consolecolor.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,gDAAgD;AAChD,+EAA+E;AAC/E,MAAM,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAkB,EAAE,OAAe;IAC3D,IAAI,aAAa;QAAE,OAAO,QAAQ,CAAC,IAAI,OAAO,SAAS,CAAC;;QACnD,OAAO,OAAO,CAAC;AACtB,CAAC;AAED,gCAAgC;AAChC;;;;;;;GAOG;AAEH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,UAAoB;IAC1E,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACrB,MAAM,YAAY,GAAG,QAAQ,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1E,MAAM,SAAS,GAAG,SAAS,CAAC;IAC5B,OAAO,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/constants.d.ts b/packages/core/.tshy-build/browser/constants.d.ts new file mode 100644 index 0000000000..e3929d37af --- /dev/null +++ b/packages/core/.tshy-build/browser/constants.d.ts @@ -0,0 +1,319 @@ +import type { LanguageModelPricing, LanguageModelProviderInformation } from "./llmsdata.js"; +import type { FenceFormat } from "./types.js"; +export declare const CHANGE = "change"; +export declare const RESOURCE_CHANGE = "resourceChange"; +export declare const TRACE_CHUNK = "traceChunk"; +export declare const TRACE_DETAILS = "traceDetails"; +export declare const RECONNECT = "reconnect"; +export declare const OPEN = "open"; +export declare const CLOSE = "close"; +export declare const READY = "ready"; +export declare const MESSAGE = "message"; +export declare const ERROR = "error"; +export declare const CONNECT = "connect"; +export declare const LOG = "log"; +export declare const QUEUE_SCRIPT_START = "queueScriptStart"; +export declare const MAX_TOOL_CALLS = 10000; +export declare const MAX_TOOL_DESCRIPTION_LENGTH = 1000; +export declare const AZURE_OPENAI_API_VERSION = "2025-04-01-preview"; +export declare const AZURE_MANAGEMENT_API_VERSION = "2024-10-01"; +export declare const AZURE_COGNITIVE_SERVICES_TOKEN_SCOPES: readonly string[]; +export declare const AZURE_AI_INFERENCE_VERSION = "2025-03-01-preview"; +export declare const AZURE_AI_INFERENCE_TOKEN_SCOPES: readonly string[]; +export declare const AZURE_MANAGEMENT_TOKEN_SCOPES: readonly string[]; +export declare const AZURE_TOKEN_EXPIRATION: number; +export declare const DOCS_URL = "https://microsoft.github.io/genaiscript"; +export declare const TOOL_URL = "https://microsoft.github.io/genaiscript"; +export declare const TOOL_ID = "genaiscript"; +export declare const GENAISCRIPT_FOLDER: string; +export declare const GENAI_SRC = "genaisrc"; +export declare const GENAI_JS_EXT = ".genai.js"; +export declare const GENAI_MJS_EXT = ".genai.mjs"; +export declare const GENAI_MTS_EXT = ".genai.mts"; +export declare const GENAI_MD_EXT = ".genai.md"; +export declare const GENAI_ANYJS_GLOB = "**/*{.genai.js,.genai.mjs,.genai.ts,.genai.mts,.genai.md}"; +export declare const NEGATIVE_GLOB_REGEX: RegExp; +export declare const GENAI_ANY_REGEX: RegExp; +export declare const GENAI_ANYJS_REGEX: RegExp; +export declare const GENAI_ANYTS_REGEX: RegExp; +export declare const GENAI_MD_REGEX: RegExp; +export declare const HTTP_OR_S_REGEX: RegExp; +export declare const HTTPS_REGEX: RegExp; +export declare const CSV_REGEX: RegExp; +export declare const YAML_REGEX: RegExp; +export declare const INI_REGEX: RegExp; +export declare const TOML_REGEX: RegExp; +export declare const XLSX_REGEX: RegExp; +export declare const XML_REGEX: RegExp; +export declare const DOCX_REGEX: RegExp; +export declare const PDF_REGEX: RegExp; +export declare const MD_REGEX: RegExp; +export declare const MDX_REGEX: RegExp; +export declare const MJS_REGEX: RegExp; +export declare const MJTS_REGEX: RegExp; +export declare const JS_REGEX: RegExp; +export declare const TS_IMPORT_REGEX: RegExp; +export declare const JSON5_REGEX: RegExp; +export declare const JSONL_REGEX: RegExp; +export declare const PROMPTY_REGEX: RegExp; +export declare const TOOL_NAME = "GenAIScript"; +export declare const SERVER_PORT = 8003; +export declare const OPENAPI_SERVER_PORT = 3000; +export declare const CLIENT_RECONNECT_DELAY = 3000; +export declare const CLIENT_RECONNECT_MAX_ATTEMPTS = 20; +export declare const RETRIEVAL_PERSIST_DIR = "retrieval"; +export declare const HIGHLIGHT_LENGTH = 4000; +export declare const SMALL_MODEL_ID = "small"; +export declare const LARGE_MODEL_ID = "large"; +export declare const VISION_MODEL_ID = "vision"; +export declare const TRANSCRIPTION_MODEL_ID = "transcription"; +export declare const SPEECH_MODEL_ID = "speech"; +export declare const IMAGE_GENERATION_MODEL_ID = "image"; +export declare const EMBEDDINGS_MODEL_ID = "embeddings"; +export declare const DEFAULT_FENCE_FORMAT: FenceFormat; +export declare const DEFAULT_TEMPERATURE = 0.8; +export declare const TRACE_NODE_PREFIX = "genaiscript/trace/"; +export declare const EXTENSION_ID = "genaiscript.genaiscript-vscode"; +export declare const COPILOT_CHAT_PARTICIPANT_ID = "genaiscript"; +export declare const COPILOT_CHAT_PARTICIPANT_SCRIPT_ID = "copilotchat"; +export declare const TAVILY_ENDPOINT = "https://api.tavily.com/search"; +export declare const SYSTEM_FENCE = "\n"; +export declare const MAX_DATA_REPAIRS = 1; +export declare const NPM_CLI_PACKAGE = "genaiscript"; +export declare const ICON_LOGO_NAME = "genaiscript-logo"; +export declare const SARIFF_RULEID_PREFIX = "genaiscript/"; +export declare const SARIFF_BUILDER_URL = "https://github.com/microsoft/genaiscript/"; +export declare const SARIFF_BUILDER_TOOL_DRIVER_NAME = "genaiscript"; +export declare const OPENAI_MAX_RETRY_DELAY = 60000; +export declare const OPENAI_MAX_RETRY_COUNT = 10; +export declare const OPENAI_RETRY_DEFAULT_DEFAULT = 1000; +export declare const OPENAI_MAX_RETRY_AFTER_DEFAULT = 300000; +export declare const FETCH_RETRY_DEFAULT = 6; +export declare const FETCH_RETRY_DELAY_DEFAULT = 2000; +export declare const FETCH_RETRY_MIN_DELAY_DEFAULT = 2000; +export declare const FETCH_RETRY_MAX_DELAY_DEFAULT = 60000; +export declare const FETCH_RETRY_MAX_RETRY_AFTER_DEFAULT = 300000; +export declare const FETCH_RETRY_GROWTH_FACTOR = 1.5; +export declare const FETCH_RETRY_ON_DEFAULT: number[]; +export declare const EXEC_MAX_BUFFER = 64; +export declare const DOT_ENV_FILENAME = ".env"; +export declare const DOT_ENV_GENAISCRIPT_FILENAME = ".env.genaiscript"; +export declare const SUCCESS_ERROR_CODE = 0; +export declare const UNHANDLED_ERROR_CODE = -1; +export declare const ANNOTATION_ERROR_CODE = -2; +export declare const FILES_NOT_FOUND_ERROR_CODE = -3; +export declare const GENERATION_ERROR_CODE = -4; +export declare const RUNTIME_ERROR_CODE = -5; +export declare const CONNECTION_CONFIGURATION_ERROR_CODE = -6; +export declare const USER_CANCELLED_ERROR_CODE = -7; +export declare const CONFIGURATION_ERROR_CODE = -8; +export declare const UNRECOVERABLE_ERROR_CODES: readonly number[]; +export declare const DOT_ENV_REGEX: RegExp; +export declare const PROMPT_FENCE = "```"; +export declare const MARKDOWN_PROMPT_FENCE = "`````"; +export declare const OPENAI_API_BASE = "https://api.openai.com/v1"; +export declare const OLLAMA_DEFAULT_PORT = 11434; +export declare const OLLAMA_API_BASE = "http://127.0.0.1:11434/v1"; +export declare const SGLANG_API_BASE = "http://127.0.0.1:30000/v1"; +export declare const VLLM_API_BASE = "http://127.0.0.1:8000/v1"; +export declare const LLAMAFILE_API_BASE = "http://127.0.0.1:8080/v1"; +export declare const LOCALAI_API_BASE = "http://127.0.0.1:8080/v1"; +export declare const LITELLM_API_BASE = "http://127.0.0.1:4000"; +export declare const LMSTUDIO_API_BASE = "http://127.0.0.1:1234/v1"; +export declare const JAN_API_BASE = "http://127.0.0.1:1337/v1"; +export declare const ANTHROPIC_API_BASE = "https://api.anthropic.com"; +export declare const HUGGINGFACE_API_BASE = "https://router.huggingface.co/v1/"; +export declare const GOOGLE_API_BASE = "https://generativelanguage.googleapis.com/v1beta/openai/"; +export declare const ALIBABA_BASE = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"; +export declare const MISTRAL_API_BASE = "https://api.mistral.ai/v1"; +export declare const DEEPSEEK_API_BASE = "https://api.deepseek.com/v1"; +export declare const WHISPERASR_API_BASE = "http://localhost:9000"; +export declare const WINDOWS_AI_API_BASE = "http://127.0.0.1:5272/v1"; +export declare const DOCKER_MODEL_RUNNER_API_BASE = "http://model-runner.docker.internal/engines/v1/"; +export declare const PROMPTFOO_CACHE_PATH = ".genaiscript/cache/tests"; +export declare const PROMPTFOO_CONFIG_DIR = ".genaiscript/config/tests"; +export declare const PROMPTFOO_REMOTE_API_PORT = 15500; +export declare const PROMPTFOO_REDTEAM_NUM_TESTS = 5; +export declare const PROMPTFOO_TEST_MAX_CONCURRENCY = 1; +export declare const TYPE_DEFINITION_BASENAME = "genaiscript.d.ts"; +export declare const TYPE_DEFINITION_REFERENCE = "/// \n"; +export declare const RUNS_DIR_NAME = "runs"; +export declare const CONVERTS_DIR_NAME = "converts"; +export declare const TEST_RUNS_DIR_NAME = "test-runs"; +export declare const STATS_DIR_NAME = "stats"; +export declare const TRACE_FILENAME = "trace.md"; +export declare const OUTPUT_FILENAME = "readme.md"; +export declare const EMOJI_SUCCESS = "\u2705"; +export declare const EMOJI_FAIL = "\u274C"; +export declare const EMOJI_WARNING = "\u26A0\uFE0F"; +export declare const EMOJI_UNDEFINED = "?"; +export declare const MODEL_PROVIDER_OPENAI = "openai"; +export declare const MODEL_PROVIDER_GITHUB = "github"; +export declare const MODEL_PROVIDER_AZURE_OPENAI = "azure"; +export declare const MODEL_PROVIDER_GOOGLE = "google"; +export declare const MODEL_PROVIDER_AZURE_AI_INFERENCE = "azure_ai_inference"; +export declare const MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI = "azure_serverless"; +export declare const MODEL_PROVIDER_AZURE_SERVERLESS_MODELS = "azure_serverless_models"; +export declare const MODEL_PROVIDER_OLLAMA = "ollama"; +export declare const MODEL_PROVIDER_LLAMAFILE = "llamafile"; +export declare const MODEL_PROVIDER_LITELLM = "litellm"; +export declare const MODEL_PROVIDER_GITHUB_COPILOT_CHAT = "github_copilot_chat"; +export declare const MODEL_PROVIDER_ANTHROPIC = "anthropic"; +export declare const MODEL_PROVIDER_ANTHROPIC_BEDROCK = "anthropic_bedrock"; +export declare const MODEL_PROVIDER_HUGGINGFACE = "huggingface"; +export declare const MODEL_PROVIDER_ALIBABA = "alibaba"; +export declare const MODEL_PROVIDER_MISTRAL = "mistral"; +export declare const MODEL_PROVIDER_LMSTUDIO = "lmstudio"; +export declare const MODEL_PROVIDER_JAN = "jan"; +export declare const MODEL_PROVIDER_SGLANG = "sglang"; +export declare const MODEL_PROVIDER_VLLM = "vllm"; +export declare const MODEL_PROVIDER_DEEPSEEK = "deepseek"; +export declare const MODEL_PROVIDER_WHISPERASR = "whisperasr"; +export declare const MODEL_PROVIDER_WINDOWS_AI = "windows"; +export declare const MODEL_PROVIDER_DOCKER_MODEL_RUNNER = "docker"; +export declare const MODEL_PROVIDER_ECHO = "echo"; +export declare const MODEL_PROVIDER_NONE = "none"; +export declare const MODEL_PROVIDER_MCP = "mcp"; +export declare const MODEL_GITHUB_COPILOT_CHAT_CURRENT: string; +export declare const MODEL_PROVIDER_OPENAI_HOSTS: readonly string[]; +export declare const TRACE_FILE_PREVIEW_MAX_LENGTH = 240; +export declare const OPENROUTER_API_CHAT_URL = "https://openrouter.ai/api/v1/chat/completions"; +export declare const OPENROUTER_SITE_URL_HEADER = "HTTP-Referer"; +export declare const OPENROUTER_SITE_NAME_HEADER = "X-Title"; +export declare const GITHUB_MODELS_BASE = "https://models.github.ai/inference"; +export declare const DOCS_CONFIGURATION_URL = "https://microsoft.github.io/genaiscript/getting-started/configuration/"; +export declare const DOCS_CONFIGURATION_CONTENT_SAFETY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/content-safety"; +export declare const DOCS_DEF_FILES_IS_EMPTY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/context/#empty-files"; +export declare const DOCS_WEB_SEARCH_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/"; +export declare const DOCS_WEB_SEARCH_BING_SEARCH_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/#bingn"; +export declare const DOCS_WEB_SEARCH_TAVILY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/#tavily"; +export declare const MODEL_PROVIDERS: readonly LanguageModelProviderInformation[]; +export declare const MODEL_PRICINGS: Readonly>; +export declare const NEW_SCRIPT_TEMPLATE = "$`Write a short poem in code.`\n"; +export declare const PDF_SCALE = 4; +export declare const PDF_HASH_LENGTH = 22; +export declare const DOCX_HASH_LENGTH = 22; +export declare const VECTOR_INDEX_HASH_LENGTH = 22; +export declare const RESOURCE_HASH_LENGTH = 22; +export declare const FILE_HASH_LENGTH = 64; +export declare const PDF_MIME_TYPE = "application/pdf"; +export declare const DOCX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; +export declare const XLSX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; +export declare const JSON_MIME_TYPE = "application/json"; +export declare const JSON_SCHEMA_MIME_TYPE = "application/schema+json"; +export declare const JAVASCRIPT_MIME_TYPE = "application/javascript"; +export declare const MARKDOWN_MIME_TYPE = "text/markdown"; +export declare const YAML_MIME_TYPE = "application/yaml"; +export declare const JSON_META_SCHEMA_URI = "https://json-schema.org/draft/2020-12/schema"; +export declare const SHELL_EXEC_TIMEOUT = 300000; +export declare const DOCKER_DEFAULT_IMAGE = "python:alpine"; +export declare const DOCKER_VOLUMES_DIR = "containers"; +export declare const DOCKER_CONTAINER_VOLUME = "app"; +export declare const CLI_RUN_FILES_FOLDER = "files"; +export declare const GITHUB_API_VERSION = "2022-11-28"; +export declare const GITHUB_TOKENS: string[]; +export declare const AI_REQUESTS_CACHE = "airaireequests"; +export declare const CHAT_CACHE = "chat"; +export declare const GITHUB_PULL_REQUEST_REVIEWS_CACHE = "prr"; +export declare const GITHUB_PULL_REQUEST_REVIEW_COMMENT_LINE_DISTANCE = 5; +export declare const GITHUB_ASSET_BRANCH = "genai-assets"; +export declare const PLACEHOLDER_API_BASE = ""; +export declare const PLACEHOLDER_API_KEY = ""; +export declare const VSCODE_CONFIG_CLI_VERSION = "cli.version"; +export declare const VSCODE_CONFIG_CLI_PATH = "cli.path"; +export declare const VSCODE_CONFIG_CLI_PACKAGE_MANAGER = "cli.packageManager"; +export declare const CONSOLE_COLOR_INFO = 32; +export declare const CONSOLE_COLOR_DEBUG = 90; +export declare const CONSOLE_COLOR_REASONING = "38;5;17"; +export declare const CONSOLE_COLOR_PERFORMANCE = "38;5;17"; +export declare const CONSOLE_COLOR_WARNING = 95; +export declare const CONSOLE_COLOR_ERROR = 91; +export declare const CONSOLE_TOKEN_COLORS: number[]; +export declare const CONSOLE_TOKEN_INNER_COLORS: number[]; +export declare const PLAYWRIGHT_DEFAULT_BROWSER = "chromium"; +export declare const MAX_TOKENS_ELLIPSE = "..."; +export declare const ESTIMATE_TOKEN_OVERHEAD = 2; +export declare const DEDENT_INSPECT_MAX_DEPTH = 3; +export declare const ANTHROPIC_MAX_TOKEN = 4096; +export declare const TEMPLATE_ARG_FILE_MAX_TOKENS = 4000; +export declare const TEMPLATE_ARG_DATA_SLICE_SAMPLE = 2000; +export declare const CHAT_REQUEST_PER_MODEL_CONCURRENT_LIMIT = 8; +export declare const PROMISE_QUEUE_CONCURRENCY_DEFAULT = 16; +export declare const FILE_READ_CONCURRENCY_DEFAULT = 16; +export declare const GITHUB_REST_API_CONCURRENCY_LIMIT = 8; +export declare const GITHUB_REST_PAGE_DEFAULT = 10; +export declare const TOKEN_TRUNCATION_THRESHOLD = 16; +export declare const GIT_IGNORE = ".gitignore"; +export declare const GIT_IGNORE_GENAI = ".gitignore.genai"; +export declare const GENAISCRIPTIGNORE = ".genaiscriptignore"; +export declare const CLI_ENV_VAR_RX: RegExp; +export declare const GIT_DIFF_MAX_TOKENS = 8000; +export declare const GIT_LOG_COUNT = 10; +export declare const MAX_TOOL_CONTENT_TOKENS = 8000; +export declare const AGENT_MEMORY_CACHE_NAME = "agent_memory"; +export declare const AGENT_MEMORY_FLEX_TOKENS = 20000; +export declare const TRANSCRIPTION_CACHE_NAME = "transcriptions"; +export declare const AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH = 9000; +export declare const AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_DOCUMENTS = 9000; +export declare const TOKEN_MISSING_INFO = ""; +export declare const TOKEN_NO_ANSWER = ""; +export declare const CHOICE_LOGIT_BIAS = 5; +export declare const SANITIZED_PROMPT_INJECTION = "...prompt injection detected, content removed..."; +export declare const IMAGE_DETAIL_LOW_WIDTH = 512; +export declare const IMAGE_DETAIL_LOW_HEIGHT = 512; +export declare const IMAGE_DETAIL_HIGH_TILE_SIZE = 512; +export declare const IMAGE_DETAIL_HIGH_WIDTH = 2048; +export declare const IMAGE_DETAIL_HIGH_HEIGHT = 2048; +export declare const IMAGE_DETAIL_LONG_SIDE_LIMIT = 2000; +export declare const IMAGE_DETAIL_SHORT_SIDE_LIMIT = 768; +export declare const MIN_LINE_NUMBER_LENGTH = 10; +export declare const VSCODE_SERVER_MAX_RETRIES = 5; +export declare const VSCODE_STARTUP_TIMEOUT = 5000; +export declare const VIDEO_HASH_LENGTH = 18; +export declare const VIDEO_FRAMES_DIR_NAME = "frames"; +export declare const VIDEO_CLIPS_DIR_NAME = "clips"; +export declare const VIDEO_AUDIO_DIR_NAME = "audio"; +export declare const VIDEO_PROBE_DIR_NAME = "probe"; +export declare const TRACE_MAX_FENCE_SIZE: number; +export declare const TRACE_MAX_FILE_SIZE: number; +export declare const TRACE_MAX_IMAGE_SIZE: number; +export declare const WS_MAX_FRAME_LENGTH = 1200000; +export declare const WS_MAX_FRAME_CHUNK_LENGTH = 1000000; +export declare const SCHEMA_DEFAULT_FORMAT = "json"; +export declare const THINK_REGEX: RegExp; +export declare const THINK_START_TOKEN_REGEX: RegExp; +export declare const THINK_END_TOKEN_REGEX: RegExp; +export declare const MAX_FILE_CONTENT_SIZE: number; +export declare const TEST_CSV_ENTRY_SEPARATOR: RegExp; +export declare const INVALID_FILENAME_REGEX: RegExp; +export declare const STDIN_READ_TIMEOUT = 50; +export declare const REASONING_START_MARKER = "\n\uD83E\uDD14 \n"; +export declare const REASONING_END_MARKER = "\n\n\n"; +export declare const PROMPT_DOM_TRUNCATE_ATTEMPTS = 6; +export declare const CONTROL_CHAT_COLLAPSED = 3; +export declare const CONTROL_CHAT_EXPANDED = 6; +export declare const CONTROL_CHAT_LAST = 12; +export declare const PROMPTDOM_PREVIEW_MAX_LENGTH = 512; +export declare const SERVER_LOCALHOST = "http://127.0.0.1"; +export declare const CHAR_UP_ARROW = "\u2191"; +export declare const CHAR_DOWN_ARROW = "\u2193"; +export declare const CHAR_ENVELOPE = "\u2709"; +export declare const CHAR_UP_DOWN_ARROWS = "\u21C5 "; +export declare const CHAR_FLOPPY_DISK = "\uD83D\uDDAB "; +export declare const CHAR_TEMPERATURE = "\u00B0"; +export declare const DEBUG_SCRIPT_CATEGORY = "script"; +export declare const CACHE_FORMAT_VERSION = "1"; +export declare const CACHE_SHA_LENGTH = 32; +export declare const MCP_RESOURCE_PROTOCOL = "genaiscript"; +export declare const RESOURCE_MAX_SIZE: number; +export declare const MIN_NODE_VERSION_MAJOR = 22; +export declare const MAX_STRING_LENGTH_USE_TOKENIZER_FOR_APPROXIMATION = 10000; +export declare const BOX_DOWN_AND_RIGHT = "\u256D"; +export declare const BOX_RIGHT = "\u2500"; +export declare const BOX_UP_AND_RIGHT = "\u2570"; +export declare const BOX_UP_AND_DOWN = "\u2502"; +export declare const BOX_DOWN_UP_AND_RIGHT = "\u251C"; +export declare const BOX_LEFT_AND_DOWN = "\u256E"; +export declare const BOX_LEFT_AND_UP = "\u256F"; +export declare const GITHUB_ASSET_URL_RX: RegExp; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/constants.d.ts.map b/packages/core/.tshy-build/browser/constants.d.ts.map new file mode 100644 index 0000000000..03e44e1849 --- /dev/null +++ b/packages/core/.tshy-build/browser/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/constants.js b/packages/core/.tshy-build/browser/constants.js new file mode 100644 index 0000000000..209e9a3bd3 --- /dev/null +++ b/packages/core/.tshy-build/browser/constants.js @@ -0,0 +1,342 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import CONFIGURATION_DATA from "./llmsdata.js"; +export const CHANGE = "change"; +export const RESOURCE_CHANGE = "resourceChange"; +export const TRACE_CHUNK = "traceChunk"; +export const TRACE_DETAILS = "traceDetails"; +export const RECONNECT = "reconnect"; +export const OPEN = "open"; +export const CLOSE = "close"; +export const READY = "ready"; +export const MESSAGE = "message"; +export const ERROR = "error"; +export const CONNECT = "connect"; +export const LOG = "log"; +export const QUEUE_SCRIPT_START = "queueScriptStart"; +export const MAX_TOOL_CALLS = 10000; +export const MAX_TOOL_DESCRIPTION_LENGTH = 1000; +// https://learn.microsoft.com/en-us/azure/ai-services/openai/reference +// https://github.com/Azure/azure-rest-api-specs/blob/main/specification/cognitiveservices/data-plane/AzureOpenAI/inference/stable/2024-02-01/inference.yaml +// https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation +export const AZURE_OPENAI_API_VERSION = "2025-04-01-preview"; +export const AZURE_MANAGEMENT_API_VERSION = "2024-10-01"; +export const AZURE_COGNITIVE_SERVICES_TOKEN_SCOPES = Object.freeze([ + "https://cognitiveservices.azure.com/.default", +]); +// https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation +export const AZURE_AI_INFERENCE_VERSION = "2025-03-01-preview"; +export const AZURE_AI_INFERENCE_TOKEN_SCOPES = Object.freeze(["https://ml.azure.com/.default"]); +export const AZURE_MANAGEMENT_TOKEN_SCOPES = Object.freeze([ + "https://management.azure.com/.default", +]); +export const AZURE_TOKEN_EXPIRATION = 59 * 60_000; // 59 minutes +export const DOCS_URL = "https://microsoft.github.io/genaiscript"; +export const TOOL_URL = DOCS_URL; +export const TOOL_ID = "genaiscript"; +export const GENAISCRIPT_FOLDER = "." + TOOL_ID; +export const GENAI_SRC = "genaisrc"; +export const GENAI_JS_EXT = ".genai.js"; +export const GENAI_MJS_EXT = ".genai.mjs"; +export const GENAI_MTS_EXT = ".genai.mts"; +export const GENAI_MD_EXT = ".genai.md"; +export const GENAI_ANYJS_GLOB = "**/*{.genai.js,.genai.mjs,.genai.ts,.genai.mts,.genai.md}"; +export const NEGATIVE_GLOB_REGEX = /^!/; +export const GENAI_ANY_REGEX = /\.genai\.(ts|mts|mjs|js|md)$/i; +export const GENAI_ANYJS_REGEX = /\.genai\.js$/i; +export const GENAI_ANYTS_REGEX = /\.genai\.(ts|mts|mjs)$/i; +export const GENAI_MD_REGEX = /\.genai\.md$/i; +export const HTTP_OR_S_REGEX = /^https?:\/\//i; +export const HTTPS_REGEX = /^https:\/\//i; +export const CSV_REGEX = /\.(t|c)sv$/i; +export const YAML_REGEX = /\.yaml$/i; +export const INI_REGEX = /\.ini$/i; +export const TOML_REGEX = /\.toml$/i; +export const XLSX_REGEX = /\.xlsx$/i; +export const XML_REGEX = /\.xml$/i; +export const DOCX_REGEX = /\.docx$/i; +export const PDF_REGEX = /\.pdf$/i; +export const MD_REGEX = /\.md$/i; +export const MDX_REGEX = /\.mdx$/i; +export const MJS_REGEX = /\.mjs$/i; +export const MJTS_REGEX = /\.m(j|t)s$/i; +export const JS_REGEX = /\.js$/i; +export const TS_IMPORT_REGEX = /\.(ts|mts|mjs)$/i; +export const JSON5_REGEX = /\.json5?$/i; +export const JSONL_REGEX = /\.jsonl$/i; +export const PROMPTY_REGEX = /\.prompty$/i; +export const TOOL_NAME = "GenAIScript"; +export const SERVER_PORT = 8003; +export const OPENAPI_SERVER_PORT = 3000; +export const CLIENT_RECONNECT_DELAY = 3000; +export const CLIENT_RECONNECT_MAX_ATTEMPTS = 20; +export const RETRIEVAL_PERSIST_DIR = "retrieval"; +export const HIGHLIGHT_LENGTH = 4000; +export const SMALL_MODEL_ID = "small"; +export const LARGE_MODEL_ID = "large"; +export const VISION_MODEL_ID = "vision"; +export const TRANSCRIPTION_MODEL_ID = "transcription"; +export const SPEECH_MODEL_ID = "speech"; +export const IMAGE_GENERATION_MODEL_ID = "image"; +export const EMBEDDINGS_MODEL_ID = "embeddings"; +export const DEFAULT_FENCE_FORMAT = "xml"; +export const DEFAULT_TEMPERATURE = 0.8; +export const TRACE_NODE_PREFIX = "genaiscript/trace/"; +export const EXTENSION_ID = "genaiscript.genaiscript-vscode"; +export const COPILOT_CHAT_PARTICIPANT_ID = TOOL_ID; +export const COPILOT_CHAT_PARTICIPANT_SCRIPT_ID = "copilotchat"; +export const TAVILY_ENDPOINT = "https://api.tavily.com/search"; +export const SYSTEM_FENCE = "\n"; +export const MAX_DATA_REPAIRS = 1; +export const NPM_CLI_PACKAGE = "genaiscript"; +export const ICON_LOGO_NAME = "genaiscript-logo"; +export const SARIFF_RULEID_PREFIX = "genaiscript/"; +export const SARIFF_BUILDER_URL = "https://github.com/microsoft/genaiscript/"; +export const SARIFF_BUILDER_TOOL_DRIVER_NAME = TOOL_ID; +export const OPENAI_MAX_RETRY_DELAY = 60000; // 60s +export const OPENAI_MAX_RETRY_COUNT = 10; +export const OPENAI_RETRY_DEFAULT_DEFAULT = 1000; +export const OPENAI_MAX_RETRY_AFTER_DEFAULT = 300000; // 300s +export const FETCH_RETRY_DEFAULT = 6; +export const FETCH_RETRY_DELAY_DEFAULT = 2000; +export const FETCH_RETRY_MIN_DELAY_DEFAULT = 2000; // 2s +export const FETCH_RETRY_MAX_DELAY_DEFAULT = 60000; // 60s +export const FETCH_RETRY_MAX_RETRY_AFTER_DEFAULT = 300000; // 300s +export const FETCH_RETRY_GROWTH_FACTOR = 1.5; +export const FETCH_RETRY_ON_DEFAULT = [408, 429, 500, 502, 504]; +export const EXEC_MAX_BUFFER = 64; +export const DOT_ENV_FILENAME = ".env"; +export const DOT_ENV_GENAISCRIPT_FILENAME = ".env.genaiscript"; +export const SUCCESS_ERROR_CODE = 0; +export const UNHANDLED_ERROR_CODE = -1; +export const ANNOTATION_ERROR_CODE = -2; +export const FILES_NOT_FOUND_ERROR_CODE = -3; +export const GENERATION_ERROR_CODE = -4; +export const RUNTIME_ERROR_CODE = -5; +export const CONNECTION_CONFIGURATION_ERROR_CODE = -6; +export const USER_CANCELLED_ERROR_CODE = -7; +export const CONFIGURATION_ERROR_CODE = -8; +export const UNRECOVERABLE_ERROR_CODES = Object.freeze([ + CONNECTION_CONFIGURATION_ERROR_CODE, + USER_CANCELLED_ERROR_CODE, + FILES_NOT_FOUND_ERROR_CODE, + ANNOTATION_ERROR_CODE, +]); +export const DOT_ENV_REGEX = /\.env(\.[^/]+)?$/i; +export const PROMPT_FENCE = "```"; +export const MARKDOWN_PROMPT_FENCE = "`````"; +export const OPENAI_API_BASE = "https://api.openai.com/v1"; +export const OLLAMA_DEFAULT_PORT = 11434; +export const OLLAMA_API_BASE = `http://127.0.0.1:${OLLAMA_DEFAULT_PORT}/v1`; +export const SGLANG_API_BASE = "http://127.0.0.1:30000/v1"; +export const VLLM_API_BASE = "http://127.0.0.1:8000/v1"; +export const LLAMAFILE_API_BASE = "http://127.0.0.1:8080/v1"; +export const LOCALAI_API_BASE = "http://127.0.0.1:8080/v1"; +export const LITELLM_API_BASE = "http://127.0.0.1:4000"; +export const LMSTUDIO_API_BASE = "http://127.0.0.1:1234/v1"; +export const JAN_API_BASE = "http://127.0.0.1:1337/v1"; +export const ANTHROPIC_API_BASE = "https://api.anthropic.com"; +export const HUGGINGFACE_API_BASE = "https://router.huggingface.co/v1/"; +export const GOOGLE_API_BASE = "https://generativelanguage.googleapis.com/v1beta/openai/"; +export const ALIBABA_BASE = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"; +export const MISTRAL_API_BASE = "https://api.mistral.ai/v1"; +export const DEEPSEEK_API_BASE = "https://api.deepseek.com/v1"; +export const WHISPERASR_API_BASE = "http://localhost:9000"; +export const WINDOWS_AI_API_BASE = "http://127.0.0.1:5272/v1"; +export const DOCKER_MODEL_RUNNER_API_BASE = "http://model-runner.docker.internal/engines/v1/"; +export const PROMPTFOO_CACHE_PATH = ".genaiscript/cache/tests"; +export const PROMPTFOO_CONFIG_DIR = ".genaiscript/config/tests"; +export const PROMPTFOO_REMOTE_API_PORT = 15500; +export const PROMPTFOO_REDTEAM_NUM_TESTS = 5; +export const PROMPTFOO_TEST_MAX_CONCURRENCY = 1; +export const TYPE_DEFINITION_BASENAME = "genaiscript.d.ts"; +export const TYPE_DEFINITION_REFERENCE = `/// \n`; +export const RUNS_DIR_NAME = "runs"; +export const CONVERTS_DIR_NAME = "converts"; +export const TEST_RUNS_DIR_NAME = "test-runs"; +export const STATS_DIR_NAME = "stats"; +export const TRACE_FILENAME = "trace.md"; +export const OUTPUT_FILENAME = "readme.md"; +export const EMOJI_SUCCESS = "✅"; +export const EMOJI_FAIL = "❌"; +export const EMOJI_WARNING = "⚠️"; +export const EMOJI_UNDEFINED = "?"; +export const MODEL_PROVIDER_OPENAI = "openai"; +export const MODEL_PROVIDER_GITHUB = "github"; +export const MODEL_PROVIDER_AZURE_OPENAI = "azure"; +export const MODEL_PROVIDER_GOOGLE = "google"; +export const MODEL_PROVIDER_AZURE_AI_INFERENCE = "azure_ai_inference"; +export const MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI = "azure_serverless"; +export const MODEL_PROVIDER_AZURE_SERVERLESS_MODELS = "azure_serverless_models"; +export const MODEL_PROVIDER_OLLAMA = "ollama"; +export const MODEL_PROVIDER_LLAMAFILE = "llamafile"; +export const MODEL_PROVIDER_LITELLM = "litellm"; +export const MODEL_PROVIDER_GITHUB_COPILOT_CHAT = "github_copilot_chat"; +export const MODEL_PROVIDER_ANTHROPIC = "anthropic"; +export const MODEL_PROVIDER_ANTHROPIC_BEDROCK = "anthropic_bedrock"; +export const MODEL_PROVIDER_HUGGINGFACE = "huggingface"; +export const MODEL_PROVIDER_ALIBABA = "alibaba"; +export const MODEL_PROVIDER_MISTRAL = "mistral"; +export const MODEL_PROVIDER_LMSTUDIO = "lmstudio"; +export const MODEL_PROVIDER_JAN = "jan"; +export const MODEL_PROVIDER_SGLANG = "sglang"; +export const MODEL_PROVIDER_VLLM = "vllm"; +export const MODEL_PROVIDER_DEEPSEEK = "deepseek"; +export const MODEL_PROVIDER_WHISPERASR = "whisperasr"; +export const MODEL_PROVIDER_WINDOWS_AI = "windows"; +export const MODEL_PROVIDER_DOCKER_MODEL_RUNNER = "docker"; +export const MODEL_PROVIDER_ECHO = "echo"; +export const MODEL_PROVIDER_NONE = "none"; +export const MODEL_PROVIDER_MCP = "mcp"; +export const MODEL_GITHUB_COPILOT_CHAT_CURRENT = MODEL_PROVIDER_GITHUB_COPILOT_CHAT + ":current"; +export const MODEL_PROVIDER_OPENAI_HOSTS = Object.freeze([ + MODEL_PROVIDER_OPENAI, + MODEL_PROVIDER_GITHUB, + MODEL_PROVIDER_AZURE_OPENAI, + MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI, +]); +export const TRACE_FILE_PREVIEW_MAX_LENGTH = 240; +export const OPENROUTER_API_CHAT_URL = "https://openrouter.ai/api/v1/chat/completions"; +export const OPENROUTER_SITE_URL_HEADER = "HTTP-Referer"; +export const OPENROUTER_SITE_NAME_HEADER = "X-Title"; +export const GITHUB_MODELS_BASE = "https://models.github.ai/inference"; +export const DOCS_CONFIGURATION_URL = "https://microsoft.github.io/genaiscript/getting-started/configuration/"; +export const DOCS_CONFIGURATION_CONTENT_SAFETY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/content-safety"; +export const DOCS_DEF_FILES_IS_EMPTY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/context/#empty-files"; +export const DOCS_WEB_SEARCH_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/"; +export const DOCS_WEB_SEARCH_BING_SEARCH_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/#bingn"; +export const DOCS_WEB_SEARCH_TAVILY_URL = "https://microsoft.github.io/genaiscript/reference/scripts/web-search/#tavily"; +export const MODEL_PROVIDERS = Object.freeze(CONFIGURATION_DATA.providers); +export const MODEL_PRICINGS = Object.freeze(CONFIGURATION_DATA.pricings); +export const NEW_SCRIPT_TEMPLATE = `$\`Write a short poem in code.\` +`; +export const PDF_SCALE = 4; +export const PDF_HASH_LENGTH = 22; +export const DOCX_HASH_LENGTH = 22; +export const VECTOR_INDEX_HASH_LENGTH = 22; +export const RESOURCE_HASH_LENGTH = 22; +export const FILE_HASH_LENGTH = 64; +export const PDF_MIME_TYPE = "application/pdf"; +export const DOCX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; +export const XLSX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; +export const JSON_MIME_TYPE = "application/json"; +export const JSON_SCHEMA_MIME_TYPE = "application/schema+json"; +export const JAVASCRIPT_MIME_TYPE = "application/javascript"; +export const MARKDOWN_MIME_TYPE = "text/markdown"; +export const YAML_MIME_TYPE = "application/yaml"; +export const JSON_META_SCHEMA_URI = "https://json-schema.org/draft/2020-12/schema"; +export const SHELL_EXEC_TIMEOUT = 300000; +export const DOCKER_DEFAULT_IMAGE = "python:alpine"; +export const DOCKER_VOLUMES_DIR = "containers"; +export const DOCKER_CONTAINER_VOLUME = "app"; +export const CLI_RUN_FILES_FOLDER = "files"; +export const GITHUB_API_VERSION = "2022-11-28"; +export const GITHUB_TOKENS = ["GITHUB_TOKEN", "GH_TOKEN", "INPUT_GITHUB_TOKEN"]; +export const AI_REQUESTS_CACHE = "airaireequests"; +export const CHAT_CACHE = "chat"; +export const GITHUB_PULL_REQUEST_REVIEWS_CACHE = "prr"; +export const GITHUB_PULL_REQUEST_REVIEW_COMMENT_LINE_DISTANCE = 5; +export const GITHUB_ASSET_BRANCH = "genai-assets"; +export const PLACEHOLDER_API_BASE = ""; +export const PLACEHOLDER_API_KEY = ""; +export const VSCODE_CONFIG_CLI_VERSION = "cli.version"; +export const VSCODE_CONFIG_CLI_PATH = "cli.path"; +export const VSCODE_CONFIG_CLI_PACKAGE_MANAGER = "cli.packageManager"; +export const CONSOLE_COLOR_INFO = 32; +export const CONSOLE_COLOR_DEBUG = 90; +export const CONSOLE_COLOR_REASONING = "38;5;17"; +export const CONSOLE_COLOR_PERFORMANCE = "38;5;17"; +export const CONSOLE_COLOR_WARNING = 95; +export const CONSOLE_COLOR_ERROR = 91; +export const CONSOLE_TOKEN_COLORS = [90, 37]; +// export const CONSOLE_TOKEN_COLORS = [97, 93] +export const CONSOLE_TOKEN_INNER_COLORS = [90, 37]; +export const PLAYWRIGHT_DEFAULT_BROWSER = "chromium"; +export const MAX_TOKENS_ELLIPSE = "..."; +export const ESTIMATE_TOKEN_OVERHEAD = 2; +export const DEDENT_INSPECT_MAX_DEPTH = 3; +export const ANTHROPIC_MAX_TOKEN = 4096; +export const TEMPLATE_ARG_FILE_MAX_TOKENS = 4000; +export const TEMPLATE_ARG_DATA_SLICE_SAMPLE = 2000; +export const CHAT_REQUEST_PER_MODEL_CONCURRENT_LIMIT = 8; +export const PROMISE_QUEUE_CONCURRENCY_DEFAULT = 16; +export const FILE_READ_CONCURRENCY_DEFAULT = 16; +export const GITHUB_REST_API_CONCURRENCY_LIMIT = 8; +export const GITHUB_REST_PAGE_DEFAULT = 10; +export const TOKEN_TRUNCATION_THRESHOLD = 16; +export const GIT_IGNORE = ".gitignore"; +export const GIT_IGNORE_GENAI = ".gitignore.genai"; +export const GENAISCRIPTIGNORE = ".genaiscriptignore"; +export const CLI_ENV_VAR_RX = /^(genaiscript_var_|input_)/i; +export const GIT_DIFF_MAX_TOKENS = 8000; +export const GIT_LOG_COUNT = 10; +export const MAX_TOOL_CONTENT_TOKENS = 8000; +export const AGENT_MEMORY_CACHE_NAME = "agent_memory"; +export const AGENT_MEMORY_FLEX_TOKENS = 20000; +export const TRANSCRIPTION_CACHE_NAME = "transcriptions"; +export const AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_LENGTH = 9000; +export const AZURE_CONTENT_SAFETY_PROMPT_SHIELD_MAX_DOCUMENTS = 9000; +export const TOKEN_MISSING_INFO = ""; +export const TOKEN_NO_ANSWER = ""; +export const CHOICE_LOGIT_BIAS = 5; +export const SANITIZED_PROMPT_INJECTION = "...prompt injection detected, content removed..."; +// https://platform.openai.com/docs/guides/vision/calculating-costs#managing-images +export const IMAGE_DETAIL_LOW_WIDTH = 512; +export const IMAGE_DETAIL_LOW_HEIGHT = 512; +export const IMAGE_DETAIL_HIGH_TILE_SIZE = 512; +export const IMAGE_DETAIL_HIGH_WIDTH = 2048; +export const IMAGE_DETAIL_HIGH_HEIGHT = 2048; +export const IMAGE_DETAIL_LONG_SIDE_LIMIT = 2000; +export const IMAGE_DETAIL_SHORT_SIDE_LIMIT = 768; +export const MIN_LINE_NUMBER_LENGTH = 10; +export const VSCODE_SERVER_MAX_RETRIES = 5; +export const VSCODE_STARTUP_TIMEOUT = 5000; +export const VIDEO_HASH_LENGTH = 18; +export const VIDEO_FRAMES_DIR_NAME = "frames"; +export const VIDEO_CLIPS_DIR_NAME = "clips"; +export const VIDEO_AUDIO_DIR_NAME = "audio"; +export const VIDEO_PROBE_DIR_NAME = "probe"; +export const TRACE_MAX_FENCE_SIZE = 100 * 1024; // 100kb +export const TRACE_MAX_FILE_SIZE = 128 * 1024; // 128kb +export const TRACE_MAX_IMAGE_SIZE = 32 * 1024; // 32kb +export const WS_MAX_FRAME_LENGTH = 1200000; +export const WS_MAX_FRAME_CHUNK_LENGTH = 1000000; +export const SCHEMA_DEFAULT_FORMAT = "json"; +export const THINK_REGEX = /(.*?)($|<\/think>)/gis; +export const THINK_START_TOKEN_REGEX = /^/; +export const THINK_END_TOKEN_REGEX = /<\/think>$/; +export const MAX_FILE_CONTENT_SIZE = 1024 * 1024 * 2; // 2MB +export const TEST_CSV_ENTRY_SEPARATOR = /[;|\n]/g; +// eslint-disable-next-line no-control-regex +export const INVALID_FILENAME_REGEX = /[<>:"/\\|?*\x00-\x1F]+/g; +export const STDIN_READ_TIMEOUT = 50; +export const REASONING_START_MARKER = "\n🤔 \n"; +export const REASONING_END_MARKER = "\n\n\n"; +export const PROMPT_DOM_TRUNCATE_ATTEMPTS = 6; +export const CONTROL_CHAT_COLLAPSED = 3; +export const CONTROL_CHAT_EXPANDED = 6; +export const CONTROL_CHAT_LAST = 12; +export const PROMPTDOM_PREVIEW_MAX_LENGTH = 512; +export const SERVER_LOCALHOST = "http://127.0.0.1"; +export const CHAR_UP_ARROW = "↑"; +export const CHAR_DOWN_ARROW = "↓"; +export const CHAR_ENVELOPE = "✉"; +export const CHAR_UP_DOWN_ARROWS = "⇅ "; +export const CHAR_FLOPPY_DISK = "🖫 "; +export const CHAR_TEMPERATURE = "°"; +export const DEBUG_SCRIPT_CATEGORY = "script"; +export const CACHE_FORMAT_VERSION = "1"; +export const CACHE_SHA_LENGTH = 32; +export const MCP_RESOURCE_PROTOCOL = TOOL_ID; +export const RESOURCE_MAX_SIZE = 1024 * 1024 * 10; // 10MB +export const MIN_NODE_VERSION_MAJOR = 22; +export const MAX_STRING_LENGTH_USE_TOKENIZER_FOR_APPROXIMATION = 10000; +export const BOX_DOWN_AND_RIGHT = "╭"; +export const BOX_RIGHT = "─"; +export const BOX_UP_AND_RIGHT = "╰"; +export const BOX_UP_AND_DOWN = "│"; +export const BOX_DOWN_UP_AND_RIGHT = "├"; +export const BOX_LEFT_AND_DOWN = "╮"; +export const BOX_LEFT_AND_UP = "╯"; +export const GITHUB_ASSET_URL_RX = /^https:\/\/github\.com\/.*\/assets\/.*$/i; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/constants.js.map b/packages/core/.tshy-build/browser/constants.js.map new file mode 100644 index 0000000000..d21bf04729 --- /dev/null +++ b/packages/core/.tshy-build/browser/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/contentsafety.d.ts b/packages/core/.tshy-build/browser/contentsafety.d.ts new file mode 100644 index 0000000000..eee8e9a465 --- /dev/null +++ b/packages/core/.tshy-build/browser/contentsafety.d.ts @@ -0,0 +1,6 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import type { ContentSafety, ContentSafetyOptions } from "./types.js"; +export declare function resolvePromptInjectionDetector(safetyOptions: ContentSafetyOptions, options: TraceOptions & CancellationOptions): Promise; +export declare function resolveContentSafety(safetyOptions: ContentSafetyOptions, options: TraceOptions & CancellationOptions): Promise>; +//# sourceMappingURL=contentsafety.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/contentsafety.d.ts.map b/packages/core/.tshy-build/browser/contentsafety.d.ts.map new file mode 100644 index 0000000000..32552914ea --- /dev/null +++ b/packages/core/.tshy-build/browser/contentsafety.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"contentsafety.d.ts","sourceRoot":"","sources":["../../src/contentsafety.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAItE,wBAAsB,8BAA8B,CAClD,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAC1C,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC,CAG7D;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAC1C,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAYjC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/contentsafety.js b/packages/core/.tshy-build/browser/contentsafety.js new file mode 100644 index 0000000000..b668069475 --- /dev/null +++ b/packages/core/.tshy-build/browser/contentsafety.js @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { genaiscriptDebug } from "./debug.js"; +import { resolveRuntimeHost } from "./host.js"; +const dbg = genaiscriptDebug("contentsafety"); +export async function resolvePromptInjectionDetector(safetyOptions, options) { + const services = await resolveContentSafety(safetyOptions, options); + return services?.detectPromptInjection; +} +export async function resolveContentSafety(safetyOptions, options) { + const { contentSafety, detectPromptInjection } = safetyOptions || {}; + if (!detectPromptInjection) { + return {}; + } + const runtimeHost = resolveRuntimeHost(); + dbg(`resolving %s`, contentSafety); + const services = await runtimeHost.contentSafety(contentSafety, options); + if (!services && (detectPromptInjection === true || detectPromptInjection === "always")) + throw new Error("Content safety provider not available or not configured."); + dbg(`resolved %s`, services?.id); + return services; +} +//# sourceMappingURL=contentsafety.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/contentsafety.js.map b/packages/core/.tshy-build/browser/contentsafety.js.map new file mode 100644 index 0000000000..1a3a8dcf22 --- /dev/null +++ b/packages/core/.tshy-build/browser/contentsafety.js.map @@ -0,0 +1 @@ +{"version":3,"file":"contentsafety.js","sourceRoot":"","sources":["../../src/contentsafety.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAI/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,aAAmC,EACnC,OAA2C;IAE3C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpE,OAAO,QAAQ,EAAE,qBAAqB,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAmC,EACnC,OAA2C;IAE3C,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,aAAa,IAAI,EAAE,CAAC;IACrE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,IAAI,CAAC,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,QAAQ,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/copy.d.ts b/packages/core/.tshy-build/browser/copy.d.ts new file mode 100644 index 0000000000..45c642f757 --- /dev/null +++ b/packages/core/.tshy-build/browser/copy.d.ts @@ -0,0 +1,19 @@ +import type { PromptScript } from "./types.js"; +/** + * Copies a prompt script to a new location. + * Optionally forks the script, ensuring the new filename is unique if needed. + * + * @param t - The prompt script object containing the source code. + * @param options - Configuration options for the copy operation. + * @param options.fork - Whether to fork the script by appending a unique suffix. + * @param options.name - Optional new name for the copied script. + * @param options.javascript - Whether to use the JavaScript file extension. + * @returns The file path of the copied script. + * @throws If the file already exists in the target location. + */ +export declare function copyPrompt(t: PromptScript, options: { + fork: boolean; + name?: string; + javascript?: boolean; +}): Promise; +//# sourceMappingURL=copy.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/copy.d.ts.map b/packages/core/.tshy-build/browser/copy.d.ts.map new file mode 100644 index 0000000000..64a2c43ec7 --- /dev/null +++ b/packages/core/.tshy-build/browser/copy.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/copy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,CAAC,EAAE,YAAY,EACf,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,mBA+BhE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/copy.js b/packages/core/.tshy-build/browser/copy.js new file mode 100644 index 0000000000..d4662b2490 --- /dev/null +++ b/packages/core/.tshy-build/browser/copy.js @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This file defines functions related to copying and managing prompt scripts, +// including constructing file paths and handling copy operations, +// with optional forking functionality. +import { GENAI_MJS_EXT, GENAI_MTS_EXT, GENAI_SRC } from "./constants.js"; // Import constants for file extensions and source directory +import { fileExists, writeText } from "./fs.js"; // Import file system utilities +import { resolveRuntimeHost } from "./host.js"; +/** + * Constructs the path to a prompt file. + * If `id` is null, returns the base prompt directory path. + * Otherwise, appends the `id` with a specific file extension to the path. + * + * @param id - Identifier for the prompt script + * @returns The file path as a string + */ +function promptPath(id, options) { + const { javascript } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const prompts = runtimeHost.resolvePath(runtimeHost.projectFolder(), GENAI_SRC); // Resolve base prompt directory + if (id === null) + return prompts; // Return base path if id is not provided + const ext = javascript ? GENAI_MJS_EXT : GENAI_MTS_EXT; + return runtimeHost.resolvePath(prompts, id + ext); // Construct full path if id is provided +} +/** + * Copies a prompt script to a new location. + * Optionally forks the script, ensuring the new filename is unique if needed. + * + * @param t - The prompt script object containing the source code. + * @param options - Configuration options for the copy operation. + * @param options.fork - Whether to fork the script by appending a unique suffix. + * @param options.name - Optional new name for the copied script. + * @param options.javascript - Whether to use the JavaScript file extension. + * @returns The file path of the copied script. + * @throws If the file already exists in the target location. + */ +export async function copyPrompt(t, options) { + // Ensure the prompt directory exists + const runtimeHost = resolveRuntimeHost(); + await runtimeHost.createDirectory(promptPath(null)); + // Determine the name for the new prompt file + const n = options?.name || t.id; // Use provided name or default to script id + let fn = promptPath(n); + // Handle forking logic by appending a suffix if needed + if (options.fork && (await fileExists(fn))) { + let suff = 2; + for (;;) { + fn = promptPath(n + "_" + suff, options); // Construct new name with suffix + if (await fileExists(fn)) { + // Check if file already exists + suff++; + continue; // Increment suffix and retry if file exists + } + break; // Exit loop if file does not exist + } + } + // Check if the file already exists, throw error if it does + if (await fileExists(fn)) + throw new Error(`file ${fn} already exists`); + // Write the prompt script to the determined path + await writeText(fn, t.jsSource); + return fn; // Return the path of the copied script +} +//# sourceMappingURL=copy.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/copy.js.map b/packages/core/.tshy-build/browser/copy.js.map new file mode 100644 index 0000000000..a710b04e77 --- /dev/null +++ b/packages/core/.tshy-build/browser/copy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/copy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,8EAA8E;AAC9E,kEAAkE;AAClE,uCAAuC;AAEvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC,CAAC,4DAA4D;AACtI,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC,+BAA+B;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,EAAU,EAAE,OAAkC;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,gCAAgC;IACjH,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,CAAC,yCAAyC;IAC1E,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IACvD,OAAO,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,wCAAwC;AAC7F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,CAAe,EACf,OAA+D;IAE/D,qCAAqC;IACrC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpD,6CAA6C;IAC7C,MAAM,CAAC,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,4CAA4C;IAC7E,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEvB,uDAAuD;IACvD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3C,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,SAAS,CAAC;YACR,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,iCAAiC;YAC3E,IAAI,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,+BAA+B;gBAC/B,IAAI,EAAE,CAAC;gBACP,SAAS,CAAC,4CAA4C;YACxD,CAAC;YACD,MAAM,CAAC,mCAAmC;QAC5C,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,MAAM,UAAU,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAEvE,iDAAiD;IACjD,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEhC,OAAO,EAAE,CAAC,CAAC,uCAAuC;AACpD,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/crypto.d.ts b/packages/core/.tshy-build/browser/crypto.d.ts new file mode 100644 index 0000000000..63784d9f25 --- /dev/null +++ b/packages/core/.tshy-build/browser/crypto.d.ts @@ -0,0 +1,31 @@ +import type { HashOptions } from "./types.js"; +/** + * Generates a random hexadecimal string of the specified size. + * + * @param size - Number of random bytes to generate. + * @returns Hexadecimal string representation of the random bytes. + */ +export declare function randomHex(size: number): string; +/** + * Computes a hash of the given value with optional configurations. + * + * @param value - The input data to hash. Can be strings, numbers, booleans, arrays, objects, or other compatible types. + * @param options - Additional options for hashing. + * - algorithm - Hashing algorithm to use. Defaults to "sha-256". + * - version - If true, includes the core version string in the hash. + * - length - If specified, truncates the resulting hash string to this length. + * - salt - Optional salt to prepend to the hashed value. + * - readWorkspaceFiles - If true, enables reading file workspace content for hash calculation in special cases where `filename` is specified. + * - ...rest - Any remaining properties are included in the hash computation. + * @returns A promise resolving to the computed hash as a hexadecimal string. + */ +export declare function hash(value: any, options?: HashOptions): Promise; +/** + * Computes the hash of a file using a streaming approach. + * + * @param filePath - Path to the file to hash. + * @param algorithm - Hashing algorithm to use. Defaults to "sha-256". + * @returns Promise resolving to the file's hash in hexadecimal format. + */ +export declare function hashFile(filePath: string, algorithm?: string): Promise; +//# sourceMappingURL=crypto.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/crypto.d.ts.map b/packages/core/.tshy-build/browser/crypto.d.ts.map new file mode 100644 index 0000000000..07c435c2dc --- /dev/null +++ b/packages/core/.tshy-build/browser/crypto.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuB9C;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UASrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,mBAqE3D;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB/F"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/crypto.js b/packages/core/.tshy-build/browser/crypto.js new file mode 100644 index 0000000000..3eb3a4ab74 --- /dev/null +++ b/packages/core/.tshy-build/browser/crypto.js @@ -0,0 +1,142 @@ +/* eslint-disable n/no-unsupported-features/node-builtins */ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createHash, getRandomValues as cryptoGetRandomValues, subtle } from "node:crypto"; +import { concatBuffers, toHex } from "./util.js"; +import { createReadStream } from "node:fs"; +import { CORE_VERSION } from "./version.js"; +import { utf8Encode } from "./utf8.js"; +function getRandomValues(bytes) { + if (globalThis.crypto) { + return globalThis.crypto.getRandomValues(bytes); + } + else { + return cryptoGetRandomValues(bytes); + } +} +async function digest(algorithm, data) { + algorithm = algorithm.toUpperCase(); + if (globalThis.crypto) { + return globalThis.crypto.subtle.digest(algorithm, data); + } + else { + return subtle.digest(algorithm, data); + } +} +/** + * Generates a random hexadecimal string of the specified size. + * + * @param size - Number of random bytes to generate. + * @returns Hexadecimal string representation of the random bytes. + */ +export function randomHex(size) { + // Create a new Uint8Array with the specified size to hold random bytes + const bytes = new Uint8Array(size); + // Fill the array with cryptographically secure random values using the Web Crypto API + const res = getRandomValues(bytes); + // Convert the random byte array to a hexadecimal string using the toHex function and return it + return toHex(res); +} +/** + * Computes a hash of the given value with optional configurations. + * + * @param value - The input data to hash. Can be strings, numbers, booleans, arrays, objects, or other compatible types. + * @param options - Additional options for hashing. + * - algorithm - Hashing algorithm to use. Defaults to "sha-256". + * - version - If true, includes the core version string in the hash. + * - length - If specified, truncates the resulting hash string to this length. + * - salt - Optional salt to prepend to the hashed value. + * - readWorkspaceFiles - If true, enables reading file workspace content for hash calculation in special cases where `filename` is specified. + * - ...rest - Any remaining properties are included in the hash computation. + * @returns A promise resolving to the computed hash as a hexadecimal string. + */ +export async function hash(value, options) { + const { algorithm = "sha-256", version, length, salt, readWorkspaceFiles, ...rest } = options || {}; + const SEP = utf8Encode("|"); + const UN = utf8Encode("undefined"); + const NU = utf8Encode("null"); + const h = []; + const append = async (v) => { + if (v === null) + h.push(NU); + else if (v === undefined) + h.push(UN); + else if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") + h.push(utf8Encode(String(v))); + else if (Array.isArray(v)) + for (const c of v) { + h.push(SEP); + await append(c); + } + else if (v instanceof Uint8Array) + h.push(v); + else if (v instanceof Buffer) + h.push(new Uint8Array(v)); + else if (v instanceof ArrayBuffer) + h.push(new Uint8Array(v)); + else if (v instanceof Blob) + h.push(new Uint8Array(await v.arrayBuffer())); + else if (typeof v === "object") { + for (const c of Object.keys(v).sort()) { + h.push(SEP); + h.push(utf8Encode(c)); + h.push(SEP); + await append(v[c]); + } + if (readWorkspaceFiles && + typeof v.filename === "string" && + v.content === undefined && + !/^https?:\/\//i.test(v.filename)) { + try { + const h = await hashFile(v.filename); + await append(SEP); + await append(h); + } + catch { } + } + } + else if (typeof v === "function") + h.push(utf8Encode(v.toString())); + else + h.push(utf8Encode(JSON.stringify(v))); + }; + if (salt) { + await append(salt); + await append(SEP); + } + if (version) { + await append(CORE_VERSION); + await append(SEP); + } + await append(value); + await append(SEP); + await append(rest); + const buf = await digest(algorithm, concatBuffers(...h)); + let res = toHex(new Uint8Array(buf)); + if (length) + res = res.slice(0, length); + return res; +} +/** + * Computes the hash of a file using a streaming approach. + * + * @param filePath - Path to the file to hash. + * @param algorithm - Hashing algorithm to use. Defaults to "sha-256". + * @returns Promise resolving to the file's hash in hexadecimal format. + */ +export async function hashFile(filePath, algorithm = "sha-256") { + return new Promise((resolve, reject) => { + const hash = createHash(algorithm); + const stream = createReadStream(filePath); + stream.on("data", (chunk) => { + hash.update(chunk); + }); + stream.on("end", () => { + resolve(hash.digest("hex")); + }); + stream.on("error", (err) => { + reject(err); + }); + }); +} +//# sourceMappingURL=crypto.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/crypto.js.map b/packages/core/.tshy-build/browser/crypto.js.map new file mode 100644 index 0000000000..6823c0b24e --- /dev/null +++ b/packages/core/.tshy-build/browser/crypto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/csv.d.ts b/packages/core/.tshy-build/browser/csv.d.ts new file mode 100644 index 0000000000..d4f82cda0d --- /dev/null +++ b/packages/core/.tshy-build/browser/csv.d.ts @@ -0,0 +1,90 @@ +import type { TraceOptions } from "./trace.js"; +import type { CSVStringifyOptions, ElementOrArray, WorkspaceFile } from "./types.js"; +/** + * Parses a CSV string or file into an array of objects. + * + * @param text - The CSV string or file to parse. If a file is provided, its content is read. + * @param options - Optional configuration for parsing. + * @param options.delimiter - The delimiter used in the CSV, defaults to a comma. + * @param options.headers - Column headers for the CSV, as an array or single value. If not provided, headers are inferred from the first line. + * @param options.repair - Whether to repair common escape errors, defaults to false. + * @returns An array of objects representing the parsed CSV data. Skips empty lines and records with errors. + */ +export declare function CSVParse(text: string | WorkspaceFile, options?: { + delimiter?: string; + headers?: ElementOrArray; + repair?: boolean; +}): object[]; +/** + * Attempts to parse a CSV string into an array of objects, handling errors gracefully. + * + * @param text - The CSV string to parse. Returns an empty array if the input is empty. + * @param options - Optional configuration for parsing and error handling. + * @param options.delimiter - The delimiter used to separate values, defaults to a comma. + * @param options.headers - Column headers for the parsed data, as an array or single value. + * @param options.repair - Enables basic error correction in the input data. + * @param options.trace - Trace function for logging errors during parsing. + * @returns An array of objects representing the parsed CSV data, or undefined if an error occurs. + */ +export declare function CSVTryParse(text: string, options?: { + delimiter?: string; + headers?: ElementOrArray; + repair?: boolean; +} & TraceOptions): object[] | undefined; +/** + * Converts an array of objects into a CSV string. + * + * @param csv - Array of objects to convert to CSV format. Returns an empty string if the input is null or undefined. + * @param options - Optional configuration for CSV stringification, including headers, delimiter, and other settings. + * @returns A CSV formatted string representation of the input data. + */ +export declare function CSVStringify(csv: object[], options?: CSVStringifyOptions): string; +/** + * Converts an array of objects into a Markdown table. + * + * @param csv - Array of objects representing the data to convert. Returns an empty string if the input is empty. + * @param options - Configuration options for the table. + * @param options.headers - Headers for the table columns. If not provided, keys from the first object are used. If empty, defaults to object keys. Headers are escaped for Markdown. + * @returns A Markdown table as a string, with rows and columns formatted and escaped for Markdown. Rows are joined without additional newlines. + */ +export declare function dataToMarkdownTable(csv: object[], options?: { + headers?: ElementOrArray; +}): string; +/** + * Generates the Markdown table separator row based on headers. + * + * @param headers - Array of column headers used to determine the number of separator cells in the row. + * @returns A string representing the Markdown table separator row. + */ +export declare function headersToMarkdownTableSeparator(headers: string[]): string; +/** + * Generates the header row for a Markdown table. + * + * @param headers - Array of header names to be included in the table's first row. + * @returns A string representing the header row of a Markdown table, with headers separated by pipes, ending with a newline. + */ +export declare function headersToMarkdownTableHead(headers: string[]): string; +/** + * Converts a single object into a Markdown table row. + * + * @param row - The object containing data for the row. Keys correspond to column headers. + * @param headers - The list of headers determining the order of columns in the row. + * @param options - Optional configuration settings. + * @param options.skipEscape - If true, skips escaping special Markdown characters. + * @returns A string representing the row formatted as a Markdown table row. + */ +export declare function objectToMarkdownTableRow(row: object, headers: string[], options?: { + skipEscape?: boolean; +}): string; +/** + * Splits an array of objects into chunks of a specified size. + * + * @param rows - Array of objects to be divided into chunks. + * @param size - Number of objects per chunk. Must be at least 1. + * @returns Array of chunk objects, each containing a starting index and rows. + */ +export declare function CSVChunk(rows: object[], size: number): { + chunkStartIndex: number; + rows: object[]; +}[]; +//# sourceMappingURL=csv.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/csv.d.ts.map b/packages/core/.tshy-build/browser/csv.d.ts.map new file mode 100644 index 0000000000..79d3f358a4 --- /dev/null +++ b/packages/core/.tshy-build/browser/csv.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,MAAM,EAAE,CAyBV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,YAAY,GACf,MAAM,EAAE,GAAG,SAAS,CAWtB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,UAIxE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAAE,UAWhG;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,UAEhE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,UAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,UAiBnC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,GACX;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAK/C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/csv.js b/packages/core/.tshy-build/browser/csv.js new file mode 100644 index 0000000000..1c7b15dbfc --- /dev/null +++ b/packages/core/.tshy-build/browser/csv.js @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides functions for parsing and converting CSV data, +// including error handling and conversion to Markdown table format. +import { parse } from "csv-parse/sync"; +import { stringify } from "csv-stringify/sync"; +import { arrayify } from "./cleaners.js"; +import { chunk } from "es-toolkit"; +import { filenameOrFileToContent } from "./unwrappers.js"; +/** + * Parses a CSV string or file into an array of objects. + * + * @param text - The CSV string or file to parse. If a file is provided, its content is read. + * @param options - Optional configuration for parsing. + * @param options.delimiter - The delimiter used in the CSV, defaults to a comma. + * @param options.headers - Column headers for the CSV, as an array or single value. If not provided, headers are inferred from the first line. + * @param options.repair - Whether to repair common escape errors, defaults to false. + * @returns An array of objects representing the parsed CSV data. Skips empty lines and records with errors. + */ +export function CSVParse(text, options) { + text = filenameOrFileToContent(text); + // Destructure options or provide defaults + const { delimiter, headers, repair, ...rest } = options || {}; + const columns = headers ? arrayify(headers) : true; + // common LLM escape errors + if (repair && text) { + text = text.replace(/\\"/g, '""').replace(/""""/g, '""'); + } + // Parse the CSV string based on the provided options + return parse(text, { + autoParse: true, // Automatically parse values to appropriate types + castDate: false, // Do not cast strings to dates + comment: "#", // Ignore comments starting with '#' + columns, // Use provided headers or infer from the first line + skipEmptyLines: true, // Skip empty lines in the CSV + skipRecordsWithError: true, // Skip records that cause errors + delimiter, // Use the provided delimiter + relaxQuotes: true, // Allow quotes to be relaxed + relaxColumnCount: true, // Allow rows to have different column counts + trim: true, // Trim whitespace from values + ...rest, + }); +} +/** + * Attempts to parse a CSV string into an array of objects, handling errors gracefully. + * + * @param text - The CSV string to parse. Returns an empty array if the input is empty. + * @param options - Optional configuration for parsing and error handling. + * @param options.delimiter - The delimiter used to separate values, defaults to a comma. + * @param options.headers - Column headers for the parsed data, as an array or single value. + * @param options.repair - Enables basic error correction in the input data. + * @param options.trace - Trace function for logging errors during parsing. + * @returns An array of objects representing the parsed CSV data, or undefined if an error occurs. + */ +export function CSVTryParse(text, options) { + const { trace } = options || {}; + try { + if (!text) + return []; // Return empty array if CSV is empty + // Attempt to parse the CSV + return CSVParse(text, options); + } + catch (e) { + // Log error using trace function if provided + trace?.error("reading csv", e); + return undefined; + } +} +/** + * Converts an array of objects into a CSV string. + * + * @param csv - Array of objects to convert to CSV format. Returns an empty string if the input is null or undefined. + * @param options - Optional configuration for CSV stringification, including headers, delimiter, and other settings. + * @returns A CSV formatted string representation of the input data. + */ +export function CSVStringify(csv, options) { + if (!csv) + return ""; // Return empty string if CSV is empty + // Convert objects to CSV string using the provided options + return stringify(csv, options); +} +/** + * Converts an array of objects into a Markdown table. + * + * @param csv - Array of objects representing the data to convert. Returns an empty string if the input is empty. + * @param options - Configuration options for the table. + * @param options.headers - Headers for the table columns. If not provided, keys from the first object are used. If empty, defaults to object keys. Headers are escaped for Markdown. + * @returns A Markdown table as a string, with rows and columns formatted and escaped for Markdown. Rows are joined without additional newlines. + */ +export function dataToMarkdownTable(csv, options) { + if (!csv?.length) + return ""; // Return empty string if CSV is empty + const headers = arrayify(options?.headers); + if (headers.length === 0) + headers.push(...Object.keys(csv[0])); // Use object keys as headers if not provided + const res = [ + headersToMarkdownTableHead(headers), // Create Markdown separator row + headersToMarkdownTableSeparator(headers), + ...csv.map((row) => objectToMarkdownTableRow(row, headers)), + ]; + return res.join(""); // Join rows with newline +} +/** + * Generates the Markdown table separator row based on headers. + * + * @param headers - Array of column headers used to determine the number of separator cells in the row. + * @returns A string representing the Markdown table separator row. + */ +export function headersToMarkdownTableSeparator(headers) { + return `|${headers.map(() => "-").join("|")}|\n`; +} +/** + * Generates the header row for a Markdown table. + * + * @param headers - Array of header names to be included in the table's first row. + * @returns A string representing the header row of a Markdown table, with headers separated by pipes, ending with a newline. + */ +export function headersToMarkdownTableHead(headers) { + return `|${headers.join("|")}|\n`; +} +/** + * Converts a single object into a Markdown table row. + * + * @param row - The object containing data for the row. Keys correspond to column headers. + * @param headers - The list of headers determining the order of columns in the row. + * @param options - Optional configuration settings. + * @param options.skipEscape - If true, skips escaping special Markdown characters. + * @returns A string representing the row formatted as a Markdown table row. + */ +export function objectToMarkdownTableRow(row, headers, options) { + const { skipEscape } = options || {}; + return `|${headers + .map((key) => { + const v = row[key]; + let s = v === undefined || v === null ? "" : String(v); + // Escape special Markdown characters and format cell content + s = s + .replace(/\s+$/, "") // Trim trailing whitespace + .replace(//g, "gt;") // Replace '>' with its HTML entity + .replace(/\r?\n/g, "
"); // Replace newlines with
+ if (!skipEscape) + s = s.replace(/[\\`*_{}[\]()#+\-.!]/g, (m) => "\\" + m); // Escape special characters + return s || " "; + }) + .join("|")}|\n`; // Join columns with '|' +} +/** + * Splits an array of objects into chunks of a specified size. + * + * @param rows - Array of objects to be divided into chunks. + * @param size - Number of objects per chunk. Must be at least 1. + * @returns Array of chunk objects, each containing a starting index and rows. + */ +export function CSVChunk(rows, size) { + return chunk(rows || [], Math.max(1, size | 0)).map((rows, chunkStartIndex) => ({ + chunkStartIndex, + rows, + })); +} +//# sourceMappingURL=csv.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/csv.js.map b/packages/core/.tshy-build/browser/csv.js.map new file mode 100644 index 0000000000..515c62afc4 --- /dev/null +++ b/packages/core/.tshy-build/browser/csv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/data.d.ts b/packages/core/.tshy-build/browser/data.d.ts new file mode 100644 index 0000000000..302682acfd --- /dev/null +++ b/packages/core/.tshy-build/browser/data.d.ts @@ -0,0 +1,15 @@ +import type { TraceOptions } from "./trace.js"; +import type { CSVParseOptions, INIParseOptions, WorkspaceFile, XMLParseOptions } from "./types.js"; +/** + * Attempts to parse the provided file's content based on its detected format. + * + * @param file - The file to be parsed, containing filename, content, and encoding details. + * @param options - Optional configuration for parsing, including trace and format-specific options. + * - Trace options: Includes settings for tracing during processing. + * - XML options: Includes configurations for XML parsing. + * - INI options: Includes configurations for INI parsing. + * - CSV options: Includes configurations for CSV parsing. + * @returns Parsed data in the appropriate format based on the file extension, or `undefined` if the format is unsupported. + */ +export declare function dataTryParse(file: WorkspaceFile, options?: TraceOptions & XMLParseOptions & INIParseOptions & CSVParseOptions): Promise; +//# sourceMappingURL=data.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/data.d.ts.map b/packages/core/.tshy-build/browser/data.d.ts.map new file mode 100644 index 0000000000..af7245e996 --- /dev/null +++ b/packages/core/.tshy-build/browser/data.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/data.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnG;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,gBA2B7E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/data.js b/packages/core/.tshy-build/browser/data.js new file mode 100644 index 0000000000..fac9203e42 --- /dev/null +++ b/packages/core/.tshy-build/browser/data.js @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { XLSX_REGEX, CSV_REGEX, INI_REGEX, TOML_REGEX, JSON5_REGEX, YAML_REGEX, XML_REGEX, MD_REGEX, MDX_REGEX, JSONL_REGEX, } from "./constants.js"; +import { CSVTryParse } from "./csv.js"; +import { splitMarkdown } from "./frontmatter.js"; +import { INITryParse } from "./ini.js"; +import { JSON5TryParse } from "./json5.js"; +import { TOMLTryParse } from "./toml.js"; +import { XLSXParse } from "./xlsx.js"; +import { XMLTryParse } from "./xml.js"; +import { YAMLTryParse } from "./yaml.js"; +import { resolveFileContent } from "./file.js"; +import { fromBase64 } from "./base64.js"; +import { JSONLTryParse } from "./jsonl.js"; +import { tryValidateJSONWithSchema } from "./schema.js"; +import { resolveRuntimeHost } from "./host.js"; +/** + * Attempts to parse the provided file's content based on its detected format. + * + * @param file - The file to be parsed, containing filename, content, and encoding details. + * @param options - Optional configuration for parsing, including trace and format-specific options. + * - Trace options: Includes settings for tracing during processing. + * - XML options: Includes configurations for XML parsing. + * - INI options: Includes configurations for INI parsing. + * - CSV options: Includes configurations for CSV parsing. + * @returns Parsed data in the appropriate format based on the file extension, or `undefined` if the format is unsupported. + */ +export async function dataTryParse(file, options) { + await resolveFileContent(file); + const runtimeHost = resolveRuntimeHost(); + const { filename, content, encoding } = file; + let data; + if (XLSX_REGEX.test(filename)) + data = await XLSXParse(encoding === "base64" ? fromBase64(content) : await runtimeHost.readFile(filename)); + else { + if (CSV_REGEX.test(filename)) + data = CSVTryParse(content, options); + else if (INI_REGEX.test(filename)) + data = INITryParse(content, options); + else if (TOML_REGEX.test(filename)) + data = TOMLTryParse(content); + else if (JSON5_REGEX.test(filename)) + data = JSON5TryParse(content, { repair: true }); + else if (YAML_REGEX.test(filename)) + data = YAMLTryParse(content); + else if (XML_REGEX.test(filename)) + data = await XMLTryParse(content, options); + else if (JSONL_REGEX.test(filename)) + data = JSONLTryParse(content); + else if (MD_REGEX.test(filename) || MDX_REGEX.test(filename)) + data = YAMLTryParse(splitMarkdown(content).frontmatter); + else { + return undefined; // unknown + } + } + return tryValidateJSONWithSchema(data, options); +} +//# sourceMappingURL=data.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/data.js.map b/packages/core/.tshy-build/browser/data.js.map new file mode 100644 index 0000000000..4672d57382 --- /dev/null +++ b/packages/core/.tshy-build/browser/data.js.map @@ -0,0 +1 @@ +{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/data.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/debug.d.ts b/packages/core/.tshy-build/browser/debug.d.ts new file mode 100644 index 0000000000..30611af409 --- /dev/null +++ b/packages/core/.tshy-build/browser/debug.d.ts @@ -0,0 +1,3 @@ +import type { Debugger } from "debug"; +export declare function genaiscriptDebug(namespace: string): Debugger; +//# sourceMappingURL=debug.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/debug.d.ts.map b/packages/core/.tshy-build/browser/debug.d.ts.map new file mode 100644 index 0000000000..bc632c98bd --- /dev/null +++ b/packages/core/.tshy-build/browser/debug.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAItC,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAE5D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/debug.js b/packages/core/.tshy-build/browser/debug.js new file mode 100644 index 0000000000..e08e3901b7 --- /dev/null +++ b/packages/core/.tshy-build/browser/debug.js @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const _genaiscriptDebug = debug("genaiscript"); +export function genaiscriptDebug(namespace) { + return _genaiscriptDebug.extend(namespace); +} +//# sourceMappingURL=debug.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/debug.js.map b/packages/core/.tshy-build/browser/debug.js.map new file mode 100644 index 0000000000..4a629ba3c8 --- /dev/null +++ b/packages/core/.tshy-build/browser/debug.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/default_prompts.d.ts b/packages/core/.tshy-build/browser/default_prompts.d.ts new file mode 100644 index 0000000000..2cb7049217 --- /dev/null +++ b/packages/core/.tshy-build/browser/default_prompts.d.ts @@ -0,0 +1,4 @@ +export declare const promptDefinitions: Readonly>; +export declare const githubCopilotInstructions = "---\napplyTo: \"**/*.genai.*\"\ndescription: \"Instructions for working with GenAIScript files\"\n---\n\n## GenAIScript Code Generation Instructions\n\nGenAIScript is a custom runtime for node.js. It provides a set of unique APIs and support the TypeScript syntax, ESM, await/async.\n\n- GenAIScript documentation: https://microsoft.github.io/genaiscript/llms-full.txt\n- GenAIScript ambient type definitions: https://microsoft.github.io/genaiscript/genaiscript.d.ts\n\n## Guidance for Code Generation\n\n- you always generate TypeScript code using ESM modules for Node.JS.\n- you prefer using APIs from GenAIScript `genaiscript.d.ts` rather than node.js. Do NOT use node.js imports.\n- you keep the code simple, avoid exception handlers or error checking.\n- you add `TODOs` where you are unsure so that the user can review them\n- you use the global types in genaiscript.d.ts are already loaded in the global context, no need to import them.\n- save generated code in the `./genaisrc` folder with `.genai.mts` extension\n"; +export declare const promptFooDriver = "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { pathToFileURL } from \"node:url\";\n\nfunction deleteUndefinedValues(o) {\n if (typeof o === \"object\" && !Array.isArray(o))\n for (const k in o) if (o[k] === undefined) delete o[k];\n return o;\n}\n\n/**\n * GenAIScript PromptFoo Custom Provider\n *\n * Do not edit, auto-generated.\n *\n */\nclass GenAIScriptApiProvider {\n constructor(options) {\n this.config = options.config || {};\n this.providerId =\n options.id ||\n `genaiscript/${this.config.model || \"large\"}/${this.config.smallModel || \"small\"}/${this.config.visionModel || \"vision\"}`;\n this.label = `genaiscript ${this.config.model || \"large\"}, ${this.config.smallModel || \"small\"}, ${this.config.visionModel || \"vision\"}`;\n }\n\n id() {\n return this.providerId;\n }\n\n async callApi(scriptId, context, callOptions) {\n const { logger } = context;\n try {\n const files = context.vars.files; // string or string[]\n const workspaceFiles = context.vars.workspaceFiles; // WorkspaceFile or WorkspaceFile[]\n const fileContent = context.vars.fileContent; // string\n\n let { cli, ...options } = structuredClone(this.config);\n options.runTries = 2;\n options.runTrace = false;\n options.outputTrace = false;\n options.lobprobs = !!callOptions?.includeLogProbs;\n\n const testVars = context.vars.vars; // {}\n if (testVars && typeof testVars === \"object\")\n options.vars = { ...(this.config.vars || []), ...testVars };\n if (process.platform === \"win32\" && !cli.startsWith(\"file://\")) cli = pathToFileURL(cli).href;\n if (workspaceFiles)\n options.workspaceFiles = Array.isArray(workspaceFiles) ? workspaceFiles : [workspaceFiles];\n if (fileContent) {\n if (!options.workspaceFiles) options.workspaceFiles = [];\n options.workspaceFiles.push({\n filename: \"\",\n content: fileContent,\n });\n }\n const api = await import(\"@genaiscript/api\");\n const res = await api.run(scriptId, files, options);\n if (!res) throw new Error(\"No response from GenAIScript API\");\n const { error, stats, logprobs, finishReason } = res || {};\n const cost = stats?.cost;\n const logProbs = logprobs?.length ? logprobs.map((lp) => lp.logprob) : undefined;\n const isRefusal = finishReason === \"refusal\" || finishReason === \"content_filter\";\n\n /*\n https://www.promptfoo.dev/docs/configuration/reference/#providerresponse\n */\n const pres = deleteUndefinedValues({\n error: error?.message,\n cost,\n tokenUsage: stats\n ? deleteUndefinedValues({\n total: stats.total_tokens,\n prompt: stats.prompt_tokens,\n completion: stats.completion_tokens,\n cached: stats.prompt_tokens_details?.cached_tokens,\n })\n : undefined,\n logProbs,\n isRefusal,\n output: res,\n });\n return pres;\n } catch (e) {\n logger.error(e);\n return {\n output: { text: \"\" },\n error: e?.message || e + \"\",\n };\n }\n }\n}\n\nexport default GenAIScriptApiProvider;\n"; +//# sourceMappingURL=default_prompts.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/default_prompts.d.ts.map b/packages/core/.tshy-build/browser/default_prompts.d.ts.map new file mode 100644 index 0000000000..540ade76a7 --- /dev/null +++ b/packages/core/.tshy-build/browser/default_prompts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"default_prompts.d.ts","sourceRoot":"","sources":["../../src/default_prompts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,kCAI5B,CAAC;AAEH,eAAO,MAAM,yBAAyB,ogCAAogC,CAAA;AAE1iC,eAAO,MAAM,eAAe,kvGAAkvG,CAAA"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/default_prompts.js b/packages/core/.tshy-build/browser/default_prompts.js new file mode 100644 index 0000000000..c16bcd8bed --- /dev/null +++ b/packages/core/.tshy-build/browser/default_prompts.js @@ -0,0 +1,9 @@ +// autogenerated - node bundleprompts.mjs +export const promptDefinitions = Object.freeze({ + "jsconfig.json": "{\n \"compilerOptions\": {\n \"lib\": [\n \"ES2024\"\n ],\n \"target\": \"ES2024\",\n \"module\": \"ES2022\",\n \"moduleDetection\": \"force\",\n \"checkJs\": true,\n \"allowJs\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\n \"*.js\",\n \"./genaiscript.d.ts\"\n ]\n}", + "tsconfig.json": "{\n \"compilerOptions\": {\n \"lib\": [\n \"ES2024\"\n ],\n \"target\": \"ES2024\",\n \"module\": \"NodeNext\",\n \"moduleDetection\": \"force\",\n \"moduleResolution\": \"nodenext\",\n \"checkJs\": true,\n \"allowJs\": true,\n \"skipLibCheck\": true,\n \"noEmit\": true,\n \"allowImportingTsExtensions\": true,\n \"verbatimModuleSyntax\": true,\n \"resolveJsonModule\": true,\n \"erasableSyntaxOnly\": true\n },\n \"include\": [\n \"**/*.mjs\",\n \"**/*.mts\",\n \"./genaiscript.d.ts\"\n ]\n}", + "genaiscript.d.ts": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * GenAIScript Ambient Type Definition File\n * @version 2.3.10\n */\n type OptionsOrString = (string & {}) | TOptions;\n\n type ElementOrArray = T | T[];\n\n interface PromptGenerationConsole {\n log(...data: any[]): void;\n warn(...data: any[]): void;\n debug(...data: any[]): void;\n error(...data: any[]): void;\n}\n\n type DiagnosticSeverity = \"error\" | \"warning\" | \"info\";\n\n interface Diagnostic {\n filename: string;\n range: CharRange;\n severity: DiagnosticSeverity;\n message: string;\n /**\n * suggested fix\n */\n suggestion?: string;\n /**\n * error or warning code\n */\n code?: string;\n}\n\n type Awaitable = T | PromiseLike;\n\n interface SerializedError {\n name?: string;\n message?: string;\n stack?: string;\n cause?: unknown;\n code?: string;\n line?: number;\n column?: number;\n}\n\n/**\n * A color and icon to associate with the script.\n * @see https://actions-cool.github.io/github-action-branding/\n */\n interface PromptBranding {\n /**\n * Marketplace and web site branding\n */\n branding?: {\n /**\n * The background color of the badge.\n */\n color?:\n | \"white\"\n | \"black\"\n | \"yellow\"\n | \"blue\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"purple\"\n | \"gray-dark\";\n /**\n * Name of the Feather icon to use.\n * @see https://actions-cool.github.io/github-action-branding/\n */\n icon?: string;\n };\n}\n\n interface PromptDefinition {\n /**\n * Based on file name.\n */\n id: string;\n\n /**\n * Something like \"Summarize children\", show in UI.\n */\n title?: string;\n\n /**\n * Longer description of the prompt. Shows in UI grayed-out.\n */\n description?: string;\n\n /**\n * Groups template in UI\n */\n group?: string;\n\n /**\n * List of tools defined in the script\n */\n defTools?: { id: string; description: string; kind: \"tool\" | \"agent\" }[];\n}\n\n interface PromptLike extends PromptDefinition {\n /**\n * File where the prompt comes from (if any).\n */\n filename?: string;\n\n /**\n * The actual text of the prompt template.\n * Only used for system prompts.\n */\n text?: string;\n\n /**\n * The text of the prompt JS source code.\n */\n jsSource?: string;\n\n /**\n * Resolved system ids\n */\n resolvedSystem?: SystemPromptInstance[];\n\n /**\n * Inferred input schema for parameters\n */\n inputSchema?: JSONSchemaObject;\n}\n\n type SystemPromptId = OptionsOrString;\n\n type SystemPromptInstance = {\n id: SystemPromptId;\n parameters?: Record;\n vars?: Record;\n};\n\n type SystemToolId = OptionsOrString;\n\n type FileMergeHandler = (\n filename: string,\n label: string,\n before: string,\n generated: string,\n) => Awaitable;\n\n interface PromptOutputProcessorResult {\n /**\n * Updated text\n */\n text?: string;\n /**\n * Generated files from the output\n */\n files?: Record;\n\n /**\n * User defined errors\n */\n annotations?: Diagnostic[];\n}\n\n type PromptOutputProcessorHandler = (\n output: GenerationOutput,\n) =>\n | PromptOutputProcessorResult\n | Promise\n | undefined\n | Promise\n | void\n | Promise;\n\n type PromptTemplateResponseType =\n | \"text\"\n | \"json\"\n | \"yaml\"\n | \"markdown\"\n | \"json_object\"\n | \"json_schema\"\n | undefined;\n\n type ModelType = OptionsOrString<\n | \"large\"\n | \"small\"\n | \"tiny\"\n | \"long\"\n | \"vision\"\n | \"vision_small\"\n | \"reasoning\"\n | \"reasoning_small\"\n | \"openai:gpt-4.1\"\n | \"openai:gpt-4.1-mini\"\n | \"openai:gpt-4.1-nano\"\n | \"openai:gpt-4o\"\n | \"openai:gpt-4o-mini\"\n | \"openai:gpt-3.5-turbo\"\n | \"openai:o3-mini\"\n | \"openai:o3-mini:low\"\n | \"openai:o3-mini:medium\"\n | \"openai:o3-mini:high\"\n | \"openai:o1\"\n | \"openai:o1-mini\"\n | \"openai:o1-preview\"\n | \"github:openai/gpt-4.1\"\n | \"github:openai/gpt-4o\"\n | \"github:openai/gpt-4o-mini\"\n | \"github:openai/o1\"\n | \"github:openai/o1-mini\"\n | \"github:openai/o3-mini\"\n | \"github:openai/o3-mini:low\"\n | \"github:microsoft/mai-ds-r1\"\n | \"github:deepseek/deepseek-v3\"\n | \"github:deepseek/deepseek-r1\"\n | \"github:microsoft/phi-4\"\n | \"github_copilot_chat:current\"\n | \"github_copilot_chat:gpt-3.5-turbo\"\n | \"github_copilot_chat:gpt-4o-mini\"\n | \"github_copilot_chat:gpt-4o-2024-11-20\"\n | \"github_copilot_chat:gpt-4\"\n | \"github_copilot_chat:o1\"\n | \"github_copilot_chat:o1:low\"\n | \"github_copilot_chat:o1:medium\"\n | \"github_copilot_chat:o1:high\"\n | \"github_copilot_chat:o3-mini\"\n | \"github_copilot_chat:o3-mini:low\"\n | \"github_copilot_chat:o3-mini:medium\"\n | \"github_copilot_chat:o3-mini:high\"\n | \"azure:gpt-4o\"\n | \"azure:gpt-4o-mini\"\n | \"azure:o1\"\n | \"azure:o1-mini\"\n | \"azure:o1-preview\"\n | \"azure:o3-mini\"\n | \"azure:o3-mini:low\"\n | \"azure:o3-mini:medium\"\n | \"azure:o3-mini:high\"\n | \"azure_ai_inference:gpt-4.1\"\n | \"azure_ai_inference:gpt-4o\"\n | \"azure_ai_inference:gpt-4o-mini\"\n | \"azure_ai_inference:o1\"\n | \"azure_ai_inference:o1-mini\"\n | \"azure_ai_inference:o1-preview\"\n | \"azure_ai_inference:o3-mini\"\n | \"azure_ai_inference:o3-mini:low\"\n | \"azure_ai_inference:o3-mini:medium\"\n | \"azure_ai_inference:o3-mini:high\"\n | \"azure_ai_inference:deepSeek-v3\"\n | \"azure_ai_inference:deepseek-r1\"\n | \"ollama:gemma3:4b\"\n | \"ollama:llama3.2\"\n | \"ollama:command-r7b:7b\"\n | \"anthropic:claude-opus-4-0\"\n | \"anthropic:claude-sonnet-4-0\"\n | \"anthropic:claude-sonnet-4-0:low\"\n | \"anthropic:claude-sonnet-4-0:medium\"\n | \"anthropic:claude-sonnet-4-0:high\"\n | \"anthropic:claude-3-7-sonnet-latest\"\n | \"anthropic:claude-3-7-sonnet-latest:low\"\n | \"anthropic:claude-3-7-sonnet-latest:medium\"\n | \"anthropic:claude-3-7-sonnet-latest:high\"\n | \"anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0\"\n | \"anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:low\"\n | \"anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:medium\"\n | \"anthropic_bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0:high\"\n | \"huggingface:microsoft/Phi-3-mini-4k-instruct\"\n | \"jan:llama3.2-3b-instruct\"\n | \"google:gemini-2.0-flash-exp\"\n | \"llamafile\"\n | \"sglang\"\n | \"vllm\"\n | \"echo\"\n | \"none\"\n>;\n\n type EmbeddingsModelType = OptionsOrString<\n | \"openai:text-embedding-3-small\"\n | \"openai:text-embedding-3-large\"\n | \"openai:text-embedding-ada-002\"\n | \"github:text-embedding-3-small\"\n | \"github:text-embedding-3-large\"\n | \"azure:text-embedding-3-small\"\n | \"azure:text-embedding-3-large\"\n | \"azure_ai_inference:text-embedding-3-small\"\n | \"azure_ai_inference:text-embedding-3-large\"\n | \"ollama:nomic-embed-text\"\n | \"google:text-embedding-004\"\n | \"huggingface:nomic-ai/nomic-embed-text-v1.5\"\n>;\n\n type ModelSmallType = OptionsOrString<\n | \"openai:gpt-4o-mini\"\n | \"github:openai/gpt-4o-mini\"\n | \"azure:gpt-4o-mini\"\n | \"github:microsoft/phi-4\"\n>;\n\n type ModelVisionType = OptionsOrString<\n \"openai:gpt-4o\" | \"github:openai/gpt-4o\" | \"azure:gpt-4o\" | \"azure:gpt-4o-mini\"\n>;\n\n type ModelImageGenerationType = OptionsOrString<\n \"openai:gpt-image-1\" | \"openai:dall-e-2\" | \"openai:dall-e-3\"\n>;\n\n type ModelProviderType = OptionsOrString<\n | \"openai\"\n | \"azure\"\n | \"azure_serverless\"\n | \"azure_serverless_models\"\n | \"anthropic\"\n | \"anthropic_bedrock\"\n | \"google\"\n | \"huggingface\"\n | \"mistral\"\n | \"alibaba\"\n | \"github\"\n | \"transformers\"\n | \"ollama\"\n | \"lmstudio\"\n | \"jan\"\n | \"sglang\"\n | \"vllm\"\n | \"llamafile\"\n | \"litellm\"\n | \"github_copilot_chat\"\n | \"deepseek\"\n | \"whisperasr\"\n | \"echo\"\n>;\n\n interface ModelConnectionOptions {\n /**\n * Which LLM model by default or for the `large` alias.\n */\n model?: ModelType;\n}\n\n interface ModelAliasesOptions extends ModelConnectionOptions {\n /**\n * Configure the `small` model alias.\n */\n smallModel?: ModelSmallType;\n\n /**\n * Configure the `vision` model alias.\n */\n visionModel?: ModelVisionType;\n\n /**\n * A list of model aliases to use.\n */\n modelAliases?: Record;\n}\n\n type ReasoningEffortType = \"high\" | \"medium\" | \"low\";\n\n type ChatToolChoice =\n | \"none\"\n | \"auto\"\n | \"required\"\n | {\n /**\n * The name of the function to call.\n */\n name: string;\n };\n\n interface ModelOptions extends ModelConnectionOptions, ModelTemplateOptions, CacheOptions {\n /**\n * Temperature to use. Higher temperature means more hallucination/creativity.\n * Range 0.0-2.0.\n *\n * @default 0.2\n */\n temperature?: number;\n\n /**\n * Enables fallback tools mode\n */\n fallbackTools?: boolean;\n\n /**\n * OpenAI o* reasoning models support a reasoning effort parameter.\n * For Clause, these are mapped to thinking budget tokens\n */\n reasoningEffort?: ReasoningEffortType;\n\n /**\n * A list of keywords that should be found in the output.\n */\n choices?: ElementOrArray;\n\n /**\n * Returns the log probabilities of the each tokens. Not supported in all models.\n */\n logprobs?: boolean;\n\n /**\n * Number of alternate token logprobs to generate, up to 5. Enables logprobs.\n */\n topLogprobs?: number;\n\n /**\n * Specifies the type of output. Default is plain text.\n * - `text` enables plain text mode (through system prompts)\n * - `json` enables JSON mode (through system prompts)\n * - `yaml` enables YAML mode (through system prompts)\n * - `json_object` enables JSON mode (native)\n * - `json_schema` enables structured outputs (native)\n * Use `responseSchema` to specify an output schema.\n */\n responseType?: PromptTemplateResponseType;\n\n /**\n * JSON object schema for the output. Enables the `json_object` output mode by default.\n */\n responseSchema?: PromptParametersSchema | JSONSchema;\n\n /**\n * “Top_p” or nucleus sampling is a setting that decides how many possible words to consider.\n * A high “top_p” value means the model looks at more possible words, even the less likely ones,\n * which makes the generated text more diverse.\n */\n topP?: number;\n\n /**\n * Maximum number of completion tokens\n *\n */\n maxTokens?: number;\n\n /**\n * Tool selection strategy. Default is 'auto'.\n */\n toolChoice?: ChatToolChoice;\n\n /**\n * Maximum number of tool calls to make.\n */\n maxToolCalls?: number;\n\n /**\n * Maximum number of data repairs to attempt.\n */\n maxDataRepairs?: number;\n\n /**\n * A deterministic integer seed to use for the model.\n */\n seed?: number;\n\n /**\n * A list of model ids and their maximum number of concurrent requests.\n */\n modelConcurrency?: Record;\n}\n\n interface EmbeddingsModelOptions {\n /**\n * LLM model to use for embeddings.\n */\n embeddingsModel?: EmbeddingsModelType;\n}\n\n interface PromptSystemOptions extends PromptSystemSafetyOptions {\n /**\n * List of system script ids used by the prompt.\n */\n system?: ElementOrArray;\n\n /**\n * List of tools used by the prompt.\n */\n tools?: ElementOrArray;\n\n /**\n * List of system to exclude from the prompt.\n */\n excludedSystem?: ElementOrArray;\n\n /**\n * MCP server configuration. The tools will be injected into the prompt.\n */\n mcpServers?: McpServersConfig;\n\n /**\n * MCP agent configuration. Each mcp server will be wrapped with an agent.\n */\n mcpAgentServers?: McpAgentServersConfig;\n}\n\n interface ScriptRuntimeOptions extends LineNumberingOptions {\n /**\n * Secrets required by the prompt\n */\n secrets?: string[];\n}\n\n type PromptJSONParameterType = T & { required?: boolean };\n\n type PromptParameterType =\n | string\n | number\n | boolean\n | object\n | PromptJSONParameterType\n | PromptJSONParameterType\n | PromptJSONParameterType;\n type PromptParametersSchema = Record;\n type PromptParameters = Record;\n\n type PromptAssertion = {\n // How heavily to weigh the assertion. Defaults to 1.0\n weight?: number;\n /**\n * The transformation to apply to the output before checking the assertion.\n */\n transform?: string;\n} & (\n | {\n // type of assertion\n type:\n | \"icontains\"\n | \"not-icontains\"\n | \"equals\"\n | \"not-equals\"\n | \"starts-with\"\n | \"not-starts-with\";\n // The expected value\n value: string;\n }\n | {\n // type of assertion\n type:\n | \"contains-all\"\n | \"not-contains-all\"\n | \"contains-any\"\n | \"not-contains-any\"\n | \"icontains-all\"\n | \"not-icontains-all\";\n // The expected values\n value: string[];\n }\n | {\n // type of assertion\n type: \"levenshtein\" | \"not-levenshtein\";\n // The expected value\n value: string;\n // The threshold value\n threshold?: number;\n }\n);\n\n interface PromptTest {\n /**\n * Short name of the test\n */\n name?: string;\n /**\n * Description of the test.\n */\n description?: string;\n /**\n * List of files to apply the test to.\n */\n files?: ElementOrArray;\n /**\n * List of in-memory files to apply the test to.\n */\n workspaceFiles?: ElementOrArray;\n /**\n * Extra set of variables for this scenario\n */\n vars?: Record;\n /**\n * LLM output matches a given rubric, using a Language Model to grade output.\n */\n rubrics?: ElementOrArray;\n /**\n * LLM output adheres to the given facts, using Factuality method from OpenAI evaluation.\n */\n facts?: ElementOrArray;\n /**\n * List of keywords that should be contained in the LLM output.\n */\n keywords?: ElementOrArray;\n /**\n * List of keywords that should not be contained in the LLM output.\n */\n forbidden?: ElementOrArray;\n /**\n * Additional deterministic assertions.\n */\n asserts?: ElementOrArray;\n\n /**\n * Determines what kind of output is sent back to the test engine. Default is \"text\".\n */\n format?: \"text\" | \"json\";\n}\n\n/**\n * Configure promptfoo redteam plugins\n */\n interface PromptRedteam {\n /**\n * The `purpose` property is used to guide the attack generation process. It should be as clear and specific as possible.\n * Include the following information:\n * - Who the user is and their relationship to the company\n * - What data the user has access to\n * - What data the user does not have access to\n * - What actions the user can perform\n * - What actions the user cannot perform\n * - What systems the agent has access to\n * @link https://www.promptfoo.dev/docs/red-team/troubleshooting/attack-generation/\n */\n purpose: string;\n\n /**\n * Redteam identifier used for reporting purposes\n */\n label?: string;\n\n /**\n * Default number of inputs to generate for each plugin.\n * The total number of tests will be `(numTests * plugins.length * (1 + strategies.length) * languages.length)`\n * Languages.length is 1 by default, but is added when the multilingual strategy is used.\n */\n numTests?: number;\n\n /**\n * List of languages to target. Default is English.\n */\n language?: string;\n\n /**\n * Red team plugin list\n * @link https://www.promptfoo.dev/docs/red-team/owasp-llm-top-10/\n */\n plugins?: ElementOrArray;\n\n /**\n * Adversary prompt generation strategies\n */\n strategies?: ElementOrArray;\n}\n\n/**\n * Different ways to render a fence block.\n */\n type FenceFormat = \"markdown\" | \"xml\" | \"none\";\n\n interface FenceFormatOptions {\n /**\n * Formatting of code sections\n */\n fenceFormat?: FenceFormat;\n}\n\n interface ModelTemplateOptions extends FenceFormatOptions {\n /**\n * Budget of tokens to apply the prompt flex renderer.\n */\n flexTokens?: number;\n}\n\n interface McpToolAnnotations {\n /**\n * Annotations for MCP tools\n * @link https://modelcontextprotocol.io/docs/concepts/tools#available-tool-annotations\n */\n annotations?: {\n /**\n * If true, indicates the tool does not modify its environment\n */\n readOnlyHint?: boolean;\n /**\n * If true, the tool may perform destructive updates (only meaningful when readOnlyHint is false)\n */\n destructiveHint?: boolean;\n /**\n * If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when readOnlyHint is false)\n */\n idempotentHint?: boolean;\n /**\n * If true, the tool may interact with an “open world” of external entities\n */\n openWorldHint?: boolean;\n };\n}\n\n interface MetadataOptions {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.\n */\n metadata?: Record;\n}\n\n interface TerminalOptions {\n /**\n * Disable generation of run trace.\n */\n disableTrace?: boolean;\n\n /**\n * Disables rendering a preview of the chat messages\n */\n disableChatPreview?: boolean;\n}\n\n interface PromptScript\n extends PromptLike,\n PromptBranding,\n ModelOptions,\n ModelAliasesOptions,\n PromptSystemOptions,\n EmbeddingsModelOptions,\n ContentSafetyOptions,\n SecretDetectionOptions,\n GitIgnoreFilterOptions,\n ScriptRuntimeOptions,\n McpToolAnnotations,\n MetadataOptions,\n TerminalOptions {\n /**\n * Which provider to prefer when picking a model.\n */\n provider?: ModelProviderType;\n\n /**\n * Additional template parameters that will populate `env.vars`\n */\n parameters?: PromptParametersSchema;\n\n /**\n * A file path or list of file paths or globs.\n * The content of these files will be by the files selected in the UI by the user or the cli arguments.\n */\n files?: ElementOrArray;\n\n /**\n * A comma separated list of file extensions to accept.\n */\n accept?: OptionsOrString<\".md,.mdx\" | \"none\">;\n\n /**\n * Extra variable values that can be used to configure system prompts.\n */\n vars?: Record;\n\n /**\n * Tests to validate this script.\n */\n tests?: ElementOrArray;\n\n /**\n * Models to use with tests\n */\n testModels?: ElementOrArray;\n\n /**\n * LLM vulnerability checks\n */\n redteam?: PromptRedteam;\n\n /**\n * Don't show it to the user in lists. Template `system.*` are automatically unlisted.\n */\n unlisted?: boolean;\n\n /**\n * Set if this is a system prompt.\n */\n isSystem?: boolean;\n}\n/**\n * Represent a workspace file and optional content.\n */\n interface WorkspaceFile {\n /**\n * Name of the file, relative to project root.\n */\n filename: string;\n\n /**\n * Content mime-type if known\n */\n type?: string;\n\n /**\n * Encoding of the content\n */\n encoding?: \"base64\";\n\n /**\n * Content of the file.\n */\n content?: string;\n\n /**\n * Size in bytes if known\n */\n size?: number;\n}\n\n interface WorkspaceFileWithScore extends WorkspaceFile {\n /**\n * Score allocated by search algorithm\n */\n score?: number;\n}\n\n interface ToolDefinition {\n /**\n * The name of the function to be called. Must be a-z, A-Z, 0-9, or contain\n * underscores and dashes, with a maximum length of 64.\n */\n name: string;\n\n /**\n * A description of what the function does, used by the model to choose when and\n * how to call the function.\n */\n description?: string;\n\n /**\n * The parameters the functions accepts, described as a JSON Schema object. See the\n * [guide](https://platform.openai.com/docs/guides/text-generation/function-calling)\n * for examples, and the\n * [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for\n * documentation about the format.\n *\n * Omitting `parameters` defines a function with an empty parameter list.\n */\n parameters?: JSONSchema;\n}\n\n/**\n * Interface representing an output trace with various logging and tracing methods.\n * Extends the `ToolCallTrace` interface.\n */\n interface OutputTrace extends ToolCallTrace {\n /**\n * Logs a heading message at the specified level.\n * @param level - The level of the heading.\n * @param message - The heading message.\n */\n heading(level: number, message: string): void;\n\n /**\n * Logs an image with an optional caption.\n * @param url - The URL of the image.\n * @param caption - The optional caption for the image.\n */\n image(url: BufferLike, caption?: string): Promise;\n\n /**\n * Logs a markdown table\n * @param rows\n */\n table(rows: object[]): void;\n\n /**\n * Computes and renders diff between two files.\n */\n diff(\n left: string | WorkspaceFile,\n right: string | WorkspaceFile,\n options?: { context?: number },\n ): void;\n\n /**\n * Logs a result item with a boolean value and a message.\n * @param value - The boolean value of the result item.\n * @param message - The message for the result item.\n */\n resultItem(value: boolean, message: string): void;\n\n /**\n * Starts a trace with details in markdown format.\n * @param title - The title of the trace.\n * @param options - Optional settings for the trace.\n * @returns A `MarkdownTrace` instance.\n */\n startTraceDetails(title: string, options?: { expanded?: boolean }): OutputTrace;\n\n /**\n * Appends content to the trace.\n * @param value - The content to append.\n */\n appendContent(value: string): void;\n\n /**\n * Starts a details section in the trace.\n * @param title - The title of the details section.\n * @param options - Optional settings for the details section.\n */\n startDetails(title: string, options?: { success?: boolean; expanded?: boolean }): void;\n\n /**\n * Ends the current details section in the trace.\n */\n endDetails(): void;\n\n /**\n * Logs a video with a name, file path, and optional alt text.\n * @param name - The name of the video.\n * @param filepath - The file path of the video.\n * @param alt - The optional alt text for the video.\n */\n video(name: string, filepath: string, alt?: string): void;\n\n /**\n * Logs an audio file\n * @param name\n * @param filepath\n * @param alt\n */\n audio(name: string, filepath: string, alt?: string): void;\n\n /**\n * Logs a details section with a title and body.\n * @param title - The title of the details section.\n * @param body - The body content of the details section, can be a string or an object.\n * @param options - Optional settings for the details section.\n */\n details(\n title: string,\n body: string | object,\n options?: { success?: boolean; expanded?: boolean },\n ): void;\n\n /**\n * Logs a fenced details section with a title, body, and optional content type.\n * @param title - The title of the details section.\n * @param body - The body content of the details section, can be a string or an object.\n * @param contentType - The optional content type of the body.\n * @param options - Optional settings for the details section.\n */\n detailsFenced(\n title: string,\n body: string | object,\n contentType?: string,\n options?: { expanded?: boolean },\n ): void;\n\n /**\n * Logs an item with a name, value, and optional unit.\n * @param name - The name of the item.\n * @param value - The value of the item.\n * @param unit - The optional unit of the value.\n */\n itemValue(name: string, value: any, unit?: string): void;\n\n /**\n * Adds a url link item\n * @param name name url\n * @param url url. If missing, name is treated as the url.\n */\n itemLink(name: string, url?: string | URL, title?: string): void;\n\n /**\n * Writes a paragraph of text with empty lines before and after.\n * @param text paragraph to write\n */\n p(text: string): void;\n\n /**\n * Logs a warning message.\n * @param msg - The warning message to log.\n */\n warn(msg: string): void;\n\n /**\n * Logs a caution message.\n * @param msg - The caution message to log.\n */\n caution(msg: string): void;\n\n /**\n * Logs a note message.\n * @param msg - The note message to log.\n */\n note(msg: string): void;\n\n /**\n * Logs an error object\n * @param err\n */\n error(message: string, error?: unknown): void;\n}\n\n/**\n * Interface representing a tool call trace for logging various types of messages.\n */\n interface ToolCallTrace {\n /**\n * Logs a general message.\n * @param message - The message to log.\n */\n log(message: string): void;\n\n /**\n * Logs an item message.\n * @param message - The item message to log.\n */\n item(message: string): void;\n\n /**\n * Logs a tip message.\n * @param message - The tip message to log.\n */\n tip(message: string): void;\n\n /**\n * Logs a fenced message, optionally specifying the content type.\n * @param message - The fenced message to log.\n * @param contentType - The optional content type of the message.\n */\n fence(message: string | unknown, contentType?: string): void;\n}\n\n/**\n * Position (line, character) in a file. Both are 0-based.\n */\n type CharPosition = [number, number];\n\n/**\n * Describes a run of text.\n */\n type CharRange = [CharPosition, CharPosition];\n\n/**\n * 0-based line numbers.\n */\n type LineRange = [number, number];\n\n interface FileEdit {\n type: string;\n filename: string;\n label?: string;\n validated?: boolean;\n}\n\n interface ReplaceEdit extends FileEdit {\n type: \"replace\";\n range: CharRange | LineRange;\n text: string;\n}\n\n interface InsertEdit extends FileEdit {\n type: \"insert\";\n pos: CharPosition | number;\n text: string;\n}\n\n interface DeleteEdit extends FileEdit {\n type: \"delete\";\n range: CharRange | LineRange;\n}\n\n interface CreateFileEdit extends FileEdit {\n type: \"createfile\";\n overwrite?: boolean;\n ignoreIfExists?: boolean;\n text: string;\n}\n\n type Edits = InsertEdit | ReplaceEdit | DeleteEdit | CreateFileEdit;\n\n interface ToolCallContent {\n type?: \"content\";\n content: string;\n edits?: Edits[];\n}\n\n type ToolCallOutput =\n | string\n | number\n | boolean\n | ToolCallContent\n | ShellOutput\n | WorkspaceFile\n | RunPromptResult\n | SerializedError\n | undefined;\n\n interface WorkspaceFileCache {\n /**\n * Name of the cache\n */\n name: string;\n /**\n * Gets the value associated with the key, or undefined if there is none.\n * @param key\n */\n get(key: K): Promise;\n /**\n * Sets the value associated with the key.\n * @param key\n * @param value\n */\n set(key: K, value: V): Promise;\n\n /**\n * List the values in the cache.\n */\n values(): Promise;\n\n /**\n * Gets the sha of the key\n * @param key\n */\n getSha(key: K): Promise;\n\n /**\n * Gets an existing value or updates it with the updater function.\n */\n getOrUpdate(\n key: K,\n updater: () => Promise,\n validator?: (val: V) => boolean,\n ): Promise<{ key: string; value: V; cached?: boolean }>;\n}\n\n interface WorkspaceGrepOptions extends FilterGitFilesOptions {\n /**\n * List of paths to\n */\n path?: ElementOrArray;\n /**\n * list of filename globs to search. !-prefixed globs are excluded. ** are not supported.\n */\n glob?: ElementOrArray;\n /**\n * Read file content. default is true.\n */\n readText?: boolean;\n\n /**\n * Enable grep logging to discover what files are searched.\n */\n debug?: boolean;\n}\n\n interface WorkspaceGrepResult {\n files: WorkspaceFile[];\n matches: WorkspaceFile[];\n}\n\n interface INIParseOptions extends JSONSchemaValidationOptions {\n defaultValue?: any;\n}\n\n interface FilterGitFilesOptions {\n /**\n * Ignore workspace .gitignore instructions\n */\n applyGitIgnore?: false | undefined;\n}\n\n interface FindFilesOptions extends FilterGitFilesOptions {\n /** Glob patterns to ignore */\n ignore?: ElementOrArray;\n\n /**\n * Set to false to skip read text content. True by default\n */\n readText?: boolean;\n}\n\n interface FileStats {\n /**\n * Size of the file in bytes\n */\n size: number;\n mode: number;\n}\n\n interface JSONSchemaValidationOptions {\n schema?: JSONSchema;\n throwOnValidationError?: boolean;\n}\n\n interface WorkspaceFileSystem {\n /**\n * Searches for files using the glob pattern and returns a list of files.\n * Ignore `.env` files and apply `.gitignore` if present.\n * @param glob\n */\n findFiles(glob: ElementOrArray, options?: FindFilesOptions): Promise;\n\n /**\n * Performs a grep search over the files in the workspace using ripgrep.\n * @param pattern A string to match or a regex pattern.\n * @param options Options for the grep search.\n */\n grep(pattern: string | RegExp, options?: WorkspaceGrepOptions): Promise;\n grep(\n pattern: string | RegExp,\n glob: string,\n options?: Omit,\n ): Promise;\n\n /**\n * Reads metadata information about the file. Returns undefined if the file does not exist.\n * @param filename\n */\n stat(filename: string): Promise;\n\n /**\n * Reads the content of a file as text\n * @param path\n */\n readText(path: string | Awaitable): Promise;\n\n /**\n * Reads the content of a file and parses to JSON, using the JSON5 parser.\n * @param path\n */\n readJSON(\n path: string | Awaitable,\n options?: JSONSchemaValidationOptions,\n ): Promise;\n\n /**\n * Reads the content of a file and parses to YAML.\n * @param path\n */\n readYAML(\n path: string | Awaitable,\n options?: JSONSchemaValidationOptions,\n ): Promise;\n\n /**\n * Reads the content of a file and parses to XML, using the XML parser.\n */\n readXML(path: string | Awaitable, options?: XMLParseOptions): Promise;\n\n /**\n * Reads the content of a CSV file.\n * @param path\n */\n readCSV(\n path: string | Awaitable,\n options?: CSVParseOptions,\n ): Promise;\n\n /**\n * Reads the content of a file and parses to INI\n */\n readINI(path: string | Awaitable, options?: INIParseOptions): Promise;\n\n /**\n * Reads the content of a file and attempts to parse it as data.\n * @param path\n * @param options\n */\n readData(\n path: string | Awaitable,\n options?: CSVParseOptions & INIParseOptions & XMLParseOptions & JSONSchemaValidationOptions,\n ): Promise;\n\n /**\n * Appends text to a file as text to the file system. Creates the file if needed.\n * @param path\n * @param content\n */\n appendText(path: string, content: string): Promise;\n\n /**\n * Writes a file as text to the file system\n * @param path\n * @param content\n */\n writeText(path: string, content: string): Promise;\n\n /**\n * Caches a buffer to file and returns the unique file name\n * @param bytes\n */\n writeCached(\n bytes: BufferLike,\n options?: {\n scope?: \"workspace\" | \"run\";\n /**\n * Filename extension\n */\n ext?: string;\n },\n ): Promise;\n\n /**\n * Writes one or more files to the workspace\n * @param file a in-memory file or list of files\n */\n writeFiles(file: ElementOrArray): Promise;\n\n /**\n * Copies a file between two paths\n * @param source\n * @param destination\n */\n copyFile(source: string, destination: string): Promise;\n\n /**\n * Opens a file-backed key-value cache for the given cache name.\n * The cache is persisted across runs of the script. Entries are dropped when the cache grows too large.\n * @param cacheName\n */\n cache(cacheName: string): Promise>;\n}\n\n interface ToolCallContext {\n log(message: string): void;\n debug(message: string): void;\n trace: ToolCallTrace;\n}\n\n interface ToolCallback {\n spec: ToolDefinition;\n options?: DefToolOptions;\n generator?: ChatGenerationContext;\n impl: (args: { context: ToolCallContext } & Record) => Awaitable;\n}\n\n interface ChatContentPartText {\n /**\n * The text content.\n */\n text: string;\n\n /**\n * The type of the content part.\n */\n type: \"text\";\n}\n\n interface ChatContentPartImage {\n image_url: {\n /**\n * Either a URL of the image or the base64 encoded image data.\n */\n url: string;\n\n /**\n * Specifies the detail level of the image. Learn more in the\n * [Vision guide](https://platform.openai.com/docs/guides/vision#low-or-high-fidelity-image-understanding).\n */\n detail?: \"auto\" | \"low\" | \"high\";\n };\n\n /**\n * The type of the content part.\n */\n type: \"image_url\";\n}\n\n interface ChatContentPartInputAudio {\n input_audio: {\n /**\n * Base64 encoded audio data.\n */\n data: string;\n\n /**\n * The format of the encoded audio data. Currently supports \"wav\" and \"mp3\".\n */\n format: \"wav\" | \"mp3\";\n };\n\n /**\n * The type of the content part. Always `input_audio`.\n */\n type: \"input_audio\";\n}\n\n interface ChatContentPartFile {\n file: {\n /**\n * The base64 encoded file data, used when passing the file to the model as a\n * string.\n */\n file_data?: string;\n\n /**\n * The ID of an uploaded file to use as input.\n */\n file_id?: string;\n\n /**\n * The name of the file, used when passing the file to the model as a string.\n */\n filename?: string;\n };\n\n /**\n * The type of the content part. Always `file`.\n */\n type: \"file\";\n}\n\n interface ChatContentPartRefusal {\n /**\n * The refusal message generated by the model.\n */\n refusal: string;\n\n /**\n * The type of the content part.\n */\n type: \"refusal\";\n}\n\n interface ChatSystemMessage {\n /**\n * The contents of the system message.\n */\n content: string | ChatContentPartText[];\n\n /**\n * The role of the messages author, in this case `system`.\n */\n role: \"system\";\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n}\n\n/**\n * @deprecated\n */\n interface ChatFunctionMessage {\n content: string;\n name: string;\n role: \"function\";\n}\n\n interface ChatToolMessage {\n /**\n * The contents of the tool message.\n */\n content: string | ChatContentPartText[];\n\n /**\n * The role of the messages author, in this case `tool`.\n */\n role: \"tool\";\n\n /**\n * Tool call that this message is responding to.\n */\n tool_call_id: string;\n}\n\n interface ChatMessageToolCall {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n };\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n}\n\n interface ChatAssistantMessage {\n /**\n * The role of the messages author, in this case `assistant`.\n */\n role: \"assistant\";\n\n /**\n * The contents of the assistant message. Required unless `tool_calls` or\n * `function_call` is specified.\n */\n content?: string | (ChatContentPartText | ChatContentPartRefusal)[];\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n\n /**\n * The refusal message by the assistant.\n */\n refusal?: string | null;\n\n /**\n * The tool calls generated by the model, such as function calls.\n */\n tool_calls?: ChatMessageToolCall[];\n\n /**\n * The reasoning of the model\n */\n reasoning?: string;\n}\n\n type ChatContentPart =\n | ChatContentPartText\n | ChatContentPartImage\n | ChatContentPartInputAudio\n | ChatContentPartFile;\n\n interface ChatUserMessage {\n /**\n * The contents of the user message.\n */\n content: string | ChatContentPart[];\n\n /**\n * The role of the messages author, in this case `user`.\n */\n role: \"user\";\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n}\n\n type ChatMessage =\n | ChatSystemMessage\n | ChatUserMessage\n | ChatAssistantMessage\n | ChatToolMessage\n | ChatFunctionMessage;\n\n type ChatParticipantHandler = (\n /**\n * Prompt generation context to create a new message in the conversation\n */\n context: ChatTurnGenerationContext,\n /**\n * Chat conversation messages\n */\n messages: ChatMessage[],\n /**\n * The last assistant text, without\n * reasoning sections.\n */\n assistantText: string,\n) => Awaitable<{ messages?: ChatMessage[] } | undefined | void>;\n\n interface ChatParticipantOptions {\n label?: string;\n}\n\n interface ChatParticipant {\n generator: ChatParticipantHandler;\n options: ChatParticipantOptions;\n}\n\n/**\n * A set of text extracted from the context of the prompt execution\n */\n interface ExpansionVariables\n extends Required> {\n /**\n * Directory where the prompt is executed\n */\n dir: string;\n\n /**\n * Directory where output files (trace, output) are created\n */\n runDir: string;\n\n /**\n * Unique identifier for the run\n */\n runId: string;\n\n /**\n * List of linked files parsed in context\n */\n files: WorkspaceFile[];\n\n /**\n * User defined variables\n */\n vars: Record & {\n /**\n * When running in GitHub Copilot Chat, the current user prompt\n */\n question?: string;\n /**\n * When running in GitHub Copilot Chat, the current chat history\n */\n \"copilot.history\"?: (HistoryMessageUser | HistoryMessageAssistant)[];\n /**\n * When running in GitHub Copilot Chat, the current editor content\n */\n \"copilot.editor\"?: string;\n /**\n * When running in GitHub Copilot Chat, the current selection\n */\n \"copilot.selection\"?: string;\n /**\n * When running in GitHub Copilot Chat, the current terminal content\n */\n \"copilot.terminalSelection\"?: string;\n /**\n * Selected model identifier in GitHub Copilot Chat\n */\n \"copilot.model\"?: string;\n /**\n * selected text in active text editor\n */\n \"editor.selectedText\"?: string;\n };\n\n /**\n * List of secrets used by the prompt, must be registered in `genaiscript`.\n */\n secrets: Record;\n\n /**\n * Output trace builder\n */\n output: OutputTrace;\n\n /**\n * Resolved metadata\n */\n meta: PromptDefinition & ModelConnectionOptions;\n\n /**\n * The script debugger logger\n */\n dbg: DebugLogger;\n}\n\n type MakeOptional = Partial> & Omit;\n\n type PromptArgs = Omit<\n PromptScript,\n \"text\" | \"id\" | \"jsSource\" | \"defTools\" | \"resolvedSystem\"\n>;\n\n type PromptSystemArgs = Omit<\n PromptArgs,\n | \"model\"\n | \"embeddingsModel\"\n | \"temperature\"\n | \"topP\"\n | \"maxTokens\"\n | \"seed\"\n | \"tests\"\n | \"responseLanguage\"\n | \"responseType\"\n | \"responseSchema\"\n | \"files\"\n | \"modelConcurrency\"\n | \"redteam\"\n | \"metadata\"\n>;\n\n type StringLike = string | WorkspaceFile | WorkspaceFile[];\n\n interface LineNumberingOptions {\n /**\n * Prepend each line with a line numbers. Helps with generating diffs.\n */\n lineNumbers?: boolean;\n\n /**\n * Offset when number lines in output\n */\n lineNumbersStart?: number;\n}\n\n interface FenceOptions extends LineNumberingOptions, FenceFormatOptions {\n /**\n * Language of the fenced code block. Defaults to \"markdown\".\n */\n language?:\n | \"markdown\"\n | \"json\"\n | \"yaml\"\n | \"javascript\"\n | \"typescript\"\n | \"python\"\n | \"shell\"\n | \"toml\"\n | string;\n\n /**\n * JSON schema identifier\n */\n schema?: string;\n}\n\n type PromptCacheControlType = \"ephemeral\";\n\n interface ContextExpansionOptions {\n /**\n * Specifies an maximum of estimated tokens for this entry; after which it will be truncated.\n */\n maxTokens?: number;\n\n /*\n * Value that is conceptually similar to a zIndex (higher number == higher priority).\n * If a rendered prompt has more message tokens than can fit into the available context window, the prompt renderer prunes messages with the lowest priority from the ChatMessages result, preserving the order in which they were declared. This means your extension code can safely declare TSX components for potentially large pieces of context like conversation history and codebase context.\n */\n priority?: number;\n\n /**\n * Controls the proportion of tokens allocated from the container's budget to this element.\n * It defaults to 1 on all elements.\n */\n flex?: number;\n\n /**\n * Caching policy for this text. `ephemeral` means the prefix can be cached for a short amount of time.\n */\n cacheControl?: PromptCacheControlType;\n}\n\n interface RangeOptions {\n /**\n * The inclusive start of the line range, with a 1-based index\n */\n lineStart?: number;\n /**\n * The inclusive end of the line range, with a 1-based index\n */\n lineEnd?: number;\n}\n\n interface GitIgnoreFilterOptions {\n /**\n * Disable filtering files based on the `.gitignore` file.\n */\n ignoreGitIgnore?: true | undefined;\n}\n\n interface FileFilterOptions extends GitIgnoreFilterOptions {\n /**\n * Filename filter based on file suffix. Case insensitive.\n */\n endsWith?: ElementOrArray;\n\n /**\n * Filename filter using glob syntax.\n */\n glob?: ElementOrArray;\n}\n\n interface ContentSafetyOptions {\n /**\n * Configure the content safety provider.\n */\n contentSafety?: ContentSafetyProvider;\n /**\n * Runs the default content safety validator\n * to prevent prompt injection.\n */\n detectPromptInjection?: \"always\" | \"available\" | boolean;\n}\n\n interface PromptSystemSafetyOptions {\n /**\n * Policy to inject builtin system prompts. See to `false` prevent automatically injecting.\n */\n systemSafety?: \"default\" | boolean;\n}\n\n interface SecretDetectionOptions {\n /**\n * Policy to disable secret scanning when communicating with the LLM.\n * Set to `false` to disable.\n */\n secretScanning?: boolean;\n}\n\n interface DefOptions\n extends FenceOptions,\n ContextExpansionOptions,\n DataFilter,\n RangeOptions,\n FileFilterOptions,\n ContentSafetyOptions {\n /**\n * By default, throws an error if the value in def is empty.\n */\n ignoreEmpty?: boolean;\n\n /**\n * The content of the def is a predicted output.\n * This setting disables line numbers.\n */\n prediction?: boolean;\n}\n\n/**\n * Options for the `defDiff` command.\n */\n interface DefDiffOptions\n extends ContextExpansionOptions,\n FenceFormatOptions,\n LineNumberingOptions {}\n\n interface ImageTransformOptions {\n /**\n * Crops the image to the specified region.\n */\n crop?: { x?: number; y?: number; w?: number; h?: number };\n /**\n * Auto cropping same color on the edges of the image\n */\n autoCrop?: boolean;\n /**\n * Applies a scaling factor to the image after cropping.\n */\n scale?: number;\n /**\n * Rotates the image by the specified number of degrees.\n */\n rotate?: number;\n /**\n * Maximum width of the image. Applied after rotation.\n */\n maxWidth?: number;\n /**\n * Maximum height of the image. Applied after rotation.\n */\n maxHeight?: number;\n /**\n * Removes colors from the image using ITU Rec 709 luminance values\n */\n greyscale?: boolean;\n\n /**\n * Flips the image horizontally and/or vertically.\n */\n flip?: { horizontal?: boolean; vertical?: boolean };\n\n /**\n * Output mime\n */\n mime?: \"image/jpeg\" | \"image/png\";\n}\n\n interface DefImagesOptions extends ImageTransformOptions {\n /**\n * A \"low\" detail image is always downsampled to 512x512 pixels.\n */\n detail?: \"high\" | \"low\";\n /**\n * Selects the first N elements from the data\n */\n sliceHead?: number;\n /**\n * Selects the last N elements from the data\n */\n sliceTail?: number;\n /**\n * Selects the a random sample of N items in the collection.\n */\n sliceSample?: number;\n /**\n * Renders all images in a single tiled image\n */\n tiled?: boolean;\n\n /**\n * By default, throws an error if no images are passed.\n */\n ignoreEmpty?: boolean;\n}\n\n type JSONSchemaTypeName =\n | \"string\"\n | \"number\"\n | \"integer\"\n | \"boolean\"\n | \"object\"\n | \"array\"\n | \"null\";\n\n type JSONSchemaSimpleType =\n | JSONSchemaString\n | JSONSchemaNumber\n | JSONSchemaBoolean\n | JSONSchemaObject\n | JSONSchemaArray;\n\n type JSONSchemaType = JSONSchemaSimpleType | JSONSchemaAnyOf | null;\n\n interface JSONSchemaAnyOf {\n anyOf: JSONSchemaType[];\n uiGroup?: string;\n}\n\n interface JSONSchemaDescribed {\n /**\n * A short description of the property\n */\n title?: string;\n /**\n * A clear description of the property.\n */\n description?: string;\n\n /**\n * Moves the field to a sub-group in the form, potentially collapsed\n */\n uiGroup?: string;\n}\n\n interface JSONSchemaString extends JSONSchemaDescribed {\n type: \"string\";\n uiType?: \"textarea\";\n uiSuggestions?: string[];\n enum?: string[];\n default?: string;\n pattern?: string;\n}\n\n interface JSONSchemaNumber extends JSONSchemaDescribed {\n type: \"number\" | \"integer\";\n default?: number;\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n}\n\n interface JSONSchemaBoolean extends JSONSchemaDescribed {\n type: \"boolean\";\n uiType?: \"runOption\";\n default?: boolean;\n}\n\n interface JSONSchemaObject extends JSONSchemaDescribed {\n $schema?: string;\n type: \"object\";\n properties?: {\n [key: string]: JSONSchemaType;\n };\n required?: string[];\n additionalProperties?: boolean;\n\n default?: object;\n}\n\n interface JSONSchemaArray extends JSONSchemaDescribed {\n $schema?: string;\n type: \"array\";\n items?: JSONSchemaType;\n\n default?: any[];\n}\n\n type JSONSchema = JSONSchemaObject | JSONSchemaArray;\n\n interface FileEditValidation {\n /**\n * JSON schema\n */\n schema?: JSONSchema;\n /**\n * Error while validating the JSON schema\n */\n schemaError?: string;\n /**\n * The path was validated with a file output (defFileOutput)\n */\n pathValid?: boolean;\n}\n\n interface DataFrame {\n schema?: string;\n data: unknown;\n validation?: FileEditValidation;\n}\n\n interface Logprob {\n /**\n * Token text\n */\n token: string;\n /**\n * Log probably of the generated token\n */\n logprob: number;\n /**\n * Logprob value converted to %\n */\n probPercent?: number;\n /**\n * Normalized entropy\n */\n entropy?: number;\n /**\n * Other top tokens considered by the LLM\n */\n topLogprobs?: { token: string; logprob: number }[];\n}\n\n interface RunPromptUsage {\n /**\n * Estimated cost in $ of the generation\n */\n cost?: number;\n /**\n * Estimated duration of the generation\n * including multiple rounds with tools\n */\n duration?: number;\n /**\n * Number of tokens in the generated completion.\n */\n completion: number;\n\n /**\n * Number of tokens in the prompt.\n */\n prompt: number;\n /**\n * Total number of tokens used in the request (prompt + completion).\n */\n total: number;\n}\n\n interface RunPromptResult {\n messages: ChatMessage[];\n text: string;\n reasoning?: string;\n annotations?: Diagnostic[];\n fences?: Fenced[];\n frames?: DataFrame[];\n json?: any;\n error?: SerializedError;\n schemas?: Record;\n finishReason: \"stop\" | \"length\" | \"tool_calls\" | \"content_filter\" | \"cancel\" | \"fail\";\n fileEdits?: Record;\n edits?: Edits[];\n changelogs?: string[];\n model?: ModelType;\n choices?: Logprob[];\n logprobs?: Logprob[];\n perplexity?: number;\n uncertainty?: number;\n usage?: RunPromptUsage;\n}\n\n/**\n * Path manipulation functions.\n */\n interface Path {\n parse(path: string): {\n /**\n * The root of the path such as '/' or 'c:\\'\n */\n root: string;\n /**\n * The full directory path such as '/home/user/dir' or 'c:\\path\\dir'\n */\n dir: string;\n /**\n * The file name including extension (if any) such as 'index.html'\n */\n base: string;\n /**\n * The file extension (if any) such as '.html'\n */\n ext: string;\n /**\n * The file name without extension (if any) such as 'index'\n */\n name: string;\n };\n\n /**\n * Returns the last portion of a path. Similar to the Unix basename command.\n * @param path\n */\n dirname(path: string): string;\n\n /**\n * Returns the extension of the path, from the last '.' to end of string in the last portion of the path.\n * @param path\n */\n extname(path: string): string;\n\n /**\n * Returns the last portion of a path, similar to the Unix basename command.\n */\n basename(path: string, suffix?: string): string;\n\n /**\n * The path.join() method joins all given path segments together using the platform-specific separator as a delimiter, then normalizes the resulting path.\n * @param paths\n */\n join(...paths: string[]): string;\n\n /**\n * The path.normalize() method normalizes the given path, resolving '..' and '.' segments.\n */\n normalize(...paths: string[]): string;\n\n /**\n * The path.relative() method returns the relative path from from to to based on the current working directory. If from and to each resolve to the same path (after calling path.resolve() on each), a zero-length string is returned.\n */\n relative(from: string, to: string): string;\n\n /**\n * The path.resolve() method resolves a sequence of paths or path segments into an absolute path.\n * @param pathSegments\n */\n resolve(...pathSegments: string[]): string;\n\n /**\n * Determines whether the path is an absolute path.\n * @param path\n */\n isAbsolute(path: string): boolean;\n\n /**\n * Change the extension of a path\n * @param path\n * @param ext\n */\n changeext(path: string, ext: string): string;\n\n /**\n * Converts a file://... to a path\n * @param fileUrl\n */\n resolveFileURL(fileUrl: string): string;\n\n /**\n * Sanitize a string to be safe for use as a filename by removing directory paths and invalid characters.\n * @param path file path\n */\n sanitize(path: string): string;\n}\n\n interface Fenced {\n label: string;\n language?: string;\n content: string;\n args?: { schema?: string } & Record;\n\n validation?: FileEditValidation;\n}\n\n interface XMLParseOptions extends JSONSchemaValidationOptions {\n allowBooleanAttributes?: boolean;\n ignoreAttributes?: boolean;\n ignoreDeclaration?: boolean;\n ignorePiTags?: boolean;\n parseAttributeValue?: boolean;\n removeNSPrefix?: boolean;\n unpairedTags?: string[];\n}\n\n interface ParsePDFOptions {\n /**\n * Disable removing trailing spaces in text\n */\n disableCleanup?: boolean;\n /**\n * Render each page as an image\n */\n renderAsImage?: boolean;\n /**\n * Zoom scaling with rendering pages and figures\n */\n scale?: number;\n /**\n * Disable caching with cache: false\n */\n cache?: boolean;\n /**\n * Force system fonts use\n */\n useSystemFonts?: boolean;\n}\n\n interface HTMLToTextOptions {\n /**\n * After how many chars a line break should follow in `p` elements.\n *\n * Set to `null` or `false` to disable word-wrapping.\n */\n wordwrap?: number | false | null | undefined;\n}\n\n interface ParseXLSXOptions {\n // specific worksheet name\n sheet?: string;\n // Use specified range (A1-style bounded range string)\n range?: string;\n}\n\n interface WorkbookSheet {\n name: string;\n rows: object[];\n}\n\n interface ParseZipOptions {\n glob?: string;\n}\n\n type TokenEncoder = (text: string) => number[];\n type TokenDecoder = (lines: Iterable) => string;\n\n interface Tokenizer {\n model: string;\n /**\n * Number of tokens\n */\n size?: number;\n encode: TokenEncoder;\n decode: TokenDecoder;\n}\n\n interface CSVParseOptions extends JSONSchemaValidationOptions {\n delimiter?: string;\n headers?: string[];\n repair?: boolean;\n}\n\n interface TextChunk extends WorkspaceFile {\n lineStart: number;\n lineEnd: number;\n}\n\n interface TextChunkerConfig extends LineNumberingOptions {\n model?: ModelType;\n chunkSize?: number;\n chunkOverlap?: number;\n docType?: OptionsOrString<\n | \"cpp\"\n | \"python\"\n | \"py\"\n | \"java\"\n | \"go\"\n | \"c#\"\n | \"c\"\n | \"cs\"\n | \"ts\"\n | \"js\"\n | \"tsx\"\n | \"typescript\"\n | \"js\"\n | \"jsx\"\n | \"javascript\"\n | \"php\"\n | \"md\"\n | \"mdx\"\n | \"markdown\"\n | \"rst\"\n | \"rust\"\n >;\n}\n\n interface Tokenizers {\n /**\n * Estimates the number of tokens in the content. May not be accurate\n * @param model\n * @param text\n */\n count(text: string, options?: { model?: ModelType; approximate?: boolean }): Promise;\n\n /**\n * Truncates the text to a given number of tokens, approximation.\n * @param model\n * @param text\n * @param maxTokens\n * @param options\n */\n truncate(\n text: string,\n maxTokens: number,\n options?: { model?: ModelType; last?: boolean },\n ): Promise;\n\n /**\n * Tries to resolve a tokenizer for a given model. Defaults to gpt-4o if not found.\n * @param model\n */\n resolve(model?: ModelType): Promise;\n\n /**\n * Chunk the text into smaller pieces based on a token limit and chunking strategy.\n * @param text\n * @param options\n */\n chunk(file: Awaitable, options?: TextChunkerConfig): Promise;\n}\n\n interface HashOptions {\n /**\n * Algorithm used for hashing\n */\n algorithm?: \"sha-256\";\n /**\n * Trim hash to this number of character\n */\n length?: number;\n /**\n * Include genaiscript version in the hash\n */\n version?: boolean;\n /**\n * Optional salting of the hash\n */\n salt?: string;\n /**\n * Read the content of workspace files object into the hash\n */\n readWorkspaceFiles?: boolean;\n}\n\n interface VideoProbeResult {\n streams: {\n index: number;\n codec_name: string;\n codec_long_name: string;\n profile: string;\n codec_type: string;\n codec_tag_string: string;\n codec_tag: string;\n width?: number;\n height?: number;\n coded_width?: number;\n coded_height?: number;\n closed_captions?: number;\n film_grain?: number;\n has_b_frames?: number;\n sample_aspect_ratio?: string;\n display_aspect_ratio?: string;\n pix_fmt?: string;\n level?: number;\n color_range?: string;\n color_space?: string;\n color_transfer?: string;\n color_primaries?: string;\n chroma_location?: string;\n field_order?: string;\n refs?: number;\n is_avc?: string;\n nal_length_size?: number;\n id: string;\n r_frame_rate: string;\n avg_frame_rate: string;\n time_base: string;\n start_pts: number;\n start_time: number;\n duration_ts: number;\n duration: number;\n bit_rate: number;\n max_bit_rate: string;\n bits_per_raw_sample: number | string;\n nb_frames: number | string;\n nb_read_frames?: string;\n nb_read_packets?: string;\n extradata_size?: number;\n tags?: {\n creation_time: string;\n language?: string;\n handler_name: string;\n vendor_id?: string;\n encoder?: string;\n };\n disposition?: {\n default: number;\n dub: number;\n original: number;\n comment: number;\n lyrics: number;\n karaoke: number;\n forced: number;\n hearing_impaired: number;\n visual_impaired: number;\n clean_effects: number;\n attached_pic: number;\n timed_thumbnails: number;\n captions: number;\n descriptions: number;\n metadata: number;\n dependent: number;\n still_image: number;\n };\n sample_fmt?: string;\n sample_rate?: number;\n channels?: number;\n channel_layout?: string;\n bits_per_sample?: number | string;\n }[];\n format: {\n filename: string;\n nb_streams: number;\n nb_programs: number;\n format_name: string;\n format_long_name: string;\n start_time: number;\n duration: number;\n size: number;\n bit_rate: number;\n probe_score: number;\n tags: {\n major_brand: string;\n minor_version: string;\n compatible_brands: string;\n creation_time: string;\n };\n };\n}\n\n interface PDFPageImage extends WorkspaceFile {\n id: string;\n width: number;\n height: number;\n}\n\n interface PDFPage {\n index: number;\n content: string;\n image?: string;\n figures?: PDFPageImage[];\n}\n\n interface DocxParseOptions extends CacheOptions {\n /**\n * Desired output format\n */\n format?: \"markdown\" | \"text\" | \"html\";\n}\n\n interface EncodeIDsOptions {\n matcher?: RegExp;\n prefix?: string;\n open?: string;\n close?: string;\n}\n\n type GitIgnorer = (files: readonly (string | WorkspaceFile)[]) => string[];\n\n interface Parsers {\n /**\n * Parses text as a JSON5 payload\n */\n JSON5(\n content: string | WorkspaceFile,\n options?: { defaultValue?: any } & JSONSchemaValidationOptions,\n ): any | undefined;\n\n /**\n * Parses text generated by an LLM as JSON payload\n * @param content\n */\n JSONLLM(content: string): any | undefined;\n\n /**\n * Parses text or file as a JSONL payload. Empty lines are ignore, and JSON5 is used for parsing.\n * @param content\n */\n JSONL(content: string | WorkspaceFile): any[] | undefined;\n\n /**\n * Parses text as a YAML payload\n */\n YAML(\n content: string | WorkspaceFile,\n options?: { defaultValue?: any } & JSONSchemaValidationOptions,\n ): any | undefined;\n\n /**\n * Parses text as TOML payload\n * @param text text as TOML payload\n */\n TOML(\n content: string | WorkspaceFile,\n options?: { defaultValue?: any } & JSONSchemaValidationOptions,\n ): any | undefined;\n\n /**\n * Parses the front matter of a markdown file\n * @param content\n * @param defaultValue\n */\n frontmatter(\n content: string | WorkspaceFile,\n options?: {\n defaultValue?: any;\n format: \"yaml\" | \"json\" | \"toml\";\n } & JSONSchemaValidationOptions,\n ): any | undefined;\n\n /**\n * Parses a file or URL as PDF\n * @param content\n */\n PDF(\n content: string | WorkspaceFile,\n options?: ParsePDFOptions,\n ): Promise<\n | {\n /**\n * Reconstructed text content from page content\n */\n file: WorkspaceFile;\n /**\n * Page text content\n */\n pages: string[];\n /**\n * Rendered pages as images if `renderAsImage` is set\n */\n images?: string[];\n\n /**\n * Parse PDF content\n */\n data: PDFPage[];\n }\n | undefined\n >;\n\n /**\n * Parses a .docx file\n * @param content\n */\n DOCX(\n content: string | WorkspaceFile,\n options?: DocxParseOptions,\n ): Promise<{ file?: WorkspaceFile; error?: string }>;\n\n /**\n * Parses a CSV file or text\n * @param content\n */\n CSV(content: string | WorkspaceFile, options?: CSVParseOptions): object[] | undefined;\n\n /**\n * Parses a XLSX file and a given worksheet\n * @param content\n */\n XLSX(content: WorkspaceFile, options?: ParseXLSXOptions): Promise;\n\n /**\n * Parses a .env file\n * @param content\n */\n dotEnv(content: string | WorkspaceFile): Record;\n\n /**\n * Parses a .ini file\n * @param content\n */\n INI(content: string | WorkspaceFile, options?: INIParseOptions): any | undefined;\n\n /**\n * Parses a .xml file\n * @param content\n */\n XML(\n content: string | WorkspaceFile,\n options?: { defaultValue?: any } & XMLParseOptions,\n ): any | undefined;\n\n /**\n * Parses .vtt or .srt transcription files\n * @param content\n */\n transcription(content: string | WorkspaceFile): TranscriptionSegment[];\n\n /**\n * Convert HTML to text\n * @param content html string or file\n * @param options\n */\n HTMLToText(content: string | WorkspaceFile, options?: HTMLToTextOptions): Promise;\n\n /**\n * Convert HTML to markdown\n * @param content html string or file\n * @param options rendering options\n */\n HTMLToMarkdown(content: string | WorkspaceFile, options?: HTMLToMarkdownOptions): Promise;\n\n /**\n * Extracts the contents of a zip archive file\n * @param file\n * @param options\n */\n unzip(file: WorkspaceFile, options?: ParseZipOptions): Promise;\n\n /**\n * Parses fenced code sections in a markdown text\n */\n fences(content: string | WorkspaceFile): Fenced[];\n\n /**\n * Parses various format of annotations (error, warning, ...)\n * @param content\n */\n annotations(content: string | WorkspaceFile): Diagnostic[];\n\n /**\n * Parses and evaluates a math expression\n * @param expression math expression compatible with mathjs\n * @param scope object to read/write variables\n */\n math(expression: string, scope?: object): Promise;\n\n /**\n * Using the JSON schema, validates the content\n * @param schema JSON schema instance\n * @param content object to validate\n */\n validateJSON(schema: JSONSchema, content: any): FileEditValidation;\n\n /**\n * Renders a mustache template\n * @param text template text\n * @param data data to render\n */\n mustache(text: string | WorkspaceFile, data: Record): string;\n\n /**\n * Renders a jinja template\n */\n jinja(text: string | WorkspaceFile, data: Record): string;\n\n /**\n * Computes a diff between two files\n */\n diff(\n left: string | WorkspaceFile,\n right: string | WorkspaceFile,\n options?: DefDiffOptions,\n ): string;\n\n /**\n * Cleans up a dataset made of rows of data\n * @param rows\n * @param options\n */\n tidyData(rows: object[], options?: DataFilter): object[];\n\n /**\n * Applies a GROQ query to the data\n * @param data data object to filter\n * @param query query\n * @see https://groq.dev/\n */\n GROQ(query: string, data: any): Promise;\n\n /**\n * Computes a sha1 that can be used for hashing purpose, not cryptographic.\n * @param content content to hash\n */\n hash(content: any, options?: HashOptions): Promise;\n\n /**\n * Optionally removes a code fence section around the text\n * @param text\n * @param language\n */\n unfence(text: string, language?: ElementOrArray): string;\n\n /**\n * Erase ... tags\n * @param text\n */\n unthink(text: string): string;\n\n /**\n * Remove left indentation\n * @param text\n */\n dedent(templ: TemplateStringsArray | string, ...values: unknown[]): string;\n\n /**\n * Encodes ids in a text and returns the function to decode them\n * @param text\n * @param options\n */\n encodeIDs(\n text: string,\n options?: EncodeIDsOptions,\n ): {\n encoded: string;\n text: string;\n decode: (text: string) => string;\n matcher: RegExp;\n ids: Record;\n };\n\n /**\n * Parses a prompty file\n * @param file\n */\n prompty(file: WorkspaceFile): Promise;\n\n /**\n * Computes the Levenshtein distance between two strings or workspace files.\n */\n levenshtein(a: string | WorkspaceFile, b: string | WorkspaceFile): Promise;\n\n /**\n * Create a file filter using the `.gitignore` format from the given filenames.\n * @param filenames\n */\n ignore(...filenames: string[]): Promise;\n}\n\n interface YAMLObject {\n /**\n * Parses a YAML string into a JavaScript object using JSON5.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (strings: TemplateStringsArray, ...values: unknown[]): any;\n\n /**\n * Converts an object to its YAML representation\n * @param obj\n */\n stringify(obj: unknown): string;\n /**\n * Parses a YAML string to object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse(text: string | WorkspaceFile): any;\n}\n\n interface PromptyFrontmatter {\n name?: string;\n description?: string;\n version?: string;\n authors?: string[];\n tags?: string[];\n sample?: Record | string;\n inputs?: Record<\n string,\n | JSONSchemaArray\n | JSONSchemaNumber\n | JSONSchemaBoolean\n | JSONSchemaString\n | JSONSchemaObject\n | { type: \"list\" }\n >;\n outputs?: JSONSchemaObject;\n model?: {\n api?: \"chat\" | \"completion\";\n configuration?: {\n type?: string;\n name?: string;\n organization?: string;\n api_version?: string;\n azure_deployment: string;\n azure_endpoint: string;\n };\n parameters?: {\n response_format?: { type: \"json_object\" | \"json_schema\" };\n max_tokens?: number;\n temperature?: number;\n top_p?: number;\n n?: number;\n seed?: number;\n stream?: boolean; // ignored\n tools?: unknown[]; // ignored\n };\n };\n\n // unofficial\n files?: string | string[];\n tests?: PromptTest | PromptTest[];\n}\n\n interface PromptyDocument {\n meta: PromptArgs;\n frontmatter: PromptyFrontmatter;\n content: string;\n messages: ChatMessage[];\n}\n\n interface DiffFile {\n chunks: DiffChunk[];\n deletions: number;\n additions: number;\n from?: string;\n to?: string;\n oldMode?: string;\n newMode?: string;\n index?: string[];\n deleted?: true;\n new?: true;\n}\n\n interface DiffChunk {\n content: string;\n changes: DiffChange[];\n oldStart: number;\n oldLines: number;\n newStart: number;\n newLines: number;\n}\n\n interface DiffNormalChange {\n type: \"normal\";\n ln1: number;\n ln2: number;\n normal: true;\n content: string;\n}\n\n interface DiffAddChange {\n type: \"add\";\n add: true;\n ln: number;\n content: string;\n}\n\n interface DiffDeleteChange {\n type: \"del\";\n del: true;\n ln: number;\n content: string;\n}\n\n type DiffChangeType = \"normal\" | \"add\" | \"del\";\n\n type DiffChange = DiffNormalChange | DiffAddChange | DiffDeleteChange;\n\n interface DIFFObject {\n /**\n * Parses a diff string into a structured object\n * @param input\n */\n parse(input: string): DiffFile[];\n\n /**\n * Given a filename and line number (0-based), finds the chunk in the diff\n * @param file\n * @param range line index or range [start, end] inclusive\n * @param diff\n */\n findChunk(\n file: string,\n range: number | [number, number] | number[],\n diff: ElementOrArray,\n ): { file?: DiffFile; chunk?: DiffChunk } | undefined;\n\n /**\n * Creates a two file path\n * @param left\n * @param right\n * @param options\n */\n createPatch(\n left: string | WorkspaceFile,\n right: string | WorkspaceFile,\n options?: {\n context?: number;\n ignoreCase?: boolean;\n ignoreWhitespace?: boolean;\n },\n ): string;\n}\n\n interface XMLObject {\n /**\n * Parses an XML payload to an object\n * @param text\n */\n parse(text: string | WorkspaceFile, options?: XMLParseOptions): Promise;\n}\n\n interface JSONSchemaUtilities {\n /**\n * Infers a JSON schema from an object\n * @param obj\n * @deprecated Use `fromParameters` instead\n */\n infer(obj: any): Promise;\n\n /**\n * Converts a parameters schema to a JSON schema\n * @param parameters\n */\n fromParameters(parameters: PromptParametersSchema | undefined): JSONSchema;\n}\n\n interface HTMLTableToJSONOptions {\n useFirstRowForHeadings?: boolean;\n headers?: {\n from?: number;\n to: number;\n concatWith: string;\n };\n stripHtmlFromHeadings?: boolean;\n stripHtmlFromCells?: boolean;\n stripHtml?: boolean | null;\n forceIndexAsNumber?: boolean;\n countDuplicateHeadings?: boolean;\n ignoreColumns?: number[] | null;\n onlyColumns?: number[] | null;\n ignoreHiddenRows?: boolean;\n id?: string[] | null;\n headings?: string[] | null;\n containsClasses?: string[] | null;\n limitrows?: number | null;\n}\n\n interface HTMLToMarkdownOptions {\n disableGfm?: boolean;\n}\n\n interface HTMLObject {\n /**\n * Converts all HTML tables to JSON.\n * @param html\n * @param options\n */\n convertTablesToJSON(html: string, options?: HTMLTableToJSONOptions): Promise;\n /**\n * Converts HTML markup to plain text\n * @param html\n */\n convertToText(html: string): Promise;\n /**\n * Converts HTML markup to markdown\n * @param html\n */\n convertToMarkdown(html: string, options?: HTMLToMarkdownOptions): Promise;\n}\n\n interface GitCommit {\n sha: string;\n date: string;\n author: string;\n message: string;\n files: string[];\n}\n\n interface GitLogOptions {\n base?: string;\n head?: string;\n count?: number;\n merges?: boolean;\n author?: string;\n until?: string;\n after?: string;\n excludedGrep?: string | RegExp;\n paths?: ElementOrArray;\n excludedPaths?: ElementOrArray;\n}\n\n interface GitWorktree {\n /**\n * Path to the worktree\n */\n path: string;\n /**\n * Branch name associated with the worktree\n */\n branch: string;\n /**\n * Commit SHA the worktree is checked out to\n */\n head: string;\n /**\n * Whether the worktree is bare\n */\n bare?: boolean;\n /**\n * Whether the worktree is detached (not on a branch)\n */\n detached?: boolean;\n}\n\n interface GitWorktreeAddOptions {\n /**\n * Create a new branch with the worktree\n */\n branch?: string;\n /**\n * Force creation even if target exists\n */\n force?: boolean;\n /**\n * Checkout the branch into the worktree\n */\n checkout?: boolean;\n /**\n * Create an orphan branch\n */\n orphan?: boolean;\n /**\n * Detach HEAD at the commit\n */\n detach?: boolean;\n}\n\n interface Git {\n /**\n * Current working directory\n */\n cwd: string;\n\n /**\n * Resolves the default branch for this repository\n */\n defaultBranch(): Promise;\n\n /**\n * Gets the last tag in the repository\n */\n lastTag(): Promise;\n\n /**\n * Gets the current branch of the repository\n */\n branch(): Promise;\n\n /**\n * Executes a git command in the repository and returns the stdout\n * @param cmd\n */\n exec(\n args: string[] | string,\n options?: {\n label?: string;\n },\n ): Promise;\n\n /**\n * Git fetches the remote repository\n * @param options\n */\n fetch(\n remote?: OptionsOrString<\"origin\">,\n branchOrSha?: string,\n options?: {\n prune?: boolean;\n all?: boolean;\n },\n ): Promise;\n\n /**\n * Git pull the remote repository\n * @param options\n */\n pull(options?: { ff?: boolean }): Promise;\n\n /**\n * Lists the branches in the git repository\n */\n listBranches(): Promise;\n\n /**\n * Finds specific files in the git repository.\n * By default, work\n * @param options\n */\n listFiles(\n scope?: \"modified-base\" | \"staged\" | \"modified\",\n options?: {\n base?: string;\n /**\n * Ask the user to stage the changes if the diff is empty.\n */\n askStageOnEmpty?: boolean;\n paths?: ElementOrArray;\n excludedPaths?: ElementOrArray;\n },\n ): Promise;\n\n /**\n *\n * @param options\n */\n diff(options?: {\n staged?: boolean;\n /**\n * Ask the user to stage the changes if the diff is empty.\n */\n askStageOnEmpty?: boolean;\n base?: string;\n head?: string;\n paths?: ElementOrArray;\n excludedPaths?: ElementOrArray;\n unified?: number;\n nameOnly?: boolean;\n algorithm?: \"patience\" | \"minimal\" | \"histogram\" | \"myers\";\n ignoreSpaceChange?: boolean;\n extras?: string[];\n /**\n * Modifies the diff to be in a more LLM friendly format\n */\n llmify?: boolean;\n /**\n * Maximum of tokens before returning a name-only diff\n */\n maxTokensFullDiff?: number;\n }): Promise;\n\n /**\n * Lists the commits in the git repository\n */\n log(options?: GitLogOptions): Promise;\n\n /**\n * Run git blame on a file, line\n * @param filename\n * @param line\n */\n blame(filename: string, line: number): Promise;\n\n /**\n * Returns a list of files that have changed in the git repository\n * @param options\n */\n changedFiles(options?: GitLogOptions & { readText?: string }): Promise;\n\n /**\n * Create a shallow git clone\n * @param repository URL of the remote repository\n * @param options various clone options\n * @returns the path to the cloned repository\n */\n shallowClone(\n repository: string,\n options?: {\n /**\n * Branch to clone\n */\n branch?: string;\n\n /**\n * Do not reuse previous clone\n */\n force?: boolean;\n\n /**\n * Runs install command after cloning\n */\n install?: boolean;\n\n /**\n * Number of commits to fetch\n */\n depth?: number;\n },\n ): Promise;\n\n /**\n * Open a git client on a different directory\n * @param cwd working directory\n */\n client(cwd: string): Git;\n\n /**\n * List all git worktrees\n */\n listWorktrees(): Promise;\n\n /**\n * Add a new git worktree\n * @param path path where the worktree should be created\n * @param commitish commit, branch, or tag to checkout\n * @param options additional options for worktree creation\n * @returns Git client opened at the worktree path\n */\n addWorktree(path: string, commitish?: string, options?: GitWorktreeAddOptions): Promise;\n\n /**\n * Remove a git worktree\n * @param path path to the worktree to remove\n * @param options removal options\n */\n removeWorktree(\n path: string,\n options?: {\n force?: boolean;\n },\n ): Promise;\n}\n\n/**\n * A ffmpeg command builder. This instance is the 'native' fluent-ffmpeg command builder.\n */\n interface FfmpegCommandBuilder {\n seekInput(startTime: number | string): FfmpegCommandBuilder;\n duration(duration: number | string): FfmpegCommandBuilder;\n noVideo(): FfmpegCommandBuilder;\n noAudio(): FfmpegCommandBuilder;\n audioCodec(codec: string): FfmpegCommandBuilder;\n audioBitrate(bitrate: string | number): FfmpegCommandBuilder;\n audioChannels(channels: number): FfmpegCommandBuilder;\n audioFrequency(freq: number): FfmpegCommandBuilder;\n audioQuality(quality: number): FfmpegCommandBuilder;\n audioFilters(filters: string | string[] /* | AudioVideoFilter[]*/): FfmpegCommandBuilder;\n toFormat(format: string): FfmpegCommandBuilder;\n\n videoCodec(codec: string): FfmpegCommandBuilder;\n videoBitrate(bitrate: string | number, constant?: boolean): FfmpegCommandBuilder;\n videoFilters(filters: string | string[]): FfmpegCommandBuilder;\n outputFps(fps: number): FfmpegCommandBuilder;\n frames(frames: number): FfmpegCommandBuilder;\n keepDisplayAspectRatio(): FfmpegCommandBuilder;\n size(size: string): FfmpegCommandBuilder;\n aspectRatio(aspect: string | number): FfmpegCommandBuilder;\n autopad(pad?: boolean, color?: string): FfmpegCommandBuilder;\n\n inputOptions(...options: string[]): FfmpegCommandBuilder;\n outputOptions(...options: string[]): FfmpegCommandBuilder;\n}\n\n interface FFmpegCommandOptions extends CacheOptions {\n inputOptions?: ElementOrArray;\n outputOptions?: ElementOrArray;\n /**\n * For video conversion, output size as `wxh`\n */\n size?: string;\n}\n\n interface VideoExtractFramesOptions extends FFmpegCommandOptions {\n /**\n * A set of seconds or timestamps (`[[hh:]mm:]ss[.xxx]`)\n */\n timestamps?: number[] | string[];\n /**\n * Number of frames to extract\n */\n count?: number;\n /**\n * Extract frames on the start of each transcript segment\n */\n transcript?: TranscriptionResult | string;\n /**\n * Extract Intra frames (keyframes). This is a efficient and fast decoding.\n */\n keyframes?: boolean;\n /**\n * Picks frames that exceed scene threshold (between 0 and 1), typically between 0.2, and 0.5.\n * This is computationally intensive.\n */\n sceneThreshold?: number;\n /**\n * Output of the extracted frames\n */\n format?: OptionsOrString<\"jpeg\" | \"png\">;\n}\n\n interface VideoExtractClipOptions extends FFmpegCommandOptions {\n /**\n * Start time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`)\n */\n start: number | string;\n /**\n * Duration of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`).\n * You can also specify `end`.\n */\n duration?: number | string;\n /**\n * End time of the clip in seconds or timestamp (`[[hh:]mm:]ss[.xxx]`).\n * You can also specify `duration`.\n */\n end?: number | string;\n}\n\n interface VideoExtractAudioOptions extends FFmpegCommandOptions {\n /**\n * Optimize for speech-to-text transcription. Default is true.\n */\n transcription?: boolean;\n\n forceConversion?: boolean;\n}\n\n interface Ffmpeg {\n /**\n * Extracts metadata information from a video file using ffprobe\n * @param filename\n */\n probe(file: string | WorkspaceFile, options?: FFmpegCommandOptions): Promise;\n\n /**\n * Extracts frames from a video file\n * @param options\n */\n extractFrames(\n file: string | WorkspaceFile,\n options?: VideoExtractFramesOptions,\n ): Promise;\n\n /**\n * Extracts a clip from a video. Returns the generated video file path.\n */\n extractClip(file: string | WorkspaceFile, options: VideoExtractClipOptions): Promise;\n\n /**\n * Extract the audio track from a video\n * @param videoPath\n */\n extractAudio(file: string | WorkspaceFile, options?: VideoExtractAudioOptions): Promise;\n\n /**\n * Runs a ffmpeg command and returns the list of generated file names\n * @param input\n * @param builder manipulates the ffmpeg command and returns the output name\n */\n run(\n input: string | WorkspaceFile,\n builder: (\n cmd: FfmpegCommandBuilder,\n options?: { input: string; dir: string },\n ) => Awaitable,\n options?: FFmpegCommandOptions,\n ): Promise;\n}\n\n interface TranscriptionSegment {\n id?: string;\n start: number;\n end?: number;\n text: string;\n}\n\n interface GitHubOptions {\n owner: string;\n repo: string;\n baseUrl?: string;\n auth?: string;\n ref?: string;\n refName?: string;\n issueNumber?: number;\n runId?: string;\n runUrl?: string;\n}\n\n type GitHubWorkflowRunStatus =\n | \"completed\"\n | \"action_required\"\n | \"cancelled\"\n | \"failure\"\n | \"neutral\"\n | \"skipped\"\n | \"stale\"\n | \"success\"\n | \"timed_out\"\n | \"in_progress\"\n | \"queued\"\n | \"requested\"\n | \"waiting\"\n | \"pending\";\n\n interface GitHubNode {\n id: number;\n node_id: string;\n}\n\n interface GitHubWorkflowRun extends GitHubNode {\n run_number: number;\n name?: string;\n display_title: string;\n status: string;\n conclusion: string;\n html_url: string;\n created_at: string;\n head_branch: string;\n head_sha: string;\n workflow_id: number;\n run_started_at?: string;\n}\n\n interface GitHubWorkflowJob extends GitHubNode {\n run_id: number;\n status: string;\n conclusion: string;\n name: string;\n html_url: string;\n logs_url: string;\n logs: string;\n started_at: string;\n completed_at: string;\n content: string;\n}\n\n interface GitHubIssue extends GitHubNode {\n body?: string;\n title: string;\n number: number;\n state: string;\n state_reason?: \"completed\" | \"reopened\" | \"not_planned\" | null;\n html_url: string;\n draft?: boolean;\n reactions?: GitHubReactions;\n user: GitHubUser;\n assignee?: GitHubUser;\n labels?: (string | { name?: string })[];\n created_at: string;\n updated_at?: string;\n closed_at?: string;\n}\n\n type GitHubReactionType =\n | \"eyes\"\n | \"hooray\"\n | \"heart\"\n | \"rocket\"\n | \"confused\"\n | \"laugh\"\n | \"+1\"\n | \"-1\";\n\n interface GitHubRef {\n ref: string;\n url: string;\n}\n\n interface GitHubReactions {\n url: string;\n total_count: number;\n \"+1\": number;\n \"-1\": number;\n laugh: number;\n confused: number;\n heart: number;\n hooray: number;\n eyes: number;\n rocket: number;\n}\n\n interface GitHubReaction {\n id: number;\n user: GitHubUser;\n content: GitHubReactionType;\n created_at: string;\n}\n\n interface GitHubComment extends GitHubNode {\n body?: string;\n user: GitHubUser;\n created_at: string;\n updated_at: string;\n html_url: string;\n reactions?: GitHubReactions;\n}\n\n interface GitHubPullRequest extends GitHubIssue {\n head: {\n ref: string;\n };\n base: {\n ref: string;\n };\n}\n\n interface GitHubCodeSearchResult {\n name: string;\n path: string;\n sha: string;\n html_url: string;\n score: number;\n repository: string;\n}\n\n interface GitHubWorkflow extends GitHubNode {\n name: string;\n path: string;\n}\n\n interface GitHubPaginationOptions {\n /**\n * Default number of items to fetch, default is 50.\n */\n count?: number;\n}\n\n interface GitHubFile extends WorkspaceFile {\n type: \"file\" | \"dir\" | \"submodule\" | \"symlink\";\n size: number;\n}\n\n interface GitHubUser {\n login: string;\n}\n\n interface GitHubRelease {\n id: number;\n tag_name: string;\n name: string;\n draft?: boolean;\n prerelease?: boolean;\n html_url: string;\n published_at: string;\n body?: string;\n}\n\n interface GitHubGist {\n id: string;\n description?: string;\n created_at?: string;\n files: WorkspaceFile[];\n}\n\n interface GitHubArtifact {\n id: number;\n name: string;\n size_in_bytes: number;\n url: string;\n archive_download_url: string;\n expires_at: string;\n}\n\n interface GitHubIssueUpdateOptions {\n title?: string;\n body?: string;\n assignee?: string;\n state?: \"open\" | \"closed\";\n assignees?: string[];\n labels?: string[];\n}\n\n interface GitHubIssueCreateOptions {\n labels?: string[];\n}\n\n interface GitHubLabel {\n name: string;\n color?: string;\n description?: string;\n}\n\n interface GitHub {\n /**\n * Gets connection information for octokit\n */\n info(): Promise;\n\n /**\n * Gets the details of a GitHub workflow\n * @param workflowId\n */\n workflow(workflowId: number | string): Promise;\n\n /**\n * Lists workflows in a GitHub repository\n */\n listWorkflows(options?: GitHubPaginationOptions): Promise;\n\n /**\n * Lists workflow runs for a given workflow\n * @param workflowId\n * @param options\n */\n listWorkflowRuns(\n workflow_id: string | number,\n options?: {\n branch?: string;\n event?: string;\n status?: GitHubWorkflowRunStatus;\n } & GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Gets the details of a GitHub Action workflow run\n * @param runId\n */\n workflowRun(runId: number | string): Promise;\n\n /**\n * List artifacts for a given workflow run\n * @param runId\n */\n listWorkflowRunArtifacts(\n runId: number | string,\n options?: GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Gets the details of a GitHub Action workflow run artifact\n * @param artifactId\n */\n artifact(artifactId: number | string): Promise;\n\n /**\n * Downloads and unzips archive files from a GitHub Action Artifact\n * @param artifactId\n */\n downloadArtifactFiles(artifactId: number | string): Promise;\n\n /**\n * Downloads a GitHub Action workflow run log\n * @param runId\n */\n listWorkflowJobs(runId: number, options?: GitHubPaginationOptions): Promise;\n\n /**\n * Downloads a GitHub Action workflow run log\n * @param jobId\n */\n downloadWorkflowJobLog(jobId: number, options?: { llmify?: boolean }): Promise;\n\n /**\n * Diffs two GitHub Action workflow job logs\n */\n diffWorkflowJobLogs(job_id: number, other_job_id: number): Promise;\n\n /**\n * List labels in repository\n */\n listIssueLabels(issueNumber?: string | number): Promise;\n\n /**\n * Lists issues for a given repository\n * @param options\n */\n listIssues(\n options?: {\n state?: \"open\" | \"closed\" | \"all\";\n labels?: string;\n sort?: \"created\" | \"updated\" | \"comments\";\n direction?: \"asc\" | \"desc\";\n creator?: string;\n assignee?: string;\n since?: string;\n mentioned?: string;\n } & GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Lists gists for a given user\n */\n listGists(): Promise;\n\n /**\n * Gets the files of a gist\n * @param gist_id\n */\n getGist(gist_id: string): Promise;\n\n /**\n * Gets the details of a GitHub issue\n * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable.\n */\n getIssue(issueNumber?: number | string): Promise;\n\n /**\n * Assigns an existing issue to a bot user. Defaults to copilot user.\n */\n assignIssueToBot(\n issue_number: number | string,\n options?: { bot?: string },\n ): Promise<{ id: string; title: string }>;\n\n /**\n * Creates a new issue or pull request on GitHub\n */\n createIssue(\n title: string,\n body: string,\n options?: GitHubIssueCreateOptions,\n ): Promise;\n\n /**\n * Updates an issue or pull request on GitHub\n * @param issueNumber\n * @param options\n */\n updateIssue(\n issueNumber: number | string,\n options: GitHubIssueUpdateOptions,\n ): Promise;\n\n /**\n * Create a GitHub issue comment\n * @param issueNumber issue number (not the issue id!). If undefined, reads value from GITHUB_ISSUE environment variable.\n * @param body the body of the comment as Github Flavored markdown\n */\n createIssueComment(issueNumber: number | string, body: string): Promise;\n\n /**\n * Lists comments for a given issue\n * @param issue_number\n * @param options\n */\n listIssueComments(\n issue_number: number | string,\n options?: GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Updates a comment on a GitHub issue\n * @param comment_id\n * @param body the updated comment body\n */\n updateIssueComment(\n comment_id: number | string,\n body: string,\n options?: GitHubAIDisclaimerOptions,\n ): Promise;\n\n createReaction(\n type: \"issue\" | \"issueComment\" | \"pullRequestReviewComment\",\n id: number | string,\n reaction: GitHubReactionType,\n ): Promise;\n\n /**\n * Lists pull requests for a given repository\n * @param options\n */\n listPullRequests(\n options?: {\n state?: \"open\" | \"closed\" | \"all\";\n sort?: \"created\" | \"updated\" | \"popularity\" | \"long-running\";\n direction?: \"asc\" | \"desc\";\n } & GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Gets the details of a GitHub pull request\n * @param pull_number pull request number. Default resolves the pull request for the current branch.\n */\n getPullRequest(pull_number?: number | string): Promise;\n\n /**\n * Lists comments for a given pull request\n * @param pull_number\n * @param options\n */\n listPullRequestReviewComments(\n pull_number: number,\n options?: GitHubPaginationOptions,\n ): Promise;\n\n /**\n * Gets the content of a file from a GitHub repository\n * @param filepath\n * @param options\n */\n getFile(\n filepath: string,\n /**\n * commit sha, branch name or tag name\n */\n ref: string,\n ): Promise;\n\n /**\n * Searches code in a GitHub repository\n */\n searchCode(query: string, options?: GitHubPaginationOptions): Promise;\n\n /**\n * Lists branches in a GitHub repository\n */\n listBranches(options?: GitHubPaginationOptions): Promise;\n\n /**\n * Lists tags in a GitHub repository\n */\n listRepositoryLanguages(): Promise>;\n\n /**\n * List latest releases in a GitHub repository\n * @param options\n */\n listReleases(options?: GitHubPaginationOptions): Promise;\n\n /**\n * Lists tags in a GitHub repository\n */\n getRepositoryContent(\n path?: string,\n options?: {\n ref?: string;\n glob?: string;\n downloadContent?: boolean;\n maxDownloadSize?: number;\n type?: GitHubFile[\"type\"];\n },\n ): Promise;\n\n /**\n * Uploads a file to an orphaned branch in the repository and returns the raw url\n * Uploads a single copy of the file using hash as the name.\n * @param file file or data to upload\n * @param options\n */\n uploadAsset(\n file: BufferLike,\n options?: {\n branchName?: string;\n },\n ): Promise;\n\n /**\n * Resolves user uploaded assets to a short lived URL with access token. Returns undefined if the asset is not found.\n */\n resolveAssetUrl(url: string): Promise;\n\n /**\n * Executes a GraphQL query against the GitHub API. By default, injects the `owner`, `repo`, `ref` variables.\n * @param query\n * @param variables\n */\n graphql(query: string, variables?: Record): Promise;\n\n /**\n * Gets the underlying Octokit client\n */\n api(): Promise;\n\n /**\n * Opens a client to a different repository\n * @param owner\n * @param repo\n */\n client(owner: string, repo: string): GitHub;\n\n /**\n * Create a worktree for a specific GitHub pull request\n * @param pullNumber pull request number\n * @param path path where the worktree should be created\n * @param options additional options\n * @returns Git client opened at the worktree path\n */\n addWorktreeForPullRequest(\n pullNumber: number | string,\n path?: string,\n options?: GitWorktreeAddOptions,\n ): Promise;\n}\n\n interface MDObject {\n /**\n * Parses front matter from markdown\n * @param text\n */\n frontmatter(text: string | WorkspaceFile, format?: \"yaml\" | \"json\" | \"toml\" | \"text\"): any;\n\n /**\n * Removes the front matter from the markdown text\n */\n content(text: string | WorkspaceFile): string;\n\n /**\n * Merges frontmatter with the existing text\n * @param text\n * @param frontmatter\n * @param format\n */\n updateFrontmatter(text: string, frontmatter: unknown, format?: \"yaml\" | \"json\"): string;\n\n /**\n * Attempts to chunk markdown in text section in a way that does not splitting the heading structure.\n * @param text\n * @param options\n */\n chunk(\n text: string | WorkspaceFile,\n options?: { maxTokens?: number; model?: string; pageSeparator?: string },\n ): Promise;\n\n /**\n * Pretty prints object to markdown\n * @param value\n */\n stringify(\n value: unknown,\n options?: {\n quoteValues?: boolean;\n headings?: number;\n headingLevel?: number;\n },\n ): string;\n}\n\n interface GitHubAIDisclaimerOptions extends Record {}\n\n interface JSONLObject {\n /**\n * Parses a JSONL string to an array of objects\n * @param text\n */\n parse(text: string | WorkspaceFile): any[];\n /**\n * Converts objects to JSONL format\n * @param objs\n */\n stringify(objs: unknown[]): string;\n\n /**\n * Appends an object to a JSONL file\n * @param filename\n * @param obj\n */\n append(name: string, objs: ElementOrArray, meta?: any): Promise;\n}\n\n interface INIObject {\n /**\n * Parses a .ini file\n * @param text\n */\n parse(text: string | WorkspaceFile): any;\n\n /**\n * Converts an object to.ini string\n * @param value\n */\n stringify(value: any): string;\n}\n\n interface JSON5Object {\n /**\n * Parses a JSON/YAML/XML string to an object\n * @param text\n */\n parse(text: string | WorkspaceFile): any;\n\n /**\n * Renders an object to a JSON5-LLM friendly string\n * @param value\n */\n stringify(value: any): string;\n}\n\n interface CSVStringifyOptions {\n delimiter?: string;\n header?: boolean;\n}\n\n/**\n * Interface representing CSV operations.\n */\n interface CSVObject {\n /**\n * Parses a CSV string to an array of objects.\n *\n * @param text - The CSV string to parse.\n * @param options - Optional settings for parsing.\n * @param options.delimiter - The delimiter used in the CSV string. Defaults to ','.\n * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the first row.\n * @returns An array of objects representing the parsed CSV data.\n */\n parse(text: string | WorkspaceFile, options?: CSVParseOptions): object[];\n\n /**\n * Converts an array of objects to a CSV string.\n *\n * @param csv - The array of objects to convert.\n * @param options - Optional settings for stringifying.\n * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys.\n * @returns A CSV string representing the data.\n */\n stringify(csv: object[], options?: CSVStringifyOptions): string;\n\n /**\n * Converts an array of objects that represents a data table to a markdown table.\n *\n * @param csv - The array of objects to convert.\n * @param options - Optional settings for markdown conversion.\n * @param options.headers - An array of headers to use. If not provided, headers will be inferred from the object keys.\n * @returns A markdown string representing the data table.\n */\n markdownify(csv: object[], options?: { headers?: string[] }): string;\n\n /**\n * Splits the original array into chunks of the specified size.\n * @param csv\n * @param rows\n */\n chunk(csv: object[], size: number): { chunkStartIndex: number; rows: object[] }[];\n}\n\n/**\n * Provide service for responsible.\n */\n interface ContentSafety {\n /**\n * Service identifier\n */\n id: string;\n\n /**\n * Scans text for the risk of a User input attack on a Large Language Model.\n * If not supported, the method is not defined.\n */\n detectPromptInjection?(\n content: Awaitable | ElementOrArray>,\n ): Promise<{ attackDetected: boolean; filename?: string; chunk?: string }>;\n /**\n * Analyzes text for harmful content.\n * If not supported, the method is not defined.\n * @param content\n */\n detectHarmfulContent?(\n content: Awaitable | ElementOrArray>,\n ): Promise<{\n harmfulContentDetected: boolean;\n filename?: string;\n chunk?: string;\n }>;\n}\n\n interface HighlightOptions {\n maxLength?: number;\n}\n\n interface WorkspaceFileIndex {\n /**\n * Gets the index name\n */\n name: string;\n /**\n * Uploads or merges files into the index\n */\n insertOrUpdate: (file: ElementOrArray) => Promise;\n /**\n * Searches the index\n */\n search: (\n query: string,\n options?: { topK?: number; minScore?: number },\n ) => Promise;\n}\n\n interface VectorIndexOptions extends EmbeddingsModelOptions {\n /**\n * Type of database implementation.\n * - `local` uses a local database using embeddingsModel\n * - `azure_ai_search` uses Azure AI Search\n */\n type?: \"local\" | \"azure_ai_search\";\n version?: number;\n deleteIfExists?: boolean;\n chunkSize?: number;\n chunkOverlap?: number;\n\n /**\n * Max tokens in a request\n */\n maxTokens?: number;\n\n /**\n * Embeddings vector size\n */\n vectorSize?: number;\n /**\n * Override default embeddings cache name\n */\n cacheName?: string;\n /**\n * Cache salt to invalidate cache entries\n */\n cacheSalt?: string;\n}\n\n interface VectorSearchOptions extends VectorIndexOptions {\n /**\n * Maximum number of embeddings to use\n */\n topK?: number;\n /**\n * Minimum similarity score\n */\n minScore?: number;\n /**\n * Index to use\n */\n indexName?: string;\n}\n\n interface FuzzSearchOptions {\n /**\n * Controls whether to perform prefix search. It can be a simple boolean, or a\n * function.\n *\n * If a boolean is passed, prefix search is performed if true.\n *\n * If a function is passed, it is called upon search with a search term, the\n * positional index of that search term in the tokenized search query, and the\n * tokenized search query.\n */\n prefix?: boolean;\n /**\n * Controls whether to perform fuzzy search. It can be a simple boolean, or a\n * number, or a function.\n *\n * If a boolean is given, fuzzy search with a default fuzziness parameter is\n * performed if true.\n *\n * If a number higher or equal to 1 is given, fuzzy search is performed, with\n * a maximum edit distance (Levenshtein) equal to the number.\n *\n * If a number between 0 and 1 is given, fuzzy search is performed within a\n * maximum edit distance corresponding to that fraction of the term length,\n * approximated to the nearest integer. For example, 0.2 would mean an edit\n * distance of 20% of the term length, so 1 character in a 5-characters term.\n * The calculated fuzziness value is limited by the `maxFuzzy` option, to\n * prevent slowdown for very long queries.\n */\n fuzzy?: boolean | number;\n /**\n * Controls the maximum fuzziness when using a fractional fuzzy value. This is\n * set to 6 by default. Very high edit distances usually don't produce\n * meaningful results, but can excessively impact search performance.\n */\n maxFuzzy?: number;\n /**\n * Maximum number of results to return\n */\n topK?: number;\n /**\n * Minimum score\n */\n minScore?: number;\n}\n\n interface Retrieval {\n /**\n * Executers a web search with Tavily or Bing Search.\n * @param query\n */\n webSearch(\n query: string,\n options?: {\n count?: number;\n provider?: \"tavily\" | \"bing\";\n /**\n * Return undefined when no web search providers are present\n */\n ignoreMissingProvider?: boolean;\n },\n ): Promise;\n\n /**\n * Search using similarity distance on embeddings\n */\n vectorSearch(\n query: string,\n files: (string | WorkspaceFile) | (string | WorkspaceFile)[],\n options?: VectorSearchOptions,\n ): Promise;\n\n /**\n * Loads or creates a file index using a vector index\n * @param options\n */\n index(id: string, options?: VectorIndexOptions): Promise;\n\n /**\n * Performs a fuzzy search over the files\n * @param query keywords to search\n * @param files list of files\n * @param options fuzzing configuration\n */\n fuzzSearch(\n query: string,\n files: WorkspaceFile | WorkspaceFile[],\n options?: FuzzSearchOptions,\n ): Promise;\n}\n\n interface ArrayFilter {\n /**\n * Selects the first N elements from the data\n */\n sliceHead?: number;\n /**\n * Selects the last N elements from the data\n */\n sliceTail?: number;\n /**\n * Selects the a random sample of N items in the collection.\n */\n sliceSample?: number;\n}\n\n interface DataFilter extends ArrayFilter {\n /**\n * The keys to select from the object.\n * If a key is prefixed with -, it will be removed from the object.\n */\n headers?: ElementOrArray;\n /**\n * Removes items with duplicate values for the specified keys.\n */\n distinct?: ElementOrArray;\n /**\n * Sorts the data by the specified key(s)\n */\n sort?: ElementOrArray;\n}\n\n interface DefDataOptions\n extends Omit,\n FenceFormatOptions,\n DataFilter,\n ContentSafetyOptions {\n /**\n * Output format in the prompt. Defaults to Markdown table rendering.\n */\n format?: \"json\" | \"yaml\" | \"csv\";\n\n /**\n * GROQ query to filter the data\n * @see https://groq.dev/\n */\n query?: string;\n}\n\n interface DefSchemaOptions {\n /**\n * Output format in the prompt.\n */\n format?: \"typescript\" | \"json\" | \"yaml\";\n}\n\n type ChatFunctionArgs = { context: ToolCallContext } & Record;\n type ChatFunctionHandler = (args: ChatFunctionArgs) => Awaitable;\n type ChatMessageRole = \"user\" | \"assistant\" | \"system\";\n\n interface HistoryMessageUser {\n role: \"user\";\n content: string;\n}\n\n interface HistoryMessageAssistant {\n role: \"assistant\";\n name?: string;\n content: string;\n}\n\n interface WriteTextOptions extends ContextExpansionOptions {\n /**\n * Append text to the assistant response. This feature is not supported by all models.\n * @deprecated\n */\n assistant?: boolean;\n /**\n * Specifies the message role. Default is user\n */\n role?: ChatMessageRole;\n}\n\n type PromptGenerator = (ctx: ChatGenerationContext) => Awaitable;\n\n interface PromptGeneratorOptions\n extends ModelOptions,\n PromptSystemOptions,\n ContentSafetyOptions,\n SecretDetectionOptions,\n MetadataOptions {\n /**\n * Label for trace\n */\n label?: string;\n\n /**\n * Write file edits to the file system\n */\n applyEdits?: boolean;\n\n /**\n * Throws if the generation is not successful\n */\n throwOnError?: boolean;\n}\n\n interface FileOutputOptions {\n /**\n * Schema identifier to validate the generated file\n */\n schema?: string;\n}\n\n interface FileOutput {\n pattern: string[];\n description?: string;\n options?: FileOutputOptions;\n}\n\n interface ImportTemplateOptions {\n /**\n * Ignore unknown arguments\n */\n allowExtraArguments?: boolean;\n\n /**\n * Template engine syntax\n */\n format?: \"mustache\" | \"jinja\";\n}\n\n interface PromptTemplateString {\n /**\n * Set a priority similar to CSS z-index\n * to control the trimming of the prompt when the context is full\n * @param priority\n */\n priority(value: number): PromptTemplateString;\n /**\n * Sets the context layout flex weight\n */\n flex(value: number): PromptTemplateString;\n /**\n * Applies jinja template to the string lazily\n * @param data jinja data\n */\n jinja(data: Record): PromptTemplateString;\n /**\n * Applies mustache template to the string lazily\n * @param data mustache data\n */\n mustache(data: Record): PromptTemplateString;\n /**\n * Sets the max tokens for this string\n * @param tokens\n */\n maxTokens(tokens: number): PromptTemplateString;\n\n /**\n * Updates the role of the message\n */\n role(role: ChatMessageRole): PromptTemplateString;\n\n /**\n * Configure the cacheability of the prompt.\n * @param value cache control type\n */\n cacheControl(value: PromptCacheControlType): PromptTemplateString;\n}\n\n type ImportTemplateArgumentType =\n | Awaitable\n | (() => Awaitable);\n\n/**\n * Represents the context for generating a chat turn in a prompt template.\n * Provides methods for importing templates, writing text, adding assistant responses,\n * creating template strings, fencing code blocks, defining variables, and logging.\n */\n interface ChatTurnGenerationContext {\n importTemplate(\n files: ElementOrArray,\n templateArguments?: Record,\n options?: ImportTemplateOptions,\n ): void;\n writeText(body: Awaitable, options?: WriteTextOptions): void;\n assistant(text: Awaitable, options?: Omit): void;\n $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString;\n fence(body: StringLike, options?: FenceOptions): void;\n def(\n name: string,\n body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult,\n options?: DefOptions,\n ): string;\n defImages(files: ElementOrArray, options?: DefImagesOptions): void;\n defData(name: string, data: Awaitable, options?: DefDataOptions): string;\n defDiff(\n name: string,\n left: T,\n right: T,\n options?: DefDiffOptions,\n ): string;\n console: PromptGenerationConsole;\n}\n\n interface FileUpdate {\n before: string;\n after: string;\n validation?: FileEditValidation;\n}\n\n interface RunPromptResultPromiseWithOptions extends Promise {\n options(values?: PromptGeneratorOptions): RunPromptResultPromiseWithOptions;\n}\n\n interface DefToolOptions extends ContentSafetyOptions {\n /**\n * Maximum number of tokens per tool content response\n */\n maxTokens?: number;\n\n /**\n * Suffix to identify the variant instantiation of the tool\n */\n variant?: string;\n\n /**\n * Updated description for the variant\n */\n variantDescription?: string;\n\n /**\n * Intent of the tool that will be used for LLM judge validation of the output.\n * `description` uses the tool description as the intent.\n * If the intent is a function, it must build a LLM-as-Judge prompt that emits OK/ERR categories.\n */\n intent?:\n | OptionsOrString<\"description\">\n | ((options: {\n tool: ToolDefinition;\n args: any;\n result: string;\n generator: ChatGenerationContext;\n }) => Awaitable);\n}\n\n interface DefAgentOptions extends Omit, DefToolOptions {\n /**\n * Excludes agent conversation from agent memory\n */\n disableMemory?: boolean;\n\n /**\n * Disable memory query on each query (let the agent call the tool)\n */\n disableMemoryQuery?: boolean;\n}\n\n type ChatAgentHandler = (\n ctx: ChatGenerationContext,\n args: ChatFunctionArgs,\n) => Awaitable;\n\n interface McpToolSpecification {\n /**\n * Tool identifier\n */\n id: string;\n /**\n * The high level intent of the tool, which can be used for LLM judge validation.\n * `description` uses the tool description as the intent.\n */\n intent?: DefToolOptions[\"intent\"];\n}\n\n interface McpServerConfig extends ContentSafetyOptions {\n /**\n * The executable to run to start the server.\n * Required for stdio transport, not used for URL-based transports.\n */\n command?: OptionsOrString<\"npx\" | \"uv\" | \"uvx\" | \"dotnet\" | \"docker\" | \"cargo\">;\n /**\n * Command line arguments to pass to the executable.\n * Required for stdio transport, not used for URL-based transports.\n */\n args?: string[];\n /**\n * The URL to connect to for HTTP/WebSocket/SSE transports.\n * When provided, command and args are ignored.\n */\n url?: string;\n /**\n * The transport type to use. If not specified, will be inferred from the configuration.\n * - \"stdio\": Use StdioClientTransport (requires command and args)\n * - \"http\": Use StreamableHTTPClientTransport (requires url)\n * - \"sse\": Use SSEClientTransport (requires url)\n */\n type?: \"stdio\" | \"http\" | \"sse\";\n /**\n * The server version\n */\n version?: string;\n /**\n * The environment to use when spawning the process.\n *\n * If not specified, the result of getDefaultEnvironment() will be used.\n * Only used for stdio transport.\n */\n env?: Record;\n /**\n * The working directory to use when spawning the process.\n *\n * If not specified, the current working directory will be inherited.\n * Only used for stdio transport.\n */\n cwd?: string;\n\n /**\n * Do not prepend client identifier with the tool id.\n */\n disableToolIdMangling?: boolean;\n\n id: string;\n options?: DefToolOptions;\n\n /**\n * A list of allowed tools and their specifications. This filtering is applied\n * before computing the sha signature.\n */\n tools?: ElementOrArray;\n\n /**\n * The sha signature of the tools returned by the server.\n * If set, the tools will be validated against this sha.\n * This is used to ensure that the tools are not modified by the server.\n */\n toolsSha?: string;\n\n /**\n * Validates that each tool has responses related to their description.\n */\n intent?: DefToolOptions[\"intent\"];\n\n generator?: ChatGenerationContext;\n}\n\n type McpServersConfig = Record>;\n\n interface McpAgentServerConfig extends McpServerConfig {\n description: string;\n instructions?: string;\n /**\n * Maximum number of tokens per tool content response\n */\n maxTokens?: number;\n}\n\n type McpAgentServersConfig = Record>;\n\n type ZodTypeLike = { _def: any; safeParse: any; refine: any };\n\n type BufferLike =\n | string\n | WorkspaceFile\n | Buffer\n | Blob\n | ArrayBuffer\n | Uint8Array\n | ReadableStream\n | SharedArrayBuffer;\n\n type TranscriptionModelType = OptionsOrString<\n \"openai:whisper-1\" | \"openai:gpt-4o-transcribe\" | \"whisperasr:default\"\n>;\n\n interface ImageGenerationOptions extends ImageTransformOptions, RetryOptions {\n model?: OptionsOrString;\n /**\n * The quality of the image that will be generated.\n * auto (default value) will automatically select the best quality for the given model.\n * high, medium and low are supported for gpt-image-1.\n * high is supported for dall-e-3.\n * dall-e-2 ignores this flag\n */\n quality?: \"auto\" | \"low\" | \"medium\" | \"high\";\n /**\n * Image size.\n * For gpt-image-1: 1024x1024, 1536x1024 (landscape), 1024x1536 (portrait), or auto (default value)\n * For dall-e: 256x256, 512x512, or 1024x1024 for dall-e-2, and one of 1024x1024, 1792x1024.\n */\n size?: OptionsOrString<\n | \"auto\"\n | \"landscape\"\n | \"portrait\"\n | \"square\"\n | \"1536x1024\"\n | \"1024x1536\"\n | \"256x256\"\n | \"512x512\"\n | \"1024x1024\"\n | \"1024x1792\"\n | \"1792x1024\"\n >;\n /**\n * Only used for DALL-E 3\n */\n style?: OptionsOrString<\"vivid\" | \"natural\">;\n\n /**\n * For gpt-image-1 only, the type of image format to generate.\n */\n outputFormat?: \"png\" | \"jpeg\" | \"webp\";\n\n /**\n * Generation mode. Defaults to \"generate\".\n * - \"generate\": Create new images from text prompts\n * - \"edit\": Edit existing images using text prompts and optional masks\n */\n mode?: \"generate\" | \"edit\";\n\n /**\n * Input image for edit mode.\n * Required for \"edit\" mode.\n */\n image?: BufferLike;\n\n /**\n * Mask image for edit mode (optional).\n * Used to specify which parts of the image to edit.\n * Only applicable in \"edit\" mode.\n */\n mask?: BufferLike;\n}\n\n interface TranscriptionOptions extends CacheOptions, RetryOptions {\n /**\n * Model to use for transcription. By default uses the `transcribe` alias.\n */\n model?: TranscriptionModelType;\n\n /**\n * Translate to English.\n */\n translate?: boolean;\n\n /**\n * Input language in iso-639-1 format.\n * @see https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes\n */\n language?: string;\n\n /**\n * The sampling temperature, between 0 and 1.\n * Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.\n */\n temperature?: number;\n}\n\n interface TranscriptionResult {\n /**\n * Complete transcription text\n */\n text: string;\n /**\n * Error if any\n */\n error?: SerializedError;\n\n /**\n * SubRip subtitle string from segments\n */\n srt?: string;\n\n /**\n * WebVTT subtitle string from segments\n */\n vtt?: string;\n\n /**\n * Individual segments\n */\n segments?: (TranscriptionSegment & {\n /**\n * Seek offset of the segment\n */\n seek?: number;\n /**\n * Temperature used for the generation of the segment\n */\n temperature?: number;\n })[];\n}\n\n type SpeechModelType = OptionsOrString<\n \"openai:tts-1-hd\" | \"openai:tts-1\" | \"openai:gpt-4o-mini-tts\"\n>;\n\n type SpeechVoiceType = OptionsOrString<\n | \"alloy\"\n | \"ash\"\n | \"coral\"\n | \"echo\"\n | \"fable\"\n | \"onyx\"\n | \"nova\"\n | \"sage\"\n | \"shimmer\"\n | \"verse\"\n | \"ballad\"\n>;\n\n interface SpeechOptions extends CacheOptions, RetryOptions {\n /**\n * Speech to text model\n */\n model?: SpeechModelType;\n\n /**\n * Voice to use (model-specific)\n */\n voice?: SpeechVoiceType;\n\n /**\n * Control the voice of your generated audio with additional instructions. Does not work with tts-1 or tts-1-hd.\n */\n instructions?: string;\n}\n\n interface SpeechResult {\n /**\n * Generate audio-buffer file\n */\n filename?: string;\n /**\n * Error if any\n */\n error?: SerializedError;\n}\n\n interface ChatGenerationContext extends ChatTurnGenerationContext {\n env: ExpansionVariables;\n defSchema(name: string, schema: JSONSchema | ZodTypeLike, options?: DefSchemaOptions): string;\n defTool(\n tool: Omit | McpServersConfig | McpClient,\n options?: DefToolOptions,\n ): void;\n defTool(\n name: string,\n description: string,\n parameters: PromptParametersSchema | JSONSchema,\n fn: ChatFunctionHandler,\n options?: DefToolOptions,\n ): void;\n defAgent(\n name: string,\n description: string,\n fn: string | ChatAgentHandler,\n options?: DefAgentOptions,\n ): void;\n defChatParticipant(participant: ChatParticipantHandler, options?: ChatParticipantOptions): void;\n defFileOutput(\n pattern: ElementOrArray,\n description: string,\n options?: FileOutputOptions,\n ): void;\n runPrompt(\n generator: string | PromptGenerator,\n options?: PromptGeneratorOptions,\n ): Promise;\n prompt(strings: TemplateStringsArray, ...args: any[]): RunPromptResultPromiseWithOptions;\n defFileMerge(fn: FileMergeHandler): void;\n defOutputProcessor(fn: PromptOutputProcessorHandler): void;\n transcribe(\n audio: string | WorkspaceFile,\n options?: TranscriptionOptions,\n ): Promise;\n speak(text: string, options?: SpeechOptions): Promise;\n generateImage(\n prompt: string,\n options?: ImageGenerationOptions,\n ): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>;\n}\n\n interface ChatGenerationContextOptions {\n /**\n * Prompt generation context\n */\n generator?: ChatGenerationContext;\n}\n\n interface GenerationOutput {\n /**\n * full chat history\n */\n messages: ChatMessage[];\n\n /**\n * LLM output.\n */\n text: string;\n\n /**\n * Reasoning produced by model\n */\n reasoning?: string;\n\n /**\n * Parsed fence sections\n */\n fences: Fenced[];\n\n /**\n * Parsed data sections\n */\n frames: DataFrame[];\n\n /**\n * A map of file updates\n */\n fileEdits: Record;\n\n /**\n * Generated annotations\n */\n annotations: Diagnostic[];\n\n /**\n * Schema definition used in the generation\n */\n schemas: Record;\n\n /**\n * Output as JSON if parsable\n */\n json?: any;\n\n /**\n * Usage stats\n */\n usage?: RunPromptUsage;\n}\n\n type Point = {\n row: number;\n column: number;\n};\n\n interface DebugLogger {\n /**\n * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters:\n * - `%O`\tPretty-print an Object on multiple lines.\n * - `%o`\tPretty-print an Object all on a single line.\n * - `%s`\tString.\n * - `%d`\tNumber (both integer and float).\n * - `%j`\tJSON. Replaced with the string '[Circular]' if the argument contains circular references.\n * - `%%`\tSingle percent sign ('%'). This does not consume an argument.\n * @param category\n * @see https://www.npmjs.com/package/debug\n */\n (formatter: any, ...args: any[]): void;\n /**\n * Indicates if this logger is enabled\n */\n enabled: boolean;\n /**\n * The namespace of the logger provided when calling 'host.logger'\n */\n namespace: string;\n}\n\n interface LoggerHost {\n /**\n * Creates a debug logging function. Debug uses printf-style formatting. Below are the officially supported formatters:\n * - `%O`\tPretty-print an Object on multiple lines.\n * - `%o`\tPretty-print an Object all on a single line.\n * - `%s`\tString.\n * - `%d`\tNumber (both integer and float).\n * - `%j`\tJSON. Replaced with the string '[Circular]' if the argument contains circular references.\n * - `%%`\tSingle percent sign ('%'). This does not consume an argument.\n * @param category\n * @see https://www.npmjs.com/package/debug\n */\n logger(category: string): DebugLogger;\n}\n\n interface ShellOptions {\n cwd?: string;\n\n stdin?: string;\n\n /**\n * Process timeout in milliseconds, default is 60s\n */\n timeout?: number;\n /**\n * trace label\n */\n label?: string;\n\n /**\n * Ignore exit code errors\n */\n ignoreError?: boolean;\n\n /**\n * Additional environment variables to set for the process.\n */\n env?: Record;\n\n /**\n * Inject the content of 'env' exclusively\n */\n isolateEnv?: boolean;\n}\n\n interface ShellOutput {\n stdout?: string;\n stderr?: string;\n exitCode: number;\n failed?: boolean;\n}\n\n interface TimeoutOptions {\n /**\n * Maximum time in milliseconds. Default to no timeout\n */\n timeout?: number;\n}\n\n interface ShellSelectOptions {}\n\n interface ShellSelectChoice {\n name?: string;\n value: string;\n description?: string;\n}\n\n interface ShellInputOptions {\n required?: boolean;\n}\n\n interface ShellConfirmOptions {\n default?: boolean;\n}\n\n interface ShellHost {\n /**\n * Executes a shell command\n * @param command\n * @param args\n * @param options\n */\n exec(commandWithArgs: string, options?: ShellOptions): Promise;\n exec(command: string, args: string[], options?: ShellOptions): Promise;\n}\n\n interface McpToolReference {\n name: string;\n description?: string;\n inputSchema?: JSONSchema;\n}\n\n interface McpResourceReference {\n name?: string;\n description?: string;\n uri: string;\n mimeType?: string;\n}\n\n interface McpServerToolResultTextPart {\n type: \"text\";\n text: string;\n}\n\n interface McpServerToolResultImagePart {\n type: \"image\";\n data: string;\n mimeType: string;\n}\n\n interface McpServerToolResourcePart {\n type: \"resource\";\n text?: string;\n uri?: string;\n mimeType?: string;\n blob?: string;\n}\n\n type McpServerToolResultPart =\n | McpServerToolResultTextPart\n | McpServerToolResultImagePart\n | McpServerToolResourcePart;\n\n interface McpServerToolResult {\n isError?: boolean;\n content: McpServerToolResultPart[];\n text?: string;\n}\n\n interface McpClient extends AsyncDisposable {\n /**\n * Configuration of the server\n */\n readonly config: McpServerConfig;\n\n /**\n * Pings the server\n */\n ping(): Promise;\n\n /**\n * List all available MCP tools\n */\n listTools(): Promise;\n\n /**\n * Returns a list of tools that can be used in a chat session\n */\n listToolCallbacks(): Promise;\n\n /**\n * List resources available in the server\n */\n listResources(): Promise;\n\n /**\n * Reads the resource content\n */\n readResource(uri: string): Promise;\n\n /**\n *\n * @param name Call the MCP tool\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callTool(name: string, args: Record): Promise;\n\n /**\n * Closes clients and server.\n */\n dispose(): Promise;\n}\n\n interface McpHost {\n /**\n * Starts a Model Context Protocol server and returns a client.\n */\n mcpServer(config: McpServerConfig): Promise;\n}\n\n interface ResourceReference {\n uri: string; // Unique identifier for the resource\n name: string; // Human-readable name\n description?: string; // Optional description\n mimeType?: string; // Optional MIME type\n}\n\n interface ResourceHost {\n /**\n * Publishes a resource that will be exposed through the MCP server protocol.\n * @param content\n */\n publishResource(\n name: string,\n content: BufferLike,\n options?: Partial> & SecretDetectionOptions,\n ): Promise;\n\n /**\n * List available resource references\n */\n resources(): Promise;\n}\n\n interface UserInterfaceHost {\n /**\n * Asks the user to select between options\n * @param message question to ask\n * @param options options to select from\n */\n select(\n message: string,\n choices: (string | ShellSelectChoice)[],\n options?: ShellSelectOptions,\n ): Promise;\n\n /**\n * Asks the user to input a text\n * @param message message to ask\n */\n input(message: string, options?: ShellInputOptions): Promise;\n\n /**\n * Asks the user to confirm a message\n * @param message message to ask\n */\n confirm(message: string, options?: ShellConfirmOptions): Promise;\n}\n\n interface ContainerPortBinding {\n containerPort: OptionsOrString<\"8000/tcp\">;\n hostPort: string | number;\n}\n\n interface ContainerOptions {\n /**\n * Container image names.\n * @example python:alpine python:slim python\n * @see https://hub.docker.com/_/python/\n */\n image?: OptionsOrString<\"python:alpine\" | \"python:slim\" | \"python\" | \"node\" | \"gcc\">;\n\n /**\n * Enable networking in container (disabled by default)\n */\n networkEnabled?: boolean;\n\n /**\n * Environment variables in container. A null/undefined variable is removed from the environment.\n */\n env?: Record;\n\n /**\n * Assign the specified name to the container. Must match [a-zA-Z0-9_-]+.\n */\n name?: string;\n\n /**\n * Disable automatic purge of container and volume directory and potentially reuse with same name, configuration.\n */\n persistent?: boolean;\n\n /**\n * List of exposed TCP ports\n */\n ports?: ElementOrArray;\n\n /**\n * Commands to executes after the container is created\n */\n postCreateCommands?: ElementOrArray;\n}\n\n interface PromiseQueue {\n /**\n * Adds a new promise to the queue\n * @param fn\n */\n add(\n function_: (...arguments_: Arguments) => Awaitable,\n ...arguments_: Arguments\n ): Promise;\n\n /**\n * Runs all the functions in the queue with limited concurrency\n * @param fns\n */\n all(fns: (() => Awaitable)[]): Promise;\n\n /**\n * Applies a function to all the values in the queue with limited concurrency\n * @param values\n * @param fn\n */\n mapAll(\n values: T[],\n fn: (value: T, ...arguments_: Arguments) => Awaitable,\n ...arguments_: Arguments\n ): Promise;\n}\n\n interface LanguageModelReference {\n provider: ModelProviderType;\n model: ModelType;\n modelId: string;\n}\n\n interface LanguageModelInfo {\n id: ModelType;\n details?: string;\n url?: string;\n version?: string;\n /**\n * Base model name\n */\n family?: string;\n}\n\n interface LanguageModelProviderInfo {\n id: ModelProviderType;\n version?: string;\n error?: string;\n models: LanguageModelInfo[];\n base?: string;\n token?: string; // Optional token for the provider\n}\n\n interface LanguageModelHost {\n /**\n * Resolve a language model alias to a provider and model based on the current configuration\n * @param modelId\n */\n resolveLanguageModel(modelId?: ModelType): Promise;\n\n /**\n * Returns the status of the model provider and list of models if available\n */\n resolveLanguageModelProvider(\n provider: ModelProviderType,\n options?: {\n // If true, returns the list of models available in the provider\n listModels?: boolean;\n // If true, return the token\n token?: boolean;\n },\n ): Promise;\n}\n\n type ContentSafetyProvider = \"azure\";\n\n interface ContentSafetyHost {\n /**\n * Resolve a content safety client\n * @param id safety detection project\n */\n contentSafety(id?: ContentSafetyProvider): Promise;\n}\n\n interface RetryOptions {\n retryOn?: number[]; // HTTP status codes to retry on\n retries?: number; // Number of retry attempts\n retryDelay?: number; // Initial delay between retries\n maxDelay?: number; // Maximum delay between retries\n maxRetryAfter?: number; // Maximum retry-after in milliseconds before giving up\n}\n\n interface CacheOptions {\n /**\n * By default, LLM queries are not cached.\n * If true, the LLM request will be cached. Use a string to override the default cache name\n */\n cache?: boolean | string;\n}\n\n type FetchOptions = RequestInit & RetryOptions;\n\n type FetchTextOptions = Omit & {\n convert?: \"markdown\" | \"text\" | \"tables\";\n};\n\n interface PromptHost\n extends ShellHost,\n LoggerHost,\n McpHost,\n ResourceHost,\n UserInterfaceHost,\n LanguageModelHost,\n ContentSafetyHost {\n /**\n * A fetch wrapper with proxy, retry and timeout handling.\n */\n fetch(input: string | URL | globalThis.Request, init?: FetchOptions): Promise;\n\n /**\n * A function that fetches text from a URL or a file\n * @param url\n * @param options\n */\n fetchText(\n url: string | WorkspaceFile,\n options?: FetchTextOptions,\n ): Promise<{\n ok: boolean;\n status: number;\n text?: string;\n file?: WorkspaceFile;\n }>;\n\n /**\n * Opens a in-memory key-value cache for the given cache name. Entries are dropped when the cache grows too large.\n * @param cacheName\n */\n cache(cacheName: string): Promise>;\n\n /**\n * Starts a container\n * @param options container creation options\n */\n container(options?: ContainerOptions): Promise;\n\n /**\n * Create a new promise queue to run async functions with limited concurrency\n */\n promiseQueue(concurrency: number): PromiseQueue;\n\n /**\n * Gets a client to a Microsoft Teams channel from a share link URL;\n * uses `GENAISCRIPT_TEAMS_CHANNEL_URL` environment variable if `shareUrl` is not provided.\n * Uses Azure CLI login for authentication.\n * @param url\n */\n teamsChannel(shareUrl?: string): Promise;\n}\n\n interface WorkspaceFileWithDescription extends WorkspaceFile {\n /**\n * File description used for videos.\n */\n description?: string;\n}\n\n/**\n * A client to a messaging channel\n */\n interface MessageChannelClient {\n /**\n * Posts a message with attachments to the channel\n * @param message\n * @param options\n */\n postMessage(\n message: string,\n options?: {\n /**\n * File attachments that will be added in the channel folder\n */\n files?: (string | WorkspaceFileWithDescription)[];\n /**\n * Sets to false to remove AI generated disclaimer\n */\n disclaimer?: boolean | string;\n },\n ): Promise;\n}\n\n interface ContainerHost extends ShellHost {\n /**\n * Container unique identifier in provider\n */\n id: string;\n\n /**\n * Name assigned to the container. For persistent containers, also contains the sha of the options\n */\n name: string;\n\n /**\n * Disable automatic purge of container and volume directory\n */\n persistent: boolean;\n\n /**\n * Path to the volume mounted in the host\n */\n hostPath: string;\n\n /**\n * Writes a file as text to the container file system\n * @param path\n * @param content\n */\n writeText(path: string, content: string): Promise;\n\n /**\n * Reads a file as text from the container mounted volume\n * @param path\n */\n readText(path: string): Promise;\n\n /**\n * Copies a set of files into the container\n * @param fromHost glob matching files\n * @param toContainer directory in the container\n */\n copyTo(\n fromHost: string | string[],\n toContainer: string,\n options?: Omit,\n ): Promise;\n\n /**\n * List files in a directory in the container\n * @param dir\n */\n listFiles(dir: string): Promise;\n\n /**\n * Stops and cleans out the container\n */\n stop(): Promise;\n\n /**\n * Pause container\n */\n pause(): Promise;\n\n /**\n * Resume execution of the container\n */\n resume(): Promise;\n\n /**\n * Force disconnect network\n */\n disconnect(): Promise;\n\n /**\n * A promise queue of concurrency 1 to run serialized functions against the container\n */\n scheduler: PromiseQueue;\n}\n\n interface PromptContext extends ChatGenerationContext {\n script(options: PromptArgs): void;\n system(options: PromptSystemArgs): void;\n path: Path;\n retrieval: Retrieval;\n workspace: WorkspaceFileSystem;\n host: PromptHost;\n}\n\n type RuntimePromptContext = Pick<\n PromptContext,\n | \"host\"\n | \"env\"\n | \"workspace\"\n | \"retrieval\"\n | \"prompt\"\n | \"runPrompt\"\n | \"generateImage\"\n | \"transcribe\"\n | \"speak\"\n>;\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// keep in sync with PromptContext!\n\n/**\n * Console functions\n */\ndeclare let console: PromptGenerationConsole;\n\n/**\n * Setup prompt title and other parameters.\n * Exactly one call should be present on top of .genai.mts file.\n */\ndeclare function script(options: PromptArgs): void;\n\n/**\n * Equivalent of script() for system prompts.\n */\ndeclare function system(options: PromptSystemArgs): void;\n\n/**\n * Imports template prompt file and expands arguments in it.\n * @param files\n * @param arguments\n */\ndeclare function importTemplate(\n files: ElementOrArray,\n arguments?: Record,\n options?: ImportTemplateOptions,\n): void;\n\n/**\n * Append given string to the prompt. It automatically appends \"\\n\".\n * Typically best to use `` $`...` ``-templates instead.\n */\ndeclare function writeText(body: Awaitable, options?: WriteTextOptions): void;\n\n/**\n * Append given string to the prompt as an assistant message.\n */\ndeclare function assistant(\n text: Awaitable,\n options?: Omit,\n): void;\n\n/**\n * Append given string to the prompt. It automatically appends \"\\n\".\n * `` $`foo` `` is the same as `text(\"foo\")`.\n */\ndeclare function $(strings: TemplateStringsArray, ...args: any[]): PromptTemplateString;\n\n/**\n * Appends given (often multi-line) string to the prompt, surrounded in fences.\n * Similar to `text(env.fence); text(body); text(env.fence)`\n *\n * @param body string to be fenced\n */\ndeclare function fence(body: StringLike, options?: FenceOptions): void;\n\n/**\n * Defines `name` to be the (often multi-line) string `body`.\n * Similar to `text(name + \":\"); fence(body, language)`\n *\n * @param name name of defined entity, eg. \"NOTE\" or \"This is text before NOTE\"\n * @param body string to be fenced/defined\n * @returns variable name\n */\ndeclare function def(\n name: string,\n body: string | WorkspaceFile | WorkspaceFile[] | ShellOutput | Fenced | RunPromptResult,\n options?: DefOptions,\n): string;\n\n/**\n * Declares a file that is expected to be generated by the LLM\n * @param pattern file name or glob-like path\n * @param description description of the file, used by the model to choose when and how to call the function\n * @param options expectations about the generated file content\n */\ndeclare function defFileOutput(\n pattern: ElementOrArray,\n description?: string,\n options?: FileOutputOptions,\n): void;\n\n/**\n * Declares a tool that can be called from the prompt.\n * @param tool Agentic tool function.\n * @param name The name of the tool to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.\n * @param description A description of what the function does, used by the model to choose when and how to call the function.\n * @param parameters The parameters the tool accepts, described as a JSON Schema object.\n * @param fn callback invoked when the LLM requests to run this function\n */\ndeclare function defTool(\n tool: Omit | McpServersConfig,\n options?: DefToolOptions,\n): void;\ndeclare function defTool(\n name: string,\n description: string,\n parameters: PromptParametersSchema | JSONSchema,\n fn: ChatFunctionHandler,\n options?: DefToolOptions,\n): void;\n\n/**\n * Declares a LLM agent tool that can be called from the prompt.\n * @param name name of the agent, do not prefix with agent\n * @param description description of the agent, used by the model to choose when and how to call the agent\n * @param fn prompt generation context\n * @param options additional options for the agent LLM\n */\ndeclare function defAgent(\n name: string,\n description: string,\n fn: string | ChatAgentHandler,\n options?: DefAgentOptions,\n): void;\n\n/**\n * Registers a callback to be called when a file is being merged\n * @param fn\n */\ndeclare function defFileMerge(fn: FileMergeHandler): void;\n\n/**\n * Variables coming from the fragment on which the prompt is operating.\n */\ndeclare let env: ExpansionVariables;\n\n/**\n * Path manipulation functions.\n */\ndeclare let path: Path;\n\n/**\n * A set of parsers for well-known file formats\n */\ndeclare let parsers: Parsers;\n\n/**\n * Retrieval Augmented Generation services\n */\ndeclare let retrieval: Retrieval;\n\n/**\n * Access to the workspace file system.\n */\ndeclare let workspace: WorkspaceFileSystem;\n\n/**\n * YAML parsing and stringifying functions.\n */\ndeclare let YAML: YAMLObject;\n\n/**\n * INI parsing and stringifying.\n */\ndeclare let INI: INIObject;\n\n/**\n * CSV parsing and stringifying.\n */\ndeclare let CSV: CSVObject;\n\n/**\n * XML parsing and stringifying.\n */\ndeclare let XML: XMLObject;\n\n/**\n * HTML parsing\n */\ndeclare let HTML: HTMLObject;\n\n/**\n * Markdown and frontmatter parsing.\n */\ndeclare let MD: MDObject;\n\n/**\n * JSONL parsing and stringifying.\n */\ndeclare let JSONL: JSONLObject;\n\n/**\n * JSON5 parsing\n */\ndeclare let JSON5: JSON5Object;\n\n/**\n * JSON Schema utilities\n */\ndeclare let JSONSchema: JSONSchemaUtilities;\n\n/**\n * Diff utilities\n */\ndeclare let DIFF: DIFFObject;\n\n/**\n * Access to current LLM chat session information\n */\ndeclare let host: PromptHost;\n\n/**\n * Access to GitHub queries for the current repository\n */\ndeclare let github: GitHub;\n\n/**\n * Access to Git operations for the current repository\n */\ndeclare let git: Git;\n\n/**\n * Access to ffmpeg operations\n */\ndeclare let ffmpeg: Ffmpeg;\n\n/**\n * Computation around tokens\n */\ndeclare let tokenizers: Tokenizers;\n\n/**\n * @deprecated use `host.fetchText` instead\n */\ndeclare function fetchText(\n url: string | WorkspaceFile,\n options?: FetchTextOptions,\n): Promise<{ ok: boolean; status: number; text?: string; file?: WorkspaceFile }>;\n\n/**\n * Declares a JSON schema variable.\n * @param name name of the variable\n * @param schema JSON schema instance\n * @returns variable name\n */\ndeclare function defSchema(\n name: string,\n schema: JSONSchema | ZodTypeLike,\n options?: DefSchemaOptions,\n): string;\n\n/**\n * Adds images to the prompt\n * @param files\n * @param options\n */\ndeclare function defImages(files: ElementOrArray, options?: DefImagesOptions): void;\n\n/**\n * Renders a table or object in the prompt\n * @param name\n * @param data\n * @param options\n * @returns variable name\n */\ndeclare function defData(\n name: string,\n data: Awaitable,\n options?: DefDataOptions,\n): string;\n\n/**\n * Renders a diff of the two given values\n * @param left\n * @param right\n * @param options\n */\ndeclare function defDiff(\n name: string,\n left: T,\n right: T,\n options?: DefDiffOptions,\n): string;\n\n/**\n * Cancels the current prompt generation/execution with the given reason.\n * @param reason\n */\ndeclare function cancel(reason?: string): void;\n\n/**\n * Expands and executes prompt\n * @param generator\n */\ndeclare function runPrompt(\n generator: string | PromptGenerator,\n options?: PromptGeneratorOptions,\n): Promise;\n\n/**\n * Expands and executes the prompt\n */\ndeclare function prompt(\n strings: TemplateStringsArray,\n ...args: any[]\n): RunPromptResultPromiseWithOptions;\n\n/**\n * Registers a callback to process the LLM output\n * @param fn\n */\ndeclare function defOutputProcessor(fn: PromptOutputProcessorHandler): void;\n\n/**\n * Registers a chat participant\n * @param participant\n */\ndeclare function defChatParticipant(\n participant: ChatParticipantHandler,\n options?: ChatParticipantOptions,\n): void;\n\n/**\n * Transcribes audio to text.\n * @param audio An audio file to transcribe.\n * @param options\n */\ndeclare function transcribe(\n audio: string | WorkspaceFile,\n options?: TranscriptionOptions,\n): Promise;\n\n/**\n * Converts text to speech.\n * @param text\n * @param options\n */\ndeclare function speak(text: string, options?: SpeechOptions): Promise;\n\n/**\n * Generate an image and return the workspace file.\n * @param prompt\n * @param options\n */\ndeclare function generateImage(\n prompt: string,\n options?: ImageGenerationOptions,\n): Promise<{ image: WorkspaceFile; revisedPrompt?: string }>;\n" +}); +export const githubCopilotInstructions = "---\napplyTo: \"**/*.genai.*\"\ndescription: \"Instructions for working with GenAIScript files\"\n---\n\n## GenAIScript Code Generation Instructions\n\nGenAIScript is a custom runtime for node.js. It provides a set of unique APIs and support the TypeScript syntax, ESM, await/async.\n\n- GenAIScript documentation: https://microsoft.github.io/genaiscript/llms-full.txt\n- GenAIScript ambient type definitions: https://microsoft.github.io/genaiscript/genaiscript.d.ts\n\n## Guidance for Code Generation\n\n- you always generate TypeScript code using ESM modules for Node.JS.\n- you prefer using APIs from GenAIScript `genaiscript.d.ts` rather than node.js. Do NOT use node.js imports.\n- you keep the code simple, avoid exception handlers or error checking.\n- you add `TODOs` where you are unsure so that the user can review them\n- you use the global types in genaiscript.d.ts are already loaded in the global context, no need to import them.\n- save generated code in the `./genaisrc` folder with `.genai.mts` extension\n"; +export const promptFooDriver = "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { pathToFileURL } from \"node:url\";\n\nfunction deleteUndefinedValues(o) {\n if (typeof o === \"object\" && !Array.isArray(o))\n for (const k in o) if (o[k] === undefined) delete o[k];\n return o;\n}\n\n/**\n * GenAIScript PromptFoo Custom Provider\n *\n * Do not edit, auto-generated.\n *\n */\nclass GenAIScriptApiProvider {\n constructor(options) {\n this.config = options.config || {};\n this.providerId =\n options.id ||\n `genaiscript/${this.config.model || \"large\"}/${this.config.smallModel || \"small\"}/${this.config.visionModel || \"vision\"}`;\n this.label = `genaiscript ${this.config.model || \"large\"}, ${this.config.smallModel || \"small\"}, ${this.config.visionModel || \"vision\"}`;\n }\n\n id() {\n return this.providerId;\n }\n\n async callApi(scriptId, context, callOptions) {\n const { logger } = context;\n try {\n const files = context.vars.files; // string or string[]\n const workspaceFiles = context.vars.workspaceFiles; // WorkspaceFile or WorkspaceFile[]\n const fileContent = context.vars.fileContent; // string\n\n let { cli, ...options } = structuredClone(this.config);\n options.runTries = 2;\n options.runTrace = false;\n options.outputTrace = false;\n options.lobprobs = !!callOptions?.includeLogProbs;\n\n const testVars = context.vars.vars; // {}\n if (testVars && typeof testVars === \"object\")\n options.vars = { ...(this.config.vars || []), ...testVars };\n if (process.platform === \"win32\" && !cli.startsWith(\"file://\")) cli = pathToFileURL(cli).href;\n if (workspaceFiles)\n options.workspaceFiles = Array.isArray(workspaceFiles) ? workspaceFiles : [workspaceFiles];\n if (fileContent) {\n if (!options.workspaceFiles) options.workspaceFiles = [];\n options.workspaceFiles.push({\n filename: \"\",\n content: fileContent,\n });\n }\n const api = await import(\"@genaiscript/api\");\n const res = await api.run(scriptId, files, options);\n if (!res) throw new Error(\"No response from GenAIScript API\");\n const { error, stats, logprobs, finishReason } = res || {};\n const cost = stats?.cost;\n const logProbs = logprobs?.length ? logprobs.map((lp) => lp.logprob) : undefined;\n const isRefusal = finishReason === \"refusal\" || finishReason === \"content_filter\";\n\n /*\n https://www.promptfoo.dev/docs/configuration/reference/#providerresponse\n */\n const pres = deleteUndefinedValues({\n error: error?.message,\n cost,\n tokenUsage: stats\n ? deleteUndefinedValues({\n total: stats.total_tokens,\n prompt: stats.prompt_tokens,\n completion: stats.completion_tokens,\n cached: stats.prompt_tokens_details?.cached_tokens,\n })\n : undefined,\n logProbs,\n isRefusal,\n output: res,\n });\n return pres;\n } catch (e) {\n logger.error(e);\n return {\n output: { text: \"\" },\n error: e?.message || e + \"\",\n };\n }\n }\n}\n\nexport default GenAIScriptApiProvider;\n"; +//# sourceMappingURL=default_prompts.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/default_prompts.js.map b/packages/core/.tshy-build/browser/default_prompts.js.map new file mode 100644 index 0000000000..483e2293e7 --- /dev/null +++ b/packages/core/.tshy-build/browser/default_prompts.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default_prompts.js","sourceRoot":"","sources":["../../src/default_prompts.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAyB;IACnE,eAAe,EAAE,mXAAmX;IACpY,eAAe,EAAE,6nBAA6nB;IAC9oB,kBAAkB,EAAE,4s0IAA4s0I;CACnu0I,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,igCAAigC,CAAA;AAE1iC,MAAM,CAAC,MAAM,eAAe,GAAG,+uGAA+uG,CAAA"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/diff.d.ts b/packages/core/.tshy-build/browser/diff.d.ts new file mode 100644 index 0000000000..bd15b1559b --- /dev/null +++ b/packages/core/.tshy-build/browser/diff.d.ts @@ -0,0 +1,52 @@ +import parseDiff from "parse-diff"; +import type { DiffChunk, DiffFile, ElementOrArray, WorkspaceFile } from "./types.js"; +/** + * Parses a diff string into a structured format. + * + * @param input - The diff string to parse. Should be in a valid diff format. + * @returns An array of parsed file objects. If the input is empty or invalid, returns an empty array. + */ +export declare function diffParse(input: string): parseDiff.File[]; +/** + * Resolves the input into an array of DiffFile objects. + * + * @param input - The input to resolve. Can be a diff string in valid format or an ElementOrArray of DiffFile objects. + * @returns An array of DiffFile objects. If the input is a string, it is parsed into DiffFile objects using diffParse. If the input is already an ElementOrArray of DiffFile objects, it is converted to an array using arrayify. + */ +export declare function diffResolve(input: string | ElementOrArray): DiffFile[]; +/** + * Attempts to parse a diff string into a structured format. + * If parsing fails, logs the error message and returns an empty array. + * + * @param diff - The diff string to parse. + * @returns An array of parsed file objects if successful, or an empty array if parsing fails. Logs an error message if parsing fails. + */ +export declare function tryDiffParse(diff: string): parseDiff.File[]; +/** + * Creates a unified diff between two workspace files. + * If the input is a string, it is wrapped in a WorkspaceFile object with a default filename. + * If the input is an object, it should contain a filename and content. + * + * @param left - The original workspace file or its content. If a string, it is wrapped in a WorkspaceFile object with the filename "left". + * @param right - The modified workspace file or its content. If a string, it is wrapped in a WorkspaceFile object with the filename "right". + * @param options - Optional parameters, such as the number of context lines, case sensitivity, and whitespace handling. Defaults to ignoring case and whitespace. Additional options can be provided. + * @returns The diff as a string, with redundant headers removed. The diff is generated using createTwoFilesPatch. + */ +export declare function diffCreatePatch(left: string | WorkspaceFile, right: string | WorkspaceFile, options?: { + context?: number; + ignoreCase?: boolean; + ignoreWhitespace?: boolean; +}): string; +/** + * Finds a chunk in a diff corresponding to a specified file and line number. + * + * @param file - The file path to search for in the diff. Can be empty to search all files. + * @param range - The line number or numbers (zero-based) to locate in the specified file's diff. + * @param diff - The diff data, containing an array of file diffs. Can be a single diff file or an array of diff files. + * @returns An object containing the matching file and the chunk if found, or an object with only the file if no chunk matches. Returns undefined if no file matches. + */ +export declare function diffFindChunk(file: string, range: number | [number, number], diff: ElementOrArray): { + file?: DiffFile; + chunk?: DiffChunk; +} | undefined; +//# sourceMappingURL=diff.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/diff.d.ts.map b/packages/core/.tshy-build/browser/diff.d.ts.map new file mode 100644 index 0000000000..57a78e1374 --- /dev/null +++ b/packages/core/.tshy-build/browser/diff.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,YAAY,CAAC;AAMnC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIrF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,oBAItC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAGhF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,oBAOxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,UAkBF;AAeD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,GAC7B;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAqBpD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/diff.js b/packages/core/.tshy-build/browser/diff.js new file mode 100644 index 0000000000..04fd0b6ae3 --- /dev/null +++ b/packages/core/.tshy-build/browser/diff.js @@ -0,0 +1,116 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import parseDiff from "parse-diff"; +import { arrayify, isEmptyString } from "./cleaners.js"; +import debug from "debug"; +import { errorMessage } from "./error.js"; +import { createTwoFilesPatch } from "diff"; +import { resolve } from "node:path"; +const dbg = debug("genaiscript:diff"); +/** + * Parses a diff string into a structured format. + * + * @param input - The diff string to parse. Should be in a valid diff format. + * @returns An array of parsed file objects. If the input is empty or invalid, returns an empty array. + */ +export function diffParse(input) { + if (isEmptyString(input)) + return []; + const files = parseDiff(input); + return files; +} +/** + * Resolves the input into an array of DiffFile objects. + * + * @param input - The input to resolve. Can be a diff string in valid format or an ElementOrArray of DiffFile objects. + * @returns An array of DiffFile objects. If the input is a string, it is parsed into DiffFile objects using diffParse. If the input is already an ElementOrArray of DiffFile objects, it is converted to an array using arrayify. + */ +export function diffResolve(input) { + if (typeof input === "string") + return diffParse(input); + else + return arrayify(input); +} +/** + * Attempts to parse a diff string into a structured format. + * If parsing fails, logs the error message and returns an empty array. + * + * @param diff - The diff string to parse. + * @returns An array of parsed file objects if successful, or an empty array if parsing fails. Logs an error message if parsing fails. + */ +export function tryDiffParse(diff) { + try { + return diffParse(diff); + } + catch (e) { + dbg(`diff parsing failed: ${errorMessage(e)}`); + return []; + } +} +/** + * Creates a unified diff between two workspace files. + * If the input is a string, it is wrapped in a WorkspaceFile object with a default filename. + * If the input is an object, it should contain a filename and content. + * + * @param left - The original workspace file or its content. If a string, it is wrapped in a WorkspaceFile object with the filename "left". + * @param right - The modified workspace file or its content. If a string, it is wrapped in a WorkspaceFile object with the filename "right". + * @param options - Optional parameters, such as the number of context lines, case sensitivity, and whitespace handling. Defaults to ignoring case and whitespace. Additional options can be provided. + * @returns The diff as a string, with redundant headers removed. The diff is generated using createTwoFilesPatch. + */ +export function diffCreatePatch(left, right, options) { + if (typeof left === "string") + left = { filename: "left", content: left }; + if (typeof right === "string") + right = { filename: "right", content: right }; + const res = createTwoFilesPatch(left?.filename || "", right?.filename || "", left?.content || "", right?.content || "", undefined, undefined, { + ignoreCase: true, + ignoreWhitespace: true, + ...(options ?? {}), + }); + return res.replace(/^[^=]*={10,}\n/, ""); +} +/** + * Determines if two number ranges overlap. + * + * @param start1 - Start of first range. + * @param end1 - End of first range (inclusive). + * @param start2 - Start of second range. + * @param end2 - End of second range (inclusive). + * @returns True if the ranges overlap, false otherwise. + */ +function rangesOverlap(start1, end1, start2, end2) { + return Math.max(start1, start2) <= Math.min(end1, end2); +} +/** + * Finds a chunk in a diff corresponding to a specified file and line number. + * + * @param file - The file path to search for in the diff. Can be empty to search all files. + * @param range - The line number or numbers (zero-based) to locate in the specified file's diff. + * @param diff - The diff data, containing an array of file diffs. Can be a single diff file or an array of diff files. + * @returns An object containing the matching file and the chunk if found, or an object with only the file if no chunk matches. Returns undefined if no file matches. + */ +export function diffFindChunk(file, range, diff) { + // line is zero-based! + const fn = file ? resolve(file) : undefined; + const df = arrayify(diff).find((f) => (!file && !f.to) || resolve(f.to) === fn); + if (!df) + return undefined; // file not found in diff + const { chunks } = df; + const lines = arrayify(range); + if (lines.length === 0) + return { file: df }; // no lines to search for + if (lines.length === 1) + lines[1] = lines[0]; // if only one line, make it a range + if (lines[0] > lines[1]) { + // if the range is inverted, swap it + const tmp = lines[0]; + lines[0] = lines[1]; + lines[1] = tmp; + } + for (const chunk of chunks) { + if (rangesOverlap(lines[0], lines[1], chunk.newStart, chunk.newStart + chunk.newLines)) + return { file: df, chunk }; + } + return { file: df }; +} +//# sourceMappingURL=diff.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/diff.js.map b/packages/core/.tshy-build/browser/diff.js.map new file mode 100644 index 0000000000..b8073f8c92 --- /dev/null +++ b/packages/core/.tshy-build/browser/diff.js.map @@ -0,0 +1 @@ +{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dispose.d.ts b/packages/core/.tshy-build/browser/dispose.d.ts new file mode 100644 index 0000000000..b01bb2b7d8 --- /dev/null +++ b/packages/core/.tshy-build/browser/dispose.d.ts @@ -0,0 +1,12 @@ +import type { TraceOptions } from "./trace.js"; +import type { ElementOrArray } from "./types.js"; +/** + * Disposes of the provided disposables by invoking their `Symbol.asyncDispose` method. + * + * @param disposables - A single disposable or an array of disposables to be released. Undefined values are ignored. + * @param options - Configuration object containing trace utilities for logging errors. + * + * Logs errors encountered during disposal using `logError` and the provided trace's error method. + */ +export declare function dispose(disposables: ElementOrArray, options?: TraceOptions): Promise; +//# sourceMappingURL=dispose.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dispose.d.ts.map b/packages/core/.tshy-build/browser/dispose.d.ts.map new file mode 100644 index 0000000000..7f84601d01 --- /dev/null +++ b/packages/core/.tshy-build/browser/dispose.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../src/dispose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,iBAYjG"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dispose.js b/packages/core/.tshy-build/browser/dispose.js new file mode 100644 index 0000000000..2b883aefbf --- /dev/null +++ b/packages/core/.tshy-build/browser/dispose.js @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { arrayify } from "./cleaners.js"; +import { logError } from "./util.js"; +/** + * Disposes of the provided disposables by invoking their `Symbol.asyncDispose` method. + * + * @param disposables - A single disposable or an array of disposables to be released. Undefined values are ignored. + * @param options - Configuration object containing trace utilities for logging errors. + * + * Logs errors encountered during disposal using `logError` and the provided trace's error method. + */ +export async function dispose(disposables, options) { + const { trace } = options || {}; + for (const disposable of arrayify(disposables)) { + if (typeof disposable === "object" && disposable[Symbol.asyncDispose]) { + try { + await disposable[Symbol.asyncDispose](); + } + catch (e) { + logError(e); + trace?.error(e); + } + } + } +} +//# sourceMappingURL=dispose.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dispose.js.map b/packages/core/.tshy-build/browser/dispose.js.map new file mode 100644 index 0000000000..9db613d0c0 --- /dev/null +++ b/packages/core/.tshy-build/browser/dispose.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dispose.js","sourceRoot":"","sources":["../../src/dispose.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,WAA4C,EAAE,OAAsB;IAChG,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAChC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/docx.d.ts b/packages/core/.tshy-build/browser/docx.d.ts new file mode 100644 index 0000000000..f5f34b3f4e --- /dev/null +++ b/packages/core/.tshy-build/browser/docx.d.ts @@ -0,0 +1,14 @@ +import type { TraceOptions } from "./trace.js"; +import type { DocxParseOptions, WorkspaceFile } from "./types.js"; +/** + * Parses a DOCX file and converts its content to text, HTML, or markdown format. Uses Mammoth for processing. + * + * @param file - The DOCX file to parse, either as a path string or a WorkspaceFile object. + * @param options - Optional parameters including trace for logging, cache control, and output format (default is "markdown"). If cache is enabled, attempts to retrieve cached results. + * @returns An object containing the parsed file content or an error message in case of failure. If caching is enabled and an error occurs, attempts to return cached results. + */ +export declare function DOCXTryParse(file: string | WorkspaceFile, options?: TraceOptions & DocxParseOptions): Promise<{ + file?: WorkspaceFile; + error?: string; +}>; +//# sourceMappingURL=docx.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/docx.d.ts.map b/packages/core/.tshy-build/browser/docx.d.ts.map new file mode 100644 index 0000000000..dd7ea3173e --- /dev/null +++ b/packages/core/.tshy-build/browser/docx.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../src/docx.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgBlE;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,OAAO,CAAC,EAAE,YAAY,GAAG,gBAAgB,GACxC,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsEnD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/docx.js b/packages/core/.tshy-build/browser/docx.js new file mode 100644 index 0000000000..6c444d011b --- /dev/null +++ b/packages/core/.tshy-build/browser/docx.js @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { join } from "node:path"; +import { DOCX_HASH_LENGTH } from "./constants.js"; +import { hash } from "./crypto.js"; +import { resolveRuntimeHost } from "./host.js"; +import { HTMLToMarkdown } from "./html.js"; +import { logVerbose } from "./util.js"; +import { readFile, writeFile } from "node:fs/promises"; +import { YAMLStringify } from "./yaml.js"; +import { errorMessage, serializeError } from "./error.js"; +import { resolveFileBytes } from "./filebytes.js"; +import { filenameOrFileToFilename } from "./unwrappers.js"; +import { ensureDir } from "./fs.js"; +import { measure } from "./performance.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +async function computeHashFolder(filename, content, options) { + const { trace, ...rest } = options || {}; + const h = await hash([filename, content, rest], { + readWorkspaceFiles: true, + version: true, + length: DOCX_HASH_LENGTH, + }); + return dotGenaiscriptPath("cache", "docx", h); +} +/** + * Parses a DOCX file and converts its content to text, HTML, or markdown format. Uses Mammoth for processing. + * + * @param file - The DOCX file to parse, either as a path string or a WorkspaceFile object. + * @param options - Optional parameters including trace for logging, cache control, and output format (default is "markdown"). If cache is enabled, attempts to retrieve cached results. + * @returns An object containing the parsed file content or an error message in case of failure. If caching is enabled and an error occurs, attempts to return cached results. + */ +export async function DOCXTryParse(file, options) { + const { trace, cache, format = "markdown" } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const filename = filenameOrFileToFilename(file); + const content = await resolveFileBytes(file, options); + const folder = await computeHashFolder(filename, content, options); + const resFilename = join(folder, "res.json"); + const readCache = async () => { + if (cache === false) + return undefined; + try { + const res = JSON.parse(await readFile(resFilename, { + encoding: "utf-8", + })); + logVerbose(`docx: cache hit at ${folder}`); + return res; + } + catch { + return undefined; + } + }; + { + // try cache hit + const cached = await readCache(); + if (cached) + return cached; + } + const m = measure("parsers.docx"); + try { + const input = content + ? { buffer: Buffer.from(content) } + : { path: runtimeHost.resolvePath(filename) }; + const { extractRawText, convertToHtml } = await import("mammoth"); + let text; + if (format === "html" || format === "markdown") { + const results = await convertToHtml(input); + if (format === "markdown") + text = await HTMLToMarkdown(results.value, { + trace, + disableGfm: true, + }); + else + text = results.value; + } + else { + const results = await extractRawText(input); + text = results.value; + } + await ensureDir(folder); + await writeFile(join(folder, "content.txt"), text); + const res = { file: { filename, content: text } }; + await writeFile(resFilename, JSON.stringify(res)); + return res; + } + catch (error) { + logVerbose(error); + { + // try cache hit + const cached = await readCache(); + if (cached) + return cached; + } + trace?.error(`reading docx`, error); // Log error if tracing is enabled + await ensureDir(folder); + await writeFile(join(folder, "error.txt"), YAMLStringify(serializeError(error))); + return { error: errorMessage(error) }; + } + finally { + m(); + } +} +//# sourceMappingURL=docx.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/docx.js.map b/packages/core/.tshy-build/browser/docx.js.map new file mode 100644 index 0000000000..b068a4a3b1 --- /dev/null +++ b/packages/core/.tshy-build/browser/docx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/docx.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,KAAK,UAAU,iBAAiB,CAC9B,QAAgB,EAChB,OAAmB,EACnB,OAAwC;IAExC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAC9C,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,gBAAgB;KACzB,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAA4B,EAC5B,OAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,MAAM,QAAQ,CAAC,WAAW,EAAE;gBAC1B,QAAQ,EAAE,OAAO;aAClB,CAAC,CACH,CAAC;YACF,UAAU,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,CAAC;QACC,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO;YACnB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAClC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEhD,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAElE,IAAI,IAAY,CAAC;QACjB,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,UAAU;gBACvB,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE;oBACzC,KAAK;oBACL,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;;gBACA,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAElD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;YACC,gBAAgB;YAChB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,kCAAkC;QACvE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,CAAC,EAAE,CAAC;IACN,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dotenv.d.ts b/packages/core/.tshy-build/browser/dotenv.d.ts new file mode 100644 index 0000000000..619f17ad32 --- /dev/null +++ b/packages/core/.tshy-build/browser/dotenv.d.ts @@ -0,0 +1,19 @@ +import { parse } from "dotenv"; +/** + * Safely parses a dotenv-style string into a key-value object. + * If parsing fails, logs the error and returns an empty object. + * + * @param text - The dotenv file content as a string + * @returns A record with key-value pairs from the dotenv file + */ +export declare function dotEnvTryParse(text: string): Record; +export declare const dotEnvParse: typeof parse; +/** + * Converts a key-value record into a dotenv-style string. + * If values contain newlines or quotes, they are enclosed in double quotes and escaped. + * + * @param record - An object representing key-value pairs + * @returns A dotenv-formatted string + */ +export declare function dotEnvStringify(record: Record): string; +//# sourceMappingURL=dotenv.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dotenv.d.ts.map b/packages/core/.tshy-build/browser/dotenv.d.ts.map new file mode 100644 index 0000000000..a25182ec3c --- /dev/null +++ b/packages/core/.tshy-build/browser/dotenv.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"dotenv.d.ts","sourceRoot":"","sources":["../../src/dotenv.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAK/B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnE;AAGD,eAAO,MAAM,WAAW,cAAQ,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAmBtE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dotenv.js b/packages/core/.tshy-build/browser/dotenv.js new file mode 100644 index 0000000000..a1646e6ff6 --- /dev/null +++ b/packages/core/.tshy-build/browser/dotenv.js @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides utilities for parsing and stringifying dotenv-style files. +// It includes functions to handle parsing errors gracefully and formatting key-value pairs properly. +// Tags: dotenv, parsing, error handling +// Import the 'parse' function from the 'dotenv' library to parse dotenv files +import { parse } from "dotenv"; +// Import a local utility function 'logError' for logging errors +import { logError } from "./util.js"; +/** + * Safely parses a dotenv-style string into a key-value object. + * If parsing fails, logs the error and returns an empty object. + * + * @param text - The dotenv file content as a string + * @returns A record with key-value pairs from the dotenv file + */ +export function dotEnvTryParse(text) { + try { + // Try parsing the text using the 'parse' function + return parse(text); + } + catch (e) { + // Log any parsing error encountered + logError(e); + // Return an empty object to indicate parsing failure + return {}; + } +} +// Export the 'parse' function directly so it can be used externally +export const dotEnvParse = parse; +/** + * Converts a key-value record into a dotenv-style string. + * If values contain newlines or quotes, they are enclosed in double quotes and escaped. + * + * @param record - An object representing key-value pairs + * @returns A dotenv-formatted string + */ +export function dotEnvStringify(record) { + return (Object.entries(record || {}) + .map(([key, value]) => { + // Ensure null or undefined values are treated as empty strings + if (value === undefined || value === null) + value = ""; + // Enclose in quotes if the value contains newlines or quotes, and escape quotes + if (value.includes("\n") || value.includes('"')) { + value = value.replace(/"/g, '\\"'); // Escape existing quotes + return `${key}="${value}"`; + } + // Default key-value format without quotes + return `${key}=${value}`; + }) + // Join all key-value pairs with newline characters for dotenv format + .join("\n")); +} +//# sourceMappingURL=dotenv.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/dotenv.js.map b/packages/core/.tshy-build/browser/dotenv.js.map new file mode 100644 index 0000000000..15ec28319d --- /dev/null +++ b/packages/core/.tshy-build/browser/dotenv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dotenv.js","sourceRoot":"","sources":["../../src/dotenv.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,kFAAkF;AAClF,qGAAqG;AACrG,wCAAwC;AAExC,8EAA8E;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,gEAAgE;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,kDAAkD;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,oCAAoC;QACpC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,qDAAqD;QACrD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,+DAA+D;QAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,KAAK,GAAG,EAAE,CAAC;QAEtD,gFAAgF;QAChF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,yBAAyB;YAC7D,OAAO,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;QAC7B,CAAC;QAED,0CAA0C;QAC1C,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;QACF,qEAAqE;SACpE,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/echomodel.d.ts b/packages/core/.tshy-build/browser/echomodel.d.ts new file mode 100644 index 0000000000..22528b6c73 --- /dev/null +++ b/packages/core/.tshy-build/browser/echomodel.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const EchoModel: Readonly; +//# sourceMappingURL=echomodel.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/echomodel.d.ts.map b/packages/core/.tshy-build/browser/echomodel.d.ts.map new file mode 100644 index 0000000000..e9dd580162 --- /dev/null +++ b/packages/core/.tshy-build/browser/echomodel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"echomodel.d.ts","sourceRoot":"","sources":["../../src/echomodel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAK/C,eAAO,MAAM,SAAS,yBAgCpB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/echomodel.js b/packages/core/.tshy-build/browser/echomodel.js new file mode 100644 index 0000000000..f5e1014636 --- /dev/null +++ b/packages/core/.tshy-build/browser/echomodel.js @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { renderMessagesToMarkdown } from "./chatrender.js"; +import { deleteEmptyValues } from "./cleaners.js"; +import { MODEL_PROVIDER_ECHO } from "./constants.js"; +export const EchoModel = Object.freeze({ + id: MODEL_PROVIDER_ECHO, + completer: async (req, connection, options) => { + const { messages, model, ...rest } = req; + const { partialCb, inner } = options; + const text = `## Messages + +${await renderMessagesToMarkdown(messages, { + textLang: "markdown", + assistant: true, + system: true, + user: true, + })} + +## Request + +\`\`\`json +${JSON.stringify(deleteEmptyValues({ messages, ...rest }), null, 2)} +\`\`\` +`; + partialCb?.({ + responseChunk: text, + tokensSoFar: 0, + responseSoFar: text, + inner, + }); + return { + finishReason: "stop", + text, + }; + }, +}); +//# sourceMappingURL=echomodel.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/echomodel.js.map b/packages/core/.tshy-build/browser/echomodel.js.map new file mode 100644 index 0000000000..4f111c6334 --- /dev/null +++ b/packages/core/.tshy-build/browser/echomodel.js.map @@ -0,0 +1 @@ +{"version":3,"file":"echomodel.js","sourceRoot":"","sources":["../../src/echomodel.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAgB;IACpD,EAAE,EAAE,mBAAmB;IACvB,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACzC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,IAAI,GAAG;;EAEf,MAAM,wBAAwB,CAAC,QAAQ,EAAE;YACzC,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;SACX,CAAC;;;;;EAKA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;;CAElE,CAAC;QACE,SAAS,EAAE,CAAC;YACV,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,IAAI;YACnB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,EAAE,MAAM;YACpB,IAAI;SACL,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/encoders.d.ts b/packages/core/.tshy-build/browser/encoders.d.ts new file mode 100644 index 0000000000..5411556a37 --- /dev/null +++ b/packages/core/.tshy-build/browser/encoders.d.ts @@ -0,0 +1,24 @@ +import type { Awaitable, TextChunk, TextChunkerConfig, Tokenizer, WorkspaceFile } from "./types.js"; +/** + * Resolves the token encoder for a specified model identifier. + * @param modelId - The model identifier to resolve the encoder for. Defaults to a large model alias if not provided. + * @param options - Optional configuration. Includes a flag to disable fallback mechanisms. + * @returns A Promise resolving to a Tokenizer object or undefined if fallback is disabled and resolution fails. + */ +export declare function resolveTokenEncoder(modelId: string, options?: { + disableFallback?: boolean; +}): Promise; +/** + * Splits the content of a file or string into manageable chunks based on the provided configuration. + * + * @param file - The content to be chunked; can be a string or a workspace file object. + * If a workspace file, its content is resolved and processed. + * @param options - Optional configuration for chunk generation. + * - model: Model identifier used to resolve the tokenizer. + * - docType: Document type for processing; inferred from the file extension if not provided. + * - lineNumbers: Flag indicating whether to include line numbers in the output. + * - Other properties are passed to the TextSplitter for customization. + * @returns A Promise resolving to an array of text chunks. Each chunk includes content, filename, and start/end line numbers. + */ +export declare function chunk(file: Awaitable, options?: TextChunkerConfig): Promise; +//# sourceMappingURL=encoders.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/encoders.d.ts.map b/packages/core/.tshy-build/browser/encoders.d.ts.map new file mode 100644 index 0000000000..667a0c5dbe --- /dev/null +++ b/packages/core/.tshy-build/browser/encoders.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encoders.d.ts","sourceRoot":"","sources":["../../src/encoders.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKpG;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,OAAO,CAAC,SAAS,CAAC,CAiDpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,EACvC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,SAAS,EAAE,CAAC,CA6CtB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/encoders.js b/packages/core/.tshy-build/browser/encoders.js new file mode 100644 index 0000000000..e964862078 --- /dev/null +++ b/packages/core/.tshy-build/browser/encoders.js @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import the function to parse model identifiers +import { parseModelIdentifier } from "./models.js"; +import { resolveRuntimeHost } from "./host.js"; +import path from "node:path"; +import { addLineNumbers, indexToLineNumber } from "./liner.js"; +import { resolveFileContent } from "./file.js"; +import { assert } from "./assert.js"; +import { TextSplitter } from "./textsplitter.js"; +import api, { encode, decode } from "gpt-tokenizer/model/gpt-4o"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("encoders"); +/** + * Resolves the token encoder for a specified model identifier. + * @param modelId - The model identifier to resolve the encoder for. Defaults to a large model alias if not provided. + * @param options - Optional configuration. Includes a flag to disable fallback mechanisms. + * @returns A Promise resolving to a Tokenizer object or undefined if fallback is disabled and resolution fails. + */ +export async function resolveTokenEncoder(modelId, options) { + const { disableFallback } = options || {}; + const runtimeHost = resolveRuntimeHost(); + // Parse the model identifier to extract the model information + if (!modelId) { + dbg(`modelId is empty, using default model alias`); + modelId = runtimeHost.modelAliases.large.model; + } + let { model } = parseModelIdentifier(modelId); + if (/^gpt-4.1/i.test(model)) + model = "gpt-4o"; // same encoding + const module = model.toLowerCase(); // Assign model to module for dynamic import path + const { modelEncodings } = runtimeHost?.config || {}; + const encoding = modelEncodings?.[modelId] || module; + const encoderOptions = { + disallowedSpecial: new Set(), + }; + try { + // Attempt to dynamically import the encoder module for the specified model + const { encode, decode, default: api } = await import(`gpt-tokenizer/model/${encoding}`); + assert(!!encode); + const { modelName } = api; + const size = api.bytePairEncodingCoreProcessor?.mergeableBytePairRankCount + + (api.bytePairEncodingCoreProcessor?.specialTokenMapping?.size || 0); + return Object.freeze({ + model: modelName, + size, + encode: (line) => encode(line, encoderOptions), // Return the default encoder function + decode, + }); + } + catch { + if (disableFallback) { + dbg(`encoder fallback disabled for ${encoding}`); + return undefined; + } + assert(!!encode); + const { modelName, vocabularySize } = api; + dbg(`fallback ${encoding} to gpt-4o encoder`); + return Object.freeze({ + model: modelName, + size: vocabularySize, + encode: (line) => encode(line, encoderOptions), // Return the default encoder function + decode, + }); + } +} +/** + * Splits the content of a file or string into manageable chunks based on the provided configuration. + * + * @param file - The content to be chunked; can be a string or a workspace file object. + * If a workspace file, its content is resolved and processed. + * @param options - Optional configuration for chunk generation. + * - model: Model identifier used to resolve the tokenizer. + * - docType: Document type for processing; inferred from the file extension if not provided. + * - lineNumbers: Flag indicating whether to include line numbers in the output. + * - Other properties are passed to the TextSplitter for customization. + * @returns A Promise resolving to an array of text chunks. Each chunk includes content, filename, and start/end line numbers. + */ +export async function chunk(file, options) { + const f = await file; + let filename; + let content; + if (typeof f === "string") { + content = f; + } + else if (typeof f === "object") { + await resolveFileContent(f); + if (f.encoding) { + dbg(`binary file detected, skip`); + return []; + } // binary file bail out + filename = f.filename; + content = f.content; + } + else { + return []; + } + const { model, docType: optionsDocType, lineNumbers, ...rest } = options || {}; + const docType = (optionsDocType || (filename ? path.extname(filename) : undefined)) + ?.toLowerCase() + ?.replace(/^\./, ""); + const tokenizer = await resolveTokenEncoder(model); + const ts = new TextSplitter({ + ...rest, + docType, + tokenizer, + keepSeparators: true, + }); + const chunksRaw = ts.split(content); + const chunks = chunksRaw.map(({ text, startPos, endPos }) => { + const lineStart = indexToLineNumber(content, startPos); + const lineEnd = indexToLineNumber(content, endPos); + if (lineNumbers) { + text = addLineNumbers(text, { startLine: lineStart }); + } + return { + content: text, + filename, + lineStart, + lineEnd, + }; + }); + dbg(`chunks ${chunks.length}`); + return chunks; +} +//# sourceMappingURL=encoders.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/encoders.js.map b/packages/core/.tshy-build/browser/encoders.js.map new file mode 100644 index 0000000000..ddcdaba6ba --- /dev/null +++ b/packages/core/.tshy-build/browser/encoders.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encoders.js","sourceRoot":"","sources":["../../src/encoders.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/env.d.ts b/packages/core/.tshy-build/browser/env.d.ts new file mode 100644 index 0000000000..580aba4fc5 --- /dev/null +++ b/packages/core/.tshy-build/browser/env.d.ts @@ -0,0 +1,64 @@ +import type { LanguageModelConfiguration } from "./server/messages.js"; +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +/** + * Parses the OLLAMA host environment variable and returns a standardized URL. + * + * @param env - The environment variables object to extract OLLAMA-related settings. + * @returns The resolved OLLAMA host URL. + * + * The function prioritizes the following environment variables to determine the host: + * - OLLAMA_HOST + * - OLLAMA_API_BASE + * - Fallback to the constant OLLAMA_API_BASE. + * + * If the resolved value matches an IP address or "localhost" with an optional port, + * it constructs a URL with the default port if not provided. Otherwise, it validates + * and returns a complete URL. Throws an error if the URL is invalid. + */ +export declare function ollamaParseHostVariable(env: Record): string; +/** + * Finds an environment variable based on provided prefixes and names. + * + * @param env - The environment variables as key-value pairs. + * @param prefixes - A string or array of strings representing the possible prefixes for the variable name. + * @param names - An array of variable names to match against the prefixes. + * @returns An object containing the matched variable name and its value, or undefined if no match is found. + */ +export declare function findEnvVar(env: Record, prefixes: string | string[], names: string[]): { + name: string; + value: string; +}; +/** + * Parses default configuration values from the provided environment variables. + * + * This function extracts default model configurations and temperature settings + * based on environment variable values and sets them as runtime model aliases. + * Legacy and new configurations are supported. + * + * @param env - An object representing environment variables with keys and values. + * - GENAISCRIPT_DEFAULT_MODEL: Specifies the default model for the "large" alias. + * - GENAISCRIPT_DEFAULT_TEMPERATURE: Sets the default temperature for the model, if defined. + * - GENAISCRIPT_DEFAULT_[ID]_MODEL or GENAISCRIPT_MODEL_[ID]: Configures aliases for specific model IDs. + */ +export declare function parseDefaultsFromEnv(env: Record): Promise; +/** + * Parses the environment variables to retrieve the necessary token, base URL, and configuration details + * for a specified model identifier based on its provider. + * + * @param env - A record of environment variables, serving as the source for token and API configuration. + * @param modelId - The identifier of the model for which the token and configuration details are to be parsed. + * @param options - Additional options for tracing, cancellation, and token resolution. + * + * @returns A promise that resolves to a configuration object containing the provider, model, token, base URL, + * type, version, and source, or undefined if no matching configuration is found. + * + * Notes: + * - Handles several model providers, including OpenAI, Azure OpenAI, Azure Serverless OpenAI, Azure AI Inference, Azure Serverless Models, Anthropic, Google, HuggingFace, and more. + * - Throws errors if mandatory variables like API keys or bases are not configured. + * - Includes validation checks for URL formats and supported provider types. + */ +export declare function parseTokenFromEnv(env: Record, modelId: string, options: TraceOptions & CancellationOptions & { + resolveToken?: boolean; +}): Promise; +//# sourceMappingURL=env.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/env.d.ts.map b/packages/core/.tshy-build/browser/env.d.ts.map new file mode 100644 index 0000000000..d89b753aba --- /dev/null +++ b/packages/core/.tshy-build/browser/env.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AA0DA,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UASlE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,KAAK,EAAE,MAAM,EAAE,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBA0CrE;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE,OAAO,CAAC,0BAA0B,CAAC,CA2rBrC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/env.js b/packages/core/.tshy-build/browser/env.js new file mode 100644 index 0000000000..a828295456 --- /dev/null +++ b/packages/core/.tshy-build/browser/env.js @@ -0,0 +1,775 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { deleteUndefinedValues, normalizeFloat, trimTrailingSlash } from "./cleaners.js"; +import { ANTHROPIC_API_BASE, GITHUB_MODELS_BASE, LITELLM_API_BASE, LLAMAFILE_API_BASE, LOCALAI_API_BASE, MODEL_PROVIDER_ANTHROPIC, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_AZURE_SERVERLESS_MODELS, MODEL_PROVIDER_GITHUB_COPILOT_CHAT, MODEL_PROVIDER_GITHUB, MODEL_PROVIDER_LITELLM, MODEL_PROVIDER_LLAMAFILE, MODEL_PROVIDER_OLLAMA, MODEL_PROVIDER_OPENAI, OPENAI_API_BASE, PLACEHOLDER_API_BASE, PLACEHOLDER_API_KEY, MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI, MODEL_PROVIDER_HUGGINGFACE, HUGGINGFACE_API_BASE, OLLAMA_API_BASE, OLLAMA_DEFAULT_PORT, MODEL_PROVIDER_GOOGLE, GOOGLE_API_BASE, MODEL_PROVIDER_ALIBABA, ALIBABA_BASE, MODEL_PROVIDER_MISTRAL, MISTRAL_API_BASE, MODEL_PROVIDER_LMSTUDIO, LMSTUDIO_API_BASE, MODEL_PROVIDER_JAN, JAN_API_BASE, MODEL_PROVIDER_ANTHROPIC_BEDROCK, MODEL_PROVIDER_DEEPSEEK, DEEPSEEK_API_BASE, MODEL_PROVIDER_WHISPERASR, WHISPERASR_API_BASE, MODEL_PROVIDER_ECHO, MODEL_PROVIDER_NONE, MODEL_PROVIDER_AZURE_AI_INFERENCE, MODEL_PROVIDER_WINDOWS_AI, WINDOWS_AI_API_BASE, MODEL_PROVIDER_SGLANG, SGLANG_API_BASE, MODEL_PROVIDER_VLLM, VLLM_API_BASE, GITHUB_TOKENS, MODEL_PROVIDER_DOCKER_MODEL_RUNNER, DOCKER_MODEL_RUNNER_API_BASE, MODEL_PROVIDER_MCP, } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { parseModelIdentifier } from "./models.js"; +import { arrayify } from "./cleaners.js"; +import { URL } from "node:url"; +import { uriTryParse } from "./url.js"; +import { genaiscriptDebug } from "./debug.js"; +import { YAMLTryParse } from "./yaml.js"; +const dbg = genaiscriptDebug("config:env"); +/** + * Parses the OLLAMA host environment variable and returns a standardized URL. + * + * @param env - The environment variables object to extract OLLAMA-related settings. + * @returns The resolved OLLAMA host URL. + * + * The function prioritizes the following environment variables to determine the host: + * - OLLAMA_HOST + * - OLLAMA_API_BASE + * - Fallback to the constant OLLAMA_API_BASE. + * + * If the resolved value matches an IP address or "localhost" with an optional port, + * it constructs a URL with the default port if not provided. Otherwise, it validates + * and returns a complete URL. Throws an error if the URL is invalid. + */ +export function ollamaParseHostVariable(env) { + dbg(`ollamaParseHostVariable called with env: ${JSON.stringify(env)}`); + const s = (env.OLLAMA_HOST || env.OLLAMA_API_BASE || OLLAMA_API_BASE)?.trim(); + const ipm = /^(?
(localhost|\d+\.\d+\.\d+\.\d+))(:(?\d+))?$/i.exec(s); + if (ipm) { + return `http://${ipm.groups.address}:${ipm.groups.port || OLLAMA_DEFAULT_PORT}`; + } + const url = new URL(s); + return url.href; +} +/** + * Finds an environment variable based on provided prefixes and names. + * + * @param env - The environment variables as key-value pairs. + * @param prefixes - A string or array of strings representing the possible prefixes for the variable name. + * @param names - An array of variable names to match against the prefixes. + * @returns An object containing the matched variable name and its value, or undefined if no match is found. + */ +export function findEnvVar(env, prefixes, names) { + for (const prefix of arrayify(prefixes)) { + for (const name of names) { + const pname = prefix + name; + const value = env[pname] || env[pname.toLowerCase()] || env[pname.toUpperCase()]; + if (value !== undefined) { + return { name: pname, value }; + } + } + } + return undefined; +} +/** + * Parses default configuration values from the provided environment variables. + * + * This function extracts default model configurations and temperature settings + * based on environment variable values and sets them as runtime model aliases. + * Legacy and new configurations are supported. + * + * @param env - An object representing environment variables with keys and values. + * - GENAISCRIPT_DEFAULT_MODEL: Specifies the default model for the "large" alias. + * - GENAISCRIPT_DEFAULT_TEMPERATURE: Sets the default temperature for the model, if defined. + * - GENAISCRIPT_DEFAULT_[ID]_MODEL or GENAISCRIPT_MODEL_[ID]: Configures aliases for specific model IDs. + */ +export async function parseDefaultsFromEnv(env) { + const runtimeHost = resolveRuntimeHost(); + dbg(`parsing process.env`); + // legacy + if (env.GENAISCRIPT_DEFAULT_MODEL) { + dbg(`found GENAISCRIPT_DEFAULT_MODEL: ${env.GENAISCRIPT_DEFAULT_MODEL}`); + runtimeHost.setModelAlias("env", "large", env.GENAISCRIPT_DEFAULT_MODEL); + } + // action + if (env.INPUT_MODEL) { + dbg(`found INPUT_MODEL = ${env.INPUT_MODEL}`); + runtimeHost.setModelAlias("env", "large", env.INPUT_MODEL); + } + const rx = /^(GENAISCRIPT(_DEFAULT)?|INPUT)_MODEL_(?[A-Z0-9_-]+)$/i; + const entries = Object.entries(env); + dbg(`envs: %O`, Object.keys(env)); + for (const kv of entries) { + const [k, v] = kv; + const m = rx.exec(k); + if (!m) { + continue; + } + const id = m.groups.id.toLowerCase(); + dbg(`found %s -> %s = %s`, k, id, v); + if (id === "alias") { + // special handling for alias, try to parse as YAML, INI + const aliases = YAMLTryParse(v.trim()); + dbg(`parsed aliases: ${JSON.stringify(aliases)}`); + if (aliases && typeof aliases === "object") { + for (const [alias, model] of Object.entries(aliases)) { + if (typeof model === "string") + runtimeHost.setModelAlias("env", alias, model); + } + } + } + else + runtimeHost.setModelAlias("env", id, v); + } + const t = normalizeFloat(env.GENAISCRIPT_DEFAULT_TEMPERATURE); + if (!isNaN(t)) { + dbg(`parsed GENAISCRIPT_DEFAULT_TEMPERATURE = ${t}`); + runtimeHost.setModelAlias("env", "large", { temperature: t }); + } +} +function parseModelApiVersion(provider, model) { + const name = `GENAISCRIPT_API_VERSION_${provider.toUpperCase()}_${model.toUpperCase()}`; + const inputName = `INPUT_API_VERSION_${provider.toUpperCase()}_${model.toUpperCase()}`; + return process.env[name] ?? process.env[inputName]; +} +/** + * Parses the environment variables to retrieve the necessary token, base URL, and configuration details + * for a specified model identifier based on its provider. + * + * @param env - A record of environment variables, serving as the source for token and API configuration. + * @param modelId - The identifier of the model for which the token and configuration details are to be parsed. + * @param options - Additional options for tracing, cancellation, and token resolution. + * + * @returns A promise that resolves to a configuration object containing the provider, model, token, base URL, + * type, version, and source, or undefined if no matching configuration is found. + * + * Notes: + * - Handles several model providers, including OpenAI, Azure OpenAI, Azure Serverless OpenAI, Azure AI Inference, Azure Serverless Models, Anthropic, Google, HuggingFace, and more. + * - Throws errors if mandatory variables like API keys or bases are not configured. + * - Includes validation checks for URL formats and supported provider types. + */ +export async function parseTokenFromEnv(env, modelId, options) { + const { resolveToken } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const { provider, model, tag } = parseModelIdentifier(modelId ?? runtimeHost.modelAliases.large.model); + dbg(`parsing token for '%s:%s:%s'`, provider, model, tag || ""); + const TOKEN_SUFFIX = ["_API_KEY", "_API_TOKEN", "_TOKEN", "_KEY"]; + const BASE_SUFFIX = ["_API_BASE", "_API_ENDPOINT", "_BASE", "_ENDPOINT"]; + if (provider === MODEL_PROVIDER_OPENAI) { + dbg(`processing ${MODEL_PROVIDER_OPENAI}`); + const token = env.OPENAI_API_KEY ?? ""; + let base = env.OPENAI_API_BASE; + const type = env.OPENAI_API_TYPE || "openai"; + const version = parseModelApiVersion(provider, model) || + env.OPENAI_API_VERSION || + parseAzureVersionFromUrl(base); + if (type !== "azure" && + type !== "openai" && + type !== "localai" && + type !== "azure_serverless" && + type !== "azure_serverless_models") { + throw new Error("OPENAI_API_TYPE must be 'azure', 'azure_serverless', 'azure_serverless_models' or 'openai' or 'localai'"); + } + if (type === "openai" && !base) { + dbg(`setting default base for OPENAI_API_TYPE openai`); + base = OPENAI_API_BASE; + } + if (type === "localai" && !base) { + base = LOCALAI_API_BASE; + } + if ((type === "azure" || type === "azure_serverless") && !base) { + throw new Error("OPENAI_API_BASE must be set when type is 'azure'"); + } + if (type === "azure") { + base = cleanAzureBase(base); + } + if (!token && !/^http:\/\//i.test(base)) { + // localhost typically requires no key + throw new Error("OPENAI_API_KEY missing"); + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("OPENAI_API_KEY not configured"); + } + if (base === PLACEHOLDER_API_BASE) { + throw new Error("OPENAI_API_BASE not configured"); + } + if (base && !URL.canParse(base)) { + throw new Error("OPENAI_API_BASE must be a valid URL"); + } + return { + provider, + model, + modelId, + base, + type, + token, + source: "env: OPENAI_API_...", + version, + }; + } + if (provider === MODEL_PROVIDER_GITHUB) { + dbg(`processing ${MODEL_PROVIDER_GITHUB}`); + const res = findEnvVar(env, "", ["GITHUB_MODELS_TOKEN", ...GITHUB_TOKENS]) || { + name: undefined, + value: undefined, + }; + if (!res?.value) { + if (resolveToken) { + const { exitCode, stdout, stderr } = await runtimeHost.exec(undefined, "gh", ["auth", "token"], options); + if (exitCode !== 0) { + dbg(`gh auth token: %s`, stderr); + } + else { + res.name = "gh auth token"; + res.value = stdout.trim(); + } + } + if (!res?.value) + throw new Error("GitHub authentication required. Please set GITHUB_MODELS_TOKEN, GITHUB_TOKEN, or GH_TOKEN environment variable, or run 'gh auth login' to authenticate with GitHub CLI."); + } + const org = findEnvVar(env, "", ["GITHUB_MODELS_ORG"]); + const type = "github"; + const base = org ? `https://models.github.ai/orgs/${org}/inference/` : GITHUB_MODELS_BASE; + dbg(`base: %s`, base); + return { + provider, + model, + modelId, + base, + token: res.value, + type, + source: `env: ${res.name}`, + }; + } + if (provider === MODEL_PROVIDER_AZURE_OPENAI) { + dbg(`processing ${MODEL_PROVIDER_AZURE_OPENAI}`); + const tokenVar = env.AZURE_OPENAI_API_KEY ? "AZURE_OPENAI_API_KEY" : "AZURE_API_KEY"; + const token = env[tokenVar]; + let base = trimTrailingSlash(env.AZURE_OPENAI_ENDPOINT || + env.AZURE_OPENAI_API_BASE || + env.AZURE_API_BASE || + env.AZURE_OPENAI_API_ENDPOINT); + if (!token && !base) { + return undefined; + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("AZURE_OPENAI_API_KEY not configured"); + } + if (!base) { + throw new Error("AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_BASE or AZURE_API_BASE missing"); + } + if (base === PLACEHOLDER_API_BASE) { + throw new Error("AZURE_OPENAI_API_ENDPOINT not configured"); + } + const version = parseModelApiVersion(provider, model) || + env[`AZURE_OPENAI_API_VERSION_${model.toLocaleUpperCase()}`] || + env.AZURE_OPENAI_API_VERSION || + env.AZURE_API_VERSION || + parseAzureVersionFromUrl(base); + base = cleanAzureBase(base); + if (!URL.canParse(base)) { + throw new Error("AZURE_OPENAI_API_ENDPOINT must be a valid URL"); + } + const azureCredentialsType = env.AZURE_OPENAI_API_CREDENTIALS?.toLowerCase().trim(); + return { + provider, + model, + modelId, + base, + token, + type: "azure", + source: token ? "env: AZURE_OPENAI_API_..." : "env: AZURE_OPENAI_API_... + Entra ID", + version, + azureCredentialsType, + }; + } + if (provider === MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI) { + dbg(`processing ${MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI}`); + const tokenVar = "AZURE_SERVERLESS_OPENAI_API_KEY"; + dbg(`retrieved AZURE_SERVERLESS_OPENAI_API_KEY: ${env.AZURE_SERVERLESS_OPENAI_API_KEY}`); + const token = env[tokenVar]; + let base = trimTrailingSlash(env.AZURE_SERVERLESS_OPENAI_ENDPOINT || env.AZURE_SERVERLESS_OPENAI_API_ENDPOINT); + if (!token && !base) { + return undefined; + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("AZURE_SERVERLESS_OPENAI_API_KEY not configured"); + } + if (!base) { + throw new Error("AZURE_SERVERLESS_OPENAI_API_ENDPOINT missing"); + } + if (base === PLACEHOLDER_API_BASE) { + throw new Error("AZURE_SERVERLESS_OPENAI_API_ENDPOINT not configured"); + } + base = cleanAzureBase(base); + if (!URL.canParse(base)) { + throw new Error("AZURE_SERVERLESS_OPENAI_API_ENDPOINT must be a valid URL"); + } + const version = env.AZURE_SERVERLESS_OPENAI_API_VERSION || env.AZURE_SERVERLESS_OPENAI_VERSION; + const azureCredentialsType = env.AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?.toLowerCase().trim(); + return { + provider, + model, + modelId, + base, + token, + type: "azure_serverless", + source: token + ? "env: AZURE_SERVERLESS_OPENAI_API_..." + : "env: AZURE_SERVERLESS_OPENAI_API_... + Entra ID", + version, + azureCredentialsType, + }; + } + if (provider === MODEL_PROVIDER_AZURE_AI_INFERENCE) { + dbg(`processing ${MODEL_PROVIDER_AZURE_AI_INFERENCE}`); + // https://github.com/Azure/azure-sdk-for-js/tree/@azure-rest/ai-inference_1.0.0-beta.2/sdk/ai/ai-inference-rest + dbg(`retrieved AZURE_AI_INFERENCE_API_KEY: ${env.AZURE_AI_INFERENCE_API_KEY}`); + const tokenVar = "AZURE_AI_INFERENCE_API_KEY"; + const token = env[tokenVar]?.trim(); + let base = trimTrailingSlash(env.AZURE_AI_INFERENCE_ENDPOINT || env.AZURE_AI_INFERENCE_API_ENDPOINT); + if (!token && !base) { + return undefined; + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("AZURE_AI_INFERENCE_API_KEY not configured"); + } + if (!base) { + throw new Error("AZURE_AI_INFERENCE_API_ENDPOINT missing"); + } + if (base === PLACEHOLDER_API_BASE) { + throw new Error("AZURE_AI_INFERENCE_API_ENDPOINT not configured"); + } + base = trimTrailingSlash(base); + if (!URL.canParse(base)) { + throw new Error("AZURE_AI_INFERENCE_API_ENDPOINT must be a valid URL"); + } + const version = env.AZURE_AI_INFERENCE_API_VERSION || env.AZURE_AI_INFERENCE_VERSION; + return { + provider, + model, + modelId, + base, + token, + type: "azure_ai_inference", + source: token + ? "env: AZURE_AI_INFERENCE_API_..." + : "env: AZURE_AI_INFERENCE_API_... + Entra ID", + version, + }; + } + if (provider === MODEL_PROVIDER_AZURE_SERVERLESS_MODELS) { + dbg(`processing ${MODEL_PROVIDER_AZURE_SERVERLESS_MODELS}`); + // https://github.com/Azure/azure-sdk-for-js/tree/@azure-rest/ai-inference_1.0.0-beta.2/sdk/ai/ai-inference-rest + const tokenVar = "AZURE_SERVERLESS_MODELS_API_KEY"; + const token = env[tokenVar]?.trim(); + let base = trimTrailingSlash(env.AZURE_SERVERLESS_MODELS_ENDPOINT || env.AZURE_SERVERLESS_MODELS_API_ENDPOINT); + if (!token && !base) { + return undefined; + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("AZURE_SERVERLESS_MODELS_API_KEY not configured"); + } + if (!base) { + throw new Error("AZURE_SERVERLESS_MODELS_API_ENDPOINT missing"); + } + if (base === PLACEHOLDER_API_BASE) { + throw new Error("AZURE_SERVERLESS_MODELS_API_ENDPOINT not configured"); + } + base = trimTrailingSlash(base); + if (!URL.canParse(base)) { + throw new Error("AZURE_SERVERLESS_MODELS_API_ENDPOINT must be a valid URL"); + } + const version = env.AZURE_SERVERLESS_MODELS_API_VERSION || env.AZURE_SERVERLESS_MODELS_VERSION; + return { + provider, + model, + modelId, + base, + token, + type: "azure_serverless_models", + source: token + ? "env: AZURE_SERVERLESS_MODELS_API_..." + : "env: AZURE_SERVERLESS_MODELS_API_... + Entra ID", + version, + }; + } + if (provider === MODEL_PROVIDER_GOOGLE) { + dbg(`processing ${MODEL_PROVIDER_GOOGLE}`); + const token = env.GEMINI_API_KEY || env.GOOGLE_API_KEY; + if (!token) { + return undefined; + } + if (token === PLACEHOLDER_API_KEY) { + throw new Error("GEMINI_API_KEY/GOOGLE_API_BASE not configured"); + } + const base = env.GEMINI_API_BASE || env.GOOGLE_API_BASE || GOOGLE_API_BASE; + if (base === PLACEHOLDER_API_BASE) { + throw new Error("GEMINI_API_KEY/GOOGLE_API_BASE not configured"); + } + return { + provider, + model, + modelId, + base, + token, + type: "openai", + source: "env: GEMINI_API_...", + }; + } + if (provider === MODEL_PROVIDER_ANTHROPIC) { + dbg(`processing ${MODEL_PROVIDER_ANTHROPIC}`); + const modelKey = "ANTHROPIC_API_KEY"; + dbg(`retrieved ANTHROPIC_API_KEY: ${env.ANTHROPIC_API_KEY}`); + const token = env[modelKey]?.trim(); + if (token === undefined || token === PLACEHOLDER_API_KEY) { + throw new Error("ANTHROPIC_API_KEY not configured"); + } + const base = trimTrailingSlash(env.ANTHROPIC_API_BASE) || ANTHROPIC_API_BASE; + const version = env.ANTHROPIC_API_VERSION || undefined; + const source = "env: ANTHROPIC_API_..."; + return { + provider, + model, + modelId, + token, + base, + version, + source, + }; + } + if (provider === MODEL_PROVIDER_ANTHROPIC_BEDROCK) { + dbg(`processing ${MODEL_PROVIDER_ANTHROPIC_BEDROCK}`); + return { + provider, + model, + modelId, + source: "AWS SDK", + base: undefined, + token: MODEL_PROVIDER_ANTHROPIC_BEDROCK, + }; + } + if (provider === MODEL_PROVIDER_MISTRAL) { + dbg(`processing ${MODEL_PROVIDER_MISTRAL}`); + const base = env.MISTRAL_API_BASE || MISTRAL_API_BASE; + const token = env.MISTRAL_API_KEY; + if (!token) { + throw new Error("MISTRAL_API_KEY not configured"); + } + return { + provider, + model, + modelId, + token, + base, + source: "env: MISTRAL_API_...", + type: "openai", + }; + } + if (provider === MODEL_PROVIDER_ALIBABA) { + dbg(`processing ${MODEL_PROVIDER_ALIBABA}`); + const base = env.ALIBABA_API_BASE || env.DASHSCOPE_API_BASE || env.DASHSCOPE_HTTP_BASE_URL || ALIBABA_BASE; + if (base === PLACEHOLDER_API_BASE) { + throw new Error("ALIBABA_API_BASE not configured"); + } + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + const token = env.ALIBABA_API_KEY || env.DASHSCOPE_API_KEY; + if (token === undefined || token === PLACEHOLDER_API_KEY) { + throw new Error("ALIBABA_API_KEY not configured"); + } + return { + provider, + model, + modelId, + base, + token, + type: "alibaba", + source: "env: ALIBABA_API_...", + }; + } + if (provider === MODEL_PROVIDER_OLLAMA) { + dbg(`processing ${MODEL_PROVIDER_OLLAMA}`); + const host = ollamaParseHostVariable(env); + const base = cleanApiBase(host); + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_OLLAMA, + type: "openai", + source: "env: OLLAMA_HOST", + }; + } + if (provider === MODEL_PROVIDER_DOCKER_MODEL_RUNNER) { + dbg(`processing ${MODEL_PROVIDER_DOCKER_MODEL_RUNNER}`); + const base = env.DOCKER_MODEL_RUNNER_API_BASE || DOCKER_MODEL_RUNNER_API_BASE; + if (base === PLACEHOLDER_API_BASE) { + throw new Error("DOCKER_MODEL_RUNNER_API_BASE not configured"); + } + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_DOCKER_MODEL_RUNNER, + type: "openai", + source: "env: DOCKER_MODEL_RUNNER", + }; + } + if (provider === MODEL_PROVIDER_HUGGINGFACE) { + dbg(`processing ${MODEL_PROVIDER_HUGGINGFACE}`); + const prefixes = ["HUGGINGFACE", "HF"]; + const token = findEnvVar(env, prefixes, TOKEN_SUFFIX); + const base = findEnvVar(env, prefixes, BASE_SUFFIX)?.value || HUGGINGFACE_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + if (!token?.value) { + throw new Error("HuggingFace token missing"); + } + return { + base, + modelId, + token: token?.value, + provider, + model, + type: "huggingface", + source: "env: HUGGINGFACE_API_...", + }; + } + if (provider === MODEL_PROVIDER_DEEPSEEK) { + dbg(`processing ${MODEL_PROVIDER_DEEPSEEK}`); + const base = findEnvVar(env, "DEEPSEEK", BASE_SUFFIX)?.value || DEEPSEEK_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + const token = env.DEEPSEEK_API_KEY; + if (!token) { + throw new Error("DEEPSEEK_API_KEY not configured"); + } + return { + provider, + model, + modelId, + base, + token, + type: "openai", + source: "env: DEEPSEEK_API_...", + }; + } + if (provider === MODEL_PROVIDER_WHISPERASR) { + dbg(`processing ${MODEL_PROVIDER_WHISPERASR}`); + const base = findEnvVar(env, "WHISPERASR", BASE_SUFFIX)?.value || WHISPERASR_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: undefined, + source: "env: WHISPERASR_API_...", + }; + } + if (provider === MODEL_PROVIDER_WINDOWS_AI) { + dbg(`processing ${MODEL_PROVIDER_WINDOWS_AI}`); + return { + provider, + model, + modelId, + base: WINDOWS_AI_API_BASE, + token: MODEL_PROVIDER_WINDOWS_AI, + type: "openai", + source: "env", + }; + } + if (provider === MODEL_PROVIDER_SGLANG) { + dbg(`processing MODEL_PROVIDER_SGLANG`); + const base = findEnvVar(env, "SGLANG", BASE_SUFFIX)?.value || SGLANG_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_SGLANG, + type: "openai", + source: "default", + }; + } + if (provider === MODEL_PROVIDER_VLLM) { + dbg(`processing MODEL_PROVIDER_VLLM`); + const base = findEnvVar(env, "VLLM", BASE_SUFFIX)?.value || VLLM_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_VLLM, + type: "openai", + source: "default", + }; + } + if (provider === MODEL_PROVIDER_LLAMAFILE) { + dbg(`processing MODEL_PROVIDER_LLAMAFILE`); + const base = findEnvVar(env, "LLAMAFILE", BASE_SUFFIX)?.value || LLAMAFILE_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_LLAMAFILE, + type: "openai", + source: "default", + }; + } + if (provider === MODEL_PROVIDER_LITELLM) { + dbg(`processing MODEL_PROVIDER_LITELLM`); + const base = findEnvVar(env, "LITELLM", BASE_SUFFIX)?.value || LITELLM_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_LITELLM, + type: "openai", + source: "default", + }; + } + if (provider === MODEL_PROVIDER_LMSTUDIO) { + dbg(`processing MODEL_PROVIDER_LMSTUDIO`); + const base = findEnvVar(env, "LMSTUDIO", BASE_SUFFIX)?.value || LMSTUDIO_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_LMSTUDIO, + type: "openai", + source: "env: LMSTUDIO_API_...", + }; + } + if (provider === MODEL_PROVIDER_JAN) { + dbg(`processing MODEL_PROVIDER_JAN`); + const base = findEnvVar(env, "JAN", BASE_SUFFIX)?.value || JAN_API_BASE; + if (!URL.canParse(base)) { + throw new Error(`${base} must be a valid URL`); + } + return { + provider, + model, + modelId, + base, + token: MODEL_PROVIDER_JAN, + type: "openai", + source: "env: JAN_API_...", + }; + } + if (provider === MODEL_PROVIDER_GITHUB_COPILOT_CHAT) { + dbg(`processing MODEL_PROVIDER_GITHUB_COPILOT_CHAT`); + if (!runtimeHost.clientLanguageModel) { + throw new Error(`${MODEL_PROVIDER_GITHUB_COPILOT_CHAT} requires Visual Studio Code and GitHub Copilot Chat`); + } + return { + provider, + model, + modelId, + base: undefined, + token: MODEL_PROVIDER_GITHUB_COPILOT_CHAT, + }; + } + if (provider === MODEL_PROVIDER_MCP) { + dbg(`processing MODEL_PROVIDER_MCP`); + if (!runtimeHost.clientLanguageModel) { + throw new Error(`${MODEL_PROVIDER_MCP} requires MCP Client with Sampling.`); + } + return { + provider, + model, + modelId, + base: undefined, + token: MODEL_PROVIDER_MCP, + }; + } + if (provider === MODEL_PROVIDER_ECHO || provider === MODEL_PROVIDER_NONE) { + dbg(`processing MODEL_PROVIDER_ECHO or MODEL_PROVIDER_NONE`); + return { + provider, + model, + modelId, + base: undefined, + token: provider, + }; + } + // generic + const prefixes = [ + tag ? `${provider}_${model}_${tag}` : undefined, + provider ? `${provider}_${model}` : undefined, + provider ? provider : undefined, + model, + ] + .filter((p) => p) + .map((p) => p.toUpperCase().replace(/[^a-z0-9]+/gi, "_")); + for (const prefix of prefixes) { + const modelKey = findEnvVar(env, prefix, TOKEN_SUFFIX); + const modelBase = findEnvVar(env, prefix, BASE_SUFFIX); + if (modelKey || modelBase) { + const token = modelKey?.value || ""; + const base = trimTrailingSlash(modelBase?.value); + const version = env[prefix + "_API_VERSION"]; + const type = env[prefix + "API_TYPE"] || "openai"; + const azureCredentialsType = env[prefix + `_API_CREDENTIALS`] + ?.toLowerCase() + .trim(); + if (base && !URL.canParse(base)) { + throw new Error(`${modelBase} must be a valid URL`); + } + const source = `env: ${prefix}_API_...`; + return deleteUndefinedValues({ + provider, + model, + modelId, + token, + base, + type, + azureCredentialsType, + version, + source, + }); + } + } + dbg(`no matching provider found, returning undefined`); + return undefined; + function cleanAzureBase(b) { + if (!b) { + return b; + } + const res = trimTrailingSlash(b.replace(/\/openai\/deployments.*$/, "")) + `/openai/deployments`; + return res; + } + function parseAzureVersionFromUrl(url) { + const uri = uriTryParse(url); + const v = uri?.searchParams.get("api-version") || undefined; + // azure:gpt-4o_2024-11-20 + // {api-version} + if (v?.startsWith("{")) + return undefined; + return v; + } + function cleanApiBase(b) { + if (!b) { + return b; + } + let res = trimTrailingSlash(b); + if (!/\/v1$/.test(res)) { + res += "/v1"; + } + return res; + } +} +//# sourceMappingURL=env.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/env.js.map b/packages/core/.tshy-build/browser/env.js.map new file mode 100644 index 0000000000..54f156d3b9 --- /dev/null +++ b/packages/core/.tshy-build/browser/env.js.map @@ -0,0 +1 @@ +{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/error.d.ts b/packages/core/.tshy-build/browser/error.d.ts new file mode 100644 index 0000000000..56f7c69970 --- /dev/null +++ b/packages/core/.tshy-build/browser/error.d.ts @@ -0,0 +1,57 @@ +import type { SerializedError } from "./types.js"; +/** + * Serializes an error into a standardized format for easier handling. + * + * @param e - The input error to serialize. Can accept an unknown value, string, Error, or SerializedError. + * - If `undefined` or `null`, returns `undefined`. + * - If an instance of `Error`, serializes it using a custom depth and includes line and column details from the stack trace if available. + * - If an object, converts it into a SerializedError. + * - If a string, wraps it as the `message` property of a SerializedError. + * - For other types, attempts to stringify and include as the `message` property. + * @returns The serialized error with standardized properties or `undefined` for nullish input. + */ +export declare function serializeError(e: unknown | string | Error | SerializedError): SerializedError; +/** + * Extracts the error message from an error-like object or returns a default value. + * + * @param e The error object to extract the message from. Can be an instance of `Error`, an object, or other error-like structures. + * @param defaultValue The default message to return if no message can be extracted. Defaults to "error". + * @returns The extracted error message or the `defaultValue` if none is found. + */ +export declare function errorMessage(e: any, defaultValue?: string): string; +export declare class CancelError extends Error { + static readonly NAME = "CancelError"; + constructor(message: string); +} +export declare class NotSupportedError extends Error { + static readonly NAME = "NotSupportedError"; + constructor(message: string); +} +export declare class RequestError extends Error { + readonly status: number; + readonly statusText: string; + readonly body: any; + readonly bodyText?: string; + readonly retryAfter?: number; + static readonly NAME = "RequestError"; + constructor(status: number, statusText: string, body: any, bodyText?: string, retryAfter?: number); +} +/** + * Determines if the given error is a cancellation-related error. + * + * @param e - The error object to evaluate. Can be an Error or a SerializedError. + * It is checked to determine if it matches the name of a CancelError + * or an AbortError. + * @returns Boolean indicating whether the error is categorized as a cancellation error. + */ +export declare function isCancelError(e: Error | SerializedError): boolean; +/** + * Determines if the given error is an instance of RequestError and optionally checks its status and code. + * + * @param e - The error object to evaluate. + * @param statusCode - Optional. A specific HTTP status code to check against the error's status. + * @param code - Optional. A specific error code to check against the error's body. + * @returns True if the error is a RequestError and matches the optional status and code, otherwise false. + */ +export declare function isRequestError(e: Error, statusCode?: number, code?: string): boolean; +//# sourceMappingURL=error.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/error.d.ts.map b/packages/core/.tshy-build/browser/error.d.ts.map new file mode 100644 index 0000000000..c0c702a8a1 --- /dev/null +++ b/packages/core/.tshy-build/browser/error.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,eAAe,GAAG,eAAe,CAgB7F;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,GAAE,MAAgB,GAAG,MAAM,CAO3E;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,iBAAiB;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,KAAK;aAGnB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,GAAG;aACT,QAAQ,CAAC,EAAE,MAAM;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAN9B,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB;gBAEpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,EACT,QAAQ,CAAC,EAAE,MAAM,EACxB,UAAU,CAAC,EAAE,MAAM;CAK/B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,eAAe,WAGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,WAM1E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/error.js b/packages/core/.tshy-build/browser/error.js new file mode 100644 index 0000000000..7bde165825 --- /dev/null +++ b/packages/core/.tshy-build/browser/error.js @@ -0,0 +1,114 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { serializeError as rawSerializeError } from "serialize-error"; +import debug from "debug"; +const dbg = debug("genaiscript:error"); +/** + * Serializes an error into a standardized format for easier handling. + * + * @param e - The input error to serialize. Can accept an unknown value, string, Error, or SerializedError. + * - If `undefined` or `null`, returns `undefined`. + * - If an instance of `Error`, serializes it using a custom depth and includes line and column details from the stack trace if available. + * - If an object, converts it into a SerializedError. + * - If a string, wraps it as the `message` property of a SerializedError. + * - For other types, attempts to stringify and include as the `message` property. + * @returns The serialized error with standardized properties or `undefined` for nullish input. + */ +export function serializeError(e) { + if (e === undefined || e === null) + return undefined; + else if (e instanceof Error) { + const err = rawSerializeError(e, { maxDepth: 3, useToJSON: false }); + const m = /at eval.*:(\d+):(\d+)/.exec(err.stack); + if (m) { + err.line = parseInt(m[1]); + err.column = parseInt(m[2]); + } + dbg("%O", err); + return err; + } + else if (e instanceof Object) { + const obj = e; + return obj; + } + else if (typeof e === "string") + return { message: e }; + else + return { message: e.toString?.() }; +} +/** + * Extracts the error message from an error-like object or returns a default value. + * + * @param e The error object to extract the message from. Can be an instance of `Error`, an object, or other error-like structures. + * @param defaultValue The default message to return if no message can be extracted. Defaults to "error". + * @returns The extracted error message or the `defaultValue` if none is found. + */ +export function errorMessage(e, defaultValue = "error") { + if (e === undefined || e === null) + return undefined; + if (typeof e.messsage === "string") + return e.message; + if (typeof e.error === "string") + return e.error; + if (typeof e.error === "object" && typeof e.error.message === "string") + return e.error.message; + const ser = serializeError(e); + return ser?.message ?? ser?.name ?? defaultValue; +} +export class CancelError extends Error { + static NAME = "CancelError"; + constructor(message) { + super(message); + this.name = CancelError.NAME; + } +} +export class NotSupportedError extends Error { + static NAME = "NotSupportedError"; + constructor(message) { + super(message); + this.name = NotSupportedError.NAME; + } +} +export class RequestError extends Error { + status; + statusText; + body; + bodyText; + retryAfter; + static NAME = "RequestError"; + constructor(status, statusText, body, bodyText, retryAfter) { + super(`LLM error (${status}): ${body?.message ? body?.message : statusText}`); + this.status = status; + this.statusText = statusText; + this.body = body; + this.bodyText = bodyText; + this.retryAfter = retryAfter; + this.name = "RequestError"; + } +} +/** + * Determines if the given error is a cancellation-related error. + * + * @param e - The error object to evaluate. Can be an Error or a SerializedError. + * It is checked to determine if it matches the name of a CancelError + * or an AbortError. + * @returns Boolean indicating whether the error is categorized as a cancellation error. + */ +export function isCancelError(e) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return e?.name === CancelError.NAME || e?.name === "AbortError"; +} +/** + * Determines if the given error is an instance of RequestError and optionally checks its status and code. + * + * @param e - The error object to evaluate. + * @param statusCode - Optional. A specific HTTP status code to check against the error's status. + * @param code - Optional. A specific error code to check against the error's body. + * @returns True if the error is a RequestError and matches the optional status and code, otherwise false. + */ +export function isRequestError(e, statusCode, code) { + return (e instanceof RequestError && + (statusCode === undefined || statusCode === e.status) && + (code === undefined || code === e.body?.code)); +} +//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/error.js.map b/packages/core/.tshy-build/browser/error.js.map new file mode 100644 index 0000000000..573252cb49 --- /dev/null +++ b/packages/core/.tshy-build/browser/error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/evalprompt.d.ts b/packages/core/.tshy-build/browser/evalprompt.d.ts new file mode 100644 index 0000000000..bcfe011276 --- /dev/null +++ b/packages/core/.tshy-build/browser/evalprompt.d.ts @@ -0,0 +1,17 @@ +import type { PromptContext, PromptScript } from "./types.js"; +/** + * Evaluates a JavaScript prompt script with the provided context. + * + * @param ctx0 - An object representing the execution context. Keys in this object are made available as arguments to the evaluated function. + * @param r - An object containing the JavaScript source code (`jsSource`) to be evaluated and its associated metadata, such as the filename. + * @param options - Optional settings. + * - sourceMaps - If true, generates and appends source maps for debugging purposes. + * - logCb - A callback function for logging debug messages. + * + * @returns The result of evaluating the JavaScript prompt script. + */ +export declare function evalPrompt(ctx0: PromptContext, r: PromptScript, options?: { + sourceMaps?: boolean; + logCb?: (msg: string) => void; +}): Promise; +//# sourceMappingURL=evalprompt.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/evalprompt.d.ts.map b/packages/core/.tshy-build/browser/evalprompt.d.ts.map new file mode 100644 index 0000000000..f200ba79ad --- /dev/null +++ b/packages/core/.tshy-build/browser/evalprompt.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"evalprompt.d.ts","sourceRoot":"","sources":["../../src/evalprompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM9D;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,EACnB,CAAC,EAAE,YAAY,EACf,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,gBAsCF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/evalprompt.js b/packages/core/.tshy-build/browser/evalprompt.js new file mode 100644 index 0000000000..9cc3980498 --- /dev/null +++ b/packages/core/.tshy-build/browser/evalprompt.js @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import MagicString from "magic-string"; +import { resolve } from "node:path"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("eval"); +/** + * Evaluates a JavaScript prompt script with the provided context. + * + * @param ctx0 - An object representing the execution context. Keys in this object are made available as arguments to the evaluated function. + * @param r - An object containing the JavaScript source code (`jsSource`) to be evaluated and its associated metadata, such as the filename. + * @param options - Optional settings. + * - sourceMaps - If true, generates and appends source maps for debugging purposes. + * - logCb - A callback function for logging debug messages. + * + * @returns The result of evaluating the JavaScript prompt script. + */ +export async function evalPrompt(ctx0, r, options) { + const { sourceMaps } = options || {}; + dbg(`eval %s`, r.id); + const ctx = Object.freeze({ + ...ctx0, + }); + const keys = Object.keys(ctx); + const prefix = "async (" + keys.join(",") + ") => { 'use strict';\n"; + const suffix = "\n}"; + const jsSource = r.jsSource; + let src = [prefix, jsSource, suffix].join(""); + // source map + if (r.filename && sourceMaps) { + dbg("creating source map"); + const s = new MagicString(jsSource); + s.prepend(prefix); + s.append(suffix); + dbg(`resolving path for ${r.filename}`); + const source = resolve(r.filename); + const map = s.generateMap({ + source, + includeContent: true, + hires: true, + }); + const mapURL = map.toUrl(); + // split keywords as so that JS engine does not try to load "mapUrl" + src += "\n//# source" + "MappingURL=" + mapURL; + dbg("appending sourceURL to source"); + src += "\n//# source" + "URL=" + source; + } + // in principle we could cache this function (but would have to do that based on hashed body or sth) + // but probably little point + const fn = (0, eval)(src); + dbg(`eval ${r.filename}`); + return await fn(...Object.values(ctx)); +} +//# sourceMappingURL=evalprompt.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/evalprompt.js.map b/packages/core/.tshy-build/browser/evalprompt.js.map new file mode 100644 index 0000000000..fdffa09755 --- /dev/null +++ b/packages/core/.tshy-build/browser/evalprompt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"evalprompt.js","sourceRoot":"","sources":["../../src/evalprompt.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAErC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAmB,EACnB,CAAe,EACf,OAGC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACrC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAgB;QACvC,GAAG,IAAI;KACR,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC;IAErB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,IAAI,GAAG,GAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,aAAa;IACb,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC7B,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjB,GAAG,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC;YACxB,MAAM;YACN,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,MAAM,MAAM,GAAW,GAAG,CAAC,KAAK,EAAE,CAAC;QACnC,oEAAoE;QACpE,GAAG,IAAI,cAAc,GAAG,aAAa,GAAG,MAAM,CAAC;QAC/C,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrC,GAAG,IAAI,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,CAAC;IAED,oGAAoG;IACpG,4BAA4B;IAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1B,OAAO,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/expander.d.ts b/packages/core/.tshy-build/browser/expander.d.ts new file mode 100644 index 0000000000..e9407d6155 --- /dev/null +++ b/packages/core/.tshy-build/browser/expander.d.ts @@ -0,0 +1,108 @@ +import { type PromptImage, type PromptPrediction } from "./promptdom.js"; +import type { GenerationOptions } from "./generation.js"; +import type { ChatCompletionMessageParam } from "./chattypes.js"; +import type { GenerationStatus, Project } from "./server/messages.js"; +import type { ChatParticipant, ExpansionVariables, FileMergeHandler, FileOutput, JSONSchema, PromptOutputProcessorHandler, PromptScript, ToolCallback } from "./types.js"; +/** + * Executes a prompt expansion process based on the provided prompt script, variables, and options. + * + * @param prj - The project instance in which the prompt script is executed. + * @param r - The prompt script to be evaluated, containing the logic and structure of the prompt. + * @param ev - Expansion variables to customize the prompt script evaluation. + * @param trace - The trace object used for generating logs and debugging details. + * @param options - Configuration options that influence the prompt expansion and evaluation. + * @param installGlobally - Specifies whether the prompt context should be installed globally. + * @returns An object containing the status of the operation, generated messages, images, schema definitions, tools, logs, and other related outputs. + */ +export declare function callExpander(prj: Project, r: PromptScript, ev: ExpansionVariables, options: GenerationOptions, installGlobally: boolean): Promise; + functions: readonly ToolCallback[]; + fileMerges: FileMergeHandler[]; + outputProcessors: PromptOutputProcessorHandler[]; + chatParticipants: ChatParticipant[]; + fileOutputs: FileOutput[]; + disposables: AsyncDisposable[]; + prediction: PromptPrediction; +}>>; +/** + * /** + * * Expands a template into a structured prompt to be used for generation. + * * + * * @param prj The project context for resolution of scripts and systems. + * * @param template The template script to be expanded. + * * @param options Configuration options for template expansion and generation. + * * @param env The environment variables and metadata for the template expansion process. + * * @returns An object containing the expanded prompt details, including messages, images, schemas, tools, and more. + * * + * * Parameters: + * * @param prj + * * - The current project instance, used to resolve associated systems and scripts. + * * + * * @param template + * * - The source template script containing configurations and definitions for prompt generation. + * * + * * @param - has parameters/options i + */ +export declare function expandTemplate(prj: Project, template: PromptScript, options: GenerationOptions, env: ExpansionVariables): Promise<{ + status: string; + statusText: string; + messages: ChatCompletionMessageParam[]; + cache?: undefined; + images?: undefined; + schemas?: undefined; + tools?: undefined; + model?: undefined; + temperature?: undefined; + reasoningEffort?: undefined; + topP?: undefined; + maxTokens?: undefined; + maxToolCalls?: undefined; + seed?: undefined; + responseType?: undefined; + responseSchema?: undefined; + fileMerges?: undefined; + prediction?: undefined; + outputProcessors?: undefined; + chatParticipants?: undefined; + fileOutputs?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + disposables?: undefined; + metadata?: undefined; + fallbackTools?: undefined; + disableChatPreview?: undefined; +} | { + cache: string | boolean; + messages: ChatCompletionMessageParam[]; + images: PromptImage[]; + schemas: Record; + tools: ToolCallback[]; + status: GenerationStatus; + statusText: string; + model: import("./types.js").ModelType; + temperature: number; + reasoningEffort: import("openai/resources/shared.mjs").ReasoningEffort; + topP: number; + maxTokens: number; + maxToolCalls: number; + seed: number; + responseType: import("./types.js").PromptTemplateResponseType; + responseSchema: import("./types.js").JSONSchemaObject; + fileMerges: FileMergeHandler[]; + prediction: PromptPrediction; + outputProcessors: PromptOutputProcessorHandler[]; + chatParticipants: ChatParticipant[]; + fileOutputs: FileOutput[]; + logprobs: boolean; + topLogprobs: number; + disposables: AsyncDisposable[]; + metadata: Record; + fallbackTools: boolean; + disableChatPreview: boolean; +}>; +//# sourceMappingURL=expander.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/expander.d.ts.map b/packages/core/.tshy-build/browser/expander.d.ts.map new file mode 100644 index 0000000000..1dda1866b1 --- /dev/null +++ b/packages/core/.tshy-build/browser/expander.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"expander.d.ts","sourceRoot":"","sources":["../../src/expander.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,0BAA0B,EAAiC,MAAM,gBAAgB,CAAC;AAChG,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAQtE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,4BAA4B,EAC5B,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,CAAC,EAAE,YAAY,EACf,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,OAAO;;;;;;;;;;;;;;IAwGzB;AAkCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqNZ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;GAuB5B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/expander.js b/packages/core/.tshy-build/browser/expander.js new file mode 100644 index 0000000000..4f5b22331e --- /dev/null +++ b/packages/core/.tshy-build/browser/expander.js @@ -0,0 +1,388 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveScript } from "./ast.js"; +import { assert } from "./assert.js"; +import { errorMessage, isCancelError, NotSupportedError } from "./error.js"; +import { JS_REGEX, MAX_TOOL_CALLS, TS_IMPORT_REGEX } from "./constants.js"; +import { finalizeMessages, renderPromptNode, } from "./promptdom.js"; +import { createPromptContext } from "./promptcontext.js"; +import { evalPrompt } from "./evalprompt.js"; +import { addToolDefinitionsMessage, appendSystemMessage } from "./chat.js"; +import { importPrompt } from "./importprompt.js"; +import { resolveRuntimeHost } from "./host.js"; +import { addFallbackToolSystems, resolveSystems } from "./systems.js"; +import { dispose } from "./dispose.js"; +import { normalizeFloat, normalizeInt } from "./cleaners.js"; +import { mergeEnvVarsWithSystem } from "./vars.js"; +import { installGlobalPromptContext } from "./globals.js"; +import { mark } from "./performance.js"; +import { nodeIsPackageTypeModule } from "./nodepackage.js"; +import { metadataMerge } from "./metadata.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("expander"); +/** + * Executes a prompt expansion process based on the provided prompt script, variables, and options. + * + * @param prj - The project instance in which the prompt script is executed. + * @param r - The prompt script to be evaluated, containing the logic and structure of the prompt. + * @param ev - Expansion variables to customize the prompt script evaluation. + * @param trace - The trace object used for generating logs and debugging details. + * @param options - Configuration options that influence the prompt expansion and evaluation. + * @param installGlobally - Specifies whether the prompt context should be installed globally. + * @returns An object containing the status of the operation, generated messages, images, schema definitions, tools, logs, and other related outputs. + */ +export async function callExpander(prj, r, ev, options, installGlobally) { + mark("prompt.expand.main"); + assert(!!options.model); + const trace = options.trace; + const modelId = r.model ?? options.model; + const ctx = await createPromptContext(prj, ev, options, modelId); + if (installGlobally) + installGlobalPromptContext(ctx); + let status = undefined; + let statusText = undefined; + let logs = ""; + let messages = []; + let images = []; + let schemas = {}; + let functions = []; + let fileMerges = []; + let outputProcessors = []; + let chatParticipants = []; + let fileOutputs = []; + let disposables = []; + let prediction; + const logCb = (msg) => { + logs += msg + "\n"; + }; + // package.json { type: "module" } + const isModule = await nodeIsPackageTypeModule(); + const isJs = JS_REGEX.test(r.filename); + const isTs = TS_IMPORT_REGEX.test(r.filename); + dbg(`module: %s`, isModule); + dbg(`js: %s`, isJs); + dbg(`ts: %s`, isTs); + try { + if (r.filename && (isTs || (isModule && isJs))) { + await importPrompt(ctx, r, { logCb, trace }); + } + else { + await evalPrompt(ctx, r, { + sourceMaps: true, + logCb, + }); + } + const node = ctx.node; + const { messages: msgs, images: imgs, errors, schemas: schs, tools: fns, fileMerges: fms, outputProcessors: ops, chatParticipants: cps, fileOutputs: fos, prediction: pred, disposables: mcps, } = await renderPromptNode(modelId, node, { + flexTokens: options.flexTokens, + fenceFormat: options.fenceFormat, + trace, + }); + messages = msgs; + images = imgs; + schemas = schs; + functions = fns; + fileMerges = fms; + outputProcessors = ops; + chatParticipants = cps; + fileOutputs = fos; + disposables = mcps; + prediction = pred; + if (errors?.length) { + if (trace) + for (const error of errors) + trace?.error(``, error); + status = "error"; + statusText = errors.map((e) => errorMessage(e)).join("\n"); + } + else { + status = "success"; + } + } + catch (e) { + status = "error"; + statusText = errorMessage(e); + if (isCancelError(e)) { + status = "cancelled"; + trace?.note(statusText); + } + else { + trace?.error(undefined, e); + } + } + return Object.freeze({ + logs, + status, + statusText, + messages, + images, + schemas, + functions: Object.freeze(functions), + fileMerges, + outputProcessors, + chatParticipants, + fileOutputs, + disposables, + prediction, + }); +} +function traceEnv(model, trace, env) { + // nothing to show + if (!env.files?.length && + !Object.keys(env.vars || {}).length && + !Object.keys(env.secrets || {}).length) + return; + trace?.startDetails("🏡 env"); + trace?.files(env.files, { + title: "💾 files", + model, + skipIfEmpty: true, + secrets: env.secrets, + maxLength: 0, + }); + const vars = Object.entries(env.vars || {}); + if (vars.length) { + trace?.startDetails("🧮 vars"); + for (const [k, v] of vars) { + trace?.itemValue(k, v); + } + trace?.endDetails(); + } + const secrets = Object.keys(env.secrets || {}); + if (secrets.length) { + trace?.itemValue(`🔐 secrets`, secrets.join(", ")); + } + trace?.endDetails(); +} +/** + * /** + * * Expands a template into a structured prompt to be used for generation. + * * + * * @param prj The project context for resolution of scripts and systems. + * * @param template The template script to be expanded. + * * @param options Configuration options for template expansion and generation. + * * @param env The environment variables and metadata for the template expansion process. + * * @returns An object containing the expanded prompt details, including messages, images, schemas, tools, and more. + * * + * * Parameters: + * * @param prj + * * - The current project instance, used to resolve associated systems and scripts. + * * + * * @param template + * * - The source template script containing configurations and definitions for prompt generation. + * * + * * @param - has parameters/options i + */ +export async function expandTemplate(prj, template, options, env) { + mark("prompt.expand.script"); + const runtimeHost = resolveRuntimeHost(); + const trace = options.trace; + const model = options.model; + assert(!!trace); + assert(!!model); + const cancellationToken = options.cancellationToken; + // update options + const lineNumbers = options.lineNumbers ?? + template.lineNumbers ?? + resolveSystems(prj, template, undefined) + .map((s) => resolveScript(prj, s)) + .some((t) => t?.lineNumbers); + const temperature = options.temperature ?? + normalizeFloat(env.vars["temperature"]) ?? + template.temperature ?? + runtimeHost.modelAliases.large.temperature; + options.fallbackTools = + options.fallbackTools ?? template.fallbackTools ?? runtimeHost.modelAliases.large.fallbackTools; + const reasoningEffort = options.reasoningEffort ?? + env.vars["reasoning_effort"] ?? + template.reasoningEffort ?? + runtimeHost.modelAliases.large.reasoningEffort; + const topP = options.topP ?? normalizeFloat(env.vars["top_p"]) ?? template.topP; + const maxTokens = options.maxTokens ?? + normalizeInt(env.vars["maxTokens"]) ?? + normalizeInt(env.vars["max_tokens"]) ?? + template.maxTokens; + const maxToolCalls = options.maxToolCalls ?? + normalizeInt(env.vars["maxToolCalls"]) ?? + normalizeInt(env.vars["max_tool_calls"]) ?? + template.maxToolCalls ?? + MAX_TOOL_CALLS; + const flexTokens = options.flexTokens ?? + normalizeInt(env.vars["flexTokens"]) ?? + normalizeInt(env.vars["flex_tokens"]) ?? + template.flexTokens; + const fenceFormat = options.fenceFormat ?? template.fenceFormat; + const cache = options.cache ?? template.cache; + const metadata = metadataMerge(template, options.metadata); + let seed = options.seed ?? normalizeInt(env.vars["seed"]) ?? template.seed; + if (seed !== undefined) + seed = seed >> 0; + let logprobs = options.logprobs || template.logprobs; + let topLogprobs = Math.max(options.topLogprobs || 0, template.topLogprobs || 0); + const disableChatPreview = options.disableChatPreview === true || template.disableChatPreview === true; + // finalize options + env.meta.model = model; + Object.freeze(env.meta); + trace?.startDetails("💾 script", { expanded: true }); + traceEnv(model, trace, env); + trace?.startDetails("🧬 prompt", { expanded: true }); + if (template.filename) + trace?.item(template.filename); + trace?.detailsFenced("💻 script source", template.jsSource, "js"); + const prompt = await callExpander(prj, template, env, { + ...options, + trace, + maxTokens, + maxToolCalls, + flexTokens, + seed, + topP, + temperature, + reasoningEffort, + lineNumbers, + fenceFormat, + }, true); + const { status, statusText, messages } = prompt; + const images = prompt.images.slice(0); + const schemas = structuredClone(prompt.schemas); + const tools = prompt.functions.slice(0); + const fileMerges = prompt.fileMerges.slice(0); + const outputProcessors = prompt.outputProcessors.slice(0); + const chatParticipants = prompt.chatParticipants.slice(0); + const fileOutputs = prompt.fileOutputs.slice(0); + const prediction = prompt.prediction; + const disposables = prompt.disposables.slice(0); + if (prompt.logs?.length) + trace?.details("📝 console.log", prompt.logs); + trace?.endDetails(); + if (cancellationToken?.isCancellationRequested || status === "cancelled") { + await dispose(disposables, { trace }); + return { + status: "cancelled", + statusText: "user cancelled", + messages, + }; + } + if (status !== "success" || prompt.messages.length === 0) { + // cancelled + await dispose(disposables, { trace }); + return { + status, + statusText, + messages, + }; + } + const addSystemMessage = (content) => { + appendSystemMessage(messages, content); + trace?.fence(content, "markdown"); + }; + const systems = resolveSystems(prj, template, tools); + if (systems.length) + if (messages[0].role === "system") + // there's already a system message. add empty before + messages.unshift({ role: "system", content: "" }); + if (addFallbackToolSystems(systems, tools, template, options)) { + dbg("added fallback tools"); + assert(!Object.isFrozen(options)); + options.fallbackTools = true; + } + try { + trace?.startDetails("👾 systems"); + for (let i = 0; i < systems.length; ++i) { + if (cancellationToken?.isCancellationRequested) { + await dispose(disposables, { trace }); + return { + status: "cancelled", + statusText: "user cancelled", + messages, + }; + } + const systemId = systems[i]; + dbg(`system ${systemId.id}`); + const system = resolveScript(prj, systemId); + if (!system) + throw new Error(`system template ${systemId.id} not found`); + trace?.startDetails(`👾 ${system.id}`); + const sysr = await callExpander(prj, system, mergeEnvVarsWithSystem(env, systemId), { ...options, trace }, false); + if (sysr.images) + images.push(...sysr.images); + if (sysr.schemas) + Object.assign(schemas, sysr.schemas); + if (sysr.functions) + tools.push(...sysr.functions); + if (sysr.fileMerges) + fileMerges.push(...sysr.fileMerges); + if (sysr.outputProcessors) + outputProcessors.push(...sysr.outputProcessors); + if (sysr.chatParticipants) + chatParticipants.push(...sysr.chatParticipants); + if (sysr.fileOutputs) + fileOutputs.push(...sysr.fileOutputs); + if (sysr.disposables?.length) + disposables.push(...sysr.disposables); + if (sysr.logs?.length) + trace?.details("📝 console.log", sysr.logs); + for (const smsg of sysr.messages) { + if (smsg.role === "user" && typeof smsg.content === "string") { + addSystemMessage(smsg.content); + } + else + throw new NotSupportedError("only string user messages supported in system"); + } + logprobs = logprobs || system.logprobs; + topLogprobs = Math.max(topLogprobs, system.topLogprobs || 0); + trace?.detailsFenced("💻 script source", system.jsSource, "js"); + trace?.endDetails(); + if (sysr.status !== "success") { + await dispose(disposables, options); + return { + status: sysr.status, + statusText: sysr.statusText, + messages, + }; + } + } + } + finally { + trace?.endDetails(); + } + if (options.fallbackTools) { + addToolDefinitionsMessage(messages, tools); + } + const { responseType, responseSchema } = finalizeMessages(model, messages, { + ...template, + fileOutputs, + trace, + }); + trace?.endDetails(); + return { + cache, + messages, + images, + schemas, + tools, + status: status, + statusText: statusText, + model, + temperature, + reasoningEffort, + topP, + maxTokens, + maxToolCalls, + seed, + responseType, + responseSchema, + fileMerges, + prediction, + outputProcessors, + chatParticipants, + fileOutputs, + logprobs, + topLogprobs, + disposables, + metadata, + fallbackTools: options.fallbackTools, + disableChatPreview, + }; +} +//# sourceMappingURL=expander.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/expander.js.map b/packages/core/.tshy-build/browser/expander.js.map new file mode 100644 index 0000000000..59b0133219 --- /dev/null +++ b/packages/core/.tshy-build/browser/expander.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expander.js","sourceRoot":"","sources":["../../src/expander.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/features.d.ts b/packages/core/.tshy-build/browser/features.d.ts new file mode 100644 index 0000000000..77fa9d05c8 --- /dev/null +++ b/packages/core/.tshy-build/browser/features.d.ts @@ -0,0 +1,2 @@ +export declare function providerFeatures(provider: string): import("./llmsdata.js").LanguageModelProviderInformation; +//# sourceMappingURL=features.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/features.d.ts.map b/packages/core/.tshy-build/browser/features.d.ts.map new file mode 100644 index 0000000000..f3015294dd --- /dev/null +++ b/packages/core/.tshy-build/browser/features.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,4DAGhD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/features.js b/packages/core/.tshy-build/browser/features.js new file mode 100644 index 0000000000..7f7a0bad92 --- /dev/null +++ b/packages/core/.tshy-build/browser/features.js @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDERS } from "./constants.js"; +export function providerFeatures(provider) { + const features = MODEL_PROVIDERS.find(({ id }) => id === provider); + return features; +} +//# sourceMappingURL=features.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/features.js.map b/packages/core/.tshy-build/browser/features.js.map new file mode 100644 index 0000000000..1db3dfcf94 --- /dev/null +++ b/packages/core/.tshy-build/browser/features.js.map @@ -0,0 +1 @@ +{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fence.d.ts b/packages/core/.tshy-build/browser/fence.d.ts new file mode 100644 index 0000000000..214737e195 --- /dev/null +++ b/packages/core/.tshy-build/browser/fence.d.ts @@ -0,0 +1,53 @@ +import type { Fenced } from "./types.js"; +/** + * Parses a key-value pair from a string, where the key and value are separated by '=' or ':'. + * Returns an object with the extracted and unquoted key-value pair. + * If no separator is found, returns an empty object. + * + * @param text - The input string containing a key-value pair. + */ +export declare function parseKeyValuePair(text: string): Record; +/** + * Parse key-value pairs from input text. + * @param text - Input containing key-value pairs separated by spaces or line breaks. Keys and values must be separated by "=" or ":". + * - Supports single or multiple strings. + * @returns An object with parsed key-value pairs as immutable data. + */ +export declare function parseKeyValuePairs(text: string | string[]): Readonly>; +/** + * Parse text to extract fenced code blocks and their metadata. + * @param text - The input text containing fenced code blocks. + * - Each block starts and ends with a code fence (e.g., ```). + * - May include metadata such as labels, languages, and arguments. + * @returns An array of objects representing fenced code blocks, including: + * - label: The label or identifier for the block. + * - content: The content within the fenced block. + * - language: The programming language or type of the block. + * - args: Parsed key-value arguments from the fence. + */ +export declare function extractFenced(text: string): Fenced[]; +/** + * Finds the first fenced block containing YAML or JSON content and parses it. + * @param fences - Array of fenced objects to search. Each object must include content, label, and language. + * @returns Parsed content if a valid YAML or JSON block is found, otherwise undefined. + */ +export declare function findFirstDataFence(fences: Fenced[]): any; +/** + * Parse an array of strings into key-value pairs and return them as an immutable object. + * @param vars - Array of strings, each containing key-value pairs separated by "=" or ":". + * @returns An object with parsed key-value pairs, or undefined if the input array is empty or null. + */ +export declare function parseVars(vars: string[]): Readonly>; +/** + * Render an array of fenced code blocks into a formatted string. + * Each block includes its label, content, language, validation results, and schema errors if present. + * @param vars - Array of fenced objects. Each object should include: + * - label: The label or identifier for the block. + * - content: The content within the fenced block. + * - language: The programming language or type of the block. + * - validation: Validation results, including schema errors and path validity. + * - args: Parsed key-value arguments from the fence. + * @returns A formatted string representation of the fenced blocks. + */ +export declare function renderFencedVariables(vars: Fenced[]): string; +//# sourceMappingURL=fence.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fence.d.ts.map b/packages/core/.tshy-build/browser/fence.d.ts.map new file mode 100644 index 0000000000..51fa2c1ba0 --- /dev/null +++ b/packages/core/.tshy-build/browser/fence.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fence.d.ts","sourceRoot":"","sources":["../../src/fence.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAoBzC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGtE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,oCAWzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmGpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,oCAKvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAuBnD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fence.js b/packages/core/.tshy-build/browser/fence.js new file mode 100644 index 0000000000..efa7f9195a --- /dev/null +++ b/packages/core/.tshy-build/browser/fence.js @@ -0,0 +1,216 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { EMOJI_FAIL, EMOJI_SUCCESS, EMOJI_UNDEFINED } from "./constants.js"; +import { JSON5TryParse } from "./json5.js"; +import { removeLineNumbers } from "./liner.js"; +import { unquote } from "./unwrappers.js"; +import { arrayify } from "./cleaners.js"; +import { YAMLTryParse } from "./yaml.js"; +// Regular expression for detecting the start of a code fence +const promptFenceStartRx = /^(?`{3,})(?[^=:]+)?(\s+(?.*))?$/m; +/** + * Start parsing a fence from a given text line. + * @param text - The text line to parse. + * @returns An object containing the fence, language, and arguments. + */ +function startFence(text) { + const m = promptFenceStartRx.exec(text); + const groups = m?.groups || {}; + return { + fence: groups.fence, + language: unquote(groups.language), + args: parseKeyValuePairs(groups.args), + }; +} +/** + * Parses a key-value pair from a string, where the key and value are separated by '=' or ':'. + * Returns an object with the extracted and unquoted key-value pair. + * If no separator is found, returns an empty object. + * + * @param text - The input string containing a key-value pair. + */ +export function parseKeyValuePair(text) { + const m = /[=:]/.exec(text); + return m ? { [text.slice(0, m.index)]: unquote(text.slice(m.index + 1)) } : {}; +} +/** + * Parse key-value pairs from input text. + * @param text - Input containing key-value pairs separated by spaces or line breaks. Keys and values must be separated by "=" or ":". + * - Supports single or multiple strings. + * @returns An object with parsed key-value pairs as immutable data. + */ +export function parseKeyValuePairs(text) { + const res = {}; + const chunks = arrayify(text); + chunks.forEach((chunk) => chunk + ?.split(/\s+/g) + .map((kv) => kv.split(/[=:]/)) + .filter((m) => m.length == 2) + .forEach((m) => (res[m[0]] = unquote(m[1])))); + return Object.freeze(res); +} +/** + * Parse text to extract fenced code blocks and their metadata. + * @param text - The input text containing fenced code blocks. + * - Each block starts and ends with a code fence (e.g., ```). + * - May include metadata such as labels, languages, and arguments. + * @returns An array of objects representing fenced code blocks, including: + * - label: The label or identifier for the block. + * - content: The content within the fenced block. + * - language: The programming language or type of the block. + * - args: Parsed key-value arguments from the fence. + */ +export function extractFenced(text) { + if (!text) + return []; + let currLbl = ""; // Current label for the fenced block + let currText = ""; // Content of the current fenced block + let currLanguage = ""; // Programming language of the fenced block + let currArgs = {}; // Arguments parsed from the fence + let currFence = ""; // Current fence delimiter + const vars = []; // Array to store the fenced blocks + const lines = text.split(/\r?\n/); // Split text into lines + for (let i = 0; i < lines.length; ++i) { + const line = lines[i]; + if (currFence) { + // Handling the end of a fenced block + if (line.trimEnd() === currFence) { + currFence = ""; + vars.push({ + label: currLbl, + content: normalize(currLbl, currText), + language: currLanguage, + args: currArgs, + }); + currText = ""; + } + else { + currText += line + "\n"; + } + } + else { + const fence = startFence(line); + if (fence.fence && fence.args["file"]) { + // Labeled fence with file + currLbl = "FILE " + fence.args["file"]; + currFence = fence.fence; + currLanguage = fence.language || ""; + currArgs = fence.args; + } + else if (fence.fence) { + // Unlabeled fence + currLbl = ""; + currFence = fence.fence; + currLanguage = fence.language || ""; + currArgs = fence.args; + } + else { + // Handling special case for labeled fences + const start = startFence(lines[i + 1]); + const m = /(\w+):\s+([^\s]+)/.exec(line); + if (start.fence && line.endsWith(":")) { + currLbl = (unquote(line.slice(0, -1)) + " " + (start.args["file"] || "")).trim(); + currFence = start.fence; + currLanguage = start.language || ""; + currArgs = start.args; + i++; + } + else if (start.fence && m) { + currLbl = unquote(m[1]) + " " + (start.args["file"] || unquote(m[2])); + currFence = start.fence; + currLanguage = start.language || ""; + currArgs = start.args; + i++; + } + } + } + } + // Push the last collected text block if any + if (currText != "") { + vars.push({ + label: currLbl, + language: currLanguage, + content: normalize(currLbl, currText), + args: currArgs, + }); + } + return vars; + /** + * Normalize content by removing unnecessary code fences. + * @param label - The label of the content. + * @param text - The content text. + * @returns The normalized text. + */ + function normalize(label, text) { + // remove extra line numbers + text = removeLineNumbers(text); + /** handles situations like this: + + ````` file=problem1.py + ```python + import re + ... + */ + if (/file=\w+\.\w+/.test(label)) { + const m = /^\s*\`{3,}\w*\r?\n((.|\s)*)\r?\n\`{3,}\s*$/.exec(text); + if (m) + return m[1]; + } + return text; + } +} +/** + * Finds the first fenced block containing YAML or JSON content and parses it. + * @param fences - Array of fenced objects to search. Each object must include content, label, and language. + * @returns Parsed content if a valid YAML or JSON block is found, otherwise undefined. + */ +export function findFirstDataFence(fences) { + const { content, language } = fences?.find((f) => f.content && !f.label && (f.language === "yaml" || f.language === "json")) || {}; + if (language === "yaml" || language === "yml") + return YAMLTryParse(content); + else if (language === "json") + return JSON5TryParse(content); + return undefined; +} +/** + * Parse an array of strings into key-value pairs and return them as an immutable object. + * @param vars - Array of strings, each containing key-value pairs separated by "=" or ":". + * @returns An object with parsed key-value pairs, or undefined if the input array is empty or null. + */ +export function parseVars(vars) { + if (!vars?.length) + return undefined; + const res = {}; + if (vars) + for (const v of vars) + Object.assign(res, parseKeyValuePairs(v)); + return Object.freeze(res); +} +/** + * Render an array of fenced code blocks into a formatted string. + * Each block includes its label, content, language, validation results, and schema errors if present. + * @param vars - Array of fenced objects. Each object should include: + * - label: The label or identifier for the block. + * - content: The content within the fenced block. + * - language: The programming language or type of the block. + * - validation: Validation results, including schema errors and path validity. + * - args: Parsed key-value arguments from the fence. + * @returns A formatted string representation of the fenced blocks. + */ +export function renderFencedVariables(vars) { + return vars + .map(({ label: k, content: v, validation, args, language }) => `- ${k ? `\`${k}\`` : ""} ${validation !== undefined + ? `${validation.schemaError ? EMOJI_UNDEFINED : validation.pathValid === false ? EMOJI_FAIL : EMOJI_SUCCESS}` + : "no label"}\n +\`\`\`\`\`${language ?? (/^Note/.test(k) ? "markdown" : /^File [^\n]+.\.(\w+)$/m.exec(k)?.[1] || "")} +${v} +\`\`\`\`\` +${validation?.schemaError + ? `> [!CAUTION] +> Schema ${args.schema} validation errors +${validation.schemaError.split("\n").join("\n> ")}` + : ""} +`) + .join("\n"); +} +//# sourceMappingURL=fence.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fence.js.map b/packages/core/.tshy-build/browser/fence.js.map new file mode 100644 index 0000000000..2ee558ce2a --- /dev/null +++ b/packages/core/.tshy-build/browser/fence.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fence.js","sourceRoot":"","sources":["../../src/fence.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,6DAA6D;AAC7D,MAAM,kBAAkB,GAAG,yDAAyD,CAAC;AAErF;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAA2B,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IACvD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,KAAK;QACH,EAAE,KAAK,CAAC,MAAM,CAAC;SACd,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;SAC5B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,qCAAqC;IACvD,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,sCAAsC;IACzD,IAAI,YAAY,GAAG,EAAE,CAAC,CAAC,2CAA2C;IAClE,IAAI,QAAQ,GAA2B,EAAE,CAAC,CAAC,kCAAkC;IAC7E,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC,0BAA0B;IAC9C,MAAM,IAAI,GAAa,EAAE,CAAC,CAAC,mCAAmC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;IAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,SAAS,EAAE,CAAC;YACd,qCAAqC;YACrC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;gBACjC,SAAS,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC;oBACR,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACrC,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;gBACH,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,0BAA0B;gBAC1B,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxB,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACvB,kBAAkB;gBAClB,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxB,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjF,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;oBACxB,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;oBACpC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;oBACxB,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;oBACpC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;YACrC,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;IAEZ;;;;;OAKG;IACH,SAAS,SAAS,CAAC,KAAa,EAAE,IAAY;QAC5C,4BAA4B;QAC5B,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE/B;;;;;;cAMM;QACN,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IACjD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GACzB,MAAM,EAAE,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CACjF,IAAI,EAAE,CAAC;IACV,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;SACvE,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,IAAI;QAAE,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,OAAO,IAAI;SACR,GAAG,CACF,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAClF,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE;QAC7G,CAAC,CAAC,UACN;YAEE,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CACzF;EACJ,CAAC;;EAGD,UAAU,EAAE,WAAW;QACrB,CAAC,CAAC;WACK,IAAI,CAAC,MAAM;EACpB,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC/C,CAAC,CAAC,EACN;CACC,CACI;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetch.d.ts b/packages/core/.tshy-build/browser/fetch.d.ts new file mode 100644 index 0000000000..bc8a52e991 --- /dev/null +++ b/packages/core/.tshy-build/browser/fetch.d.ts @@ -0,0 +1,60 @@ +import type { TraceOptions } from "./trace.js"; +import { type CancellationOptions } from "./cancellation.js"; +import type { FetchOptions, RetryOptions } from "./types.js"; +/** + * Parses the retry-after header value. + * + * @param retryAfterHeader - The retry-after header value + * @returns The number of seconds to wait, or undefined if parsing failed + */ +export declare function parseRetryAfter(retryAfterHeader: string): number | null; +export type FetchType = (input: string | URL | globalThis.Request, options?: FetchOptions & TraceOptions) => Promise; +/** + * Creates a fetch function with retry logic. + * + * Wraps `crossFetch` with retry capabilities based on the provided options. + * Configures the number of retries, delay between retries, HTTP status codes to retry on, + * and supports cancellation and proxy configuration. + * + * @param options - Configuration for retries, delays, HTTP status codes, cancellation token, and tracing. + * - retryOn: HTTP status codes to retry on. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries. + * - maxDelay: Maximum delay between retries. + * - cancellationToken: Token to cancel the fetch. + * - trace: Trace options for logging. + * @returns A fetch function with retry and cancellation support. + */ +export declare function createFetch(options?: TraceOptions & CancellationOptions & RetryOptions): Promise; +/** + * Executes an HTTP(S) request with optional retry logic. + * + * Wraps the input request with retry capabilities and additional configurations. + * Leverages `createFetch` to handle retry conditions and builds a final fetch function. + * + * @param input - The input to the fetch request. Can be a string URL, URL object, or Request object. + * @param options - Configuration options for the fetch operation. + * - retryOn: Array of HTTP status codes to retry on. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries in milliseconds. + * - maxDelay: Maximum allowable delay between retries in milliseconds. + * - trace: Trace options for logging the fetch operation. + * - ...rest: Additional options passed to the fetch request. + * @returns A Promise resolving with the HTTP Response. + */ +export declare function fetch(input: string | URL | globalThis.Request, options?: FetchOptions & TraceOptions): Promise; +/** + * Converts the HTTP response status and status text into a list of strings. + * + * Extracts the status and status text from the response object for logging and debugging. + * + * @param res - The HTTP response object. Includes optional status and statusText fields. + * @returns A list of strings containing the status and status text if provided. + */ +export declare function statusToMessage(res?: { + status?: number; + statusText?: string; +}): string; +export declare function tryReadText(res: Response, defaultValue?: string): Promise; +export declare function iterateBody(r: Response, options?: CancellationOptions): AsyncGenerator; +//# sourceMappingURL=fetch.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetch.d.ts.map b/packages/core/.tshy-build/browser/fetch.d.ts.map new file mode 100644 index 0000000000..e7dbff0c06 --- /dev/null +++ b/packages/core/.tshy-build/browser/fetch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/fetch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,mBAAmB,EAAY,MAAM,mBAAmB,CAAC;AAIvE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ7D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6BvE;AAoBD,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,EACxC,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,KAClC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,WAAW,CAC/B,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAAG,YAAY,GAC1D,OAAO,CAAC,SAAS,CAAC,CAiHpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,EACxC,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,GAEpC,OAAO,CAAC,QAAQ,CAAC,CAUnB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,UAG7E;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,mBAQrE;AAED,wBAAuB,WAAW,CAChC,CAAC,EAAE,QAAQ,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,cAAc,CAAC,MAAM,CAAC,CAuBxB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetch.js b/packages/core/.tshy-build/browser/fetch.js new file mode 100644 index 0000000000..05478bda25 --- /dev/null +++ b/packages/core/.tshy-build/browser/fetch.js @@ -0,0 +1,228 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* eslint-disable n/no-unsupported-features/node-builtins */ +import wrapFetch from "fetch-retry"; +import { FETCH_RETRY_DEFAULT, FETCH_RETRY_DELAY_DEFAULT, FETCH_RETRY_GROWTH_FACTOR, FETCH_RETRY_MAX_DELAY_DEFAULT, FETCH_RETRY_MAX_RETRY_AFTER_DEFAULT, FETCH_RETRY_MIN_DELAY_DEFAULT, FETCH_RETRY_ON_DEFAULT, } from "./constants.js"; +import { errorMessage } from "./error.js"; +import { logVerbose } from "./util.js"; +import { toSignal } from "./cancellation.js"; +import { resolveHttpsProxyAgent } from "./proxy.js"; +import crossFetch from "cross-fetch"; +import { prettyDuration, prettyStrings } from "./pretty.js"; +import { genaiscriptDebug } from "./debug.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { createUTF8Decoder } from "./utf8.js"; +const dbg = genaiscriptDebug("fetch"); +const dbgr = dbg.extend("retry"); +/** + * Parses the retry-after header value. + * + * @param retryAfterHeader - The retry-after header value + * @returns The number of seconds to wait, or undefined if parsing failed + */ +export function parseRetryAfter(retryAfterHeader) { + if (!retryAfterHeader) + return undefined; + const trimmed = retryAfterHeader.trim(); + dbgr(`parsing retry-after header: ${trimmed}`); + // Try to parse as seconds (integer) first - must be a valid non-negative integer + const seconds = parseInt(trimmed, 10); + if (!isNaN(seconds) && seconds >= 0 && trimmed === seconds.toString()) { + return seconds; + } + // Try to parse as HTTP date only if it's not a pure number + if (!/^-?\d+$/.test(trimmed)) { + try { + const date = new Date(trimmed); + if (!isNaN(date.getTime())) { + const now = new Date(); + const delayMs = date.getTime() - now.getTime(); + const delaySeconds = Math.max(0, Math.ceil(delayMs / 1000)); + return delaySeconds; + } + } + catch (e) { + dbgr(`failed to parse retry-after header as date: %s`, errorMessage(e)); + } + } + dbgr(`failed to parse retry-after header: ${retryAfterHeader}`); + return undefined; +} +function parseRetryAfterHeader(response) { + const { headers } = response || {}; + if (!headers) + return undefined; + const retryAfterHeader = + // eslint-disable-next-line @typescript-eslint/no-explicit-any + headers.get?.("retry-after") || headers["retry-after"]; + if (retryAfterHeader) { + const retryAfterSeconds = parseRetryAfter(retryAfterHeader); + if (!isNaN(retryAfterSeconds)) { + const retryAfter = retryAfterSeconds * 1000; // Convert to milliseconds + dbgr(`retry-after: %s`, prettyDuration(retryAfter)); + return retryAfter; + } + } + return undefined; +} +/** + * Creates a fetch function with retry logic. + * + * Wraps `crossFetch` with retry capabilities based on the provided options. + * Configures the number of retries, delay between retries, HTTP status codes to retry on, + * and supports cancellation and proxy configuration. + * + * @param options - Configuration for retries, delays, HTTP status codes, cancellation token, and tracing. + * - retryOn: HTTP status codes to retry on. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries. + * - maxDelay: Maximum delay between retries. + * - cancellationToken: Token to cancel the fetch. + * - trace: Trace options for logging. + * @returns A fetch function with retry and cancellation support. + */ +export async function createFetch(options) { + const { retries = FETCH_RETRY_DEFAULT, retryOn = FETCH_RETRY_ON_DEFAULT, trace, retryDelay = FETCH_RETRY_DELAY_DEFAULT, maxDelay = FETCH_RETRY_MAX_DELAY_DEFAULT, maxRetryAfter = FETCH_RETRY_MAX_RETRY_AFTER_DEFAULT, cancellationToken, } = options || {}; + const minDelay = FETCH_RETRY_MIN_DELAY_DEFAULT; + dbg(`create fetch`); + // We create a proxy based on Node.js environment variables. + const agent = await resolveHttpsProxyAgent(); + const signal = toSignal(cancellationToken); + // We enrich crossFetch with the proxy. + const crossFetchWithProxy = (url, opts) => { + const requestInit = deleteUndefinedValues({ signal, agent, ...(opts || {}) }); + dbg(`%s %s`, opts?.method || "GET", url); + return crossFetch(url, requestInit); + }; + // Return the default fetch if no retry status codes are specified + if (!retryOn?.length) { + dbgr("no retry logic applied, using crossFetchWithProxy directly"); + return crossFetchWithProxy; + } + // Create a fetch function with retry logic + dbgr(`retries: %d, retry on: %o, retry delay: %d, min delay: %d, max delay: %d, max retry after: %d`, retries, retryOn, retryDelay, minDelay, maxDelay, maxRetryAfter); + const fetchRetry = wrapFetch(crossFetchWithProxy, { + retries, + retryOn: (attempt, error, response) => { + const code = error?.code; + const { ok, status } = response || {}; + if (ok) { + dbgr("status %d is success, not retrying", status); + return false; + } + dbgr(`retry #%d, %d`, attempt, status); + if (code === "ECONNRESET" || + code === "ENOTFOUND" || + cancellationToken?.isCancellationRequested) { + dbgr("fatal error or cancellation"); + // Return undefined for fatal errors or cancellations to stop retries + return undefined; + } + if (retryOn?.length && !retryOn.includes(status)) { + dbgr(`status %d not in retryOn %o, not retrying`, status, retryOn); + return false; + } + dbgr(`headers: %O`, response?.headers); + const retryAfter = parseRetryAfterHeader(response); + if (!isNaN(maxRetryAfter) && retryAfter > maxRetryAfter) { + dbgr(`retry-after %s exceeds max-retry-after %s, give up`, prettyDuration(retryAfter), prettyDuration(maxRetryAfter)); + return false; + } + return true; + }, + retryDelay: (attempt, error, response) => { + // Check for retry-after header and respect its value + let delay; + const retryAfter = parseRetryAfterHeader(response); + if (!isNaN(retryAfter)) { + delay = Math.max(minDelay, Math.min(maxDelay, retryAfter)); // Convert to milliseconds + } + else { + // Fallback to exponential backoff if retry-after parsing failed + delay = Math.max(minDelay, Math.min(maxDelay, Math.ceil(Math.pow(FETCH_RETRY_GROWTH_FACTOR, attempt) * Math.max(retryDelay, minDelay)) * + (1 + Math.random() / 20))); + dbgr(`using exponential backoff: %s`, prettyDuration(delay)); + } + const msg = prettyStrings(`retry #${attempt + 1} in ${prettyDuration(delay)}`, `retry after: ${prettyDuration(retryAfter)}`, `max delay: ${prettyDuration(maxDelay)}`, `retry delay: ${prettyDuration(retryDelay)}`, errorMessage(error), statusToMessage(response)); + logVerbose(msg); + trace?.resultItem(false, msg); + return delay; + }, + }); + return fetchRetry; +} +/** + * Executes an HTTP(S) request with optional retry logic. + * + * Wraps the input request with retry capabilities and additional configurations. + * Leverages `createFetch` to handle retry conditions and builds a final fetch function. + * + * @param input - The input to the fetch request. Can be a string URL, URL object, or Request object. + * @param options - Configuration options for the fetch operation. + * - retryOn: Array of HTTP status codes to retry on. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries in milliseconds. + * - maxDelay: Maximum allowable delay between retries in milliseconds. + * - trace: Trace options for logging the fetch operation. + * - ...rest: Additional options passed to the fetch request. + * @returns A Promise resolving with the HTTP Response. + */ +export async function fetch(input, options) { + const { retryOn, retries, retryDelay, maxDelay, trace, ...rest } = options || {}; + const f = await createFetch({ + retryOn, + retries, + retryDelay, + maxDelay, + trace, + }); + return f(input, rest); +} +/** + * Converts the HTTP response status and status text into a list of strings. + * + * Extracts the status and status text from the response object for logging and debugging. + * + * @param res - The HTTP response object. Includes optional status and statusText fields. + * @returns A list of strings containing the status and status text if provided. + */ +export function statusToMessage(res) { + const { status, statusText } = res || {}; + return prettyStrings(typeof status === "number" ? status + "" : undefined, statusText); +} +export async function tryReadText(res, defaultValue) { + try { + const text = await res.text(); + return text; + } + catch (e) { + dbg(e); + return defaultValue; + } +} +export async function* iterateBody(r, options) { + const { cancellationToken } = options || {}; + const decoder = createUTF8Decoder(); // UTF-8 decoder for processing data + if (r.body.getReader) { + const reader = r.body.getReader(); + while (!cancellationToken?.isCancellationRequested) { + const { done, value } = await reader.read(); + if (done) { + break; + } + const text = decoder.decode(value, { stream: true }); + yield text; + } + } + else { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + for await (const value of r.body) { + if (cancellationToken?.isCancellationRequested) { + break; + } + const text = decoder.decode(value, { stream: true }); + yield text; + } + } +} +//# sourceMappingURL=fetch.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetch.js.map b/packages/core/.tshy-build/browser/fetch.js.map new file mode 100644 index 0000000000..0704eebc96 --- /dev/null +++ b/packages/core/.tshy-build/browser/fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/fetch.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetchtext.d.ts b/packages/core/.tshy-build/browser/fetchtext.d.ts new file mode 100644 index 0000000000..0a6da9c67b --- /dev/null +++ b/packages/core/.tshy-build/browser/fetchtext.d.ts @@ -0,0 +1,44 @@ +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { FetchTextOptions, WorkspaceFile } from "./types.js"; +/** + * Fetches text content from a URL or file. + * + * Fetches content from an HTTP(S) URL or reads from the file system for local files. + * Retries on specific HTTP statuses if configured. Supports tracing and cancellation. + * Handles binary content using base64 encoding. + * + * @param urlOrFile - The URL or file path to fetch from. If a string, it is treated as a filename. + * @param fetchOptions - Configuration for retries, delays, tracing, cancellation, and fetch settings. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries. + * - retryOn: HTTP status codes to retry on. + * - maxDelay: Maximum delay between retries. + * - trace: Trace options for logging. + * - cancellationToken: Token to cancel the fetch operation. + * @returns An object containing fetch status, content, metadata, and file details. + */ +export declare function fetchText(urlOrFile: string | WorkspaceFile, fetchOptions?: FetchTextOptions & TraceOptions & CancellationOptions): Promise<{ + ok: boolean; + status: number; + statusText: string; + text: string; + bytes: Uint8Array; + file: WorkspaceFile; +}>; +/** + * Logs a POST request for tracing. + * + * Constructs an HTTP POST request representation, including headers and body, for tracing purposes. + * Authorization headers can be optionally masked. + * + * @param trace - Trace object for logging details. If not provided, logs the command verbosely. + * @param url - Target URL for the request. + * @param headers - Headers to include in the request. Sensitive authorization headers may be masked. + * @param body - Request body, either as FormData or a raw object. FormData fields include file sizes if applicable. + * @param options - Configuration for masking authorization headers. + */ +export declare function traceFetchPost(trace: MarkdownTrace, url: string, headers: Record, body: FormData | any, options?: { + showAuthorization?: boolean; +}): void; +//# sourceMappingURL=fetchtext.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetchtext.d.ts.map b/packages/core/.tshy-build/browser/fetchtext.d.ts.map new file mode 100644 index 0000000000..64f96b7c53 --- /dev/null +++ b/packages/core/.tshy-build/browser/fetchtext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fetchtext.d.ts","sourceRoot":"","sources":["../../src/fetchtext.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAW7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,YAAY,CAAC,EAAE,gBAAgB,GAAG,YAAY,GAAG,mBAAmB;;;;;;;GAmFrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,QAAQ,GAAG,GAAG,EACpB,OAAO,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,QAiD1C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetchtext.js b/packages/core/.tshy-build/browser/fetchtext.js new file mode 100644 index 0000000000..25f49bcfbe --- /dev/null +++ b/packages/core/.tshy-build/browser/fetchtext.js @@ -0,0 +1,174 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { logVerbose } from "./util.js"; +import { resolveRuntimeHost } from "./host.js"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { isBinaryMimeType } from "./binary.js"; +import { toBase64 } from "./base64.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { prettyBytes } from "./pretty.js"; +import { uriRedact } from "./url.js"; +import { HTMLTablesToJSON, HTMLToMarkdown, HTMLToText } from "./html.js"; +import { createFetch } from "./fetch.js"; +import { genaiscriptDebug } from "./debug.js"; +import { createUTF8Decoder } from "./utf8.js"; +const dbg = genaiscriptDebug("fetch:text"); +/** + * Fetches text content from a URL or file. + * + * Fetches content from an HTTP(S) URL or reads from the file system for local files. + * Retries on specific HTTP statuses if configured. Supports tracing and cancellation. + * Handles binary content using base64 encoding. + * + * @param urlOrFile - The URL or file path to fetch from. If a string, it is treated as a filename. + * @param fetchOptions - Configuration for retries, delays, tracing, cancellation, and fetch settings. + * - retries: Number of retry attempts. + * - retryDelay: Initial delay between retries. + * - retryOn: HTTP status codes to retry on. + * - maxDelay: Maximum delay between retries. + * - trace: Trace options for logging. + * - cancellationToken: Token to cancel the fetch operation. + * @returns An object containing fetch status, content, metadata, and file details. + */ +export async function fetchText(urlOrFile, fetchOptions) { + const { retries, retryDelay, retryOn, maxDelay, trace, convert, cancellationToken, ...rest } = fetchOptions || {}; + if (typeof urlOrFile === "string") { + urlOrFile = { + filename: urlOrFile, + content: "", + }; + } + const runtimeHost = resolveRuntimeHost(); + const url = urlOrFile.filename; + let ok = false; + let status = 404; + let statusText; + let bytes; + if (/^https?:\/\//i.test(url)) { + dbg("requesting external URL: %s", uriRedact(url)); + const f = await createFetch({ + retries, + retryDelay, + retryOn, + maxDelay, + trace, + cancellationToken, + }); + const resp = await f(url, rest); + ok = resp.ok; + status = resp.status; + statusText = resp.statusText; + if (ok) { + dbg("status %d, %s", status, statusText); + const buf = await resp.arrayBuffer(); + bytes = new Uint8Array(buf); + } + } + else { + dbg("reading file from local path: %s", url); + try { + bytes = await runtimeHost.readFile(url); + } + catch (e) { + logVerbose(e); + ok = false; + status = 404; + } + } + let content; + let encoding; + let type; + const size = bytes?.length; + const mime = await fileTypeFromBuffer(bytes); + if (isBinaryMimeType(mime?.mime)) { + dbg("binary mime type detected, content will be base64 encoded, mime: %o", mime); + encoding = "base64"; + content = toBase64(bytes); + } + else { + dbg("text mime type detected, decoding content as UTF-8, mime: %o", mime); + content = createUTF8Decoder().decode(bytes); + if (convert === "markdown") + content = await HTMLToMarkdown(content, { + trace, + cancellationToken, + }); + else if (convert === "text") + content = await HTMLToText(content, { trace, cancellationToken }); + else if (convert === "tables") + content = JSON.stringify(await HTMLTablesToJSON(content)); + } + ok = true; + const file = deleteUndefinedValues({ + filename: urlOrFile.filename, + encoding, + type, + content, + size, + }); + return { + ok, + status, + statusText, + text: content, + bytes, + file, + }; +} +/** + * Logs a POST request for tracing. + * + * Constructs an HTTP POST request representation, including headers and body, for tracing purposes. + * Authorization headers can be optionally masked. + * + * @param trace - Trace object for logging details. If not provided, logs the command verbosely. + * @param url - Target URL for the request. + * @param headers - Headers to include in the request. Sensitive authorization headers may be masked. + * @param body - Request body, either as FormData or a raw object. FormData fields include file sizes if applicable. + * @param options - Configuration for masking authorization headers. + */ +export function traceFetchPost(trace, url, headers, body, options) { + if (!trace) { + return; + } + const { showAuthorization } = options || {}; + headers = { ...(headers || {}) }; + if (!showAuthorization) { + Object.entries(headers) + .filter(([k]) => /^(authorization|api-key|ocp-apim-subscription-key)$/i.test(k)) + .forEach(([k]) => (headers[k] = /Bearer /i.test(headers[k]) + ? "Bearer ***" // Mask Bearer tokens + : "***")); + } + // Start building the HTTP request + let httpRequest = `POST ${url} HTTP/1.1\n`; + // Add headers + Object.entries(headers).forEach(([key, value]) => { + httpRequest += `${key}: ${value}\n`; + }); + // Add body + if (body instanceof FormData) { + const boundary = "------------------------" + Date.now().toString(16); + httpRequest += `Content-Type: multipart/form-data; boundary=${boundary}\n\n`; + body.forEach((value, key) => { + httpRequest += `--${boundary}\n`; + httpRequest += `Content-Disposition: form-data; name="${key}"`; + if (value instanceof File) { + httpRequest += `; filename="${value.name}"\n`; + httpRequest += `Content-Type: ${value.type || "application/octet-stream"}\n\n`; + httpRequest += `... (${prettyBytes(value.size)})\n`; + } + else { + httpRequest += "\n\n" + value + "\n"; + } + }); + httpRequest += `--${boundary}--\n`; + } + else { + httpRequest += "\n" + JSON.stringify(body, null, 2); + } + dbg(httpRequest); + if (trace) + trace.detailsFenced(`🌐 fetch`, httpRequest, "http"); +} +//# sourceMappingURL=fetchtext.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fetchtext.js.map b/packages/core/.tshy-build/browser/fetchtext.js.map new file mode 100644 index 0000000000..1a1d74abba --- /dev/null +++ b/packages/core/.tshy-build/browser/fetchtext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fetchtext.js","sourceRoot":"","sources":["../../src/fetchtext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ffmpeg.d.ts b/packages/core/.tshy-build/browser/ffmpeg.d.ts new file mode 100644 index 0000000000..68fbfdcf9b --- /dev/null +++ b/packages/core/.tshy-build/browser/ffmpeg.d.ts @@ -0,0 +1,90 @@ +import type { Awaitable, Ffmpeg, FfmpegCommandBuilder, FFmpegCommandOptions, VideoExtractAudioOptions, VideoExtractClipOptions, VideoExtractFramesOptions, VideoProbeResult, WorkspaceFile } from "./types.js"; +export declare class FFmepgClient implements Ffmpeg { + constructor(); + run(input: string | WorkspaceFile, builder: (cmd: FfmpegCommandBuilder, options?: { + input: string; + dir: string; + }) => Awaitable, options?: FFmpegCommandOptions & { + salt?: any; + }): Promise; + extractFrames(filename: string | WorkspaceFile, options?: VideoExtractFramesOptions): Promise; + extractAudio(filename: string | WorkspaceFile, options?: VideoExtractAudioOptions): Promise; + extractClip(filename: string | WorkspaceFile, options: VideoExtractClipOptions): Promise; + probe(filename: string | WorkspaceFile): Promise; + probeVideo(filename: string | WorkspaceFile): Promise<{ + index: number; + codec_name: string; + codec_long_name: string; + profile: string; + codec_type: string; + codec_tag_string: string; + codec_tag: string; + width?: number; + height?: number; + coded_width?: number; + coded_height?: number; + closed_captions?: number; + film_grain?: number; + has_b_frames?: number; + sample_aspect_ratio?: string; + display_aspect_ratio?: string; + pix_fmt?: string; + level?: number; + color_range?: string; + color_space?: string; + color_transfer?: string; + color_primaries?: string; + chroma_location?: string; + field_order?: string; + refs?: number; + is_avc?: string; + nal_length_size?: number; + id: string; + r_frame_rate: string; + avg_frame_rate: string; + time_base: string; + start_pts: number; + start_time: number; + duration_ts: number; + duration: number; + bit_rate: number; + max_bit_rate: string; + bits_per_raw_sample: number | string; + nb_frames: number | string; + nb_read_frames?: string; + nb_read_packets?: string; + extradata_size?: number; + tags?: { + creation_time: string; + language?: string; + handler_name: string; + vendor_id?: string; + encoder?: string; + }; + disposition?: { + default: number; + dub: number; + original: number; + comment: number; + lyrics: number; + karaoke: number; + forced: number; + hearing_impaired: number; + visual_impaired: number; + clean_effects: number; + attached_pic: number; + timed_thumbnails: number; + captions: number; + descriptions: number; + metadata: number; + dependent: number; + still_image: number; + }; + sample_fmt?: string; + sample_rate?: number; + channels?: number; + channel_layout?: string; + bits_per_sample?: number | string; + }>; +} +//# sourceMappingURL=ffmpeg.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ffmpeg.d.ts.map b/packages/core/.tshy-build/browser/ffmpeg.d.ts.map new file mode 100644 index 0000000000..ff43d2f3fa --- /dev/null +++ b/packages/core/.tshy-build/browser/ffmpeg.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/ffmpeg.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AAsDpB,qBAAa,YAAa,YAAW,MAAM;;IAGnC,GAAG,CACP,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,EAAE,CACP,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KACrC,SAAS,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAC9C,OAAO,CAAC,MAAM,EAAE,CAAC;IASd,aAAa,CACjB,QAAQ,EAAE,MAAM,GAAG,aAAa,EAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC;IAsGd,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,aAAa,EAChC,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,MAAM,CAAC;IA2CZ,WAAW,CACf,QAAQ,EAAE,MAAM,GAAG,aAAa,EAChC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAiCZ,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBlE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA6KswwC,CAAC;;qBAAqD,CAAC;mBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA7Jv4wC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ffmpeg.js b/packages/core/.tshy-build/browser/ffmpeg.js new file mode 100644 index 0000000000..fff22e0df6 --- /dev/null +++ b/packages/core/.tshy-build/browser/ffmpeg.js @@ -0,0 +1,398 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:ffmpeg"); +import { logVerbose } from "./util.js"; +import { lookupMime } from "./mime.js"; +import pLimit from "p-limit"; +import { join, basename } from "node:path"; +import { ensureDir } from "./fs.js"; +import { hash } from "./crypto.js"; +import { VIDEO_HASH_LENGTH } from "./constants.js"; +import { writeFile, readFile } from "node:fs/promises"; +import { errorMessage, serializeError } from "./error.js"; +import { fromBase64 } from "./base64.js"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { appendFile, readdir } from "node:fs/promises"; +import prettyBytes from "pretty-bytes"; +import { filenameOrFileToFilename } from "./unwrappers.js"; +import { roundWithPrecision } from "./precision.js"; +import { parseTimestamps } from "./transcription.js"; +import { mark } from "./performance.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { arrayify } from "./cleaners.js"; +import { tryStat } from "./fs.js"; +const ffmpegLimit = pLimit(1); +const WILD_CARD = "%06d"; +async function ffmpegCommand(options) { + const cmd = (await import("fluent-ffmpeg")).default; + return cmd(options); +} +async function computeHashFolder(filename, options) { + const { trace, salt, ...rest } = options; + const h = await hash([typeof filename === "string" ? { filename } : filename, rest], { + readWorkspaceFiles: true, + version: true, + length: VIDEO_HASH_LENGTH, + salt, + }); + return dotGenaiscriptPath("cache", "ffmpeg", h); +} +async function resolveInput(filename, folder) { + if (typeof filename === "object") { + if (filename.content && filename.encoding === "base64") { + const bytes = fromBase64(filename.content); + const mime = await fileTypeFromBuffer(bytes); + filename = join(folder, "input." + mime.ext); + await writeFile(filename, bytes); + } + else { + filename = filename.filename; + } + } + return filename; +} +async function logFile(filename, action) { + filename = filenameOrFileToFilename(filename); + const stats = await tryStat(filename); + logVerbose(`ffmpeg: ${action} ${filename} (${stats ? prettyBytes(stats.size) : "0"})`); +} +export class FFmepgClient { + constructor() { } + async run(input, builder, options) { + await logFile(input, "input"); + const { filenames } = await runFfmpeg(input, builder, options || {}); + for (const filename of filenames) { + await logFile(filename, "output"); + } + return filenames; + } + async extractFrames(filename, options) { + if (!filename) { + throw new Error("filename is required"); + } + mark("ffmpeg.extractFrames"); + const { transcript, count, cache = "frames", ...soptions } = options || {}; + const format = options?.format || "jpg"; + const size = options?.size; + const applyOptions = (cmd) => { + if (size) { + cmd.size(size); + cmd.autopad(); + } + }; + const renderers = []; + if (soptions.keyframes || + (!count && !soptions.timestamps?.length && !(soptions.sceneThreshold > 0))) { + renderers.push((cmd) => { + cmd.videoFilter("select='eq(pict_type,I)'"); + cmd.outputOptions("-fps_mode vfr"); + cmd.outputOptions("-frame_pts 1"); + applyOptions(cmd); + return `keyframe_*.${format}`; + }); + } + else if (soptions.sceneThreshold > 0) { + renderers.push(((cmd) => { + cmd.frames(1); + applyOptions(cmd); + return `scenes_000000.${format}`; + }), ((cmd) => { + cmd.videoFilter(`select='gt(scene,${soptions.sceneThreshold})',showinfo`); + cmd.outputOptions("-fps_mode passthrough"); + cmd.outputOptions("-frame_pts 1"); + applyOptions(cmd); + return `scenes_*.${format}`; + })); + } + else { + if (typeof transcript === "string") { + soptions.timestamps = parseTimestamps(transcript); + } + else if (typeof transcript === "object" && + transcript?.segments?.length && + !soptions.timestamps?.length) { + soptions.timestamps = transcript.segments.map((s) => s.start); + } + if (count && !soptions.timestamps?.length) { + dbg(`calculating timestamps for count: ${count}`); + const info = await this.probeVideo(filename); + const duration = Number(info.duration); + if (count === 1) { + soptions.timestamps = [0]; + } + else { + soptions.timestamps = Array(count) + .fill(0) + .map((_, i) => roundWithPrecision(Math.min((i * duration) / (count - 1), duration - 0.1), 3)); + } + } + if (!soptions.timestamps?.length) { + dbg(`timestamps not provided, defaulting to [0]`); + soptions.timestamps = [0]; + } + renderers.push(...soptions.timestamps.map((ts) => ((cmd) => { + cmd.seekInput(ts); + cmd.frames(1); + applyOptions(cmd); + return `frame-${String(ts).replace(":", "-").replace(".", "_")}.${format}`; + }))); + } + await logFile(filename, "input"); + const { filenames } = await runFfmpeg(filename, renderers, { + ...soptions, + cache, + salt: { + transcript, + count, + format, + size, + }, + }); + logVerbose(`ffmpeg: extracted ${filenames.length} frames`); + for (const filename of filenames) { + await logFile(filename, "output"); + } + return filenames; + } + async extractAudio(filename, options) { + if (!filename) { + throw new Error("filename is required"); + } + const { forceConversion, ...foptions } = options || {}; + const { transcription = true } = foptions; + if (!forceConversion && !transcription && typeof filename === "string") { + const mime = lookupMime(filename); + if (/^audio/.test(mime)) { + dbg(`filename is already an audio file: ${filename}`); + return filename; + } + } + const res = await this.run(filename, async (cmd) => { + cmd.noVideo(); + if (transcription) { + // https://community.openai.com/t/whisper-api-increase-file-limit-25-mb/566754 + cmd.audioCodec("libopus"); + cmd.audioChannels(1); + cmd.audioBitrate("12k"); + cmd.outputOptions("-map_metadata -1"); + cmd.outputOptions("-application voip"); + cmd.toFormat("ogg"); + return "audio.ogg"; + } + else { + cmd.toFormat("mp3"); + return "audio.mp3"; + } + }, { + ...foptions, + cache: foptions.cache || "audio-voip", + salt: { + transcription, + }, + }); + return res[0]; + } + async extractClip(filename, options) { + if (!filename) { + throw new Error("filename is required"); + } + const { start, duration, end, ...rest } = options || {}; + const res = await this.run(filename, async (cmd) => { + cmd.seekInput(start); + if (duration !== undefined) { + cmd.duration(duration); + } + if (end !== undefined) { + cmd.inputOptions(`-to ${end}`); + } + if (!options?.size) { + cmd.outputOptions("-c copy"); + } + return `clip-${start}-${duration || end}.mp4`; + }, { + ...rest, + salt: { + start, + duration, + end, + }, + }); + return res[0]; + } + async probe(filename) { + if (!filename) { + throw new Error("filename is required"); + } + const res = await runFfmpeg(filename, async (cmd) => { + const res = new Promise((resolve, reject) => { + cmd.ffprobe((err, data) => { + if (err) { + reject(err); + } + else { + resolve(data); + } + }); + }); + const meta = await res; + return meta; + }, { cache: "probe" }); + return res.data[0]; + } + async probeVideo(filename) { + const meta = await this.probe(filename); + const vstream = meta.streams.reduce((biggest, stream) => { + if (stream.codec_type === "video" && + stream.width && + stream.height && + (!biggest || stream.width * stream.height > biggest.width * biggest.height)) { + return stream; + } + else { + return biggest; + } + }); + return vstream; + } +} +async function runFfmpeg(filename, renderer, options) { + if (!filename) { + throw new Error("filename is required"); + } + const { cache } = options || {}; + const folder = await computeHashFolder(filename, options); + const resFilename = join(folder, "res.json"); + const readCache = async () => { + if (cache === false) { + return undefined; + } + try { + dbg(`reading cache from: ${resFilename}`); + const res = JSON.parse(await readFile(resFilename, { + encoding: "utf-8", + })); + logVerbose(`ffmpeg: cache hit at ${folder}`); + return res; + } + catch { + return undefined; + } + }; + // try to hit cache before limit on ffmpeg + { + const cached = await readCache(); + if (cached) { + return cached; + } + } + return ffmpegLimit(async () => { + // try cache hit again + { + const cached = await readCache(); + if (cached) { + return cached; + } + } + await ensureDir(folder); + const input = await resolveInput(filename, folder); + const res = { filenames: [], data: [] }; + const renderers = arrayify(renderer); + for (const renderer of renderers) { + const cmd = await ffmpegCommand({}); + logCommand(folder, cmd); + const rres = await runFfmpegCommandUncached(cmd, input, options, folder, renderer); + if (rres.filenames?.length) { + res.filenames.push(...rres.filenames); + } + if (rres.data?.length) { + res.data.push(...rres.data); + } + } + dbg(`writing ffmpeg result to cache: ${resFilename}`); + await writeFile(resFilename, JSON.stringify(res, null, 2)); + return res; + }); +} +async function runFfmpegCommandUncached(cmd, input, options, folder, renderer) { + return await new Promise(async (resolve, reject) => { + const r = { filenames: [], data: [] }; + const end = () => resolve(r); + let output; + cmd.input(input); + if (options.size) { + cmd.size(options.size); + } + if (options.inputOptions) { + cmd.inputOptions(...arrayify(options.inputOptions)); + } + if (options.outputOptions) { + cmd.outputOption(...arrayify(options.outputOptions)); + } + dbg(`adding filenames listener`); + cmd.addListener("filenames", (fns) => { + r.filenames.push(...fns.map((f) => join(folder, f))); + }); + cmd.addListener("codeData", (data) => { + logVerbose(`ffmpeg: input audio ${data.audio}, video ${data.video}`); + }); + cmd.addListener("end", async () => { + dbg(`processing wildcard output: ${output}`); + if (output?.includes(WILD_CARD)) { + const [prefix, suffix] = output.split(WILD_CARD, 2); + const files = await readdir(folder); + const gen = files.filter((f) => f.startsWith(prefix) && f.endsWith(suffix)); + r.filenames.push(...gen.map((f) => join(folder, f))); + } + end(); + }); + cmd.addListener("error", (err) => { + dbg(`ffmpeg command encountered an error`); + reject(err); + }); + try { + const rendering = await renderer(cmd, { + input, + dir: folder, + }); + if (typeof rendering === "string") { + output = rendering.replace(/\*/g, WILD_CARD); + const fo = join(folder, basename(output)); + cmd.output(fo); + cmd.run(); + if (!output.includes(WILD_CARD)) { + r.filenames.push(fo); + } + } + else if (typeof rendering === "object") { + r.data.push(rendering); + cmd.removeListener("end", end); + resolve(r); + } + } + catch (err) { + reject(err); + } + }); +} +function logCommand(folder, cmd) { + // console logging + cmd.on("start", (commandLine) => logVerbose(commandLine)); + cmd.on("stderr", (s) => dbg(s)); + // log to file + const log = []; + const writeLog = async () => { + const logFilename = join(folder, "log.txt"); + logVerbose(`ffmpeg log: ${logFilename}`); + await appendFile(logFilename, log.join("\n"), { + encoding: "utf-8", + }); + }; + cmd.on("stderr", (s) => log.push(s)); + cmd.on("end", writeLog); + cmd.on("error", async (err) => { + log.push(`error: ${errorMessage(err)}\n${serializeError(err)}`); + await writeLog(); + }); +} +//# sourceMappingURL=ffmpeg.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ffmpeg.js.map b/packages/core/.tshy-build/browser/ffmpeg.js.map new file mode 100644 index 0000000000..bfd40c06ca --- /dev/null +++ b/packages/core/.tshy-build/browser/ffmpeg.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/ffmpeg.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/file.d.ts b/packages/core/.tshy-build/browser/file.d.ts new file mode 100644 index 0000000000..1edb4e07d8 --- /dev/null +++ b/packages/core/.tshy-build/browser/file.d.ts @@ -0,0 +1,47 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { DataFilter, WorkspaceFile } from "./types.js"; +/** + * Resolves the content of a file by decoding, fetching, or parsing it based on its type or source. + * + * @param file - The file object containing filename, content, type, and encoding. + * @param options - Optional parameters: + * - trace - Object for logging operations. + * - cancellationToken - Token to cancel the operation. + * - maxFileSize - Maximum file size for processing. Defaults to MAX_FILE_CONTENT_SIZE. + * @returns The updated file object with resolved content or metadata. If the file cannot be resolved, it is returned as is. + */ +export declare function resolveFileContent(file: WorkspaceFile, options?: TraceOptions & { + maxFileSize?: number; +} & CancellationOptions): Promise; +/** + * Converts input into a WorkspaceFile structure. + * @param fileOrFilename - A filename string or an object representing a WorkspaceFile. + * @returns A WorkspaceFile object with the provided filename or the original WorkspaceFile object. + */ +export declare function toWorkspaceFile(fileOrFilename: string | WorkspaceFile): WorkspaceFile; +/** + * Resolves the contents of multiple files asynchronously. + * Processes each file to resolve its content based on type or source. + * @param files - List of files to process and resolve. + * @param options - Optional parameters: + * - cancellationToken - Token to cancel the operation if needed. + * - trace - Object for logging and tracing operations. + */ +export declare function resolveFileContents(files: WorkspaceFile[], options?: CancellationOptions & TraceOptions): Promise; +/** + * Renders the content of a file into a markdown format if applicable. + * Supports rendering for CSV and XLSX file types by converting their contents into readable markdown tables. + * + * @param file - The file object containing filename and content. If the content matches a supported format, it will be rendered. + * @param options - Options for tracing operations and filtering the file data during rendering. Includes data transformation, markdown table generation, and optional sheet trimming for XLSX files. + * @returns An object containing the filename and rendered content, or the original file object if rendering is not applicable. + */ +export declare function renderFileContent(file: WorkspaceFile, options: TraceOptions & DataFilter): Promise<{ + filename: string; + type?: string; + encoding?: "base64"; + content?: string; + size?: number; +}>; +//# sourceMappingURL=file.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/file.d.ts.map b/packages/core/.tshy-build/browser/file.d.ts.map new file mode 100644 index 0000000000..06f70c439d --- /dev/null +++ b/packages/core/.tshy-build/browser/file.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/file.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe/C,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAK5D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAI3E;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,GACtE,OAAO,CAAC,aAAa,CAAC,CAgHxB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,iBAErE;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,iBAO7C;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU;;;;;;GA4B9F"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/file.js b/packages/core/.tshy-build/browser/file.js new file mode 100644 index 0000000000..ee1c85be92 --- /dev/null +++ b/packages/core/.tshy-build/browser/file.js @@ -0,0 +1,201 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * This module provides functions to handle file content resolution, rendering, + * and data URI conversion. It includes support for various file formats like + * PDF, DOCX, XLSX, and CSV. + */ +import { DOCXTryParse } from "./docx.js"; +import { readText, tryStat } from "./fs.js"; +import { lookupMime } from "./mime.js"; +import { isBinaryMimeType } from "./binary.js"; +import { fromBase64, toBase64 } from "./base64.js"; +import { resolveRuntimeHost } from "./host.js"; +import { parsePdf } from "./pdf.js"; +import { XLSXParse } from "./xlsx.js"; +import { dataToMarkdownTable, CSVTryParse } from "./csv.js"; +import { CSV_REGEX, DOCX_MIME_TYPE, DOCX_REGEX, MAX_FILE_CONTENT_SIZE, PDF_MIME_TYPE, PDF_REGEX, XLSX_MIME_TYPE, XLSX_REGEX, } from "./constants.js"; +import { tidyData } from "./tidy.js"; +import { checkCancelled } from "./cancellation.js"; +import { prettyBytes } from "./pretty.js"; +import { tryResolveResource } from "./resources.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("file"); +/** + * Resolves the content of a file by decoding, fetching, or parsing it based on its type or source. + * + * @param file - The file object containing filename, content, type, and encoding. + * @param options - Optional parameters: + * - trace - Object for logging operations. + * - cancellationToken - Token to cancel the operation. + * - maxFileSize - Maximum file size for processing. Defaults to MAX_FILE_CONTENT_SIZE. + * @returns The updated file object with resolved content or metadata. If the file cannot be resolved, it is returned as is. + */ +export async function resolveFileContent(file, options) { + const { trace, cancellationToken, maxFileSize = MAX_FILE_CONTENT_SIZE } = options || {}; + if (!file) + return file; + const runtimeHost = resolveRuntimeHost(); + checkCancelled(cancellationToken); + const stats = await tryStat(file.filename); + if (stats && !stats.isFile()) { + dbg(`skip, not a file`); + return file; // ignore, this is a directory + } + // decode known files + if (file.encoding === "base64") { + dbg(`decode base64`); + const bytes = fromBase64(file.content); + file.size = bytes.length; + if (file.type === PDF_MIME_TYPE) { + dbg(`file type is PDF`); + const { content } = await parsePdf(bytes, options); + delete file.encoding; + file.content = content; + } + else if (file.type === XLSX_MIME_TYPE) { + dbg(`file type is XLSX`); + const sheets = await XLSXParse(bytes); + delete file.encoding; + file.content = JSON.stringify(sheets, null, 2); + } + return file; + } + const { filename } = file; + // If file content is already available or filename is missing, return the file as is. + if (file.content) { + return file; + } + if (!filename) { + dbg(`file has no content and no filename`); + return file; + } + dbg(`resolving ${filename}`); + const res = await tryResolveResource(filename, { trace, cancellationToken }); + // Handle uris files + if (res) { + dbg(`resolved file uri`); + const resFile = res.files[0]; + file.type = resFile.type; + file.content = resFile.content; + file.size = resFile.size; + file.encoding = resFile.encoding; + } + // Handle PDF files + else if (PDF_REGEX.test(filename)) { + dbg(`file is pdf`); + const stat = await tryStat(filename); + const { content } = await parsePdf(filename, options); + file.type = PDF_MIME_TYPE; + file.content = content; + file.size = stat?.size; + } + // Handle DOCX files + else if (DOCX_REGEX.test(filename)) { + dbg(`file is docx`); + const stat = await tryStat(filename); + const res = await DOCXTryParse(filename, options); + file.type = DOCX_MIME_TYPE; + file.content = res.file?.content; + file.size = res.file?.size || stat?.size; + } + // Handle XLSX files + else if (XLSX_REGEX.test(filename)) { + dbg(`file is xlsx`); + const stat = await tryStat(filename); + const bytes = await runtimeHost.readFile(filename); + const sheets = await XLSXParse(bytes); + file.type = XLSX_MIME_TYPE; + file.content = JSON.stringify(sheets, null, 2); + file.size = stat?.size; + } + // Handle other file types + else { + const mime = file.type || lookupMime(filename); + const isBinary = isBinaryMimeType(mime); + dbg(`mime %s binary %s`, mime, isBinary); + file.type = mime; + const info = await tryStat(filename); + file.size = info?.size; + if (!info) { + dbg(`file not found: ${filename}`); + return file; + } + if (!info.isFile()) { + dbg(`skip, not a file`); + return file; // ignore, this is a directory + } + if (!isBinary) { + dbg(`text ${prettyBytes(info.size)}`); + file.content = await readText(filename); + } + else { + dbg(`binary ${prettyBytes(info?.size)}`); + if (!maxFileSize || info.size < maxFileSize) { + const bytes = await runtimeHost.readFile(filename); + file.encoding = "base64"; + file.content = toBase64(bytes); + file.size = bytes.length; + } + } + } + return file; +} +/** + * Converts input into a WorkspaceFile structure. + * @param fileOrFilename - A filename string or an object representing a WorkspaceFile. + * @returns A WorkspaceFile object with the provided filename or the original WorkspaceFile object. + */ +export function toWorkspaceFile(fileOrFilename) { + return typeof fileOrFilename === "string" ? { filename: fileOrFilename } : fileOrFilename; +} +/** + * Resolves the contents of multiple files asynchronously. + * Processes each file to resolve its content based on type or source. + * @param files - List of files to process and resolve. + * @param options - Optional parameters: + * - cancellationToken - Token to cancel the operation if needed. + * - trace - Object for logging and tracing operations. + */ +export async function resolveFileContents(files, options) { + const { cancellationToken } = options || {}; + for (const file of files) { + await resolveFileContent(file, options); + checkCancelled(cancellationToken); + } +} +/** + * Renders the content of a file into a markdown format if applicable. + * Supports rendering for CSV and XLSX file types by converting their contents into readable markdown tables. + * + * @param file - The file object containing filename and content. If the content matches a supported format, it will be rendered. + * @param options - Options for tracing operations and filtering the file data during rendering. Includes data transformation, markdown table generation, and optional sheet trimming for XLSX files. + * @returns An object containing the filename and rendered content, or the original file object if rendering is not applicable. + */ +export async function renderFileContent(file, options) { + const { filename, content } = file; + // Render CSV content + if (content && CSV_REGEX.test(filename)) { + dbg(`rendering CSV content`); + let csv = CSVTryParse(content, options); + if (csv) { + csv = tidyData(csv, options); + return { filename, content: dataToMarkdownTable(csv, options) }; + } + } + // Render XLSX content + else if (content && XLSX_REGEX.test(filename)) { + dbg(`rendering XLSX content`); + const sheets = JSON.parse(content); + const trimmed = sheets.length + ? sheets + .map(({ name, rows }) => `## ${name} +${dataToMarkdownTable(tidyData(rows, options))} +`) + .join("\n") + : dataToMarkdownTable(tidyData(sheets[0].rows, options)); + return { filename, content: trimmed }; + } + return { ...file }; +} +//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/file.js.map b/packages/core/.tshy-build/browser/file.js.map new file mode 100644 index 0000000000..2450de5255 --- /dev/null +++ b/packages/core/.tshy-build/browser/file.js.map @@ -0,0 +1 @@ +{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/file.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filebytes.d.ts b/packages/core/.tshy-build/browser/filebytes.d.ts new file mode 100644 index 0000000000..eb003a0f7e --- /dev/null +++ b/packages/core/.tshy-build/browser/filebytes.d.ts @@ -0,0 +1,32 @@ +import type { TraceOptions } from "./trace.js"; +import { type CancellationOptions } from "./cancellation.js"; +import type { WorkspaceFile } from "./types.js"; +/** + * Converts a data URI into a binary buffer. + * + * @param filename - The string to be inspected and potentially decoded. If the string is a valid data URI, its content will be converted to a binary buffer. + * @returns A binary buffer containing the decoded content of the data URI. Returns undefined if the input is not a valid data URI. + * @throws Will throw an error if the data URI format is invalid. + */ +export declare function dataUriToBuffer(filename: string): Uint8Array; +/** + * Resolves and returns the file content as bytes. + * @param filename - The file name, URL, data URI, or WorkspaceFile object to resolve. If a WorkspaceFile object, uses its encoding and content if available. If a string, resolves the file from the provided path, URL, or data URI. Supports both local files and remote URLs. + * @param options - Optional parameters for tracing operations and fetch configuration. Used for logging operations or canceling the process. + * @returns A Uint8Array containing the file content as bytes. + */ +export declare function resolveFileBytes(filename: string | WorkspaceFile, options?: TraceOptions & CancellationOptions): Promise; +/** + * Converts a file to a Data URI format. + * @param filename - The file name, URL, or data URI to convert. Supports local files, remote URLs, and data URIs. If a WorkspaceFile object, its content and encoding are used. + * @param options - Optional parameters for tracing operations and fetch configuration. + * @returns A Data URI string if the MIME type is determined, otherwise undefined. + */ +export declare function resolveFileDataUri(filename: string, options?: TraceOptions & CancellationOptions & { + mime?: string; +}): Promise<{ + uri: string; + mimeType: string; + data: string; +}>; +//# sourceMappingURL=filebytes.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filebytes.d.ts.map b/packages/core/.tshy-build/browser/filebytes.d.ts.map new file mode 100644 index 0000000000..d0a1d1d48a --- /dev/null +++ b/packages/core/.tshy-build/browser/filebytes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"filebytes.d.ts","sourceRoot":"","sources":["../../src/filebytes.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,mBAAmB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,+BAW/C;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAChC,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAC3C,OAAO,CAAC,UAAU,CAAC,CA+BrB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;GAgBjE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filebytes.js b/packages/core/.tshy-build/browser/filebytes.js new file mode 100644 index 0000000000..bb971676c3 --- /dev/null +++ b/packages/core/.tshy-build/browser/filebytes.js @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * This module provides functions to handle file content resolution, rendering, + * and data URI conversion. It includes support for various file formats like + * PDF, DOCX, XLSX, and CSV. + */ +import { createFetch } from "./fetch.js"; +import { resolveRuntimeHost } from "./host.js"; +import { checkCancelled } from "./cancellation.js"; +import { genaiscriptDebug } from "./debug.js"; +import { fromBase64, toBase64 } from "./base64.js"; +import { fileTypeFromBuffer } from "file-type"; +import { lookupMime } from "./mime.js"; +const dbg = genaiscriptDebug("file:bytes"); +/** + * Converts a data URI into a binary buffer. + * + * @param filename - The string to be inspected and potentially decoded. If the string is a valid data URI, its content will be converted to a binary buffer. + * @returns A binary buffer containing the decoded content of the data URI. Returns undefined if the input is not a valid data URI. + * @throws Will throw an error if the data URI format is invalid. + */ +export function dataUriToBuffer(filename) { + if (/^data:/i.test(filename)) { + dbg(`converting data URI to buffer`); + const matches = filename.match(/^data:[^;]+;base64,(.*)$/i); + if (!matches) { + dbg(`invalid data URI format`); + throw new Error("Invalid data URI format"); + } + return fromBase64(matches[1]); + } + return undefined; +} +/** + * Resolves and returns the file content as bytes. + * @param filename - The file name, URL, data URI, or WorkspaceFile object to resolve. If a WorkspaceFile object, uses its encoding and content if available. If a string, resolves the file from the provided path, URL, or data URI. Supports both local files and remote URLs. + * @param options - Optional parameters for tracing operations and fetch configuration. Used for logging operations or canceling the process. + * @returns A Uint8Array containing the file content as bytes. + */ +export async function resolveFileBytes(filename, options) { + const runtimeHost = resolveRuntimeHost(); + if (typeof filename === "object") { + if (filename.encoding && filename.content) { + dbg(`resolving file bytes`); + return new Uint8Array(Buffer.from(filename.content, filename.encoding)); + } + filename = filename.filename; + } + const i = dataUriToBuffer(filename); + if (i) { + return i; + } + // Fetch file from URL or data-uri + if (/^https?:\/\//i.test(filename)) { + dbg(`fetching file from URL: ${filename}`); + const fetch = await createFetch(options); + const resp = await fetch(filename); + const buffer = await resp.arrayBuffer(); + return new Uint8Array(buffer); + } + // Read file from local storage + else { + dbg(`reading file %s`, filename); + const stat = await runtimeHost.statFile(filename); + if (stat?.type !== "file") + return undefined; + const buf = await runtimeHost.readFile(filename); + return new Uint8Array(buf); + } +} +/** + * Converts a file to a Data URI format. + * @param filename - The file name, URL, or data URI to convert. Supports local files, remote URLs, and data URIs. If a WorkspaceFile object, its content and encoding are used. + * @param options - Optional parameters for tracing operations and fetch configuration. + * @returns A Data URI string if the MIME type is determined, otherwise undefined. + */ +export async function resolveFileDataUri(filename, options) { + const { cancellationToken, mime } = options || {}; + const bytes = await resolveFileBytes(filename, options); + checkCancelled(cancellationToken); + const uriMime = mime || (await fileTypeFromBuffer(bytes))?.mime || lookupMime(filename); + if (!uriMime) { + dbg(`no mime type found for ${filename}`); + return undefined; + } + const b64 = toBase64(bytes); + return { + uri: `data:${uriMime};base64,${b64}`, + mimeType: uriMime, + data: b64, + }; +} +//# sourceMappingURL=filebytes.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filebytes.js.map b/packages/core/.tshy-build/browser/filebytes.js.map new file mode 100644 index 0000000000..46c1533e21 --- /dev/null +++ b/packages/core/.tshy-build/browser/filebytes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filebytes.js","sourceRoot":"","sources":["../../src/filebytes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filecache.d.ts b/packages/core/.tshy-build/browser/filecache.d.ts new file mode 100644 index 0000000000..5e121faa5e --- /dev/null +++ b/packages/core/.tshy-build/browser/filecache.d.ts @@ -0,0 +1,36 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { BufferLike } from "./types.js"; +/** + * Caches a file by writing it to a specified directory. If the file exists, it simply returns the path. + * + * @param dir - The directory where the file will be cached. + * @param bufferLike - The data to be written, can be a buffer-like object. + * @param options - Optional configurations, including tracing options and cancellation options. + * - cancellationToken - Token to support operation cancellation. + * + * @returns The path to the cached file. + */ +export declare function fileWriteCached(dir: string, bufferLike: BufferLike, options?: TraceOptions & CancellationOptions & { + /** + * Generate file name extension + */ + ext?: string; +}): Promise; +export declare function fileWriteCachedJSON(dir: string, data: any): Promise; +/** + * Caches an image locally if it is not a URL. Returns the path to the cached file or the original URL. + * + * @param url - The source of the image. If it is a URL, it is returned as is. If it is a local file path, it will be cached. + * @param options - Optional settings for tracing, cancellation, and output directory. + * - dir: Custom directory to store the cached file. Defaults to a pre-defined image cache directory. + * - trace: Trace option for debugging or logging purposes. + * - cancellationToken: Token to handle operation cancellation. + * + * @returns The relative path to the cached file or the original URL if it is a remote target. + */ +export declare function fileCacheImage(url: BufferLike, options?: TraceOptions & CancellationOptions & { + dir?: string; +}): Promise; +export declare function patchCachedImages(text: string, patcher: (url: string) => string): string; +//# sourceMappingURL=filecache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filecache.d.ts.map b/packages/core/.tshy-build/browser/filecache.d.ts.map new file mode 100644 index 0000000000..4824a4d61b --- /dev/null +++ b/packages/core/.tshy-build/browser/filecache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"filecache.d.ts","sourceRoot":"","sources":["../../src/filecache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAQ5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,YAAY,GACpB,mBAAmB,GAAG;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACF,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,mBAY/D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,UAG/E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filecache.js b/packages/core/.tshy-build/browser/filecache.js new file mode 100644 index 0000000000..24181a0b25 --- /dev/null +++ b/packages/core/.tshy-build/browser/filecache.js @@ -0,0 +1,92 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveBufferLikeAndExt } from "./bufferlike.js"; +import { hash } from "./crypto.js"; +import { basename, dirname, join, relative } from "node:path"; +import { writeFile } from "node:fs/promises"; +import { ensureDir } from "./fs.js"; +import { checkCancelled } from "./cancellation.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { prettyBytes } from "./pretty.js"; +import { FILE_HASH_LENGTH, HTTPS_REGEX } from "./constants.js"; +import { tryStat } from "./fs.js"; +import { filenameOrFileToFilename } from "./unwrappers.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("cache"); +/** + * Caches a file by writing it to a specified directory. If the file exists, it simply returns the path. + * + * @param dir - The directory where the file will be cached. + * @param bufferLike - The data to be written, can be a buffer-like object. + * @param options - Optional configurations, including tracing options and cancellation options. + * - cancellationToken - Token to support operation cancellation. + * + * @returns The path to the cached file. + */ +export async function fileWriteCached(dir, bufferLike, options) { + const { bytes, ext: sourceExt } = await resolveBufferLikeAndExt(bufferLike, options); + if (!bytes) { + // file empty + return undefined; + } + const { cancellationToken, ext = sourceExt } = options || {}; + checkCancelled(cancellationToken); + const filename = await hash(bytes, { length: FILE_HASH_LENGTH }); + checkCancelled(cancellationToken); + const f = filename + "." + ext.replace(/^\./, ""); + dbg(`cache: %s`, f); + const fn = join(dir, f); + const r = await tryStat(fn); + if (r?.isFile()) { + dbg(`hit %s`, fn); + return fn; + } + dbg(`miss %s`, fn); + await ensureDir(dirname(fn)); + await writeFile(fn, bytes); + return fn; +} +export async function fileWriteCachedJSON(dir, data) { + const bytes = Buffer.from(JSON.stringify(data, null, 2)); + const filename = await hash(bytes, { length: FILE_HASH_LENGTH }); + const fn = join(dir, filename + ".json"); + const stat = await tryStat(fn); + if (stat && stat.isFile()) + return fn; + dbg(`json cache: ${fn} (${prettyBytes(bytes.length)})`); + await ensureDir(dirname(fn)); + await writeFile(fn, bytes); + return fn; +} +/** + * Caches an image locally if it is not a URL. Returns the path to the cached file or the original URL. + * + * @param url - The source of the image. If it is a URL, it is returned as is. If it is a local file path, it will be cached. + * @param options - Optional settings for tracing, cancellation, and output directory. + * - dir: Custom directory to store the cached file. Defaults to a pre-defined image cache directory. + * - trace: Trace option for debugging or logging purposes. + * - cancellationToken: Token to handle operation cancellation. + * + * @returns The relative path to the cached file or the original URL if it is a remote target. + */ +export async function fileCacheImage(url, options) { + if (!url) + return ""; + const filename = filenameOrFileToFilename(url); + if (typeof filename === "string" && HTTPS_REGEX.test(filename)) + return filename; + const { dir = dotGenaiscriptPath("images"), trace, cancellationToken } = options || {}; + const fn = await fileWriteCached(dir, url, { trace, cancellationToken }); + if (!fn) { + dbg(`no file cached`); + return undefined; + } + const res = options?.dir ? `./${basename(fn)}` : relative(process.cwd(), fn); + dbg(`image: ${res}`); + return res; +} +export function patchCachedImages(text, patcher) { + const IMG_RX = /\!\[(?[^\]]*)\]\((?\.genaiscript\/images\/[^)]+)\)/g; + return text.replace(IMG_RX, (_, alt, url) => `![${alt}](${patcher(url)})`); +} +//# sourceMappingURL=filecache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filecache.js.map b/packages/core/.tshy-build/browser/filecache.js.map new file mode 100644 index 0000000000..96cc1e0957 --- /dev/null +++ b/packages/core/.tshy-build/browser/filecache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filecache.js","sourceRoot":"","sources":["../../src/filecache.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fileedits.d.ts b/packages/core/.tshy-build/browser/fileedits.d.ts new file mode 100644 index 0000000000..faf9926ebf --- /dev/null +++ b/packages/core/.tshy-build/browser/fileedits.d.ts @@ -0,0 +1,44 @@ +import type { TraceOptions } from "./trace.js"; +import type { FileMergeHandler, FileOutput, FileUpdate, JSONSchema, PromptOutputProcessorHandler, RunPromptResult } from "./types.js"; +/** + * Computes file edits based on the specified runtime prompt result and processing options. + * + * @param res The result of the runtime prompt execution, containing text, annotations, fences, frames, and messages. + * @param options Configuration options for processing the result: + * - trace: A trace object for logging details of the computation. + * - fileOutputs: A list of file output rules applied to edited files. + * - schemas: JSON schemas for validation of file outputs and content. + * - fileMerges: Handlers for custom merging of file content. + * - outputProcessors: Handlers for post-processing generated content and files. + * + * Performs the following operations: + * - Processes fenced code blocks in the result to determine edits (file or diff). + * - Applies changes to files based on their type: + * - Direct file updates. + * - Diff-based patches or merges. + * - Processes changelogs to update relevant files. + * - Executes custom output processors if specified. + * - Validates file outputs against specified schemas or patterns. + * - Generates structured edits for tracked file changes. + * - Updates the result structure with computed edits, changelogs, annotations, and file modifications. + * - Logs details of the computation process, including errors and skipped files. + */ +export declare function computeFileEdits(res: RunPromptResult, options: TraceOptions & { + fileOutputs: FileOutput[]; + schemas?: Record; + fileMerges?: FileMergeHandler[]; + outputProcessors?: PromptOutputProcessorHandler[]; +}): Promise; +/** + * Asynchronously writes file edits to disk. + * + * @param fileEdits - A record of file updates, including filename, original content, updated content, and validation details. Skips files with invalid schemas unless applyEdits is true. + * @param options - Options for applying edits and tracing details: + * - applyEdits: If true, applies edits even if validation fails. + * - trace: A trace object for logging details, including skipped files, changes, and diff information. + */ +export declare function writeFileEdits(fileEdits: Record, // Contains the edits to be applied to files +options?: { + applyEdits?: boolean; +} & TraceOptions): Promise; +//# sourceMappingURL=fileedits.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fileedits.d.ts.map b/packages/core/.tshy-build/browser/fileedits.d.ts.map new file mode 100644 index 0000000000..58d01e6ee4 --- /dev/null +++ b/packages/core/.tshy-build/browser/fileedits.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fileedits.d.ts","sourceRoot":"","sources":["../../src/fileedits.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAK9D,OAAO,KAAK,EAEV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,4BAA4B,EAE5B,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,YAAY,GAAG;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,4BAA4B,EAAE,CAAC;CACnD,GACA,OAAO,CAAC,IAAI,CAAC,CAwKf;AAgED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,4CAA4C;AACnF,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,iBAgClD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fileedits.js b/packages/core/.tshy-build/browser/fileedits.js new file mode 100644 index 0000000000..0e744e9f34 --- /dev/null +++ b/packages/core/.tshy-build/browser/fileedits.js @@ -0,0 +1,299 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { applyChangeLog, parseChangeLogs } from "./changelog.js"; +import { dataToMarkdownTable } from "./csv.js"; +import { applyLLMDiff, applyLLMPatch, parseLLMDiffs } from "./llmdiff.js"; +import { errorMessage, isCancelError } from "./error.js"; +import { unquote } from "./unwrappers.js"; +import { fileExists, readText } from "./fs.js"; +import { isGlobMatch } from "./glob.js"; +import { resolveRuntimeHost } from "./host.js"; +import { JSON5parse } from "./json5.js"; +import { stringToPos } from "./parser.js"; +import { validateJSONWithSchema } from "./schema.js"; +import { logError, logVerbose, relativePath } from "./util.js"; +import { YAMLParse } from "./yaml.js"; +import { writeText } from "./fs.js"; +import { diffCreatePatch } from "./diff.js"; +import { isAbsolute } from "node:path"; +/** + * Computes file edits based on the specified runtime prompt result and processing options. + * + * @param res The result of the runtime prompt execution, containing text, annotations, fences, frames, and messages. + * @param options Configuration options for processing the result: + * - trace: A trace object for logging details of the computation. + * - fileOutputs: A list of file output rules applied to edited files. + * - schemas: JSON schemas for validation of file outputs and content. + * - fileMerges: Handlers for custom merging of file content. + * - outputProcessors: Handlers for post-processing generated content and files. + * + * Performs the following operations: + * - Processes fenced code blocks in the result to determine edits (file or diff). + * - Applies changes to files based on their type: + * - Direct file updates. + * - Diff-based patches or merges. + * - Processes changelogs to update relevant files. + * - Executes custom output processors if specified. + * - Validates file outputs against specified schemas or patterns. + * - Generates structured edits for tracked file changes. + * - Updates the result structure with computed edits, changelogs, annotations, and file modifications. + * - Logs details of the computation process, including errors and skipped files. + */ +export async function computeFileEdits(res, options) { + const runtimeHost = resolveRuntimeHost(); + const { trace, fileOutputs, fileMerges, outputProcessors, schemas } = options || {}; + const { fences, frames, messages, usage } = res; + let text = res.text; + let annotations = res.annotations?.slice(0); + const fileEdits = {}; + const changelogs = []; + const edits = []; + const projFolder = runtimeHost.projectFolder(); + // Helper function to get or create file edit object + const getFileEdit = async (fn) => { + fn = relativePath(projFolder, fn); + let fileEdit = fileEdits[fn]; + if (!fileEdit) { + let before = null; + const after = undefined; + if (await fileExists(fn)) + before = await readText(fn); + fileEdit = fileEdits[fn] = { before, after }; + } + return fileEdit; + }; + for (const fence of fences.filter(({ validation }) => !validation?.schemaError)) { + const { label: name, content: val, language } = fence; + const pm = /^((file|diff):?)\s+/i.exec(name); + if (pm) { + const kw = pm[1].toLowerCase(); + const n = unquote(name.slice(pm[0].length).trim()); + const fn = /^[^\/]/.test(n) ? runtimeHost.resolvePath(projFolder, n) : n; + const fileEdit = await getFileEdit(fn); + if (kw === "file") { + if (fileMerges.length) { + try { + for (const fileMerge of fileMerges) + fileEdit.after = + (await fileMerge(fn, "", // todo + fileEdit.after ?? fileEdit.before, val)) ?? val; + } + catch (e) { + logVerbose(e); + trace?.error(`error custom merging diff in ${fn}`, e); + } + } + else + fileEdit.after = val; + } + else if (kw === "diff") { + const chunks = parseLLMDiffs(val); + try { + fileEdit.after = applyLLMPatch(fileEdit.after || fileEdit.before, chunks); + } + catch (e) { + logVerbose(e); + trace?.error(`error applying patch to ${fn}`, e); + try { + fileEdit.after = applyLLMDiff(fileEdit.after || fileEdit.before, chunks); + } + catch (e) { + logVerbose(e); + trace?.error(`error merging diff in ${fn}`, e); + } + } + } + } + else if (/^changelog$/i.test(name) || /^changelog/i.test(language)) { + changelogs.push(val); + try { + const cls = parseChangeLogs(val); + for (const changelog of cls) { + const { filename } = changelog; + const fn = /^[^\/]/.test(filename) // TODO + ? runtimeHost.resolvePath(projFolder, filename) + : filename; + const fileEdit = await getFileEdit(fn); + fileEdit.after = applyChangeLog(fileEdit.after || fileEdit.before || "", changelog); + } + } + catch (e) { + logError(e); + trace?.error(`error parsing changelog`, e); + trace?.detailsFenced(`changelog`, val, "text"); + } + } + } + // Apply user-defined output processors + if (outputProcessors?.length) { + const opTrace = trace?.startTraceDetails("🖨️ output processors"); + try { + for (const outputProcessor of outputProcessors) { + const { text: newText, files, annotations: oannotations, } = (await outputProcessor({ + text, + fileEdits, + fences, + frames, + annotations, + schemas, + messages, + usage, + })) || {}; + if (newText !== undefined) { + text = newText; + opTrace?.detailsFenced(`📝 text`, text); + } + if (files) + for (const [n, content] of Object.entries(files)) { + const fn = isAbsolute(n) ? n : runtimeHost.resolvePath(projFolder, n); + opTrace?.detailsFenced(`📁 file ${fn}`, content); + const fileEdit = await getFileEdit(fn); + fileEdit.after = content; + fileEdit.validation = { pathValid: true }; + } + if (oannotations) + annotations = oannotations.slice(0); + } + } + catch (e) { + if (isCancelError(e)) + throw e; + logError(e); + opTrace?.error(`output processor failed`, e); + } + finally { + opTrace?.endDetails(); + } + } + // Validate and apply file outputs + validateFileOutputs(fileOutputs, trace, fileEdits, schemas); + // Convert file edits into structured edits + Object.entries(fileEdits) + .filter(([, { before, after }]) => before !== after) // ignore unchanged files + .forEach(([fn, { before, after, validation }]) => { + if (before) { + edits.push({ + label: `Update ${fn}`, + filename: fn, + type: "replace", + range: [[0, 0], stringToPos(after)], + text: after, + validated: !validation?.schemaError && validation?.pathValid, + }); + } + else { + edits.push({ + label: `Create ${fn}`, + filename: fn, + type: "createfile", + text: after, + overwrite: true, + validated: !validation?.schemaError && validation?.pathValid, + }); + } + }); + if (edits.length) + trace?.details("✏️ edits", dataToMarkdownTable(edits, { + headers: ["type", "filename", "message", "validated"], + })); + res.text = text; + res.fileEdits = fileEdits; + res.changelogs = changelogs; + res.annotations = annotations; + res.edits = edits; +} +// Validate file outputs against specified schemas and patterns +/** + * Validates file outputs based on provided patterns and schemas. + * @param fileOutputs List of file outputs to validate. + * @param trace The markdown trace for logging. + * @param fileEdits Record of file updates. + * @param schemas The JSON schemas for validation. + */ +function validateFileOutputs(fileOutputs, trace, fileEdits, schemas) { + if (fileOutputs?.length && Object.keys(fileEdits || {}).length) { + trace?.startDetails("🗂 file outputs"); + try { + for (const fileEditName of Object.keys(fileEdits)) { + const fe = fileEdits[fileEditName]; + for (const fileOutput of fileOutputs) { + const { pattern, options } = fileOutput; + if (isGlobMatch(fileEditName, pattern)) { + try { + trace?.startDetails(`📁 ${fileEditName}`); + trace?.itemValue(`pattern`, pattern); + const { schema: schemaId } = options || {}; + if (/\.(json|yaml)$/i.test(fileEditName)) { + const { after } = fileEdits[fileEditName]; + const data = /\.json$/i.test(fileEditName) ? JSON5parse(after) : YAMLParse(after); + trace?.detailsFenced("📝 data", data); + if (schemaId) { + const schema = schemas[schemaId]; + if (!schema) + fe.validation = { + schemaError: `schema ${schemaId} not found`, + }; + else + fe.validation = validateJSONWithSchema(data, schema, { + trace, + }); + } + } + else { + fe.validation = { pathValid: true }; + } + } + catch (e) { + trace?.error(errorMessage(e)); + fe.validation = { + schemaError: errorMessage(e), + }; + } + finally { + trace?.endDetails(); + } + break; + } + } + } + } + finally { + trace?.endDetails(); + } + } +} +/** + * Asynchronously writes file edits to disk. + * + * @param fileEdits - A record of file updates, including filename, original content, updated content, and validation details. Skips files with invalid schemas unless applyEdits is true. + * @param options - Options for applying edits and tracing details: + * - applyEdits: If true, applies edits even if validation fails. + * - trace: A trace object for logging details, including skipped files, changes, and diff information. + */ +export async function writeFileEdits(fileEdits, // Contains the edits to be applied to files +options) { + const { applyEdits, trace } = options || {}; + // Iterate over each file edit entry + for (const fileEdit of Object.entries(fileEdits || {})) { + // Destructure the filename, before content, after content, and validation from the entry + const [fn, { before, after, validation }] = fileEdit; + if (!applyEdits && !validation?.pathValid) { + // path not validated + continue; + } + // Skip writing if the edit is invalid and applyEdits is false + if (validation?.schemaError) { + trace?.detailsFenced(`skipping ${fn}, invalid schema`, validation.schemaError, "text"); + continue; + } + // Check if there's a change between before and after content + if (after !== before) { + // Log whether the file is being updated or created + logVerbose(`${before !== undefined ? `updating` : `creating`} ${fn}`); + trace?.detailsFenced(`updating ${fn}`, diffCreatePatch({ filename: fn, content: before }, { filename: fn, content: after }), "diff"); + // Write the new content to the file + await writeText(fn, after ?? before); // Write 'after' content if available, otherwise 'before' + } + } +} +//# sourceMappingURL=fileedits.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fileedits.js.map b/packages/core/.tshy-build/browser/fileedits.js.map new file mode 100644 index 0000000000..baceea8598 --- /dev/null +++ b/packages/core/.tshy-build/browser/fileedits.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fileedits.js","sourceRoot":"","sources":["../../src/fileedits.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filetype.d.ts b/packages/core/.tshy-build/browser/filetype.d.ts new file mode 100644 index 0000000000..d718e4c6b4 --- /dev/null +++ b/packages/core/.tshy-build/browser/filetype.d.ts @@ -0,0 +1,9 @@ +/** + * Determines the file type of a given buffer. + * + * @param buffer - The input data to analyze. Must be a Uint8Array or ArrayBuffer. + * If undefined, the function returns undefined. + * @returns The detected file type object, or undefined if no buffer is provided or type cannot be determined. + */ +export declare function fileTypeFromBuffer(buffer: Uint8Array | ArrayBuffer): Promise; +//# sourceMappingURL=filetype.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filetype.d.ts.map b/packages/core/.tshy-build/browser/filetype.d.ts.map new file mode 100644 index 0000000000..b15fbdde51 --- /dev/null +++ b/packages/core/.tshy-build/browser/filetype.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"filetype.d.ts","sourceRoot":"","sources":["../../src/filetype.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,+CAGxE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filetype.js b/packages/core/.tshy-build/browser/filetype.js new file mode 100644 index 0000000000..fc9586809f --- /dev/null +++ b/packages/core/.tshy-build/browser/filetype.js @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { fileTypeFromBuffer as _fileTypeFromBuffer } from "file-type"; +/** + * Determines the file type of a given buffer. + * + * @param buffer - The input data to analyze. Must be a Uint8Array or ArrayBuffer. + * If undefined, the function returns undefined. + * @returns The detected file type object, or undefined if no buffer is provided or type cannot be determined. + */ +export async function fileTypeFromBuffer(buffer) { + if (buffer === undefined) + return undefined; + return _fileTypeFromBuffer(buffer); +} +//# sourceMappingURL=filetype.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/filetype.js.map b/packages/core/.tshy-build/browser/filetype.js.map new file mode 100644 index 0000000000..fedffe48e6 --- /dev/null +++ b/packages/core/.tshy-build/browser/filetype.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filetype.js","sourceRoot":"","sources":["../../src/filetype.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAgC;IACvE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/frontmatter.d.ts b/packages/core/.tshy-build/browser/frontmatter.d.ts new file mode 100644 index 0000000000..c3777c51fc --- /dev/null +++ b/packages/core/.tshy-build/browser/frontmatter.d.ts @@ -0,0 +1,52 @@ +import type { WorkspaceFile } from "./types.js"; +/** + * Parses the frontmatter section of a text input and attempts to convert it into a structured format. + * + * @param text The text or file content to parse. Can either be a raw string or a WorkspaceFile object. + * @param options Optional parsing options: + * - format: Specifies the expected frontmatter format. Supported formats are "yaml", "json", "toml", or "text". + * + * @returns An object containing: + * - text: The raw frontmatter string. + * - value: The parsed frontmatter as a structured object, depending on the specified format. + * - endLine: The last line index of the frontmatter, if it exists. + * Returns `undefined` if no frontmatter is found. + */ +export declare function frontmatterTryParse(text: string | WorkspaceFile, options?: { + format: "yaml" | "json" | "toml" | "text"; +}): { + text: string; + value: any; + endLine?: number; +} | undefined; +/** + * Splits a Markdown text into its frontmatter and content parts. + * + * @param text - The input text or a WorkspaceFile containing Markdown content. + * @returns An object containing: + * - `frontmatter`: The extracted frontmatter as a string, if available. + * - `endLine`: The line number where the frontmatter ends, if applicable. + * - `content`: The remaining Markdown content after the frontmatter. + */ +export declare function splitMarkdown(text: string | WorkspaceFile): { + frontmatter?: string; + endLine?: number; + content: string; +}; +/** + * Updates the frontmatter section of a given text and returns the updated content. + * + * @param text - The input text containing frontmatter and content. + * @param newFrontmatter - An object representing the new frontmatter to merge or apply. + * Keys with `null` remove corresponding fields, keys with `undefined` are ignored. + * @param options - Optional configuration for output format: + * - `format`: Specifies the frontmatter format ("yaml" or "json"). Defaults to "yaml". + * + * @returns The updated text with the modified frontmatter and existing content. + * + * @throws An error if the specified format is unsupported. + */ +export declare function updateFrontmatter(text: string, newFrontmatter: any, options?: { + format: "yaml" | "json"; +}): string; +//# sourceMappingURL=frontmatter.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/frontmatter.d.ts.map b/packages/core/.tshy-build/browser/frontmatter.d.ts.map new file mode 100644 index 0000000000..b8b28dc0f8 --- /dev/null +++ b/packages/core/.tshy-build/browser/frontmatter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/frontmatter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAuB5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAeA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,GAAG,EACnB,OAAO,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACpC,MAAM,CA4BR"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/frontmatter.js b/packages/core/.tshy-build/browser/frontmatter.js new file mode 100644 index 0000000000..bd6e1a9def --- /dev/null +++ b/packages/core/.tshy-build/browser/frontmatter.js @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { filenameOrFileToContent } from "./unwrappers.js"; +import { JSON5TryParse } from "./json5.js"; +import { TOMLTryParse } from "./toml.js"; +import { YAMLTryParse, YAMLStringify } from "./yaml.js"; +/** + * Parses the frontmatter section of a text input and attempts to convert it into a structured format. + * + * @param text The text or file content to parse. Can either be a raw string or a WorkspaceFile object. + * @param options Optional parsing options: + * - format: Specifies the expected frontmatter format. Supported formats are "yaml", "json", "toml", or "text". + * + * @returns An object containing: + * - text: The raw frontmatter string. + * - value: The parsed frontmatter as a structured object, depending on the specified format. + * - endLine: The last line index of the frontmatter, if it exists. + * Returns `undefined` if no frontmatter is found. + */ +export function frontmatterTryParse(text, options) { + text = filenameOrFileToContent(text); + const { format = "yaml" } = options || {}; + const { frontmatter, endLine } = splitMarkdown(text); + if (!frontmatter) + return undefined; + let res; + switch (format) { + case "text": + res = frontmatter; + break; + case "json": + res = JSON5TryParse(frontmatter); + break; + case "toml": + res = TOMLTryParse(frontmatter); + break; + default: + res = YAMLTryParse(frontmatter); + break; + } + return { text: frontmatter, value: res, endLine }; +} +/** + * Splits a Markdown text into its frontmatter and content parts. + * + * @param text - The input text or a WorkspaceFile containing Markdown content. + * @returns An object containing: + * - `frontmatter`: The extracted frontmatter as a string, if available. + * - `endLine`: The line number where the frontmatter ends, if applicable. + * - `content`: The remaining Markdown content after the frontmatter. + */ +export function splitMarkdown(text) { + text = filenameOrFileToContent(text); + if (!text) + return { content: text }; + const lines = text.split(/\r?\n/g); + const delimiter = "---"; + if (lines[0] !== delimiter) + return { content: text }; + let end = 1; + while (end < lines.length) { + if (lines[end] === delimiter) + break; + end++; + } + if (end >= lines.length) + return { frontmatter: text, content: "" }; + const frontmatter = lines.slice(1, end).join("\n"); + const content = lines.slice(end + 1).join("\n"); + return { frontmatter, content, endLine: end }; +} +/** + * Updates the frontmatter section of a given text and returns the updated content. + * + * @param text - The input text containing frontmatter and content. + * @param newFrontmatter - An object representing the new frontmatter to merge or apply. + * Keys with `null` remove corresponding fields, keys with `undefined` are ignored. + * @param options - Optional configuration for output format: + * - `format`: Specifies the frontmatter format ("yaml" or "json"). Defaults to "yaml". + * + * @returns The updated text with the modified frontmatter and existing content. + * + * @throws An error if the specified format is unsupported. + */ +export function updateFrontmatter(text, newFrontmatter, options) { + const { content = "" } = splitMarkdown(text); + if (newFrontmatter === null) + return content; + const frontmatter = frontmatterTryParse(text, options)?.value ?? {}; + // merge object + for (const [key, value] of Object.entries(newFrontmatter ?? {})) { + if (value === null) { + delete frontmatter[key]; + } + else if (value !== undefined) { + frontmatter[key] = value; + } + } + const { format = "yaml" } = options || {}; + let fm; + switch (format) { + case "json": + fm = JSON.stringify(frontmatter, null, 2); + break; + case "yaml": + fm = YAMLStringify(frontmatter); + break; + default: + throw new Error(`Unsupported format: ${format}`); + } + return `---\n${fm}\n---\n${content}`; +} +//# sourceMappingURL=frontmatter.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/frontmatter.js.map b/packages/core/.tshy-build/browser/frontmatter.js.map new file mode 100644 index 0000000000..e07ef47ca0 --- /dev/null +++ b/packages/core/.tshy-build/browser/frontmatter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/frontmatter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fs.d.ts b/packages/core/.tshy-build/browser/fs.d.ts new file mode 100644 index 0000000000..372a63ac2b --- /dev/null +++ b/packages/core/.tshy-build/browser/fs.d.ts @@ -0,0 +1,123 @@ +import type { WorkspaceFile } from "./types.js"; +/** + * Changes the file extension of a given file name. + * + * @param filename - The name of the file whose extension needs to be changed. + * @param newext - The new extension to apply. If it does not start with a dot, one will be added automatically. + * @returns The file name with the updated extension. + */ +export declare function changeext(filename: string, newext: string): string; +/** + * Reads the content of a specified file as text. + * + * @param fn - Path of the file to be read. + * @returns The textual content of the file. + */ +export declare function readText(fn: string): Promise; +/** + * Attempts to read text content from a file. If the file cannot be read, returns undefined. + * + * @param fn - The path of the file to read. + * @returns The content of the file as a string if successfully read, or undefined if an error occurs. + */ +export declare function tryReadText(fn: string): Promise; +/** + * Ensures that the specified directory exists. + * Creates the directory and any necessary parent directories if they do not exist. + * + * @param dir - The path of the directory to ensure exists. + */ +export declare function ensureDir(dir: string): Promise; +/** + * Expands homedir + */ +export declare function expandHomeDir(dir: string): string; +/** + * Writes text content to a specified file, creating directories if necessary. + * + * @param fn - The path of the file to write to. Directories in the path will be created if they do not exist. + * @param content - The textual content to write into the file. + */ +export declare function writeText(fn: string, content: string): Promise; +/** + * Appends text content to the end of the specified file, creating directories as needed. + * + * @param fn - Path to the file where content will be appended. Must be provided. + * @param content - Text content to append to the file. + * @throws Throws an error if the filename is not provided. + */ +export declare function appendText(fn: string, content: string): Promise; +/** + * Checks if a file exists at the given path. + * + * @param fn - The path to the file to check. + * @returns A promise that resolves to `true` if the file exists and is a file, or `false` otherwise. + */ +export declare function fileExists(fn: string): Promise; +/** + * Attempts to retrieve the file status for a given file path. + * If an error occurs (e.g., the file does not exist), it returns undefined. + * + * @param fn - The path of the file to retrieve the status for. If not provided, returns undefined. + * @returns The file status object if the file exists, or undefined if it does not. + */ +export declare function tryStat(fn: string): Promise; +export declare function rmDir(dir: string): Promise; +/** + * Reads and parses a JSON file from the specified path. + * + * @param fn - The path to the JSON file to be read. + * @returns The parsed JSON object from the file. + * @throws Throws an error if the file cannot be read or parsed as JSON. + */ +export declare function readJSON(fn: string): Promise; +/** + * Tries to read and parse a JSON object from a file. + * + * @param fn - Path to the file to be read. + * @returns The parsed JSON object if the operation succeeds, or `undefined` if an error occurs. + */ +export declare function tryReadJSON(fn: string): Promise; +export declare function tryReadJSON5(fn: string): Promise; +/** + * Writes a JSON object to a file. + * + * @param fn - The path to the file where the JSON object will be written. + * @param obj - The JSON object to be written to the file. + */ +export declare function writeJSON(fn: string, obj: unknown): Promise; +/** + * Expands given file paths into a list of file paths and URLs, applying optional filtering and processing. + * + * @param files - An array of file paths or URLs to process. + * @param options - Optional parameters for filtering and processing. + * @param excludedFiles - A list of file paths or URLs to exclude from the result. + * @param accept - A comma-separated list of file extensions to include (e.g., ".js,.ts"). + * @param applyGitIgnore - Whether to apply `.gitignore` rules during file discovery. + * @returns An array of expanded file paths and URLs, filtered based on the given options. + */ +export declare function expandFiles(files: string[], options?: { + excludedFiles?: string[]; + accept?: string; + applyGitIgnore?: boolean; +}): Promise; +/** + * Expands a list of files or workspace files into a unified list of workspace files. + * + * @param files - Array of file paths or workspace file objects to process. + * - Strings in the array represent file paths. + * - Objects in the array represent workspace files. + * @returns A Promise resolving to an array of workspace file objects. + * + * The function separates file paths and workspace file objects from the input, processes the file paths + * through `expandFiles` to resolve all matching paths, and combines the results with the workspace file objects. + */ +export declare function expandFileOrWorkspaceFiles(files: (string | WorkspaceFile)[]): Promise; +/** + * Converts a file path or URL into a workspace-friendly file path. + * + * @param f - The file path or URL to convert. If the input is a valid HTTPS URL or an absolute file path as resolved by the host, it is returned as-is. Otherwise, the path is prefixed with `./` to create a relative path. + * @returns The workspace-compatible file path or URL. + */ +export declare function filePathOrUrlToWorkspaceFile(f: string): string; +//# sourceMappingURL=fs.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fs.d.ts.map b/packages/core/.tshy-build/browser/fs.d.ts.map new file mode 100644 index 0000000000..0781573b4b --- /dev/null +++ b/packages/core/.tshy-build/browser/fs.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAMzD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,mBAGxC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,mBAO3C;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,iBAG1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UAMxC;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAM1D;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAK3D;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,oBAI1C;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,+BAQvC;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,iBAKtC;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,gBAIxC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,gBAO3C;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,oBAM5C;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,iBAIvD;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,qBAmCF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CAmB1B;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,MAAM,UAGrD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fs.js b/packages/core/.tshy-build/browser/fs.js new file mode 100644 index 0000000000..01bde2a4d1 --- /dev/null +++ b/packages/core/.tshy-build/browser/fs.js @@ -0,0 +1,258 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { lstat, mkdir, writeFile, readFile, appendFile, rm } from "node:fs/promises"; +import { HTTPS_REGEX } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { dirname, join, resolve } from "node:path"; +import { JSON5TryParse } from "./json5.js"; +import { homedir } from "node:os"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("fs"); +/** + * Changes the file extension of a given file name. + * + * @param filename - The name of the file whose extension needs to be changed. + * @param newext - The new extension to apply. If it does not start with a dot, one will be added automatically. + * @returns The file name with the updated extension. + */ +export function changeext(filename, newext) { + dbg(`checking if newext starts with a dot`); + if (newext && !newext.startsWith(".")) { + newext = "." + newext; + } + return filename.replace(/\.[^.]+$/, newext); +} +/** + * Reads the content of a specified file as text. + * + * @param fn - Path of the file to be read. + * @returns The textual content of the file. + */ +export async function readText(fn) { + dbg(`reading file ${fn}`); + return readFile(fn, { encoding: "utf8" }); +} +/** + * Attempts to read text content from a file. If the file cannot be read, returns undefined. + * + * @param fn - The path of the file to read. + * @returns The content of the file as a string if successfully read, or undefined if an error occurs. + */ +export async function tryReadText(fn) { + try { + dbg(`trying to read text from file ${fn}`); + return await readText(fn); + } + catch { + return undefined; + } +} +/** + * Ensures that the specified directory exists. + * Creates the directory and any necessary parent directories if they do not exist. + * + * @param dir - The path of the directory to ensure exists. + */ +export async function ensureDir(dir) { + dbg(`ensuring directory exists ${dir}`); + await mkdir(dir, { recursive: true }); +} +/** + * Expands homedir + */ +export function expandHomeDir(dir) { + if (dir?.startsWith("~/")) { + const home = homedir(); + dir = join(home, dir.slice(2)); + } + return dir; +} +/** + * Writes text content to a specified file, creating directories if necessary. + * + * @param fn - The path of the file to write to. Directories in the path will be created if they do not exist. + * @param content - The textual content to write into the file. + */ +export async function writeText(fn, content) { + if (!fn) + throw new Error("filename is required"); + if (typeof content !== "string") + throw new Error("content must be a string"); + await ensureDir(dirname(fn)); + dbg(`writing text to file ${fn}`); + await writeFile(fn, content, { encoding: "utf8" }); +} +/** + * Appends text content to the end of the specified file, creating directories as needed. + * + * @param fn - Path to the file where content will be appended. Must be provided. + * @param content - Text content to append to the file. + * @throws Throws an error if the filename is not provided. + */ +export async function appendText(fn, content) { + if (!fn) + throw new Error("filename is required"); + await ensureDir(dirname(fn)); + dbg(`append text to file ${fn}`); + await appendFile(fn, content, { encoding: "utf8" }); +} +/** + * Checks if a file exists at the given path. + * + * @param fn - The path to the file to check. + * @returns A promise that resolves to `true` if the file exists and is a file, or `false` otherwise. + */ +export async function fileExists(fn) { + dbg(`checking if file exists ${fn}`); + const stat = await tryStat(fn); + return !!stat?.isFile(); +} +/** + * Attempts to retrieve the file status for a given file path. + * If an error occurs (e.g., the file does not exist), it returns undefined. + * + * @param fn - The path of the file to retrieve the status for. If not provided, returns undefined. + * @returns The file status object if the file exists, or undefined if it does not. + */ +export async function tryStat(fn) { + try { + dbg(`getting file stats for ${fn}`); + if (!fn) + return undefined; + return await lstat(fn); + } + catch { + return undefined; + } +} +export async function rmDir(dir) { + if (await tryStat(dir)) { + dbg(`removing directory ${dir}`); + await rm(dir, { recursive: true }); + } +} +/** + * Reads and parses a JSON file from the specified path. + * + * @param fn - The path to the JSON file to be read. + * @returns The parsed JSON object from the file. + * @throws Throws an error if the file cannot be read or parsed as JSON. + */ +export async function readJSON(fn) { + if (!fn) + throw new Error("filename is required"); + dbg(`reading JSON from file ${fn}`); + return JSON.parse(await readText(fn)); +} +/** + * Tries to read and parse a JSON object from a file. + * + * @param fn - Path to the file to be read. + * @returns The parsed JSON object if the operation succeeds, or `undefined` if an error occurs. + */ +export async function tryReadJSON(fn) { + try { + if (!fn) + return undefined; + return JSON.parse(await readText(fn)); + } + catch { + return undefined; + } +} +export async function tryReadJSON5(fn) { + try { + return JSON5TryParse(await readText(fn)); + } + catch { + return undefined; + } +} +/** + * Writes a JSON object to a file. + * + * @param fn - The path to the file where the JSON object will be written. + * @param obj - The JSON object to be written to the file. + */ +export async function writeJSON(fn, obj) { + if (!fn) + throw new Error("filename is required"); + dbg(`writing JSON to file ${fn}`); + await writeText(fn, JSON.stringify(obj)); +} +/** + * Expands given file paths into a list of file paths and URLs, applying optional filtering and processing. + * + * @param files - An array of file paths or URLs to process. + * @param options - Optional parameters for filtering and processing. + * @param excludedFiles - A list of file paths or URLs to exclude from the result. + * @param accept - A comma-separated list of file extensions to include (e.g., ".js,.ts"). + * @param applyGitIgnore - Whether to apply `.gitignore` rules during file discovery. + * @returns An array of expanded file paths and URLs, filtered based on the given options. + */ +export async function expandFiles(files, options) { + const { excludedFiles = [], accept, applyGitIgnore } = options || {}; + dbg(`no files to expand or accept is none`); + if (!files.length || accept === "none") { + return []; + } + const runtimeHost = resolveRuntimeHost(); + dbg(`filtering URLs from files`); + const urls = files.filter((f) => HTTPS_REGEX.test(f)).filter((f) => !excludedFiles.includes(f)); + dbg(`finding other files`); + const others = await runtimeHost.findFiles(files.filter((f) => !HTTPS_REGEX.test(f)), { + ignore: excludedFiles.filter((f) => !HTTPS_REGEX.test(f)), + applyGitIgnore, + }); + const res = new Set([...urls, ...others]); + dbg(`applying accept filter`); + if (accept) { + const exts = accept + .split(",") + .map((s) => s.trim().replace(/^\*\./, ".")) + .filter((s) => !!s); + for (const rf of res) { + dbg(`removing file ${rf} as it does not match accepted extensions`); + if (!exts.some((ext) => rf.endsWith(ext))) { + res.delete(rf); + } + } + } + return Array.from(res); +} +/** + * Expands a list of files or workspace files into a unified list of workspace files. + * + * @param files - Array of file paths or workspace file objects to process. + * - Strings in the array represent file paths. + * - Objects in the array represent workspace files. + * @returns A Promise resolving to an array of workspace file objects. + * + * The function separates file paths and workspace file objects from the input, processes the file paths + * through `expandFiles` to resolve all matching paths, and combines the results with the workspace file objects. + */ +export async function expandFileOrWorkspaceFiles(files) { + dbg(`expanding file or workspace files`); + const filesPaths = await expandFiles(files.filter((f) => typeof f === "string"), { + applyGitIgnore: false, + }); + dbg(`filtering workspace files`); + const workspaceFiles = files.filter((f) => typeof f === "object"); + return [ + ...filesPaths.map((filename) => ({ + filename, + })), + ...workspaceFiles, + ]; +} +/** + * Converts a file path or URL into a workspace-friendly file path. + * + * @param f - The file path or URL to convert. If the input is a valid HTTPS URL or an absolute file path as resolved by the host, it is returned as-is. Otherwise, the path is prefixed with `./` to create a relative path. + * @returns The workspace-compatible file path or URL. + */ +export function filePathOrUrlToWorkspaceFile(f) { + dbg(`converting file path or URL to workspace file ${f}`); + return HTTPS_REGEX.test(f) || resolve(f) === f ? f : `./${f}`; +} +//# sourceMappingURL=fs.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fs.js.map b/packages/core/.tshy-build/browser/fs.js.map new file mode 100644 index 0000000000..7574d00caa --- /dev/null +++ b/packages/core/.tshy-build/browser/fs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fscache.d.ts b/packages/core/.tshy-build/browser/fscache.d.ts new file mode 100644 index 0000000000..9233b5d5c0 --- /dev/null +++ b/packages/core/.tshy-build/browser/fscache.d.ts @@ -0,0 +1,25 @@ +import type { WorkspaceFileCache } from "./types.js"; +/** + * A cache class stores each entry as a separate file in a directory. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export declare class FsCache implements WorkspaceFileCache { + readonly name: string; + private hashOptions; + private dbg; + constructor(name: string); + private cacheFilename; + get(key: any): Promise; + set(key: any, value: any): Promise; + values(): Promise; + getOrUpdate(key: K, updater: () => Promise, validator?: (val: V) => boolean): Promise<{ + key: string; + value: V; + cached?: boolean; + }>; + private folder; + getSha(key: K): Promise; +} +//# sourceMappingURL=fscache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fscache.d.ts.map b/packages/core/.tshy-build/browser/fscache.d.ts.map new file mode 100644 index 0000000000..883d80fc36 --- /dev/null +++ b/packages/core/.tshy-build/browser/fscache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fscache.d.ts","sourceRoot":"","sources":["../../src/fscache.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,OAAO,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;aAKpC,IAAI,EAAE,MAAM;IAJxC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,GAAG,CAAW;gBAGM,IAAI,EAAE,MAAM;IAQxC,OAAO,CAAC,aAAa;IAIf,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBxB,WAAW,CACf,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAC9B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBvD,OAAO,CAAC,MAAM;IAIR,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAItC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fscache.js b/packages/core/.tshy-build/browser/fscache.js new file mode 100644 index 0000000000..26e0bd53f6 --- /dev/null +++ b/packages/core/.tshy-build/browser/fscache.js @@ -0,0 +1,98 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { tryReadJSON, writeText } from "./fs.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { join } from "node:path"; +import debug from "debug"; +import { errorMessage } from "./error.js"; +import { rm, readdir } from "fs/promises"; +import { CACHE_FORMAT_VERSION, CACHE_SHA_LENGTH, FILE_READ_CONCURRENCY_DEFAULT, } from "./constants.js"; +import { hash } from "./crypto.js"; +import pLimit from "p-limit"; +/** + * A cache class stores each entry as a separate file in a directory. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export class FsCache { + name; + hashOptions; + dbg; + // Constructor is private to enforce the use of byName factory method + constructor(name) { + this.name = name; + this.dbg = debug(`genaiscript:cache:${name}`); + this.hashOptions = { + salt: CACHE_FORMAT_VERSION, + length: CACHE_SHA_LENGTH, + }; + } + cacheFilename(sha) { + return join(this.folder(), sha + ".json"); + } + async get(key) { + if (key === undefined) + return undefined; // Handle undefined key + const sha = await this.getSha(key); + const fn = this.cacheFilename(sha); + const res = await tryReadJSON(fn); + this.dbg(`get ${sha}: ${res !== undefined ? "hit" : "miss"}`); + return res; + } + async set(key, value) { + const sha = await this.getSha(key); + const fn = this.cacheFilename(sha); + try { + if (value === undefined) + await rm(fn); + else + await writeText(fn, JSON.stringify(value, null, 2)); + this.dbg(`set ${sha}: updated`); + } + catch (e) { + this.dbg(`set ${sha}: failed (${errorMessage(e)})`); + } + } + async values() { + try { + const dir = this.folder(); + const files = await readdir(this.folder()); + const limit = pLimit(FILE_READ_CONCURRENCY_DEFAULT); + return await Promise.all(files + .filter((f) => /\.json$/.test(f)) + .map((f) => limit(() => tryReadJSON(join(dir, f)))) + .filter((f) => f !== undefined)); + } + catch (e) { + this.dbg(`error while reading directory ${this.folder()}: ${errorMessage(e)}`); + return []; + } + } + async getOrUpdate(key, updater, validator) { + const sha = await this.getSha(key); + const fn = this.cacheFilename(sha); + const res = await tryReadJSON(fn); + if (res) { + this.dbg(`getup ${sha}: hit`); + return { key: sha, value: res, cached: true }; + } + const value = await updater(); + if (validator && validator(value)) { + await this.set(key, value); + this.dbg(`getup ${sha}: update`); + } + else + this.dbg(`getup ${sha}: skip`); + return { key: sha, value, cached: false }; + } + // Get the folder path for the cache storage + folder() { + return dotGenaiscriptPath("cache", this.name); + } + async getSha(key) { + const sha = await hash(key, this.hashOptions); + return sha; + } +} +//# sourceMappingURL=fscache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fscache.js.map b/packages/core/.tshy-build/browser/fscache.js.map new file mode 100644 index 0000000000..78c63d89d9 --- /dev/null +++ b/packages/core/.tshy-build/browser/fscache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fscache.js","sourceRoot":"","sources":["../../src/fscache.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fuzzsearch.d.ts b/packages/core/.tshy-build/browser/fuzzsearch.d.ts new file mode 100644 index 0000000000..a804ec5fa5 --- /dev/null +++ b/packages/core/.tshy-build/browser/fuzzsearch.d.ts @@ -0,0 +1,13 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { FuzzSearchOptions, WorkspaceFile, WorkspaceFileWithScore } from "./types.js"; +/** + * Performs a fuzzy search on a set of workspace files using a query. + * + * @param query - The search query string. + * @param files - An array of WorkspaceFile objects to search through. + * @param options - Optional FuzzSearch, Trace, and Cancellation options, including a limit on top results, a minimum score threshold, additional search options, and cancellation support. + * @returns A promise that resolves to an array of WorkspaceFileWithScore, containing the filename, content, and search score. + */ +export declare function fuzzSearch(query: string, files: WorkspaceFile[], options?: FuzzSearchOptions & TraceOptions & CancellationOptions): Promise; +//# sourceMappingURL=fuzzsearch.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fuzzsearch.d.ts.map b/packages/core/.tshy-build/browser/fuzzsearch.d.ts.map new file mode 100644 index 0000000000..3fe397c744 --- /dev/null +++ b/packages/core/.tshy-build/browser/fuzzsearch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fuzzsearch.d.ts","sourceRoot":"","sources":["../../src/fuzzsearch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE3F;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAAG,YAAY,GAAG,mBAAmB,GAC/D,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA0CnC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fuzzsearch.js b/packages/core/.tshy-build/browser/fuzzsearch.js new file mode 100644 index 0000000000..e2377c3bf0 --- /dev/null +++ b/packages/core/.tshy-build/browser/fuzzsearch.js @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import MiniSearch from "minisearch"; +import { resolveFileContent } from "./file.js"; +import { randomHex } from "./crypto.js"; +import { checkCancelled } from "./cancellation.js"; +/** + * Performs a fuzzy search on a set of workspace files using a query. + * + * @param query - The search query string. + * @param files - An array of WorkspaceFile objects to search through. + * @param options - Optional FuzzSearch, Trace, and Cancellation options, including a limit on top results, a minimum score threshold, additional search options, and cancellation support. + * @returns A promise that resolves to an array of WorkspaceFileWithScore, containing the filename, content, and search score. + */ +export async function fuzzSearch(query, files, options) { + // Destructure options to extract trace and topK, with defaulting to an empty object + const { trace, topK, minScore, cancellationToken, ...otherOptions } = options || {}; + // Load the content for all provided files asynchronously + for (const file of files) + await resolveFileContent(file); + checkCancelled(cancellationToken); + // assign ids + const filesWithId = files.map((f) => ({ + ...f, + id: randomHex(32), + })); + // Initialize the MiniSearch instance with specified fields and options + const miniSearch = new MiniSearch({ + idField: "id", // Unique identifier for documents + fields: ["filename", "content"], // Fields to index for searching + storeFields: ["filename", "content"], // Fields to store in results + searchOptions: otherOptions, // Additional search options + }); + // Add all files with content to the MiniSearch index + await miniSearch.addAllAsync(filesWithId.filter((f) => !f.encoding && !!f.content)); + checkCancelled(cancellationToken); + // Perform search using the provided query + let results = miniSearch.search(query); + // Limit results to top K if specified + if (topK > 0) + results = results.slice(0, topK); + if (minScore > 0) + results = results.filter((r) => r.score >= minScore); + // Map search results to WorkspaceFileWithScore structure + return results.map((r) => ({ + filename: r.filename, // Map ID to filename + content: r.content, // Map content from search result + score: r.score, // Include the relevance score + })); +} +//# sourceMappingURL=fuzzsearch.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/fuzzsearch.js.map b/packages/core/.tshy-build/browser/fuzzsearch.js.map new file mode 100644 index 0000000000..aa0d58ce86 --- /dev/null +++ b/packages/core/.tshy-build/browser/fuzzsearch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fuzzsearch.js","sourceRoot":"","sources":["../../src/fuzzsearch.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,KAAsB,EACtB,OAAgE;IAEhE,oFAAoF;IACpF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEpF,yDAAyD;IACzD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzD,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAElC,aAAa;IACb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC;QACJ,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;KAClB,CAAC,CAAC,CAAC;IAEJ,uEAAuE;IACvE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,kCAAkC;QACjD,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,gCAAgC;QACjE,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,6BAA6B;QACnE,aAAa,EAAE,YAAY,EAAE,4BAA4B;KAC1D,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAElC,0CAA0C;IAC1C,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,sCAAsC;IACtC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAEvE,yDAAyD;IACzD,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAwB;QACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,qBAAqB;QAC3C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,iCAAiC;QACrD,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,8BAA8B;KAC/C,CAAA,CACJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/generation.d.ts b/packages/core/.tshy-build/browser/generation.d.ts new file mode 100644 index 0000000000..c54ae1394b --- /dev/null +++ b/packages/core/.tshy-build/browser/generation.d.ts @@ -0,0 +1,28 @@ +import type { CancellationToken } from "./cancellation.js"; +import type { ChatCompletionsOptions } from "./chattypes.js"; +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { GenerationStats } from "./usage.js"; +import type { ContentSafetyOptions, EmbeddingsModelOptions, MetadataOptions, ModelOptions, PromptParameters, ScriptRuntimeOptions, WorkspaceFile } from "./types.js"; +export interface Fragment { + files: string[]; + workspaceFiles?: WorkspaceFile[]; +} +export interface GenerationOptions extends ChatCompletionsOptions, ModelOptions, EmbeddingsModelOptions, ContentSafetyOptions, ScriptRuntimeOptions, MetadataOptions, TraceOptions { + inner: boolean; + runId?: string; + runDir?: string; + cancellationToken?: CancellationToken; + infoCb?: (partialResponse: { + text: string; + }) => void; + outputTrace?: MarkdownTrace; + maxCachedTemperature?: number; + maxCachedTopP?: number; + label?: string; + vars?: PromptParameters; + stats: GenerationStats; + userState: Record; + applyGitIgnore?: boolean; + disableChatPreview?: boolean; +} +//# sourceMappingURL=generation.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/generation.d.ts.map b/packages/core/.tshy-build/browser/generation.d.ts.map new file mode 100644 index 0000000000..07ed67b595 --- /dev/null +++ b/packages/core/.tshy-build/browser/generation.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/generation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAGD,MAAM,WAAW,iBACf,SAAQ,sBAAsB,EAC5B,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/generation.js b/packages/core/.tshy-build/browser/generation.js new file mode 100644 index 0000000000..a8d5d1e457 --- /dev/null +++ b/packages/core/.tshy-build/browser/generation.js @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export {}; +//# sourceMappingURL=generation.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/generation.js.map b/packages/core/.tshy-build/browser/generation.js.map new file mode 100644 index 0000000000..a23e6c61df --- /dev/null +++ b/packages/core/.tshy-build/browser/generation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/generation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/git.d.ts b/packages/core/.tshy-build/browser/git.d.ts new file mode 100644 index 0000000000..2b21826edf --- /dev/null +++ b/packages/core/.tshy-build/browser/git.d.ts @@ -0,0 +1,145 @@ +import type { ElementOrArray, Git, GitCommit, GitLogOptions, GitWorktree, GitWorktreeAddOptions, OptionsOrString, WorkspaceFile } from "./types.js"; +/** + * GitClient class provides an interface to interact with Git. + */ +export declare class GitClient implements Git { + private _cwd; + readonly git = "git"; + private _defaultBranch; + private _requiresSafeDirectory; + constructor(cwd: string); + private static _default; + static default(): GitClient; + get cwd(): string; + setGitHubWorkspace(cwd: string): this; + private configGlobalAddSafeDirectory; + private resolveExcludedPaths; + /** + * Retrieves the default branch name. + * If not already set, it fetches from the Git remote. + * @returns {Promise} The default branch name. + */ + defaultBranch(): Promise; + fetch(remote?: OptionsOrString<"origin">, branchOrSha?: string, options?: { + prune?: boolean; + all?: boolean; + }): Promise; + /** + * Pull changes from the remote repository. + */ + pull(options?: { + /** + * Whether to fast-forward the merge (`--ff`) + */ + ff?: boolean; + }): Promise; + /** + * Gets the current branch + * @returns + */ + branch(): Promise; + listBranches(): Promise; + /** + * Executes a Git command with given arguments. + * @param args Git command arguments. + * @param options Optional command options with a label. + * @returns {Promise} The standard output from the command. + */ + exec(args: string | string[], options?: { + label?: string; + valueOnError?: string; + }): Promise; + /** + * Finds modified files in the Git repository based on the specified scope. + * @param scope The scope of modifications to find: "modified-base", "staged", or "modified". Default is "modified". + * @param options Optional settings such as base branch, paths, and exclusions. + * @returns {Promise} List of modified files. + */ + listFiles(scope?: "modified-base" | "staged" | "modified", options?: { + base?: string; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + askStageOnEmpty?: boolean; + }): Promise; + /** + * Adds file path filters to Git command arguments. + * @param paths Paths to include. + * @param excludedPaths Paths to exclude. + * @param args Git command arguments. + */ + private static addFileFilters; + lastTag(): Promise; + lastCommitSha(): Promise; + listWorktrees(): Promise; + addWorktree(path: string, commitish?: string, options?: GitWorktreeAddOptions): Promise; + removeWorktree(path: string, options?: { + force?: boolean; + }): Promise; + log(options?: GitLogOptions): Promise; + /** + * Returns a list of files that have changed in the git repository + * @param options + */ + changedFiles(options?: GitLogOptions & { + readText?: string; + }): Promise; + /** + * Runs git blame in a file, line. + * @param filename + * @param line + * @returns + */ + blame(filename: string, line: number): Promise; + /** + * Generates a diff of changes based on provided options. + * @param options Options such as staged flag, base, head, paths, and exclusions. + * @returns {Promise} The diff output. + */ + diff(options?: { + staged?: boolean; + askStageOnEmpty?: boolean; + base?: string; + head?: string; + paths?: ElementOrArray; + excludedPaths?: ElementOrArray; + unified?: number; + nameOnly?: boolean; + llmify?: boolean; + algorithm?: "patience" | "minimal" | "histogram" | "myers"; + extras?: string[]; + /** + * Maximum of tokens before returning a name-only diff + */ + maxTokensFullDiff?: number; + }): Promise; + /** + * Create a shallow git clone + * @param repository URL of the remote repository + * @param options various clone options + */ + shallowClone(repository: string, options?: { + /** + * branch to clone + */ + branch?: string; + /** + * Do not reuse previous clone + */ + force?: boolean; + /** + * Runs install command after cloning + */ + install?: boolean; + /** + * Number of commits to fetch + */ + depth?: number; + /** + * Path to the directory to clone into + */ + directory?: string; + }): Promise; + client(cwd: string): GitClient; + toString(): string; +} +//# sourceMappingURL=git.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/git.d.ts.map b/packages/core/.tshy-build/browser/git.d.ts.map new file mode 100644 index 0000000000..99fd2de15d --- /dev/null +++ b/packages/core/.tshy-build/browser/git.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/git.js b/packages/core/.tshy-build/browser/git.js new file mode 100644 index 0000000000..e9eb5f2954 --- /dev/null +++ b/packages/core/.tshy-build/browser/git.js @@ -0,0 +1,553 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This file contains the GitClient class, which provides methods to interact with Git repositories. +// It includes functionality to find modified files, execute Git commands, and manage branches. +import { uniq } from "es-toolkit"; +import { GENAISCRIPTIGNORE, GIT_DIFF_MAX_TOKENS, GIT_IGNORE_GENAI } from "./constants.js"; +import { llmifyDiff } from "./llmdiff.js"; +import { resolveFileContents } from "./file.js"; +import { tryReadText, tryStat } from "./fs.js"; +import { resolveRuntimeHost } from "./host.js"; +import { shellParse, shellQuote } from "./shell.js"; +import { arrayify } from "./cleaners.js"; +import { ellipse, logVerbose } from "./util.js"; +import { approximateTokens } from "./tokens.js"; +import { underscore } from "inflection"; +import { rm } from "node:fs/promises"; +import { packageResolveInstall } from "./packagemanagers.js"; +import { normalizeInt } from "./cleaners.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("git"); +async function checkDirectoryExists(directory) { + const stat = await tryStat(directory); + dbg(`directory exists: ${!!stat?.isDirectory()}`); + return !!stat?.isDirectory(); +} +function appendExtras(rest, args) { + Object.entries(rest) + .filter(([, v]) => v !== undefined && typeof v !== "object") + .forEach(([k, v]) => args.push(v === true ? `--${underscore(k)}` : `--${underscore(k)}=${v}`)); +} +/** + * GitClient class provides an interface to interact with Git. + */ +export class GitClient { + _cwd; + git = "git"; // Git command identifier + _defaultBranch; // Stores the default branch name + _requiresSafeDirectory = false; // Indicates if the client requires a safe directory + constructor(cwd) { + this._cwd = cwd || process.cwd(); + } + static _default; + static default() { + if (!this._default) + this._default = new GitClient(undefined); + return this._default; + } + get cwd() { + return this._cwd; + } + setGitHubWorkspace(cwd) { + if (cwd === this._cwd) + return this; + dbg(`set github workspace mode: ${cwd}`); + this._cwd = cwd; + this._defaultBranch = undefined; // Reset default branch + this._requiresSafeDirectory = true; + if (!process.env.GITHUB_TOKEN && process.env.INPUT_GITHUB_TOKEN) { + dbg(`setting GITHUB_TOKEN from INPUT_GITHUB_TOKEN`); + process.env.GITHUB_TOKEN = process.env.INPUT_GITHUB_TOKEN; + } + return this; + } + async configGlobalAddSafeDirectory() { + if (this._requiresSafeDirectory) { + this._requiresSafeDirectory = false; + dbg(`adding safe directory for git`); + await this.exec(`config --global --add safe.directory ${this.cwd}`); + } + } + async resolveExcludedPaths(options) { + dbg(`resolving excluded paths`); + const { excludedPaths } = options || {}; + const ep = arrayify(excludedPaths, { filterEmpty: true }); + const dp = (await tryReadText(GIT_IGNORE_GENAI))?.split("\n"); + dbg(`reading GENAISCRIPTIGNORE file`); + const dp2 = (await tryReadText(GENAISCRIPTIGNORE))?.split("\n"); + const ps = [ + ...arrayify(ep, { filterEmpty: true }), + ...arrayify(dp, { filterEmpty: true }), + ...arrayify(dp2, { filterEmpty: true }), + ]; + return uniq(ps); + } + /** + * Retrieves the default branch name. + * If not already set, it fetches from the Git remote. + * @returns {Promise} The default branch name. + */ + async defaultBranch() { + if (this._defaultBranch === undefined) { + dbg(`fetching default branch from remote`); + const res = await this.exec(["remote", "show", "origin"], { + valueOnError: "", + }); + this._defaultBranch = /^\s*HEAD branch:\s+(?.+)\s*$/m.exec(res)?.groups?.name || ""; + } + return this._defaultBranch; + } + async fetch(remote, branchOrSha, options) { + const { prune, all, ...rest } = options || {}; + if (branchOrSha && !remote) + throw new Error("remote is required when specifying branch or sha"); + const args = ["fetch", "--porcelain"]; + if (remote) + args.push(remote); + if (branchOrSha) + args.push(branchOrSha); + if (prune) + args.push("--prune"); + if (all) + args.push("--all"); + appendExtras(rest, args); + return await this.exec(args); + } + /** + * Pull changes from the remote repository. + */ + async pull(options) { + const { ff, ...rest } = options || {}; + const args = ["pull"]; + if (ff) + args.push("--ff"); + appendExtras(rest, args); + return await this.exec(args); + } + /** + * Gets the current branch + * @returns + */ + async branch() { + dbg(`fetching current branch`); + const res = await this.exec(["branch", "--show-current"], { + valueOnError: "", + }); + return res.trim(); + } + async listBranches() { + dbg(`listing all branches`); + const res = await this.exec(["branch", "--list"], { valueOnError: "" }); + return res + .split("\n") + .map((b) => b.trim()) + .filter((f) => !!f); + } + /** + * Executes a Git command with given arguments. + * @param args Git command arguments. + * @param options Optional command options with a label. + * @returns {Promise} The standard output from the command. + */ + async exec(args, options) { + const { valueOnError } = options || {}; + const runtimeHost = resolveRuntimeHost(); + await this.configGlobalAddSafeDirectory(); + const opts = { + ...(options || {}), + cwd: this._cwd, + env: { + LC_ALL: "en_US", + }, + }; + const eargs = Array.isArray(args) ? args : shellParse(args); + dbg(`exec`, shellQuote(eargs)); + const res = await runtimeHost.exec(undefined, this.git, eargs, opts); + dbg(`exec: exit code ${res.exitCode}`); + if (res.stdout) + dbg(res.stdout); + if (res.exitCode !== 0) { + dbg(`error: ${res.stderr}`); + if (valueOnError !== undefined) + return valueOnError; + throw new Error(res.stderr); + } + return res.stdout; + } + /** + * Finds modified files in the Git repository based on the specified scope. + * @param scope The scope of modifications to find: "modified-base", "staged", or "modified". Default is "modified". + * @param options Optional settings such as base branch, paths, and exclusions. + * @returns {Promise} List of modified files. + */ + async listFiles(scope, options) { + dbg(`listing files with scope: ${scope}`); + const runtimeHost = resolveRuntimeHost(); + scope = scope || "modified"; + const { askStageOnEmpty } = options || {}; + const paths = arrayify(options?.paths, { filterEmpty: true }); + const excludedPaths = await this.resolveExcludedPaths(options); + let filenames; + if (scope === "modified-base" || scope === "staged") { + dbg(`listing modified or staged files`); + const args = ["diff", "--name-only", "--diff-filter=AM"]; + if (scope === "modified-base") { + const base = options?.base || `origin/${await this.defaultBranch()}`; + dbg(`using base branch: %s`, base); + args.push(base); + } + else { + dbg(`listing staged files`); + args.push("--cached"); + } + GitClient.addFileFilters(paths, excludedPaths, args); + const res = await this.exec(args, { + label: `git list modified files in ${scope}`, + }); + filenames = res.split("\n").filter((f) => f); + if (!filenames.length && scope == "staged" && askStageOnEmpty) { + dbg(`asking to stage all changes`); + // If no staged changes, optionally ask to stage all changes + const stage = await runtimeHost.confirm("No staged changes. Stage all changes?", { + default: true, + }); + if (stage) { + dbg(`staging all changes`); + await this.exec(["add", "."]); + filenames = (await this.exec(args)).split("\n").filter((f) => f); + } + } + } + else { + dbg(`listing modified files`); + // For "modified" scope, ignore deleted files + const rx = /^\s*(A|M|\?{1,2})\s+/gm; + const args = ["status", "--porcelain"]; + GitClient.addFileFilters(paths, excludedPaths, args); + dbg(`executing git status`); + const res = await this.exec(args, { + label: `git list modified files`, + }); + filenames = res + .split("\n") + .filter((f) => rx.test(f)) + .map((f) => f.replace(rx, "").trim()); + } + const files = filenames.map((filename) => ({ filename })); + await resolveFileContents(files); + return files; + } + /** + * Adds file path filters to Git command arguments. + * @param paths Paths to include. + * @param excludedPaths Paths to exclude. + * @param args Git command arguments. + */ + static addFileFilters(paths, excludedPaths, args) { + if (paths.length > 0 || excludedPaths.length > 0) { + args.push("--"); + if (!paths.length) { + args.push("."); + } + else { + args.push(...paths); + } + args.push(...excludedPaths.map((p) => (p.startsWith(":!") ? p : ":!" + p))); + } + } + async lastTag() { + dbg(`fetching last tag`); + const res = await this.exec(["describe", "--tags", "--abbrev=0", "HEAD^"]); + return res.split("\n")[0]; + } + async lastCommitSha() { + dbg(`fetching last commit`); + const res = await this.exec(["rev-parse", "HEAD"]); + return res.split("\n")[0]; + } + async listWorktrees() { + dbg(`listing worktrees`); + const res = await this.exec(["worktree", "list", "--porcelain"], { + valueOnError: "", + }); + if (!res.trim()) + return []; + const worktrees = []; + const lines = res.trim().split("\n"); + let current = {}; + for (const line of lines) { + if (line.startsWith("worktree ")) { + current.path = line.substring(9); + } + else if (line.startsWith("HEAD ")) { + current.head = line.substring(5); + } + else if (line.startsWith("branch ")) { + current.branch = line.substring(7); + } + else if (line === "bare") { + current.bare = true; + } + else if (line === "detached") { + current.detached = true; + } + else if (line === "") { + // Empty line indicates end of worktree entry + if (current.path) { + worktrees.push(current); + current = {}; + } + } + } + // Handle last entry if no trailing empty line + if (current.path) { + worktrees.push(current); + } + return worktrees; + } + async addWorktree(path, commitish, options) { + dbg(`adding worktree at ${path}`); + const args = ["worktree", "add"]; + if (options?.force) + args.push("-f"); + if (options?.detach) + args.push("--detach"); + if (!options?.checkout) + args.push("--no-checkout"); + if (options?.orphan) + args.push("--orphan"); + if (options?.branch) { + args.push("-b", options.branch); + } + args.push(path); + if (commitish) + args.push(commitish); + await this.exec(args); + // Return a GitClient opened at the worktree path + return this.client(path); + } + async removeWorktree(path, options) { + dbg(`removing worktree at ${path}`); + const args = ["worktree", "remove"]; + if (options?.force) + args.push("-f"); + args.push(path); + await this.exec(args); + } + async log(options) { + const { base, head, merges, excludedGrep, count, author, until, after } = options || {}; + const paths = arrayify(options?.paths, { filterEmpty: true }); + const excludedPaths = await this.resolveExcludedPaths(options); + dbg(`building git log command arguments`); + const args = ["log", "--pretty=format:%h %ad %ae %s", "--date=short", "--name-only"]; + if (!merges) { + args.push("--no-merges"); + } + if (author) { + args.push(`--author`, author); + } + if (until) { + args.push("--until", until); + } + if (after) { + args.push("--after", after); + } + if (excludedGrep) { + dbg(`excluding grep pattern: ${excludedGrep}`); + const pattern = typeof excludedGrep === "string" ? excludedGrep : excludedGrep.source; + args.push(`--grep='${pattern}'`, "--invert-grep"); + } + if (!isNaN(count)) { + dbg(`limiting log to ${count} entries`); + args.push(`-n`, String(count)); + } + if (base && head) { + dbg(`log range: ${base}..${head}`); + args.push(`${base}..${head}`); + } + GitClient.addFileFilters(paths, excludedPaths, args); + const res = await this.exec(args); + const commits = []; + let commit; + for (const line of res.split(/\n/g).map((l) => l.trim())) { + const g = /^(?[a-z0-9]{6,40}) (?\d{4,4}-\d{2,2}-\d{2,2}) (?.+) (?.*)$/.exec(line)?.groups; + if (g) { + commits.push((commit = { + sha: g?.sha, + date: g?.date, + author: g?.author?.replace(/@users\.noreply\.github\.com$/, ""), + message: g?.message, + files: [], + })); + } + else if (line) { + commit.files.push(line); + } + else + commit = undefined; + } + return commits; + } + /** + * Returns a list of files that have changed in the git repository + * @param options + */ + async changedFiles(options) { + const { readText, ...rest } = options || {}; + const commits = await this.log(rest); + const files = uniq(commits.flatMap((commit) => commit.files)).map((filename) => ({ filename })); + if (readText) + await resolveFileContents(files); + return files; + } + /** + * Runs git blame in a file, line. + * @param filename + * @param line + * @returns + */ + async blame(filename, line) { + const args = ["blame", filename, "-p", "-L", "-w", "--minimal", `${line},${line}`]; + const res = await this.exec(args); + // part git blame porcelain format + // The porcelain format includes the sha, line numbers, and original line + const match = /^(?[a-f0-9]{40})\s+.*$/m.exec(res); + return match?.groups?.sha || ""; + } + /** + * Generates a diff of changes based on provided options. + * @param options Options such as staged flag, base, head, paths, and exclusions. + * @returns {Promise} The diff output. + */ + async diff(options) { + const runtimeHost = resolveRuntimeHost(); + const paths = arrayify(options?.paths, { filterEmpty: true }); + const excludedPaths = await this.resolveExcludedPaths(options); + const { staged, base, head, unified, askStageOnEmpty, nameOnly, maxTokensFullDiff = GIT_DIFF_MAX_TOKENS, llmify, algorithm = "minimal", extras, } = options || {}; + const args = ["diff"]; + if (staged) { + dbg(`including staged changes`); + args.push("--staged"); + } + if (unified > 0) { + args.push("--ignore-all-space"); + args.push(`--unified=${unified}`); + } + if (nameOnly) { + args.push("--name-only"); + } + if (algorithm) { + args.push(`--diff-algorithm=${algorithm}`); + } + if (extras?.length) { + args.push(...extras); + } + if (base && !head) { + dbg(`diff base: ${base}`); + args.push(base); + } + else if (head && !base) { + dbg(`diff head: ${head}`); + args.push(`${head}^..${head}`); + } + else if (base && head) { + dbg(`diff range: ${base}..${head}`); + args.push(`${base}..${head}`); + } + GitClient.addFileFilters(paths, excludedPaths, args); + let res = await this.exec(args); + dbg(`executing diff command`); + if (!res && staged && askStageOnEmpty) { + // If no staged changes, optionally ask to stage all changes + dbg(`asking to stage all changes`); + const stage = await runtimeHost.confirm("No staged changes. Stage all changes?", { + default: true, + }); + if (stage) { + dbg(`staging all changes`); + await this.exec(["add", "."]); + res = await this.exec(args); + } + } + if (!nameOnly && llmify) { + dbg(`llmifying diff`); + res = llmifyDiff(res); + dbg(`encoding diff`); + const tokens = approximateTokens(res); + if (tokens > maxTokensFullDiff) { + dbg(`truncating diff due to token limit`); + res = `## Diff +Truncated diff to large (${tokens} tokens). Diff files individually for details. + +${ellipse(res, maxTokensFullDiff * 3)} +... + +## Files +${await this.diff({ ...options, nameOnly: true })} +`; + } + } + return res; + } + /** + * Create a shallow git clone + * @param repository URL of the remote repository + * @param options various clone options + */ + async shallowClone(repository, options) { + const runtimeHost = resolveRuntimeHost(); + dbg(`cloning repository: ${repository}`); + // eslint-disable-next-line prefer-const + let { branch, force, install, depth, directory, ...rest } = options || {}; + depth = normalizeInt(depth); + if (isNaN(depth)) + depth = 1; + // normalize short github url + // check if the repository is in the form of `owner/repo` + if (/^(\w|-)+\/(\w|-)+$/.test(repository)) { + // eslint-disable-next-line no-param-reassign + repository = `https://github.com/${repository}`; + } + const url = new URL(repository); + if (!directory) { + const sha = (await this.exec(["ls-remote", repository, branch || "HEAD"])).split(/\s+/)[0]; + directory = dotGenaiscriptPath("git", ...url.pathname.split(/\//g).filter((s) => !!s), branch || `HEAD`, sha); + } + logVerbose(`git: shallow cloning ${repository} to ${directory}`); + if (await checkDirectoryExists(directory)) { + if (!force && !install) { + dbg(`directory already exists`); + return new GitClient(directory); + } + dbg(`removing existing directory`); + await rm(directory, { recursive: true, force: true }); + } + const args = ["clone", "--depth", String(Math.max(1, depth))]; + if (branch) + args.push("--branch", branch); + appendExtras(rest, args); + args.push(repository, directory); + await this.exec(args); + if (install) { + dbg(`running install command after cloning`); + const { command, args: installArgs } = await packageResolveInstall(directory); + if (command) { + const res = await runtimeHost.exec(undefined, command, installArgs, { + cwd: directory, + }); + if (res.exitCode !== 0) { + throw new Error(res.stderr); + } + } + } + return new GitClient(directory); + } + client(cwd) { + return new GitClient(cwd); + } + toString() { + return `git ${this._cwd || ""}`; + } +} +//# sourceMappingURL=git.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/git.js.map b/packages/core/.tshy-build/browser/git.js.map new file mode 100644 index 0000000000..71d37bb40c --- /dev/null +++ b/packages/core/.tshy-build/browser/git.js.map @@ -0,0 +1 @@ +{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/github.d.ts b/packages/core/.tshy-build/browser/github.d.ts new file mode 100644 index 0000000000..5b78c966be --- /dev/null +++ b/packages/core/.tshy-build/browser/github.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const GitHubModel: Readonly; +//# sourceMappingURL=github.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/github.d.ts.map b/packages/core/.tshy-build/browser/github.d.ts.map new file mode 100644 index 0000000000..2def467e32 --- /dev/null +++ b/packages/core/.tshy-build/browser/github.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/github.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,WAAW,CAAC;AAwDnE,eAAO,MAAM,WAAW,yBAKtB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/github.js b/packages/core/.tshy-build/browser/github.js new file mode 100644 index 0000000000..dc4b0aa9ec --- /dev/null +++ b/packages/core/.tshy-build/browser/github.js @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDER_GITHUB } from "./constants.js"; +import { createFetch } from "./fetch.js"; +import { OpenAIChatCompletion, OpenAIEmbedder } from "./openai.js"; +import { serializeError } from "./error.js"; +import { genaiscriptDebug } from "./debug.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +const dbg = genaiscriptDebug("github"); +const listModels = async (cfg, options) => { + const fetch = await createFetch({ retries: 0, ...options }); + try { + const modelsRes = await fetch("https://models.github.ai/catalog/models", { + method: "GET", + headers: deleteUndefinedValues({ + Accept: "application/vnd.github+json", + Authorization: cfg.token ? `Bearer ${cfg.token}` : undefined, + "X-GitHub-Api-Version": "2022-11-28", + }), + }); + if (!modelsRes.ok) { + dbg(`failed to fetch models, status: ${modelsRes.status}`); + return { + ok: false, + status: modelsRes.status, + error: serializeError(modelsRes.statusText), + }; + } + const models = (await modelsRes.json()); + return { + ok: true, + models: models.map((m) => ({ + id: m.id, + details: `${m.name} - ${m.summary}`, + // url: `https://github.com/marketplace/models/${m.registryName}/${m.name}`, + })), + }; + } + catch (e) { + return { ok: false, error: serializeError(e) }; + } +}; +export const GitHubModel = Object.freeze({ + id: MODEL_PROVIDER_GITHUB, + completer: OpenAIChatCompletion, + listModels, + embedder: OpenAIEmbedder, +}); +//# sourceMappingURL=github.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/github.js.map b/packages/core/.tshy-build/browser/github.js.map new file mode 100644 index 0000000000..f7fa9278dc --- /dev/null +++ b/packages/core/.tshy-build/browser/github.js.map @@ -0,0 +1 @@ +{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/github.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAavC,MAAM,UAAU,GAAuB,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,yCAAyC,EAAE;YACvE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,qBAAqB,CAAC;gBAC7B,MAAM,EAAE,6BAA6B;gBACrC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC5D,sBAAsB,EAAE,YAAY;aACrC,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,GAAG,CAAC,mCAAmC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAA6B,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,MAAM,CAAC,GAAG,CAChB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;gBACC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE;gBACnC,+EAA+E;aAChF,CAA6B,CACjC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAgB;IACtD,EAAE,EAAE,qBAAqB;IACzB,SAAS,EAAE,oBAAoB;IAC/B,UAAU;IACV,QAAQ,EAAE,cAAc;CACzB,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/githubclient.d.ts b/packages/core/.tshy-build/browser/githubclient.d.ts new file mode 100644 index 0000000000..45a1a83391 --- /dev/null +++ b/packages/core/.tshy-build/browser/githubclient.d.ts @@ -0,0 +1,351 @@ +import type { PaginateInterface } from "@octokit/plugin-paginate-rest"; +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import type { GenerationStats } from "./usage.js"; +import type { BufferLike, Diagnostic, Git, GitHub, GitHubArtifact, GitHubCodeSearchResult, GitHubComment, GitHubFile, GitHubGist, GitHubIssue, GitHubIssueUpdateOptions, GitHubLabel, GitHubOptions, GitHubPaginationOptions, GitHubPullRequest, GitHubReaction, GitHubReactionType, GitHubRef, GitHubRelease, GitHubWorkflow, GitHubWorkflowJob, GitHubWorkflowRun, GitHubWorkflowRunStatus, PromptScript, WorkspaceFile, GitHubIssueCreateOptions, GitWorktreeAddOptions } from "./types.js"; +import { Octokit } from "@octokit/rest"; +export interface GithubConnectionInfo { + token: string; + apiUrl?: string; + repository: string; + owner: string; + repo: string; + ref?: string; + refName?: string; + sha?: string; + issue?: number; + runId?: string; + runUrl?: string; + commitSha?: string; + eventName?: "push" | "pull_request" | "issue" | "issue_comment"; + event?: unknown; +} +/** + * Parses GitHub environment variables to construct connection info for API usage. + * + * @param env - Environment variables to parse, typically `process.env`. + * @param options - Optional parameters: + * - issue: The issue number to set explicitly. + * - resolveIssue: Flag to resolve issue number via the GitHub CLI if not provided. + * - owner: Repository owner to override environment variables. + * - repo: Repository name to override environment variables. + * @returns A promise resolving to an object containing parsed GitHub connection information, including owner, repo, repository, issue, and token details. + * + * Notes: + * - If owner, repo, or repository details are missing, attempts to resolve them using the GitHub CLI. + * - If issue resolution is enabled and not provided, tries to determine the pull request number via the GitHub CLI. + * - Handles errors gracefully by logging verbose error messages but does not throw. + */ +export declare function githubParseEnv(env: Record, options?: { + issue?: number; + resolveToken?: boolean; + resolveIssue?: boolean; + resolveCommit?: boolean; +} & Partial> & TraceOptions & CancellationOptions): Promise; +/** + * Updates the description of a pull request on GitHub. + * Parameters: + * - script: The script instance used to generate the footer. + * - info: Object containing apiUrl, repository, issue, and runUrl. The issue field must be provided. + * - text: The new description text to update. It will be prettified, merged with the existing description, and appended with a footer. + * - commentTag: Tag used to identify and merge the description. Must be provided. + * Returns: + * - An object indicating whether the update was successful and the status text. + * Notes: + * - Requires a valid GitHub token to authenticate API requests. + * - If the issue number is missing, the update will not proceed. + */ +export declare function githubUpdatePullRequestDescription(script: PromptScript, info: GithubConnectionInfo, text: string, commentTag: string, options?: CancellationOptions): Promise<{ + updated: boolean; + statusText: string; +}>; +/** + * Merges a new comment or text segment into the existing body, enclosed + * within the specified comment tags. If tags exist, updates the content + * between them; otherwise, appends the entire section. + * + * @param commentTag - The unique identifier tag used to demarcate the section + * in the body where merging occurs. + * @param body - The existing text or content to be updated. + * @param text - The new content to merge into the body. + * @returns Updated body text with merged and formatted content. + */ +export declare function mergeDescription(commentTag: string, body: string, text: string): string; +/** + * Generates a footer indicating the content was AI-generated. + * + * @param script - The script instance responsible for generating the content. + * @param info - An object containing metadata, such as the URL to the workflow run. + * - runUrl - Optional URL to the current workflow or run. + * @param code - Optional identifier code to be appended to the footer. + * @param stats - Optional generation statistics to include usage report. + * @returns A formatted string serving as a footer, warning readers about the AI-generated content. + */ +export declare function generatedByFooter(script: PromptScript, info: { + runUrl?: string; +}, code?: string, stats?: GenerationStats): string; +/** + * Appends an AI-generated comment with diagnostic details to a script. + * + * @param script - The script instance where the comment will be appended. + * @param info - Contains contextual information such as the run URL for generating the footer link. + * - runUrl - The URL of the workflow or job run, if available. + * @param annotation - The diagnostic information to include in the comment. + * - message - The diagnostic message to be displayed. + * - code - An optional code identifier related to the diagnostic. + * - severity - The level of severity (e.g., warning or error) for the diagnostic. + * @returns A formatted Markdown string representing the AI-generated comment with a footer and diagnostic details. + */ +export declare function appendGeneratedComment(script: PromptScript, info: { + runUrl?: string; + owner: string; + repo: string; +}, annotation: Diagnostic): string; +export declare function githubCreateIssueComment(script: PromptScript, info: GithubConnectionInfo, body: string, commentTag: string, options?: CancellationOptions & { + stats?: GenerationStats; +}): Promise<{ + created: boolean; + statusText: string; + html_url?: string; +}>; +/** + * Creates pull request review comments on GitHub for a set of code annotations. + * + * @param script - The script instance generating the comments. + * @param info - Connection details for GitHub, including API URL, repository, pull request issue number, run URL, and commit SHA. + * @param annotations - List of diagnostics or annotations to provide as review comments on the pull request. + * @returns A promise resolving to a boolean indicating whether all review comments were successfully created. + * + * Notes: + * - If no annotations are provided, the function skips creating reviews and resolves to true. + * - If the issue number or commit SHA is missing, the function logs an error and resolves to false. + * - Retrieves an authentication token from the secrets store to authenticate API requests. + * - Fetches existing pull request comments to avoid duplication when creating review comments. + */ +export declare function githubCreatePullRequestReviews(script: PromptScript, info: GithubConnectionInfo, annotations: Diagnostic[], options?: CancellationOptions): Promise; +export declare class GitHubClient implements GitHub { + private readonly _info; + private _connection; + private _client; + private static _default; + static default(): GitHubClient; + constructor(info: Pick); + private connection; + client(owner: string, repo: string): GitHubClient; + api(): Promise<{ + client: Octokit & { + paginate: PaginateInterface; + }; + } & GithubConnectionInfo>; + info(): Promise; + repo(): Promise<{ + name: string; + full_name: string; + default_branch: string; + }>; + getRef(branchName: string): Promise; + getOrCreateRef(branchName: string, options?: { + base?: string; + orphaned?: boolean | string; + }): Promise; + uploadAsset(file: BufferLike, options?: { + branchName?: string; + }): Promise; + listIssues(options?: { + state?: "open" | "closed" | "all"; + labels?: string; + sort?: "created" | "updated" | "comments"; + direction?: "asc" | "desc"; + creator?: string; + assignee?: string; + since?: string; + mentioned?: string; + } & GitHubPaginationOptions): Promise; + listGists(options?: { + since?: string; + filenameAsResources?: boolean; + } & GitHubPaginationOptions): Promise; + getGist(gist_id?: string): Promise; + getIssue(issue_number?: number | string): Promise; + createReaction(type: "issue" | "issueComment" | "pullRequestReviewComment", id: number | string, reaction: GitHubReactionType): Promise; + createIssue(title: string, body: string, options?: GitHubIssueCreateOptions): Promise; + updateIssue(issueNumber: number | string, options?: GitHubIssueUpdateOptions): Promise; + createIssueComment(issue_number: number | string, body: string): Promise; + updateIssueComment(comment_id: number | string, body: string): Promise<{ + id: number; + node_id: string; + url: string; + body?: string; + body_text?: string; + body_html?: string; + html_url: string; + user: { + name?: string | null; + email?: string | null; + login: string; + id: number; + node_id: string; + avatar_url: string; + gravatar_id: string | null; + url: string; + html_url: string; + followers_url: string; + following_url: string; + gists_url: string; + starred_url: string; + subscriptions_url: string; + organizations_url: string; + repos_url: string; + events_url: string; + received_events_url: string; + type: string; + site_admin: boolean; + starred_at?: string; + user_view_type?: string; + }; + created_at: string; + updated_at: string; + issue_url: string; + author_association: "COLLABORATOR" | "CONTRIBUTOR" | "FIRST_TIMER" | "FIRST_TIME_CONTRIBUTOR" | "MANNEQUIN" | "MEMBER" | "NONE" | "OWNER"; + performed_via_github_app?: { + id: number; + slug?: string; + node_id: string; + client_id?: string; + owner: { + name?: string | null; + email?: string | null; + login: string; + id: number; + node_id: string; + avatar_url: string; + gravatar_id: string | null; + url: string; + html_url: string; + followers_url: string; + following_url: string; + gists_url: string; + starred_url: string; + subscriptions_url: string; + organizations_url: string; + repos_url: string; + events_url: string; + received_events_url: string; + type: string; + site_admin: boolean; + starred_at?: string; + user_view_type?: string; + } | { + description?: string | null; + html_url: string; + website_url?: string | null; + id: number; + node_id: string; + name: string; + slug: string; + created_at: string | null; + updated_at: string | null; + avatar_url: string; + }; + name: string; + description: string | null; + external_url: string; + html_url: string; + created_at: string; + updated_at: string; + permissions: { + issues?: string; + checks?: string; + metadata?: string; + contents?: string; + deployments?: string; + [key: string]: string | undefined; + }; + events: string[]; + installations_count?: number; + client_secret?: string; + webhook_secret?: string | null; + pem?: string; + }; + reactions?: { + url: string; + total_count: number; + "+1": number; + "-1": number; + laugh: number; + confused: number; + heart: number; + hooray: number; + eyes: number; + rocket: number; + }; + }>; + listSuggestedActors(): Promise<{ + login: string; + id: string; + }[]>; + assignIssueToBot(issue_number: number | string, options?: { + bot?: string; + }): Promise<{ + id: string; + title: string; + }>; + listPullRequests(options?: { + state?: "open" | "closed" | "all"; + sort?: "created" | "updated" | "popularity" | "long-running"; + direction?: "asc" | "desc"; + } & GitHubPaginationOptions): Promise; + getPullRequest(pull_number?: number | string): Promise; + listPullRequestReviewComments(pull_number: number, options?: GitHubPaginationOptions): Promise; + listIssueComments(issue_number: number, options?: { + reactions?: boolean; + } & GitHubPaginationOptions): Promise; + listReleases(options?: GitHubPaginationOptions): Promise; + graphql(query: string, variables?: Record): Promise; + workflowRun(runId: number | string): Promise; + listWorkflowRuns(workflowIdOrFilename: string | number, options?: { + branch?: string; + status?: GitHubWorkflowRunStatus; + } & GitHubPaginationOptions): Promise; + /** + * List artifacts for a given workflow run + * @param runId + */ + listWorkflowRunArtifacts(runId: number | string, options?: GitHubPaginationOptions): Promise; + /** + * Gets the files of a GitHub Action workflow run artifact + * @param artifactId + */ + artifact(artifactId: number | string): Promise; + resolveAssetUrl(url: string): Promise; + downloadArtifactFiles(artifactId: number | string): Promise; + listWorkflowJobs(run_id: number, options?: { + filter?: "all" | "latest"; + } & GitHubPaginationOptions): Promise; + /** + * Downloads a GitHub Action workflow run log + * @param jobId + */ + downloadWorkflowJobLog(job_id: number, options?: { + llmify?: boolean; + }): Promise; + private downloadJob; + diffWorkflowJobLogs(job_id: number, other_job_id: number): Promise; + getFile(filename: string, ref: string): Promise; + searchCode(query: string, options?: GitHubPaginationOptions): Promise; + workflow(workflowId: number | string): Promise; + listWorkflows(options?: GitHubPaginationOptions): Promise; + listBranches(options?: GitHubPaginationOptions): Promise; + listRepositoryLanguages(): Promise>; + listIssueLabels(issueNumber?: string | number): Promise; + getRepositoryContent(path: string, options?: { + ref?: string; + glob?: string; + downloadContent?: boolean; + maxDownloadSize?: number; + type?: string; + }): Promise; + addWorktreeForPullRequest(pullNumber: number | string, path?: string, options?: GitWorktreeAddOptions): Promise; +} +export declare function cleanLog(text: string): string; +//# sourceMappingURL=githubclient.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/githubclient.d.ts.map b/packages/core/.tshy-build/browser/githubclient.d.ts.map new file mode 100644 index 0000000000..2afc56c692 --- /dev/null +++ b/packages/core/.tshy-build/browser/githubclient.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"githubclient.d.ts","sourceRoot":"","sources":["../../src/githubclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/githubclient.js b/packages/core/.tshy-build/browser/githubclient.js new file mode 100644 index 0000000000..05af89be69 --- /dev/null +++ b/packages/core/.tshy-build/browser/githubclient.js @@ -0,0 +1,1490 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* eslint-disable no-param-reassign */ +import { GITHUB_API_VERSION, GITHUB_ASSET_BRANCH, GITHUB_ASSET_URL_RX, GITHUB_PULL_REQUEST_REVIEW_COMMENT_LINE_DISTANCE, GITHUB_REST_API_CONCURRENCY_LIMIT, GITHUB_REST_PAGE_DEFAULT, GITHUB_TOKENS, TOOL_ID, } from "./constants.js"; +import { createFetch } from "./fetch.js"; +import { resolveRuntimeHost } from "./host.js"; +import { prettifyMarkdown } from "./pretty.js"; +import { arrayify } from "./cleaners.js"; +import { assert } from "./assert.js"; +import { logError, logVerbose } from "./util.js"; +import { shellRemoveAsciiColors } from "./shell.js"; +import { isGlobMatch } from "./glob.js"; +import { concurrentLimit } from "./concurrency.js"; +import { llmifyDiff } from "./llmdiff.js"; +import { JSON5TryParse } from "./json5.js"; +import { link } from "./mkmd.js"; +import { errorMessage } from "./error.js"; +import { deleteUndefinedValues, normalizeInt } from "./cleaners.js"; +import { diffCreatePatch } from "./diff.js"; +import { GitClient } from "./git.js"; +import { genaiscriptDebug } from "./debug.js"; +import { fetch } from "./fetch.js"; +import { resolveBufferLike } from "./bufferlike.js"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { createHash } from "node:crypto"; +import { checkCancelled } from "./cancellation.js"; +import { diagnosticToGitHubMarkdown } from "./annotations.js"; +import { unzip } from "./zip.js"; +import { uriRedact, uriTryParse } from "./url.js"; +import { dedent } from "./indent.js"; +import { Octokit } from "@octokit/rest"; +import { throttling } from "@octokit/plugin-throttling"; +import { paginateRest } from "@octokit/plugin-paginate-rest"; +import { tryReadJSON } from "./fs.js"; +const dbg = genaiscriptDebug("github"); +const dbgql = dbg.extend("graphql"); +function readGitHubToken(env) { + let token; + for (const envName of GITHUB_TOKENS) { + token = env[envName]; + if (token) { + dbg(`found %s`, envName); + break; + } + } + return token; +} +async function githubFromEnv(env) { + const token = readGitHubToken(env); + const apiUrl = env.GITHUB_API_URL || "https://api.github.com"; + const repository = env.GITHUB_REPOSITORY; + const [owner, repo] = repository?.split("/", 2) || [undefined, undefined]; + const ref = env.GITHUB_REF; + const refName = env.GITHUB_REF_NAME; + const sha = env.GITHUB_SHA; + const commitSha = env.GITHUB_COMMIT_SHA; + const runId = env.GITHUB_RUN_ID; + const serverUrl = env.GITHUB_SERVER_URL; + const runUrl = serverUrl && runId ? `${serverUrl}/${repository}/actions/runs/${runId}` : undefined; + const eventName = env.GITHUB_EVENT_NAME; + const eventPath = env.GITHUB_EVENT_PATH; + const event = eventPath ? await tryReadJSON(eventPath) : undefined; + let issue = normalizeInt(env.GITHUB_ISSUE ?? + env.INPUT_GITHUB_ISSUE ?? + /^refs\/pull\/(?\d+)\/merge$/.exec(ref || "")?.groups?.issue); + if (event && isNaN(issue)) { + dbg(`resolving issue/pull_request from event`); + issue = normalizeInt(event.issue?.number || event.pull_request?.number); + } + return deleteUndefinedValues({ + token, + apiUrl, + repository, + owner, + repo, + ref, + refName, + sha, + issue, + runId, + runUrl, + commitSha, + eventName, + event, + }); +} +async function githubGetPullRequestNumber() { + const runtimeHost = resolveRuntimeHost(); + const res = await runtimeHost.exec(undefined, "gh", ["pr", "view", "--json", "number"], { + label: "github: resolve current pull request number", + }); + if (res.failed) { + logVerbose(res.stderr); + return undefined; + } + const resj = JSON5TryParse(res.stdout); + const id = resj?.number; + logVerbose(`github: pull request number: ${isNaN(id) ? "not found" : id}`); + return id; +} +/** + * Parses GitHub environment variables to construct connection info for API usage. + * + * @param env - Environment variables to parse, typically `process.env`. + * @param options - Optional parameters: + * - issue: The issue number to set explicitly. + * - resolveIssue: Flag to resolve issue number via the GitHub CLI if not provided. + * - owner: Repository owner to override environment variables. + * - repo: Repository name to override environment variables. + * @returns A promise resolving to an object containing parsed GitHub connection information, including owner, repo, repository, issue, and token details. + * + * Notes: + * - If owner, repo, or repository details are missing, attempts to resolve them using the GitHub CLI. + * - If issue resolution is enabled and not provided, tries to determine the pull request number via the GitHub CLI. + * - Handles errors gracefully by logging verbose error messages but does not throw. + */ +export async function githubParseEnv(env, options) { + const runtimeHost = resolveRuntimeHost(); + dbg(`resolving connection info`); + const res = await githubFromEnv(env); + dbg(`found %O`, Object.keys(res).join(",")); + try { + if (options?.owner && options?.repo) { + res.owner = options.owner; + dbg(`overriding owner with options.owner: ${options.owner}`); + res.repo = options.repo; + dbg(`overriding repo with options.repo: ${options.repo}`); + res.repository = res.owner + "/" + res.repo; + } + if (!isNaN(options?.issue)) { + dbg(`overriding issue with options.issue: ${options.issue}`); + res.issue = options.issue; + } + if (!res.owner || !res.repo || !res.repository) { + dbg(`owner, repo, or repository missing, attempting to resolve via gh CLI`); + const repoInfo = await runtimeHost.exec(undefined, "gh", ["repo", "view", "--json", "url,name,owner"], options); + if (repoInfo.failed) { + dbg(repoInfo.stderr); + } + else if (!repoInfo.failed) { + const { name: repo, owner } = JSON.parse(repoInfo.stdout); + dbg(`retrieved repository info via gh CLI: ${repoInfo.stdout}`); + res.repo = repo; + res.owner = owner.login; + res.repository = res.owner + "/" + res.repo; + } + } + if (isNaN(res.issue) && options?.resolveIssue) { + dbg(`attempting to resolve issue number`); + res.issue = await githubGetPullRequestNumber(); + } + if (!res.commitSha && options?.resolveCommit) { + res.commitSha = await GitClient.default().lastCommitSha(); + } + if (!res.token && options?.resolveToken) { + const auth = await runtimeHost.exec(undefined, "gh", ["auth", "token"], options); + if (!auth.failed) { + dbg(`retrieved token via gh CLI: %s...`, auth.stdout.slice(0, 3)); + res.token = auth.stdout.trim(); + } + } + } + catch (e) { + dbg(errorMessage(e)); + } + deleteUndefinedValues(res); + dbg(`resolved connection info: %O`, Object.fromEntries(Object.entries(res).map(([k, v]) => [k, k === "token" ? "***" : v]))); + return Object.freeze(res); +} +/** + * Updates the description of a pull request on GitHub. + * Parameters: + * - script: The script instance used to generate the footer. + * - info: Object containing apiUrl, repository, issue, and runUrl. The issue field must be provided. + * - text: The new description text to update. It will be prettified, merged with the existing description, and appended with a footer. + * - commentTag: Tag used to identify and merge the description. Must be provided. + * Returns: + * - An object indicating whether the update was successful and the status text. + * Notes: + * - Requires a valid GitHub token to authenticate API requests. + * - If the issue number is missing, the update will not proceed. + */ +export async function githubUpdatePullRequestDescription(script, info, text, commentTag, options) { + const { cancellationToken } = options ?? {}; + const { apiUrl, repository, issue, token } = info; + assert(!!commentTag); + if (!issue) { + dbg(`missing issue number, cannot update pull request description`); + return { updated: false, statusText: "missing issue number" }; + } + if (!token) { + dbg(`missing github token, cannot update pull request description`); + return { updated: false, statusText: "missing github token" }; + } + text = prettifyMarkdown(text); + text += generatedByFooter(script, info); + const fetch = await createFetch({ retryOn: [], cancellationToken }); + const url = `${apiUrl}/repos/${repository}/pulls/${issue}`; + dbg(`fetching pull request details from URL: ${url}`); + // get current body + const resGet = await fetch(url, { + method: "GET", + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + }); + dbg(`pr get: %d, %s`, resGet.status, resGet.statusText); + if (!resGet.ok) { + logError(`pull request fetch failed, ${resGet.statusText}`); + return { updated: false, statusText: resGet.statusText }; + } + const resGetJson = (await resGet.json()); + dbg(`pr html url: %s`, resGetJson.html_url); + const body = mergeDescription(commentTag, resGetJson.body, text); + dbg(`merging pull request description: %s`, body); + const res = await fetch(url, { + method: "PATCH", + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + body: JSON.stringify({ body }), + }); + const r = { + updated: res.status === 200, + statusText: res.statusText, + }; + if (!r.updated) { + logError(`pull request ${resGetJson.html_url} update failed, ${r.statusText}`); + } + else { + logVerbose(`pull request ${resGetJson.html_url} updated`); + } + return r; +} +/** + * Merges a new comment or text segment into the existing body, enclosed + * within the specified comment tags. If tags exist, updates the content + * between them; otherwise, appends the entire section. + * + * @param commentTag - The unique identifier tag used to demarcate the section + * in the body where merging occurs. + * @param body - The existing text or content to be updated. + * @param text - The new content to merge into the body. + * @returns Updated body text with merged and formatted content. + */ +export function mergeDescription(commentTag, body, text) { + body = body ?? ""; + const tag = ``; + const endTag = ``; + const sep = "\n\n"; + const start = body.indexOf(tag); + const end = body.indexOf(endTag); + const header = "
"; + if (start > -1 && end > -1 && start < end) { + body = body.slice(0, start + tag.length) + header + sep + text + sep + body.slice(end); + } + else { + body = body + sep + tag + header + sep + text + sep + endTag + sep; + } + return body; +} +/** + * Generates a footer indicating the content was AI-generated. + * + * @param script - The script instance responsible for generating the content. + * @param info - An object containing metadata, such as the URL to the workflow run. + * - runUrl - Optional URL to the current workflow or run. + * @param code - Optional identifier code to be appended to the footer. + * @param stats - Optional generation statistics to include usage report. + * @returns A formatted string serving as a footer, warning readers about the AI-generated content. + */ +export function generatedByFooter(script, info, code, stats) { + let footer = `\n\n> AI-generated content by ${link(script.id, info.runUrl)}${code ? ` \`${code}\` ` : ""} may be incorrect.`; + // Add usage report if stats are available and there are tokens used + if (stats && stats.accumulatedUsage().total_tokens > 0) { + footer += `\n\n${stats.toMarkdownReport()}`; + } + return footer + `\n\n`; +} +/** + * Appends an AI-generated comment with diagnostic details to a script. + * + * @param script - The script instance where the comment will be appended. + * @param info - Contains contextual information such as the run URL for generating the footer link. + * - runUrl - The URL of the workflow or job run, if available. + * @param annotation - The diagnostic information to include in the comment. + * - message - The diagnostic message to be displayed. + * - code - An optional code identifier related to the diagnostic. + * - severity - The level of severity (e.g., warning or error) for the diagnostic. + * @returns A formatted Markdown string representing the AI-generated comment with a footer and diagnostic details. + */ +export function appendGeneratedComment(script, info, annotation) { + const { message, code, severity, suggestion } = annotation; + const text = prettifyMarkdown(message); + return ` +${text}${suggestion ? `\n\n\`\`\`suggestion\n${suggestion}\n\`\`\`\n` : ""} +${generatedByFooter(script, info, code)}`; +} +// https://docs.github.com/en/rest/issues/comments?apiVersion=2022-11-28#create-an-issue-comment +export async function githubCreateIssueComment(script, info, body, commentTag, options) { + const { cancellationToken, stats } = options ?? {}; + const { apiUrl, repository, issue, token } = info; + if (!issue) { + dbg(`missing issue number, cannot create issue comment`); + return { created: false, statusText: "missing issue number" }; + } + if (!token) { + dbg(`missing github token, cannot create issue comment`); + return { created: false, statusText: "missing github token" }; + } + const fetch = await createFetch({ retryOn: [], cancellationToken }); + const url = `${apiUrl}/repos/${repository}/issues/${issue}/comments`; + dbg(`creating issue comment at %s`, url); + body = prettifyMarkdown(body); + body += generatedByFooter(script, info, undefined, stats); + dbg(`body:\n%s`, body); + if (commentTag) { + const tag = ``; + body = `${body}\n\n${tag}\n\n`; + // try to find the existing comment + const resListComments = await fetch(`${url}?per_page=100&sort=updated`, { + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + }); + if (resListComments.status !== 200) { + dbg(`failed to list existing comments`); + return { created: false, statusText: resListComments.statusText }; + } + const comments = (await resListComments.json()); + dbg(`comments: %O`, comments); + const comment = comments.find((c) => c.body.includes(tag)); + if (comment) { + dbg(`found existing comment %s with tag, deleting it`, comment.id); + const delurl = `${apiUrl}/repos/${repository}/issues/comments/${comment.id}`; + const resd = await fetch(delurl, { + method: "DELETE", + headers: { + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + }); + if (!resd.ok) { + logError(`issue comment delete failed, ` + resd.statusText); + } + } + } + const res = await fetch(url, { + method: "POST", + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + body: JSON.stringify({ body }), + }); + const resp = await res.json(); + const r = { + created: res.status === 201, + statusText: res.statusText, + html_url: resp.html_url, + }; + if (!r.created) { + logError(`pull request ${issue} comment creation failed, ${r.statusText} (${res.status})`); + dbg(JSON.stringify(resp, null, 2)); + } + else { + logVerbose(`pull request ${issue} comment created at ${r.html_url}`); + } + return r; +} +async function githubCreatePullRequestReview(script, info, token, annotation, existingComments, options) { + assert(!!token); + const { cancellationToken } = options ?? {}; + const { apiUrl, repository, issue, commitSha } = info; + dbg(`creating pull request review comment`); + const prettyMessage = prettifyMarkdown(annotation.message); + const line = annotation.range?.[1]?.[0] + 1; + const body = { + body: appendGeneratedComment(script, info, annotation), + commit_id: commitSha, + path: annotation.filename, + line: normalizeInt(line), + side: "RIGHT", + }; + if (existingComments.find((c) => c.path === body.path && + Math.abs(c.line - body.line) < GITHUB_PULL_REQUEST_REVIEW_COMMENT_LINE_DISTANCE && + (annotation.code ? c.body?.includes(annotation.code) : c.body?.includes(prettyMessage)))) { + logVerbose(`pull request ${commitSha} comment creation already exists, skipping`); + return { created: false, statusText: "comment already exists" }; + } + const fetch = await createFetch({ retryOn: [], cancellationToken }); + const url = `${apiUrl}/repos/${repository}/pulls/${issue}/comments`; + dbg(`posting new pull request review comment at URL: ${url}`); + dbg(`%O`, body); + const res = await fetch(url, { + method: "POST", + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + body: JSON.stringify(body), + }); + const resp = await res.json(); + const r = { + created: res.status === 201, + statusText: res.statusText, + html_url: resp.html_url, + }; + if (!r.created) { + logVerbose(`pull request ${commitSha} comment creation failed, ${r.statusText} (${res.status})`); + dbg("prr comment creation failed %O", resp); + } + else { + logVerbose(`pull request ${commitSha} comment created at ${r.html_url}`); + } + return r; +} +/** + * Creates pull request review comments on GitHub for a set of code annotations. + * + * @param script - The script instance generating the comments. + * @param info - Connection details for GitHub, including API URL, repository, pull request issue number, run URL, and commit SHA. + * @param annotations - List of diagnostics or annotations to provide as review comments on the pull request. + * @returns A promise resolving to a boolean indicating whether all review comments were successfully created. + * + * Notes: + * - If no annotations are provided, the function skips creating reviews and resolves to true. + * - If the issue number or commit SHA is missing, the function logs an error and resolves to false. + * - Retrieves an authentication token from the secrets store to authenticate API requests. + * - Fetches existing pull request comments to avoid duplication when creating review comments. + */ +export async function githubCreatePullRequestReviews(script, info, annotations, options) { + const { cancellationToken } = options ?? {}; + const { repository, issue, commitSha, apiUrl, token } = info; + if (!annotations?.length) { + dbg(`no annotations provided, skipping pull request reviews`); + return true; + } + if (!issue) { + dbg(`missing issue number, cannot create pull request reviews`); + return false; + } + if (!commitSha) { + dbg(`missing commit sha, cannot create pull request reviews`); + return false; + } + if (!token) { + dbg(`missing github token, cannot create pull request reviews`); + return false; + } + // query existing reviews + const fetch = await createFetch({ retryOn: [], cancellationToken }); + const url = `${apiUrl}/repos/${repository}/pulls/${issue}/comments`; + dbg(`fetching existing pull request comments from URL: ${url}`); + const resListComments = await fetch(`${url}?per_page=100&sort=updated`, { + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": GITHUB_API_VERSION, + }, + }); + checkCancelled(cancellationToken); + if (resListComments.status !== 200) { + dbg(`failed to fetch existing pull request comments`); + return false; + } + const comments = (await resListComments.json()); + dbg(`existing pull request comments: %O`, comments); + // code annotations + const failed = []; + for (const annotation of annotations) { + dbg(`iterating over annotations to create pull request reviews`); + checkCancelled(cancellationToken); + const res = await githubCreatePullRequestReview(script, info, token, annotation, comments); + if (!res.created) + failed.push(annotation); + } + if (failed.length) { + await githubCreateIssueComment(script, info, failed.map((d) => diagnosticToGitHubMarkdown(info, d)).join("\n\n"), script.id + "-prr", options); + } + return true; +} +async function paginatorToArray(iterator, count, iteratorItem, elementFilter) { + const result = []; + for await (const item of await iterator) { + let r = iteratorItem(item); + if (elementFilter) { + r = r.filter(elementFilter); + } + result.push(...r); + if (result.length >= count) { + break; + } + } + return result.slice(0, count); +} +export class GitHubClient { + _info; + _connection; + _client; + static _default; + static default() { + if (!this._default) + this._default = new GitHubClient(undefined); + return this._default; + } + constructor(info) { + this._info = info; + } + connection() { + if (!this._connection) { + this._connection = githubParseEnv(process.env, { + ...this._info, + resolveToken: true, + }); + } + return this._connection; + } + client(owner, repo) { + return new GitHubClient({ owner, repo }); + } + async api() { + if (!this._client) { + // eslint-disable-next-line no-async-promise-executor + this._client = new Promise(async (resolve) => { + const conn = await this.connection(); + const { token, apiUrl } = conn; + const OctokitWithPlugins = Octokit.plugin(paginateRest).plugin(throttling); + // .plugin(retry) + const res = new OctokitWithPlugins({ + userAgent: TOOL_ID, + auth: token, + baseUrl: apiUrl, + request: { retries: 3 }, + throttle: { + onRateLimit: (retryAfter, options, octokit, retryCount) => { + octokit.log.warn(`Request quota exhausted for request ${options.method} ${options.url}`); + if (retryCount < 1) { + // only retries once + octokit.log.info(`Retrying after ${retryAfter} seconds!`); + return true; + } + return false; + }, + onSecondaryRateLimit: (_retryAfter, options, octokit) => { + octokit.log.warn(`SecondaryRateLimit detected for request ${options.method} ${options.url}`); + }, + }, + }); + resolve({ + client: res, + ...conn, + }); + }); + } + return this._client; + } + async info() { + const { apiUrl: baseUrl, token: auth, repo, owner, ref, refName, issue, runId, runUrl, event, eventName, } = await this.connection(); + return Object.freeze(deleteUndefinedValues({ + baseUrl, + repo, + owner, + auth, + ref, + refName, + runId, + runUrl, + issueNumber: issue, + eventName, + event, + })); + } + async repo() { + const { client, owner, repo } = await this.api(); + const res = await client.rest.repos.get({ owner, repo }); + return res.data; + } + async getRef(branchName) { + const { client, owner, repo } = await this.api(); + try { + dbg(`get ref %s`, branchName); + const existing = await client.git.getRef({ + owner, + repo, + ref: `heads/${branchName}`, + }); + return existing.data; + } + catch { + dbg(`ref not found`); + return undefined; + } + } + async getOrCreateRef(branchName, options) { + const { client, owner, repo } = await this.api(); + const { base, orphaned } = options ?? {}; + if (!branchName) + throw new Error("branchName is required"); + dbg(`checking if branch %s exists`, branchName); + const existing = await this.getRef(branchName); + if (existing) { + dbg(`branch %s already exists`, branchName); + return existing; + } + let sha; + dbg(`creating branch %s`, branchName); + if (orphaned) { + dbg(`creating orphaned`); + // Step 0: Create a blob for the file content + const { data: blob } = await client.git.createBlob({ + owner, + repo, + content: Buffer.from(typeof orphaned === orphaned ? orphaned : `Orphaned branch created by GenAIScript.`).toString("base64"), + encoding: "base64", + }); + // Step 1: Create an empty tree + const { data: tree } = await client.git.createTree({ + owner, + repo, + tree: [ + { + path: "README.md", + mode: "100644", + type: "blob", + sha: blob.sha, + }, + ], + }); + dbg(`created tree %s`, tree.sha); + // Step 2: Create a commit with NO parents + const { data: commit } = await client.git.createCommit({ + owner, + repo, + message: "Initial commit on orphan branch", + tree: tree.sha, + parents: [], // <--- empty parent list = no history + }); + sha = commit.sha; + dbg(`created commit %s`, commit.sha); + } + else { + if (!base) { + dbg(`base is required for non-orphaned branch`); + const repo = await this.repo(); + sha = repo.default_branch; + } + else + sha = base; + } + // Step 3: Create a reference (branch) pointing to the commit + dbg(`creating reference %s <- %s`, branchName, sha); + const res = await client.git.createRef({ + owner, + repo, + ref: `refs/heads/${branchName}`, + sha, + }); + return res.data; + } + async uploadAsset(file, options) { + const { branchName = GITHUB_ASSET_BRANCH } = options ?? {}; + const { client, owner, repo } = await this.api(); + if (!file) { + dbg(`no buffer provided, nothing to upload`); + return undefined; + } + const buffer = await resolveBufferLike(file); + if (!buffer) { + dbg(`failed to resolve buffer, nothing to upload`); + return undefined; + } + const base64Content = buffer.toString("base64"); + const fileType = await fileTypeFromBuffer(buffer); + const hash = createHash("sha256"); + hash.write(base64Content); + const hashId = hash.digest().toString("hex"); + const uploadPath = hashId + (fileType ? `.${fileType.ext}` : ".txt"); + const rawUrl = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${branchName}/${uploadPath}`; + // try to get file + dbg(`checking %s`, rawUrl); + const cached = await fetch(rawUrl, { method: "HEAD" }); + if (cached.status === 200) { + dbg(`asset already exists, skip upload`); + return rawUrl; + } + dbg(`uploading asset %s to branch %s`, uploadPath, branchName); + await this.getOrCreateRef(branchName, { orphaned: true }); + const { data: blob } = await client.git.createBlob({ + owner, + repo, + content: base64Content, + encoding: "base64", + }); + dbg(`created blob %s`, blob.sha); + // 3. Get the latest commit (HEAD) of the branch + const { data: refData } = await client.git.getRef({ + owner, + repo, + ref: `heads/${branchName}`, + }); + const latestCommitSha = refData.object.sha; + dbg(`head ref %s: %s`, refData.ref, latestCommitSha); + // 4. Get the tree of the latest commit + const { data: commitData } = await client.git.getCommit({ + owner, + repo, + commit_sha: latestCommitSha, + }); + const baseTreeSha = commitData.tree.sha; + dbg(`base tree sha %s`, baseTreeSha); + // 5. Create a new tree adding the image + const { data: newTree } = await client.git.createTree({ + owner, + repo, + base_tree: baseTreeSha, + tree: [ + { + path: uploadPath, + mode: "100644", + type: "blob", + sha: blob.sha, + }, + ], + }); + dbg("tree created %s", newTree.sha); + // 6. Create a new commit with the new tree + const { data: newCommit } = await client.git.createCommit({ + owner, + repo, + message: `Upload asset ${uploadPath}`, + tree: newTree.sha, + parents: [latestCommitSha], + }); + dbg("commit created %s", newCommit.sha); + // 7. Update the branch to point to the new commit + await client.git.updateRef({ + owner, + repo, + ref: `heads/${branchName}`, + sha: newCommit.sha, + force: false, // do not force push + }); + return rawUrl; + } + async listIssues(options) { + const { client, owner, repo } = await this.api(); + dbg(`listing issues for repository`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.issues.listForRepo, { + owner, + repo, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res; + } + async listGists(options) { + const { client } = await this.api(); + dbg(`listing gists for user`); + const { count = GITHUB_REST_PAGE_DEFAULT, filenameAsResources, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.gists.list, { + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res.map((r) => ({ + id: r.id, + description: r.description, + created_at: r.created_at, + files: Object.values(r.files).map(({ filename, size }) => ({ + filename: filenameAsResources ? `gist://${r.id}/${filename}` : filename, + size, + })), + })); + } + async getGist(gist_id) { + if (typeof gist_id === "string") { + gist_id = gist_id.trim(); + } + const { client, owner } = await this.api(); + dbg(`retrieving gist details for gist ID: ${gist_id}`); + if (!gist_id) { + return undefined; + } + const { data } = await client.rest.gists.get({ + gist_id, + owner, + }); + const { files, id, description, created_at } = data; + if (Object.values(files || {}).some((f) => f.encoding !== "utf-8" && f.encoding !== "base64")) { + dbg(`unsupported encoding for gist files`); + return undefined; + } + const res = { + id, + description, + created_at, + files: Object.values(files).map(({ filename, content, size, encoding }) => deleteUndefinedValues({ + filename, + content, + encoding: encoding === "utf-8" ? undefined : encoding === "base64" ? "base64" : undefined, + size, + })), + }; + dbg(`gist: %d files, %s`, res.files.length, res.description || ""); + return res; + } + async getIssue(issue_number) { + issue_number = normalizeInt(issue_number); + const { client, owner, repo } = await this.api(); + if (isNaN(issue_number)) { + issue_number = (await this._connection).issue; + } + dbg(`retrieving issue details for issue number: ${issue_number}`); + if (isNaN(issue_number)) { + return undefined; + } + const { data } = await client.rest.issues.get({ + owner, + repo, + issue_number, + }); + return data; + } + async createReaction(type, id, reaction) { + // eslint-disable-next-line no-param-reassign + id = normalizeInt(id); + const { client, owner, repo } = await this.api(); + // eslint-disable-next-line no-param-reassign + if (isNaN(id) && type === "issue") + id = (await this._connection).issue; + dbg(`updating reaction for ${type} ${id}`); + if (isNaN(id)) + return undefined; + switch (type) { + case "issue": { + dbg(`adding reaction to issue %s`, id); + const { data } = await client.rest.reactions.createForIssue({ + owner, + repo, + issue_number: id, + content: reaction, + }); + return data; + } + case "issueComment": { + dbg(`adding reaction to issue comment %s`, id); + const { data } = await client.rest.reactions.createForIssueComment({ + owner, + repo, + comment_id: id, + content: reaction, + }); + return data; + } + case "pullRequestReviewComment": { + dbg(`adding reaction to pull request review comment %s`, id); + const { data } = await client.rest.reactions.createForPullRequestReviewComment({ + owner, + repo, + comment_id: id, + content: reaction, + }); + return data; + } + default: + throw new Error(`Unsupported reaction type: ${type}`); + } + } + async createIssue(title, body, options) { + const { client, owner, repo } = await this.api(); + dbg(`create issue`); + const { data } = await client.rest.issues.create({ + ...(options || {}), + owner, + repo, + title, + body: prettifyMarkdown(dedent(body)), + }); + return data; + } + async updateIssue(issueNumber, options) { + issueNumber = normalizeInt(issueNumber); + const { client, owner, repo } = await this.api(); + dbg(`updating issue number: ${issueNumber}`); + if (isNaN(issueNumber)) { + issueNumber = (await this._connection).issue; + } + if (isNaN(issueNumber)) { + return undefined; + } + const { data } = await client.rest.issues.update({ + owner, + repo, + issue_number: issueNumber, + ...options, + }); + return data; + } + async createIssueComment(issue_number, body) { + issue_number = normalizeInt(issue_number); + const { client, owner, repo } = await this.api(); + dbg(`creating comment for issue number: ${issue_number}`); + if (isNaN(issue_number)) { + issue_number = (await this._connection).issue; + } + if (isNaN(issue_number)) { + return undefined; + } + const { data } = await client.rest.issues.createComment({ + owner, + repo, + issue_number, + body: prettifyMarkdown(dedent(body)), + }); + dbg(`created comment %s`, data.id); + return data; + } + async updateIssueComment(comment_id, body) { + const { client, owner, repo } = await this.api(); + dbg(`updating comment %s`, comment_id); + const { data } = await client.rest.issues.updateComment({ + owner, + repo, + comment_id: normalizeInt(comment_id), + body: prettifyMarkdown(dedent(body)), + }); + dbg(`updated comment %s`, data.id); + return data; + } + // https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/agents/copilot-coding-agent/using-copilot-to-work-on-an-issue#assigning-an-issue-to-copilot-via-the-github-api + async listSuggestedActors() { + const { client, owner, repo } = await this.api(); + dbg(`listing suggested actors for repository %s/%s`, owner, repo); + // https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/objects# + const res = await this.graphql(`query($owner: String!, $repo: String!) { + repository(owner: $owner, name: $repo) { + suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { + nodes { + login + __typename + + ... on Bot { + id + } + + ... on User { + id + } + } + } + } + }`); + const actors = res.repository.suggestedActors.nodes; + dbg(`suggested actors: %O`, actors); + return actors.map((a) => ({ + login: a.login, + id: a.id, + })); + } + async assignIssueToBot(issue_number, options) { + // https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/agents/copilot-coding-agent/using-copilot-to-work-on-an-issue#assigning-an-issue-to-copilot-via-the-github-api + dbg(`assign issue to bot %O`, options); + // resolve issue + const issue = await this.getIssue(issue_number); + if (!issue) { + dbg(`issue %d not found`, issue_number); + return undefined; + } + // resolve bot + const { bot = "copilot-swe-agent" } = options ?? {}; + const bots = await this.listSuggestedActors(); + const actor = bots.find((b) => b.login === bot || b.id === bot); + if (!actor) { + dbg(`bot %s not found in suggested actors`, bot); + return undefined; + } + dbg(`assigning issue #%d (%s) to bot @%s (%s)`, issue.number, issue.node_id, actor.login, actor.id); + // assign + const updated = await this.graphql(dedent `mutation { + replaceActorsForAssignable(input: {assignableId: "${issue.node_id}" actorIds: ["${actor.id}"]}) { + assignable { + ... on Issue { + id + title + assignees(first: 10) { + nodes { + login + } + } + } + } + } +}`); + const assignable = updated.replaceActorsForAssignable.assignable; + dbg(`assigned: %O`, assignable); + return assignable; + } + async listPullRequests(options) { + const { client, owner, repo } = await this.api(); + dbg(`listing pull requests for repository`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.pulls.list, { + owner, + repo, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res; + } + async getPullRequest(pull_number) { + pull_number = normalizeInt(pull_number); + const { client, owner, repo } = await this.api(); + dbg(`retrieving pull request details for pull number: ${pull_number}`); + if (isNaN(pull_number)) { + pull_number = (await this._connection).issue; + } + if (isNaN(pull_number)) { + return undefined; + } + const { data } = await client.rest.pulls.get({ + owner, + repo, + pull_number, + }); + return data; + } + async listPullRequestReviewComments(pull_number, options) { + const { client, owner, repo } = await this.api(); + dbg(`listing review comments for pull request number: ${pull_number}`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.pulls.listReviewComments, { + owner, + repo, + pull_number, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res; + } + async listIssueComments(issue_number, options) { + const { client, owner, repo } = await this.api(); + dbg(`listing comments for issue number: ${issue_number}`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.issues.listComments, { + owner, + repo, + issue_number, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res; + } + async listReleases(options) { + const { client, owner, repo } = await this.api(); + dbg(`listing releases for repository`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.repos.listReleases, { + owner, + repo, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + return res; + } + async graphql(query, variables) { + const { client, owner, repo, ref } = await this.api(); + query = dedent(query).trim(); + dbgql(`query: %s`, query); + if (!query) + throw new Error("GraphQL query is required"); + // Automatically inject current repository context if requested + const finalVariables = deleteUndefinedValues({ + owner, + repo, + ref, + ...(variables || {}), + }); + dbgql(`variables: %O`, finalVariables); + const result = await client.graphql(query, finalVariables); + dbgql(`result: %O`, result); + return result; + } + async workflowRun(runId) { + const { client, owner, repo } = await this.api(); + dbg(`retrieving workflow run details for run ID: ${runId}`); + const { data } = await client.rest.actions.getWorkflowRun({ + owner, + repo, + run_id: normalizeInt(runId), + }); + dbg(`workflow run: %O`, data); + return data; + } + async listWorkflowRuns(workflowIdOrFilename, options) { + const { client, owner, repo } = await this.api(); + dbg(`listing workflow runs for workflow ID or filename: ${workflowIdOrFilename}`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(workflowIdOrFilename + ? client.rest.actions.listWorkflowRuns + : client.rest.actions.listWorkflowRunsForRepo, { + owner, + repo, + workflow_id: workflowIdOrFilename, + per_page: 100, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data, ({ conclusion }) => conclusion !== "skipped"); + dbg(`workflow runs: %O`, res); + return res; + } + /** + * List artifacts for a given workflow run + * @param runId + */ + async listWorkflowRunArtifacts(runId, options) { + const { client, owner, repo } = await this.api(); + dbg(`listing artifacts for workflow run ID: ${runId}`); + const { count = GITHUB_REST_PAGE_DEFAULT, ...rest } = options ?? {}; + const ite = client.paginate.iterator(client.rest.actions.listWorkflowRunArtifacts, { + owner, + repo, + run_id: normalizeInt(runId), + per_page: 100, + ...rest, + }); + const res = await paginatorToArray(ite, count, (i) => i.data); + dbg(`workflow run artifacts: %O`, res); + return res; + } + /** + * Gets the files of a GitHub Action workflow run artifact + * @param artifactId + */ + async artifact(artifactId) { + const { client, owner, repo } = await this.api(); + dbg(`retrieving artifact details for artifact ID: ${artifactId}`); + const { data } = await client.rest.actions.getArtifact({ + owner, + repo, + artifact_id: normalizeInt(artifactId), + }); + return data; + } + async resolveAssetUrl(url) { + if (!uriTryParse(url)) + return undefined; // unknown format + if (!GITHUB_ASSET_URL_RX.test(url)) + return undefined; // not a github asset + const { client, owner, repo } = await this.api(); + dbg(`asset: resolving url for %s`, uriRedact(url)); + const { data, status } = await client.rest.markdown.render({ + owner, + repo, + context: `${owner}/${repo}`, // force html with token + text: `![](${url})`, + mode: "gfm", + }); + dbg(`asset: resolution %s`, status); + const { resolved } = / i.data); + const res = []; + dbg(`processing workflow jobs`); + for (const job of jobs) { + if (job.conclusion === "skipped" || job.conclusion === "cancelled") { + continue; + } + const { url: logs_url } = await client.rest.actions.downloadJobLogsForWorkflowRun({ + owner, + repo, + job_id: job.id, + }); + const logsRes = await fetch(logs_url); + const text = await logsRes.text(); + res.push({ + ...job, + logs_url, + logs: text, + content: parseJobLog(text), + }); + } + dbg(`workflow jobs: %O`, res); + return res; + } + /** + * Downloads a GitHub Action workflow run log + * @param jobId + */ + async downloadWorkflowJobLog(job_id, options) { + const { client, owner, repo } = await this.api(); + const { url: logs_url } = await client.rest.actions.downloadJobLogsForWorkflowRun({ + owner, + repo, + job_id, + }); + const logsRes = await fetch(logs_url); + let text = await logsRes.text(); + if (options?.llmify) { + text = parseJobLog(text); + } + return text; + } + async downloadJob(job_id) { + const { client, owner, repo } = await this.api(); + dbg(`downloading job log for job ID: ${job_id}`); + const filename = `job-${job_id}.log`; + const { url } = await client.rest.actions.downloadJobLogsForWorkflowRun({ + owner, + repo, + job_id, + }); + const res = await fetch(url); + const content = await res.text(); + return { filename, url, content }; + } + async diffWorkflowJobLogs(job_id, other_job_id) { + const job = await this.downloadJob(job_id); + dbg(`diffing workflow job logs for job IDs: ${job_id} and ${other_job_id}`); + const other = await this.downloadJob(other_job_id); + const justDiff = diffCreatePatch(job, other); + // try compressing + job.content = parseJobLog(job.content); + other.content = parseJobLog(other.content); + const parsedDiff = diffCreatePatch(job, other); + const diff = justDiff.length < parsedDiff.length ? justDiff : parsedDiff; + return llmifyDiff(diff); + } + async getFile(filename, ref) { + const { client, owner, repo } = await this.api(); + dbg(`retrieving file content for filename: ${filename} and ref: ${ref}`); + const { data: content } = await client.rest.repos.getContent({ + owner, + repo, + path: filename, + ref, + }); + if ("content" in content) { + return { + filename, + content: Buffer.from(content.content, "base64").toString("utf-8"), + }; + } + else { + return undefined; + } + } + async searchCode(query, options) { + const { client, owner, repo } = await this.api(); + dbg(`searching code with query: ${query}`); + const q = query + `+repo:${owner}/${repo}`; + const { count = GITHUB_REST_PAGE_DEFAULT } = options ?? {}; + const ite = client.paginate.iterator(client.rest.search.code, { + q, + ...(options ?? {}), + }); + const items = await paginatorToArray(ite, count, (i) => i.data); + return items.map(({ name, path, sha, html_url, score, repository }) => ({ + name, + path, + sha, + html_url, + score, + repository: repository.full_name, + })); + } + async workflow(workflowId) { + const { client, owner, repo } = await this.api(); + dbg(`retrieving workflow details for workflow ID: ${workflowId}`); + const { data } = await client.rest.actions.getWorkflow({ + owner, + repo, + workflow_id: workflowId, + }); + dbg(`workflow: %O`, data); + return data; + } + async listWorkflows(options) { + const { client, owner, repo } = await this.api(); + dbg(`listing workflows for repository`); + const { count = GITHUB_REST_PAGE_DEFAULT } = options ?? {}; + const ite = client.paginate.iterator(client.rest.actions.listRepoWorkflows, { + owner, + repo, + ...(options ?? {}), + }); + const workflows = await paginatorToArray(ite, count, (i) => i.data); + dbg(`workflows: %O`, workflows); + return workflows; + } + async listBranches(options) { + dbg(`listing branches for repository`); + const { client, owner, repo } = await this.api(); + const { count = GITHUB_REST_PAGE_DEFAULT } = options ?? {}; + const ite = client.paginate.iterator(client.rest.repos.listBranches, { + owner, + repo, + ...(options ?? {}), + }); + const branches = await paginatorToArray(ite, count, (i) => i.data); + return branches.map(({ name }) => name); + } + async listRepositoryLanguages() { + const { client, owner, repo } = await this.api(); + dbg(`listing languages for repository`); + const { data: languages } = await client.rest.repos.listLanguages({ + owner, + repo, + }); + dbg(`languages: %O`, languages); + return languages; + } + async listIssueLabels(issueNumber) { + const { client, owner, repo } = await this.api(); + dbg(`listing labels for %o`, issueNumber); + const { data: labels } = issueNumber === undefined + ? await client.rest.issues.listLabelsForRepo({ + owner, + repo, + }) + : await client.rest.issues.listLabelsOnIssue({ + owner, + repo, + issue_number: normalizeInt(issueNumber), + }); + dbg(`labels: %O`, labels); + return labels; + } + async getRepositoryContent(path, options) { + const { client, owner, repo } = await this.api(); + dbg(`retrieving repository content for path: ${path}`); + const { ref, type, glob, downloadContent, maxDownloadSize } = options ?? {}; + const { data: contents } = await client.rest.repos.getContent({ + owner, + repo, + path, + ref, + }); + const res = arrayify(contents) + .filter((c) => !type || c.type === type) + .filter((c) => !glob || isGlobMatch(c.path, glob)) + .map((content) => ({ + filename: content.path, + type: content.type, + size: content.size, + content: content.type === "file" && content.content + ? Buffer.from(content.content, "base64").toString("utf-8") + : undefined, + })); + if (downloadContent) { + const limit = concurrentLimit("github", GITHUB_REST_API_CONCURRENCY_LIMIT); + await Promise.all(res + .filter((f) => f.type === "file" && !f.content) + .filter((f) => !maxDownloadSize || f.size <= maxDownloadSize) + .map((f) => { + const filename = f.filename; + return async () => { + const { data: fileContent } = await client.rest.repos.getContent({ + owner, + repo, + path: filename, + ref, + }); + f.content = Buffer.from(arrayify(fileContent)[0].content, "base64").toString("utf8"); + }; + }) + .map((p) => limit(p))); + } + return res; + } + async addWorktreeForPullRequest(pullNumber, path, options) { + dbg(`adding worktree for pull request ${pullNumber}`); + // Get pull request details + const pr = await this.getPullRequest(pullNumber); + if (!pr) { + throw new Error(`Pull request ${pullNumber} not found`); + } + // Default path based on PR info + const defaultPath = path || `worktree-pr-${pullNumber}`; + // Fetch the PR branch + const gitClient = GitClient.default(); + const branchName = `pr-${pullNumber}/${pr.head.ref}`; + try { + // Try to fetch the PR branch first + await gitClient.fetch("origin", `pull/${pullNumber}/head:${branchName}`); + } + catch (error) { + dbg(`Failed to fetch PR branch: ${error}`); + // Continue with the head ref directly + } + // Create worktree with the PR branch or head ref + const commitish = branchName || pr.head.ref; + return await gitClient.addWorktree(defaultPath, commitish, { + ...options, + branch: options?.branch || branchName, + }); + } +} +function parseJobLog(text) { + const lines = cleanLog(text).split(/\r?\n/g); + const groups = []; + let current = groups[0]; + for (const line of lines) { + if (line.startsWith("##[group]")) { + current = { + title: line.slice("##[group]".length), + text: "", + }; + } + else if (line.startsWith("##[endgroup]")) { + if (current) { + groups.push(current); + } + current = undefined; + } + else if (line.includes("Post job cleanup.")) { + break; // ignore cleanup typically + } + else { + if (!current) { + current = { title: "", text: "" }; + } + current.text += line + "\n"; + } + } + if (current) { + groups.push(current); + } + const ignoreSteps = [ + "Runner Image", + "Fetching the repository", + "Checking out the ref", + "Setting up auth", + "Setting up auth for fetching submodules", + "Getting Git version info", + "Initializing the repository", + "Determining the checkout info", + "Persisting credentials for submodules", + ]; + return groups + .filter(({ title }) => !ignoreSteps.includes(title)) + .map((f) => (f.title ? `##[group]${f.title}\n${f.text}\n##[endgroup]` : f.text)) + .join("\n"); +} +export function cleanLog(text) { + return shellRemoveAsciiColors(text.replace( + // timestamps + /^?\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{2,}Z /gm, "")); +} +//# sourceMappingURL=githubclient.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/githubclient.js.map b/packages/core/.tshy-build/browser/githubclient.js.map new file mode 100644 index 0000000000..527c3de1b1 --- /dev/null +++ b/packages/core/.tshy-build/browser/githubclient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"githubclient.js","sourceRoot":"","sources":["../../src/githubclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/gitignore.d.ts b/packages/core/.tshy-build/browser/gitignore.d.ts new file mode 100644 index 0000000000..2f63dbfccd --- /dev/null +++ b/packages/core/.tshy-build/browser/gitignore.d.ts @@ -0,0 +1,29 @@ +import type { GitIgnorer } from "./types.js"; +/** + * Creates a function to filter files based on patterns defined in .gitignore files. + * Combines multiple .gitignore files (.gitignore, .gitignore.genai, and .genaiscriptignore) + * into a single filtering logic. + * + * @returns A function that takes a list of files and returns only the files not ignored. + */ +export declare function createGitIgnorer(options?: { + extraFiles?: string[]; +}): Promise; +export declare function createIgnorer(files: string[]): Promise; +/** + * Filters a list of files based on the patterns specified in .gitignore files. + * Utilizes the 'ignore' library to determine which files should be excluded. + * + * @param files - An array of file paths to be filtered. + * @returns An array of files that are not ignored according to the .gitignore patterns. + */ +export declare function filterGitIgnore(files: string[]): Promise; +/** + * Ensures specified entries are present in the .gitignore file within the given directory. + * If any of the entries are missing, they are appended to the file. + * + * @param dir - Directory path where the .gitignore file is located. + * @param entries - List of patterns or file paths to ensure are included in the .gitignore file. + */ +export declare function gitIgnoreEnsure(dir: string, entries: string[]): Promise; +//# sourceMappingURL=gitignore.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/gitignore.d.ts.map b/packages/core/.tshy-build/browser/gitignore.d.ts.map new file mode 100644 index 0000000000..d302247fda --- /dev/null +++ b/packages/core/.tshy-build/browser/gitignore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/gitignore.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAK5D;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAI/F;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBxE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,qBAKpD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,iBAqBnE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/gitignore.js b/packages/core/.tshy-build/browser/gitignore.js new file mode 100644 index 0000000000..c020a6b22e --- /dev/null +++ b/packages/core/.tshy-build/browser/gitignore.js @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import the 'ignore' library to handle .gitignore file parsing and filtering +import ignorer from "ignore"; +import { tryReadText, writeText } from "./fs.js"; +import { GENAISCRIPTIGNORE, GIT_IGNORE, GIT_IGNORE_GENAI } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { logVerbose } from "./util.js"; +import { genaiscriptDebug } from "./debug.js"; +import { filenameOrFileToFilename } from "./unwrappers.js"; +import { join } from "node:path"; +const dbg = genaiscriptDebug("files:gitignore"); +/** + * Creates a function to filter files based on patterns defined in .gitignore files. + * Combines multiple .gitignore files (.gitignore, .gitignore.genai, and .genaiscriptignore) + * into a single filtering logic. + * + * @returns A function that takes a list of files and returns only the files not ignored. + */ +export async function createGitIgnorer(options) { + const { extraFiles = [] } = options || {}; + dbg(`extra .gitignore files: ${extraFiles.join(", ")}`); + return await createIgnorer([GIT_IGNORE, GIT_IGNORE_GENAI, GENAISCRIPTIGNORE, ...extraFiles]); +} +export async function createIgnorer(files) { + const gitignores = (await Promise.all(files.map((f) => tryReadText(f)))).filter(Boolean); + if (!gitignores.length) { + dbg("no .gitignore files found"); + dbg(`%O`, files); + return (fs) => fs?.map(filenameOrFileToFilename)?.slice(0); + } + // Create an ignorer instance and add the .gitignore patterns to it + dbg("creating ignorer instance"); + const ig = ignorer({ allowRelativePaths: true }); + for (const gitignore of gitignores) { + ig.add(gitignore); + } + return (files) => files ? ig.filter(files?.map(filenameOrFileToFilename)) : []; +} +/** + * Filters a list of files based on the patterns specified in .gitignore files. + * Utilizes the 'ignore' library to determine which files should be excluded. + * + * @param files - An array of file paths to be filtered. + * @returns An array of files that are not ignored according to the .gitignore patterns. + */ +export async function filterGitIgnore(files) { + const ignorer = await createGitIgnorer(); + const newFiles = ignorer(files); + dbg(`files ${files.length} -> ${newFiles.length}`); + return newFiles; +} +/** + * Ensures specified entries are present in the .gitignore file within the given directory. + * If any of the entries are missing, they are appended to the file. + * + * @param dir - Directory path where the .gitignore file is located. + * @param entries - List of patterns or file paths to ensure are included in the .gitignore file. + */ +export async function gitIgnoreEnsure(dir, entries) { + const runtimeHost = resolveRuntimeHost(); + const fn = join(dir, GIT_IGNORE); + dbg(`reading file ${fn}`); + let src = (await tryReadText(fn)) || ""; + const oldsrc = src; + const newline = /\r\n/.test(src) ? "\r\n" : "\n"; + const lines = src.split(/\r?\n/g); + for (const entry of entries) { + dbg(`checking entry ${entry} in lines`); + if (!lines.some((l) => l.startsWith(entry))) { + if (src) { + src += newline; + } + src += entry; + } + } + if (oldsrc !== src) { + logVerbose(`updating ${fn}`); + await writeText(fn, src); + } +} +//# sourceMappingURL=gitignore.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/gitignore.js.map b/packages/core/.tshy-build/browser/gitignore.js.map new file mode 100644 index 0000000000..e063932bd3 --- /dev/null +++ b/packages/core/.tshy-build/browser/gitignore.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/gitignore.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/glob.d.ts b/packages/core/.tshy-build/browser/glob.d.ts new file mode 100644 index 0000000000..2f3527d322 --- /dev/null +++ b/packages/core/.tshy-build/browser/glob.d.ts @@ -0,0 +1,12 @@ +import type { ElementOrArray } from "./types.js"; +/** + * Checks if a given filename matches any of the provided glob patterns. + * + * @param filename - The name of the file to test against the patterns. + * @param patterns - A single glob pattern or an array of glob patterns to match against. + * @returns A boolean indicating if the filename matches any of the patterns. + */ +export declare function isGlobMatch(filename: string, patterns: ElementOrArray, options?: { + matchBase?: boolean; +}): boolean; +//# sourceMappingURL=glob.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/glob.d.ts.map b/packages/core/.tshy-build/browser/glob.d.ts.map new file mode 100644 index 0000000000..1cdbe00fe8 --- /dev/null +++ b/packages/core/.tshy-build/browser/glob.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,WAYlC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/glob.js b/packages/core/.tshy-build/browser/glob.js new file mode 100644 index 0000000000..ed0ffbc36f --- /dev/null +++ b/packages/core/.tshy-build/browser/glob.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { minimatch } from "minimatch"; +import { arrayify } from "./cleaners.js"; +/** + * Checks if a given filename matches any of the provided glob patterns. + * + * @param filename - The name of the file to test against the patterns. + * @param patterns - A single glob pattern or an array of glob patterns to match against. + * @returns A boolean indicating if the filename matches any of the patterns. + */ +export function isGlobMatch(filename, patterns, options) { + // Convert patterns to an array and check if any pattern matches the filename + return arrayify(patterns).some((pattern) => { + // Perform the match using minimatch with specific options + const match = minimatch(filename, pattern, { + // Option to handle Windows paths correctly by preventing escape character issues + windowsPathsNoEscape: true, + ...(options || {}), + }); + return match; // Return true if a match is found + }); +} +//# sourceMappingURL=glob.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/glob.js.map b/packages/core/.tshy-build/browser/glob.js.map new file mode 100644 index 0000000000..3ec8d21f8b --- /dev/null +++ b/packages/core/.tshy-build/browser/glob.js.map @@ -0,0 +1 @@ +{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,QAAgC,EAChC,OAAiC;IAEjC,6EAA6E;IAC7E,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACzC,0DAA0D;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE;YACzC,iFAAiF;YACjF,oBAAoB,EAAE,IAAI;YAC1B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;SACnB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,CAAC,kCAAkC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/global.d.ts b/packages/core/.tshy-build/browser/global.d.ts new file mode 100644 index 0000000000..8d0e5e50af --- /dev/null +++ b/packages/core/.tshy-build/browser/global.d.ts @@ -0,0 +1,13 @@ +export declare const originalConsole: any; +/** + * This file defines global utilities and installs them into the global context. + * It includes functions to parse and stringify various data formats, handle errors, + * and manage GitHub and Git clients. The utilities are frozen to prevent modification. + */ +/** + * Resolves the global context depending on the environment. + * @returns The global object depending on the current environment. + * @throws Will throw an error if the global context cannot be determined. + */ +export declare function resolveGlobal(): any; +//# sourceMappingURL=global.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/global.d.ts.map b/packages/core/.tshy-build/browser/global.d.ts.map new file mode 100644 index 0000000000..c78435796d --- /dev/null +++ b/packages/core/.tshy-build/browser/global.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../src/global.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,KAA0B,CAAC;AAEvD;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAOnC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/global.js b/packages/core/.tshy-build/browser/global.js new file mode 100644 index 0000000000..ae5e740a1d --- /dev/null +++ b/packages/core/.tshy-build/browser/global.js @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export const originalConsole = resolveGlobal().console; +/** + * This file defines global utilities and installs them into the global context. + * It includes functions to parse and stringify various data formats, handle errors, + * and manage GitHub and Git clients. The utilities are frozen to prevent modification. + */ +/** + * Resolves the global context depending on the environment. + * @returns The global object depending on the current environment. + * @throws Will throw an error if the global context cannot be determined. + */ +export function resolveGlobal() { + if (typeof window !== "undefined") + return window; // Browser environment + else if (typeof self !== "undefined") + return self; // Web worker environment + else if (typeof global !== "undefined") + return global; // Node.js environment + return globalThis; +} +//# sourceMappingURL=global.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/global.js.map b/packages/core/.tshy-build/browser/global.js.map new file mode 100644 index 0000000000..8838a66fbe --- /dev/null +++ b/packages/core/.tshy-build/browser/global.js.map @@ -0,0 +1 @@ +{"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/global.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,EAAE,CAAC,OAAO,CAAC;AAEvD;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW;QAC/B,OAAO,MAAM,CAAC,CAAC,sBAAsB;SAClC,IAAI,OAAO,IAAI,KAAK,WAAW;QAClC,OAAO,IAAI,CAAC,CAAC,yBAAyB;SACnC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC,CAAC,sBAAsB;IAC7E,OAAO,UAAU,CAAC;AACpB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/globals.d.ts b/packages/core/.tshy-build/browser/globals.d.ts new file mode 100644 index 0000000000..3a272c5c1e --- /dev/null +++ b/packages/core/.tshy-build/browser/globals.d.ts @@ -0,0 +1,33 @@ +import type { PromptContext } from "./types.js"; +/** + * Installs global utilities for various data formats and operations. + * Sets up global objects with frozen utilities for parsing, stringifying, and manipulating + * different data formats, handling tokenization, Git operations, HTML conversion, and more. + * + * Parameters: + * - None. + * + * Throws: + * - CancelError if cancellation is triggered. + * + * Notes: + * - Includes utilities for YAML, CSV, INI, XML, Markdown, JSONL, JSON5, HTML, and more. + * - Provides tokenization-related utilities such as counting, truncating, and chunking text. + * - Instantiates Git and GitHub clients. + * - Includes a fetchText function for retrieving text from URLs or files. + * - Includes an ffmpeg client for multimedia operations. + */ +export declare function installGlobals(): void; +/** + * Installs fields from the provided context into the global context. + * Overrides existing global properties if fields in the context share the same name. + * + * Parameters: + * - ctx: A context object containing properties to be added or overridden in the global context. + * + * Notes: + * - Uses `resolveGlobal` to access the global context. + * - Iterates over the keys of the provided context, mapping them into the global context. + */ +export declare function installGlobalPromptContext(ctx: PromptContext): void; +//# sourceMappingURL=globals.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/globals.d.ts.map b/packages/core/.tshy-build/browser/globals.d.ts.map new file mode 100644 index 0000000000..7e23e8481c --- /dev/null +++ b/packages/core/.tshy-build/browser/globals.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/globals.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EASV,aAAa,EAGd,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,SAmI7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,aAAa,QAO5D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/globals.js b/packages/core/.tshy-build/browser/globals.js new file mode 100644 index 0000000000..80c41412ec --- /dev/null +++ b/packages/core/.tshy-build/browser/globals.js @@ -0,0 +1,174 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("globals"); +// Import various parsing and stringifying utilities +import { createYAML } from "./yaml.js"; +import { CSVParse, dataToMarkdownTable, CSVStringify, CSVChunk } from "./csv.js"; +import { INIParse, INIStringify } from "./ini.js"; +import { XMLParse } from "./xml.js"; +import { frontmatterTryParse, splitMarkdown, updateFrontmatter } from "./frontmatter.js"; +import { createJSONL } from "./jsonl.js"; +import { HTMLTablesToJSON, HTMLToMarkdown, HTMLToText } from "./html.js"; +import { CancelError } from "./error.js"; +import { GitHubClient } from "./githubclient.js"; +import { GitClient } from "./git.js"; +import { approximateTokens, estimateTokens, truncateTextToTokens } from "./tokens.js"; +import { chunk, resolveTokenEncoder } from "./encoders.js"; +import { JSON5Stringify, JSON5TryParse } from "./json5.js"; +import { JSONSchemaInfer } from "./schema.js"; +import { FFmepgClient } from "./ffmpeg.js"; +import { promptParametersSchemaToJSONSchema } from "./parameters.js"; +import { chunkMarkdown } from "./mdchunk.js"; +import { resolveGlobal } from "./global.js"; +import { markdownStringify } from "./mdstringify.js"; +import { diffCreatePatch, diffFindChunk, tryDiffParse } from "./diff.js"; +import { createParsers } from "./parsers.js"; +let _globalsInstalled = false; +/** + * Installs global utilities for various data formats and operations. + * Sets up global objects with frozen utilities for parsing, stringifying, and manipulating + * different data formats, handling tokenization, Git operations, HTML conversion, and more. + * + * Parameters: + * - None. + * + * Throws: + * - CancelError if cancellation is triggered. + * + * Notes: + * - Includes utilities for YAML, CSV, INI, XML, Markdown, JSONL, JSON5, HTML, and more. + * - Provides tokenization-related utilities such as counting, truncating, and chunking text. + * - Instantiates Git and GitHub clients. + * - Includes a fetchText function for retrieving text from URLs or files. + * - Includes an ffmpeg client for multimedia operations. + */ +export function installGlobals() { + if (_globalsInstalled) { + dbg("already installed"); + return; // Prevent multiple installations + } + _globalsInstalled = true; // Mark globals as installed + dbg("install"); + const glb = resolveGlobal(); // Get the global context + glb.parsers = createParsers(); + // Freeze YAML utilities to prevent modification + glb.YAML = createYAML(); + // Freeze CSV utilities + glb.CSV = Object.freeze({ + parse: CSVParse, // Parse CSV string to objects + stringify: CSVStringify, // Convert objects to CSV string + markdownify: dataToMarkdownTable, // Convert CSV to Markdown format + chunk: CSVChunk, + }); + // Freeze INI utilities + glb.INI = Object.freeze({ + parse: INIParse, // Parse INI string to objects + stringify: INIStringify, // Convert objects to INI string + }); + // Freeze XML utilities + glb.XML = Object.freeze({ + parse: XMLParse, // Parse XML string to objects + }); + // Freeze Markdown utilities with frontmatter operations + glb.MD = Object.freeze({ + stringify: markdownStringify, + frontmatter: (text, format) => frontmatterTryParse(text, { format })?.value ?? {}, // Parse frontmatter from markdown + content: (text) => splitMarkdown(text)?.content, // Extract content from markdown + updateFrontmatter: (text, frontmatter, format) => updateFrontmatter(text, frontmatter, { format }), // Update frontmatter in markdown + chunk: async (text, options) => { + const encoding = await resolveTokenEncoder(options?.model, { + disableFallback: false, + }); + const res = chunkMarkdown(text, (text) => encoding.encode(text).length, options); + return res; + }, + }); + // Freeze JSONL utilities + glb.JSONL = createJSONL(); + glb.JSON5 = Object.freeze({ + parse: JSON5TryParse, + stringify: JSON5Stringify, + }); + glb.JSONSchema = Object.freeze({ + infer: JSONSchemaInfer, + fromParameters: promptParametersSchemaToJSONSchema, + }); + // Freeze HTML utilities + glb.HTML = Object.freeze({ + convertTablesToJSON: HTMLTablesToJSON, // Convert HTML tables to JSON + convertToMarkdown: HTMLToMarkdown, // Convert HTML to Markdown + convertToText: HTMLToText, // Convert HTML to plain text + }); + /** + * Function to trigger cancellation with an error. + * Throws a CancelError with a specified reason or a default message. + * @param [reason] - Optional reason for cancellation. + */ + glb.cancel = (reason) => { + dbg("cancel", reason); + throw new CancelError(reason || "user cancelled"); // Trigger cancel error + }; + // Instantiate GitHub client + glb.github = GitHubClient.default(); + // Instantiate Git client + glb.git = GitClient.default(); + glb.tokenizers = Object.freeze({ + resolve: resolveTokenEncoder, + count: async (text, options) => { + const { encode: encoder } = await resolveTokenEncoder(options?.model); + if (options?.approximate) + return approximateTokens(text, { encoder }); + const c = await estimateTokens(text, encoder); + return c; + }, + truncate: async (text, maxTokens, options) => { + const { encode: encoder } = await resolveTokenEncoder(options?.model); + return await truncateTextToTokens(text, maxTokens, encoder, options); + }, + chunk: chunk, + }); + // ffmpeg + glb.ffmpeg = new FFmepgClient(); + glb.DIFF = Object.freeze({ + parse: tryDiffParse, + createPatch: diffCreatePatch, + findChunk: diffFindChunk, + }); + // Polyfill for Object.groupBy if not available + // eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax + if (!Object.groupBy) { + // eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax + Object.groupBy = function (items, callback) { + return items.reduce((acc, item, idx, arr) => { + const key = callback(item, idx, arr); + if (!acc[key]) + acc[key] = []; + acc[key].push(item); + return acc; + }, {}); + }; + } + // these are overridden, ignored + glb.script = () => { }; + glb.system = () => { }; +} +/** + * Installs fields from the provided context into the global context. + * Overrides existing global properties if fields in the context share the same name. + * + * Parameters: + * - ctx: A context object containing properties to be added or overridden in the global context. + * + * Notes: + * - Uses `resolveGlobal` to access the global context. + * - Iterates over the keys of the provided context, mapping them into the global context. + */ +export function installGlobalPromptContext(ctx) { + const glb = resolveGlobal(); // Get the global context + for (const field of Object.keys(ctx)) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + glb[field] = ctx[field]; + } +} +//# sourceMappingURL=globals.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/globals.js.map b/packages/core/.tshy-build/browser/globals.js.map new file mode 100644 index 0000000000..4f11e63714 --- /dev/null +++ b/packages/core/.tshy-build/browser/globals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/globals.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/grep.d.ts b/packages/core/.tshy-build/browser/grep.d.ts new file mode 100644 index 0000000000..9ae3cdabe7 --- /dev/null +++ b/packages/core/.tshy-build/browser/grep.d.ts @@ -0,0 +1,35 @@ +import type { TraceOptions } from "./trace.js"; +import { type CancellationOptions } from "./cancellation.js"; +import type { WorkspaceFile, WorkspaceGrepOptions } from "./types.js"; +export type GrepResult = { + type: "match" | "context" | "begin" | "end"; + data: { + path: { + text: string; + }; + lines: { + text: string; + }; + line_number: number; + }; +}[]; +/** + * Executes a grep-like search across the workspace using ripgrep. + * + * @param pattern - The search pattern, either a string or a regular expression. + * @param options - Optional settings to customize the search behavior: + * - `path`: Specifies one or more paths to search. + * - `glob`: Array of glob patterns to include or exclude files. + * - `readText`: When false, avoids reading file content. + * - `applyGitIgnore`: When false, bypasses .gitignore filtering. + * - Accepts other trace and workspace-specific options. + * @returns An object containing: + * - `files`: List of files that matched the pattern. + * - `matches`: List of detailed matches including filenames and content with line numbers. + */ +export declare function grepSearch(pattern: string | RegExp, options?: TraceOptions & CancellationOptions & WorkspaceGrepOptions): Promise<{ + data: GrepResult; + files: WorkspaceFile[]; + matches: WorkspaceFile[]; +}>; +//# sourceMappingURL=grep.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/grep.d.ts.map b/packages/core/.tshy-build/browser/grep.d.ts.map new file mode 100644 index 0000000000..3334948b63 --- /dev/null +++ b/packages/core/.tshy-build/browser/grep.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../src/grep.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmBtE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,EAAE,CAAC;AAEJ;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,GAClE,OAAO,CAAC;IACT,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC,CAuDD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/grep.js b/packages/core/.tshy-build/browser/grep.js new file mode 100644 index 0000000000..af6c0db58e --- /dev/null +++ b/packages/core/.tshy-build/browser/grep.js @@ -0,0 +1,99 @@ +/* eslint-disable prefer-const */ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { JSONLTryParse } from "./jsonl.js"; +import { resolveFileContents } from "./file.js"; +import { uniq } from "es-toolkit"; +import { addLineNumbers } from "./liner.js"; +import { arrayify } from "./cleaners.js"; +import { filterGitIgnore } from "./gitignore.js"; +import { genaiscriptDebug } from "./debug.js"; +import { tryStat } from "./fs.js"; +import { checkCancelled } from "./cancellation.js"; +import { resolveRuntimeHost } from "./host.js"; +const dbg = genaiscriptDebug("grep"); +async function importRipGrep() { + try { + const { rgPath } = await import("@lvce-editor/ripgrep"); + dbg(`rg: %s`, rgPath); + const rgStat = await tryStat(rgPath); + if (!rgStat?.isFile()) + throw new Error(`ripgrep not found at '${rgPath}'. Please reinstall genaiscript.`); + return rgPath; + } + catch (e) { + dbg(`%O`, e); + throw e; + } +} +/** + * Executes a grep-like search across the workspace using ripgrep. + * + * @param pattern - The search pattern, either a string or a regular expression. + * @param options - Optional settings to customize the search behavior: + * - `path`: Specifies one or more paths to search. + * - `glob`: Array of glob patterns to include or exclude files. + * - `readText`: When false, avoids reading file content. + * - `applyGitIgnore`: When false, bypasses .gitignore filtering. + * - Accepts other trace and workspace-specific options. + * @returns An object containing: + * - `files`: List of files that matched the pattern. + * - `matches`: List of detailed matches including filenames and content with line numbers. + */ +export async function grepSearch(pattern, options) { + const runtimeHost = resolveRuntimeHost(); + const { cancellationToken, trace } = options || {}; + const rgPath = await importRipGrep(); + let { path: paths, glob: globs, readText, applyGitIgnore, debug } = options || {}; + globs = arrayify(globs); + paths = arrayify(paths); + const args = ["--json", "--multiline", "--context", "3"]; + if (debug) + args.push("--debug"); + if (typeof pattern === "string") { + args.push("--smart-case", pattern); + } + else { + if (pattern.ignoreCase) + args.push("--ignore-case"); + args.push(pattern.source); + } + if (globs) + for (const glob of globs) { + args.push("--glob"); + args.push(glob); + } + if (paths.length) + args.push(...paths); + else if (globs?.length) + args.push("."); + dbg(`args: %o`, args); + const res = await runtimeHost.exec(undefined, rgPath, args, options); + if (!res.stdout) { + dbg(`no output: %s`, res.stderr); + return { data: [], files: [], matches: [] }; + } + const resl = JSONLTryParse(res.stdout || ""); + checkCancelled(cancellationToken); + let filenames = uniq(resl.filter(({ type }) => type === "match").map(({ data }) => data.path.text)); + if (applyGitIgnore !== false) { + dbg(`apply git ignore`); + filenames = await filterGitIgnore(filenames); + } + const files = filenames.map((filename) => ({ filename })); + const filesSet = new Set(filenames); + const matches = resl + .filter(({ type }) => type === "match") + .filter(({ data }) => filesSet.has(data.path.text)) + .map(({ data }) => ({ + filename: data.path.text, + content: addLineNumbers(data.lines.text.trimEnd(), { + startLine: data.line_number, + }), + })); + dbg(`read text: `, readText); + if (readText !== false) + await resolveFileContents(files, { trace, cancellationToken }); + return { data: resl, files, matches }; +} +//# sourceMappingURL=grep.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/grep.js.map b/packages/core/.tshy-build/browser/grep.js.map new file mode 100644 index 0000000000..0c265c76a8 --- /dev/null +++ b/packages/core/.tshy-build/browser/grep.js.map @@ -0,0 +1 @@ +{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/grep.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/groq.d.ts b/packages/core/.tshy-build/browser/groq.d.ts new file mode 100644 index 0000000000..b038a2e237 --- /dev/null +++ b/packages/core/.tshy-build/browser/groq.d.ts @@ -0,0 +1,11 @@ +/** + * Loads and applies a GROQ query transformation to the input dataset. + * @param query GROQ query string to parse and evaluate. + * @param dataset The input dataset to apply the query to. Returns undefined if not provided. + * @param options Optional configurations such as root and query parameters. + */ +export declare function GROQEvaluate(query: string, dataset: any, options?: { + root?: any; + params?: Record; +}): Promise; +//# sourceMappingURL=groq.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/groq.d.ts.map b/packages/core/.tshy-build/browser/groq.d.ts.map new file mode 100644 index 0000000000..d6b247727c --- /dev/null +++ b/packages/core/.tshy-build/browser/groq.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/groq.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GACA,OAAO,CAAC,GAAG,CAAC,CAOd"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/groq.js b/packages/core/.tshy-build/browser/groq.js new file mode 100644 index 0000000000..5ea78b5c03 --- /dev/null +++ b/packages/core/.tshy-build/browser/groq.js @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { parse, evaluate } from "groq-js"; +/** + * Loads and applies a GROQ query transformation to the input dataset. + * @param query GROQ query string to parse and evaluate. + * @param dataset The input dataset to apply the query to. Returns undefined if not provided. + * @param options Optional configurations such as root and query parameters. + */ +export async function GROQEvaluate(query, dataset, options) { + if (dataset === undefined) + return dataset; + const tree = parse(query); + const value = await evaluate(tree, { dataset, ...(options || {}) }); + const res = await value.get(); + return res; +} +//# sourceMappingURL=groq.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/groq.js.map b/packages/core/.tshy-build/browser/groq.js.map new file mode 100644 index 0000000000..96eecf0798 --- /dev/null +++ b/packages/core/.tshy-build/browser/groq.js.map @@ -0,0 +1 @@ +{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/groq.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,OAAY,EACZ,OAGC;IAED,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/host.d.ts b/packages/core/.tshy-build/browser/host.d.ts new file mode 100644 index 0000000000..87d1dcf7f5 --- /dev/null +++ b/packages/core/.tshy-build/browser/host.d.ts @@ -0,0 +1,166 @@ +import type { CancellationOptions, CancellationToken } from "./cancellation.js"; +import type { LanguageModel } from "./chat.js"; +import type { Progress } from "./progress.js"; +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { AzureCredentialsType, LanguageModelConfiguration, LogLevel, Project, ResponseStatus } from "./server/messages.js"; +import type { HostConfiguration } from "./hostconfiguration.js"; +import type { TokenCredential } from "@azure/identity"; +import type { McpClientManager } from "./mcpclient.js"; +import type { ResourceManager } from "./mcpresource.js"; +import type { ContainerHost, ContainerOptions, ContentSafety, ContentSafetyProvider, ModelOptions, Path, SerializedError, ShellOutput, ShellSelectChoice, ShellSelectOptions, ShellInputOptions, ShellConfirmOptions, ShellOptions, WorkspaceFile, WorkspaceFileSystem, WorkspaceFileWithScore, VectorSearchOptions } from "./types.js"; +export declare class LogEvent extends Event { + readonly level: LogLevel; + readonly message: string; + static Name: string; + constructor(level: LogLevel, message: string); +} +export interface UTF8Decoder { + decode(input: Uint8Array, options?: { + stream?: boolean | undefined; + }): string; +} +export interface UTF8Encoder { + encode(input: string): Uint8Array; +} +export interface RetrievalClientOptions { + progress?: Progress; + token?: CancellationToken; + trace?: MarkdownTrace; +} +export interface RetrievalSearchOptions extends VectorSearchOptions { +} +export interface RetrievalSearchResponse extends ResponseStatus { + results: WorkspaceFileWithScore[]; +} +export interface RetrievalService { + vectorSearch(text: string, files: WorkspaceFile[], options?: RetrievalSearchOptions): Promise; +} +export interface ServerManager { + start(): Promise; + close(): Promise; +} +export interface AuthenticationToken { + token: string; + expiresOnTimestamp: number; + credential: TokenCredential; +} +/** + * Determines whether an Azure authentication token has expired. + * + * @param token - The authentication token to check. Contains the token string, expiration timestamp, and credential object. + * If null or undefined, the token is considered expired. + * @returns True if the token is expired or invalid; false otherwise. + * + * Note: The function considers a token expired if its expiration timestamp is within 5 seconds + * of the current time, to account for potential timing discrepancies. + */ +export declare function isAzureTokenExpired(token: AuthenticationToken): boolean; +export interface AzureTokenResolver { + token(credentialsType: AzureCredentialsType, options?: CancellationOptions): Promise<{ + token?: AuthenticationToken; + error?: SerializedError; + }>; +} +export type ModelConfiguration = Readonly & { + source: "cli" | "env" | "script" | "config" | "default"; + candidates?: string[]; +}>; +export type ModelConfigurations = { + large: ModelConfiguration; + small: ModelConfiguration; + vision: ModelConfiguration; + embeddings: ModelConfiguration; +} & Record; +export interface Host { + userState: Record; + server: ServerManager; + path: Path; + projectFolder(): string; + resolvePath(...segments: string[]): string; + getLanguageModelConfiguration(modelId: string, options?: { + token?: boolean; + } & CancellationOptions & TraceOptions): Promise; + log(level: LogLevel, msg: string): void; + statFile(name: string): Promise<{ + size: number; + type: "file" | "directory" | "symlink"; + }>; + readFile(name: string): Promise; + writeFile(name: string, content: Uint8Array): Promise; + deleteFile(name: string): Promise; + findFiles(pattern: string | string[], options?: { + ignore?: string | string[]; + applyGitIgnore?: boolean; + }): Promise; + createDirectory(name: string): Promise; + deleteDirectory(name: string): Promise; +} +export interface RuntimeHost extends Host { + project: Project; + workspace: Omit; + azureToken?: AzureTokenResolver; + azureAIServerlessToken?: AzureTokenResolver; + azureManagementToken?: AzureTokenResolver; + microsoftGraphToken?: AzureTokenResolver; + modelAliases: Readonly; + clientLanguageModel?: LanguageModel; + mcp: McpClientManager; + resources: ResourceManager; + pullModel(cfg: LanguageModelConfiguration, options?: TraceOptions & CancellationOptions): Promise; + clearModelAlias(source: "cli" | "env" | "config" | "script"): void; + setModelAlias(source: "env" | "cli" | "config" | "script", id: string, value: string | Omit): void; + /** + * Reloads the configuration + */ + readConfig(): Promise; + /** + * Gets the current loaded configuration + */ + get config(): HostConfiguration; + /** + * Reads a secret + * @param name + */ + readSecret(name: string): Promise; + exec(containerId: string, command: string, args: string[], options: ShellOptions & TraceOptions & CancellationOptions): Promise; + /** + * Starts a container to execute sandboxed code + * @param options + */ + container(options: ContainerOptions & TraceOptions): Promise; + /** + * Cleanup all temporary containers. + */ + removeContainers(): Promise; + /** + * Asks the user to select between options + * @param message question to ask + * @param options options to select from + */ + select(message: string, choices: (string | ShellSelectChoice)[], options?: ShellSelectOptions): Promise; + /** + * Asks the user to input a text + * @param message message to ask + */ + input(message: string, options?: ShellInputOptions): Promise; + /** + * Asks the user to confirm a message + * @param message message to ask + */ + confirm(message: string, options?: ShellConfirmOptions): Promise; + /** + * Instantiates a content safety client + * @param id + */ + contentSafety(id?: ContentSafetyProvider, options?: TraceOptions & CancellationOptions): Promise; +} +export declare function resolveRuntimeHost(): RuntimeHost; +/** + * Sets the runtime host instance and updates the global host reference. + * + * @param h - An instance of RuntimeHost representing the runtime host to be set. + * This will also update the `host` to refer to the same instance. + */ +export declare function setRuntimeHost(h: RuntimeHost): void; +export declare function checkRuntime(): void; +//# sourceMappingURL=host.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/host.d.ts.map b/packages/core/.tshy-build/browser/host.d.ts.map new file mode 100644 index 0000000000..5ee25c029d --- /dev/null +++ b/packages/core/.tshy-build/browser/host.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/host.js b/packages/core/.tshy-build/browser/host.js new file mode 100644 index 0000000000..07191e0192 --- /dev/null +++ b/packages/core/.tshy-build/browser/host.js @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { LOG } from "./constants.js"; +import { genaiscriptDebug } from "./debug.js"; +import { resolveGlobal } from "./global.js"; +const dbg = genaiscriptDebug("host"); +export class LogEvent extends Event { + level; + message; + static Name = "log"; + constructor(level, message) { + super(LOG); + this.level = level; + this.message = message; + } +} +/** + * Determines whether an Azure authentication token has expired. + * + * @param token - The authentication token to check. Contains the token string, expiration timestamp, and credential object. + * If null or undefined, the token is considered expired. + * @returns True if the token is expired or invalid; false otherwise. + * + * Note: The function considers a token expired if its expiration timestamp is within 5 seconds + * of the current time, to account for potential timing discrepancies. + */ +export function isAzureTokenExpired(token) { + // Consider the token expired 5 seconds before the actual expiration to avoid timing issues + return !token || token.expiresOnTimestamp < Date.now() - 5_000; +} +export function resolveRuntimeHost() { + const h = globalThis.genaiscript; + if (!h) + throw new Error("GenAIScript runtime not initialized"); + return h; +} +/** + * Sets the runtime host instance and updates the global host reference. + * + * @param h - An instance of RuntimeHost representing the runtime host to be set. + * This will also update the `host` to refer to the same instance. + */ +export function setRuntimeHost(h) { + dbg(`set runtime host`); + globalThis.genaiscript = h; +} +export function checkRuntime() { + if (typeof resolveGlobal().env === "undefined") { + dbg(`attempt to access uninitialized runtime host`); + throw new Error("Runtime not initialized, https://microsoft.github.io/genaiscript/reference/runtime/."); + } +} +//# sourceMappingURL=host.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/host.js.map b/packages/core/.tshy-build/browser/host.js.map new file mode 100644 index 0000000000..e6c5545f44 --- /dev/null +++ b/packages/core/.tshy-build/browser/host.js.map @@ -0,0 +1 @@ +{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/host.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAclC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAuBrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IAHlB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,YACkB,KAAe,EACf,OAAe;QAE/B,KAAK,CAAC,GAAG,CAAC,CAAC;QAHK,UAAK,GAAL,KAAK,CAAU;QACf,YAAO,GAAP,OAAO,CAAQ;IAGjC,CAAC;;AAgDH;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,2FAA2F;IAC3F,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACjE,CAAC;AA0JD,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAI,UAAkB,CAAC,WAA0B,CAAC;IACzD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC/D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,CAAc;IAC3C,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvB,UAAkB,CAAC,WAAW,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,aAAa,EAAE,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC/C,GAAG,CAAC,8CAA8C,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/hostconfiguration.d.ts b/packages/core/.tshy-build/browser/hostconfiguration.d.ts new file mode 100644 index 0000000000..b55434f10e --- /dev/null +++ b/packages/core/.tshy-build/browser/hostconfiguration.d.ts @@ -0,0 +1,34 @@ +import type { ModelConfiguration } from "./host.js"; +/** + * Schema for a global configuration file + */ +export interface HostConfiguration { + /** + * Path to the .env file + */ + envFile?: string | string[]; + /** + * List of glob paths to scan for genai scripts + */ + include?: (string | { + pattern: string; + ignoreGitIgnore?: boolean; + })[]; + /** + * Ignore scripts in the current workspace. + */ + ignoreCurrentWorkspace?: boolean; + /** + * Configures a list of known aliases. Overridden by environment variables and CLI arguments + */ + modelAliases?: Record; + /** + * Model identifier to encoding mapping + */ + modelEncodings?: Record; + /** + * A map of secret name and their respective regex pattern + */ + secretPatterns?: Record; +} +//# sourceMappingURL=hostconfiguration.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/hostconfiguration.d.ts.map b/packages/core/.tshy-build/browser/hostconfiguration.d.ts.map new file mode 100644 index 0000000000..066b9e65cd --- /dev/null +++ b/packages/core/.tshy-build/browser/hostconfiguration.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"hostconfiguration.d.ts","sourceRoot":"","sources":["../../src/hostconfiguration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,CACN,MAAM,GACN;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CACJ,EAAE,CAAC;IAEJ;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC;IAE3D;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/hostconfiguration.js b/packages/core/.tshy-build/browser/hostconfiguration.js new file mode 100644 index 0000000000..928df8196c --- /dev/null +++ b/packages/core/.tshy-build/browser/hostconfiguration.js @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export {}; +//# sourceMappingURL=hostconfiguration.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/hostconfiguration.js.map b/packages/core/.tshy-build/browser/hostconfiguration.js.map new file mode 100644 index 0000000000..9b7a6e2f72 --- /dev/null +++ b/packages/core/.tshy-build/browser/hostconfiguration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hostconfiguration.js","sourceRoot":"","sources":["../../src/hostconfiguration.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/html.d.ts b/packages/core/.tshy-build/browser/html.d.ts new file mode 100644 index 0000000000..83b9394bd7 --- /dev/null +++ b/packages/core/.tshy-build/browser/html.d.ts @@ -0,0 +1,28 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import type { HTMLToMarkdownOptions, HTMLToTextOptions } from "./types.js"; +/** + * Converts HTML tables to JSON objects. + * + * @param html - The HTML content containing tables. + * @param options - Optional parameters for conversion. + * @returns A 2D array of objects representing the table data. + */ +export declare function HTMLTablesToJSON(html: string, options?: {}): Promise; +/** + * Converts HTML content to plain text. + * + * @param html - The HTML content to convert. + * @param options - Optional parameters including tracing options. + * @returns The plain text representation of the HTML. + */ +export declare function HTMLToText(html: string, options?: HTMLToTextOptions & TraceOptions & CancellationOptions): Promise; +/** + * Converts HTML content to Markdown format. + * + * @param html - The HTML content to convert. If no HTML is provided, the original content is returned. + * @param options - Optional parameters including tracing, GFM support, and elements to remove. GFM can be disabled using disableGfm. + * @returns The Markdown representation of the HTML. + */ +export declare function HTMLToMarkdown(html: string, options?: HTMLToMarkdownOptions & TraceOptions & CancellationOptions): Promise; +//# sourceMappingURL=html.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/html.d.ts.map b/packages/core/.tshy-build/browser/html.d.ts.map new file mode 100644 index 0000000000..1cf455372d --- /dev/null +++ b/packages/core/.tshy-build/browser/html.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/html.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAItF;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAAG,YAAY,GAAG,mBAAmB,GAC/D,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAAG,YAAY,GAAG,mBAAmB,GACnE,OAAO,CAAC,MAAM,CAAC,CA0BjB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/html.js b/packages/core/.tshy-build/browser/html.js new file mode 100644 index 0000000000..1a6eadfb28 --- /dev/null +++ b/packages/core/.tshy-build/browser/html.js @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { checkCancelled } from "./cancellation.js"; +/** + * Converts HTML tables to JSON objects. + * + * @param html - The HTML content containing tables. + * @param options - Optional parameters for conversion. + * @returns A 2D array of objects representing the table data. + */ +export async function HTMLTablesToJSON(html, options) { + const { tabletojson } = await import("tabletojson"); + const res = tabletojson.convert(html, options); // Convert HTML tables to JSON using tabletojson library + return res; +} +/** + * Converts HTML content to plain text. + * + * @param html - The HTML content to convert. + * @param options - Optional parameters including tracing options. + * @returns The plain text representation of the HTML. + */ +export async function HTMLToText(html, options) { + if (!html) + return ""; // Return empty string if no HTML content is provided + const { trace, cancellationToken } = options || {}; // Extract trace for logging if available + try { + const { convert: convertToText } = await import("html-to-text"); // Import the convert function from html-to-text library + checkCancelled(cancellationToken); // Check for cancellation token + const text = convertToText(html, options); // Perform conversion to plain text + return text; + } + catch (e) { + trace?.error("HTML conversion failed", e); // Log error if conversion fails + return undefined; + } +} +/** + * Converts HTML content to Markdown format. + * + * @param html - The HTML content to convert. If no HTML is provided, the original content is returned. + * @param options - Optional parameters including tracing, GFM support, and elements to remove. GFM can be disabled using disableGfm. + * @returns The Markdown representation of the HTML. + */ +export async function HTMLToMarkdown(html, options) { + if (!html) + return html; // Return original content if no HTML is provided + const { disableGfm, trace, cancellationToken } = options || {}; // Extract trace for logging if available + try { + const Turndown = (await import("turndown")).default; // Import Turndown library for HTML to Markdown conversion + const GFMPlugin = await import("turndown-plugin-gfm"); + checkCancelled(cancellationToken); // Check for cancellation token + const turndown = new Turndown(); + turndown.remove("script"); + turndown.remove("style"); + turndown.remove("meta"); + turndown.remove("link"); + turndown.remove("head"); + turndown.remove("title"); + turndown.remove("noscript"); + if (!disableGfm) { + turndown.use(GFMPlugin.gfm); // Use GFM plugin for GitHub Flavored Markdown + } + const res = turndown.turndown(html); // Use Turndown library to convert HTML to Markdown + return res; + } + catch (e) { + trace?.error("HTML conversion failed", e); // Log error if conversion fails + return undefined; + } +} +//# sourceMappingURL=html.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/html.js.map b/packages/core/.tshy-build/browser/html.js.map new file mode 100644 index 0000000000..d85be209db --- /dev/null +++ b/packages/core/.tshy-build/browser/html.js.map @@ -0,0 +1 @@ +{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/html.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AASlC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAY;IAC/D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,wDAAwD;IACxG,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,OAAgE;IAEhE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC,CAAC,qDAAqD;IAE3E,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC,CAAC,yCAAyC;IAE7F,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,wDAAwD;QACzH,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B;QAClE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,mCAAmC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,gCAAgC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAoE;IAEpE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,iDAAiD;IACzE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC,CAAC,yCAAyC;IAEzG,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,0DAA0D;QAC/G,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEtD,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B;QAClE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,8CAA8C;QAC7E,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD;QACxF,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,gCAAgC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/htmlescape.d.ts b/packages/core/.tshy-build/browser/htmlescape.d.ts new file mode 100644 index 0000000000..32c9dfdca4 --- /dev/null +++ b/packages/core/.tshy-build/browser/htmlescape.d.ts @@ -0,0 +1,3 @@ +import { escape as HTMLEscape_ } from "html-escaper"; +export declare const HTMLEscape: typeof HTMLEscape_; +//# sourceMappingURL=htmlescape.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/htmlescape.d.ts.map b/packages/core/.tshy-build/browser/htmlescape.d.ts.map new file mode 100644 index 0000000000..553d12fe99 --- /dev/null +++ b/packages/core/.tshy-build/browser/htmlescape.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"htmlescape.d.ts","sourceRoot":"","sources":["../../src/htmlescape.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,UAAU,oBAAc,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/htmlescape.js b/packages/core/.tshy-build/browser/htmlescape.js new file mode 100644 index 0000000000..205f913731 --- /dev/null +++ b/packages/core/.tshy-build/browser/htmlescape.js @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides functions to convert HTML content into different formats such as JSON, plain text, and Markdown. +// It imports necessary libraries for HTML conversion and logging purposes. +/// +import { escape as HTMLEscape_ } from "html-escaper"; +export const HTMLEscape = HTMLEscape_; +//# sourceMappingURL=htmlescape.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/htmlescape.js.map b/packages/core/.tshy-build/browser/htmlescape.js.map new file mode 100644 index 0000000000..5a7275210e --- /dev/null +++ b/packages/core/.tshy-build/browser/htmlescape.js.map @@ -0,0 +1 @@ +{"version":3,"file":"htmlescape.js","sourceRoot":"","sources":["../../src/htmlescape.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wHAAwH;AACxH,2EAA2E;AAC3E,4CAA4C;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/id.d.ts b/packages/core/.tshy-build/browser/id.d.ts new file mode 100644 index 0000000000..ad0cb5dd29 --- /dev/null +++ b/packages/core/.tshy-build/browser/id.d.ts @@ -0,0 +1,7 @@ +/** + * Generates a unique identifier. + * + * @returns A unique identifier string. + */ +export declare function generateId(): string; +//# sourceMappingURL=id.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/id.d.ts.map b/packages/core/.tshy-build/browser/id.d.ts.map new file mode 100644 index 0000000000..bf4116661f --- /dev/null +++ b/packages/core/.tshy-build/browser/id.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/id.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/id.js b/packages/core/.tshy-build/browser/id.js new file mode 100644 index 0000000000..ea443e2d8c --- /dev/null +++ b/packages/core/.tshy-build/browser/id.js @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { nanoid } from "nanoid"; +/** + * Generates a unique identifier. + * + * @returns A unique identifier string. + */ +export function generateId() { + return nanoid(); +} +//# sourceMappingURL=id.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/id.js.map b/packages/core/.tshy-build/browser/id.js.map new file mode 100644 index 0000000000..022a2a9e82 --- /dev/null +++ b/packages/core/.tshy-build/browser/id.js.map @@ -0,0 +1 @@ +{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/id.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/image.d.ts b/packages/core/.tshy-build/browser/image.d.ts new file mode 100644 index 0000000000..dcbedd35c6 --- /dev/null +++ b/packages/core/.tshy-build/browser/image.d.ts @@ -0,0 +1,81 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { ImageGenerationUsage } from "./chat.js"; +import type { BufferLike, DefImagesOptions, ImageTransformOptions } from "./types.js"; +/** + * Transforms an image based on the provided options. + * + * @param url - The source of the image, which can be a URL, Buffer, or Blob. + * @param options - Configuration object for image transformation, including: + * - mime: Optional MIME type for the output image. + * - detail: Optional. Specifies the level of detail for the image (e.g., "original"). + * - cancellationToken: Optional. Token to handle cancellation of the operation. + * - autoCrop: Optional. Indicates whether to automatically crop the image. + * - maxHeight: Optional. Maximum height for resizing the image. + * - maxWidth: Optional. Maximum width for resizing the image. + * - scale: Optional. Scaling factor for resizing the image. + * - rotate: Optional. Angle in degrees to rotate the image. + * - crop: Optional. Cropping dimensions (x, y, width, height). + * - flip: Optional. Specifies whether to flip the image vertically or horizontally. + * - greyscale: Optional. Indicates whether to apply a greyscale effect. + * + * @returns A Promise that resolves to the transformed image as a Buffer. + */ +export declare function imageTransform(url: BufferLike, options: ImageTransformOptions & TraceOptions & CancellationOptions): Promise; +/** + * Encodes an image for use in Language Learning Models (LLMs). + * + * @param url - The source of the image, which can be a URL, Buffer, or Blob. + * @param options - Configuration for image processing, including detail level, trace settings, cancellation handling, MIME type, scaling, cropping, rotation, greyscale, and auto-cropping. + * @returns A promise that resolves to the image encoded as a data URI. + */ +export declare function imageEncodeForLLM(url: BufferLike, options: DefImagesOptions & TraceOptions & CancellationOptions): Promise<{ + width: number; + height: number; + type: any; + url: string; + detail: "low" | "high"; +}>; +/** + * Combines multiple images into a single tiled image and encodes it for use in Language Learning Models (LLMs). + * + * @param urls - An array of sources for the images to be tiled. Each source can be a URL, Buffer, or another supported format. + * @param options - Configuration for image processing, including: + * - cancellationToken: Token to handle cancellation of the operation. + * - detail: Detail level of the images (e.g., high, low, or original). + * - mime: Desired MIME type for the output image. + * - trace: Debug or trace options. + * - crop, scale, rotate, greyscale, autoCrop: Image manipulation settings. + * - other supported image generation options. + * + * @throws Will throw an error if no images are provided in the input array. + * + * @returns A promise resolving to the tiled image encoded as a data URI or other specified format. + */ +export declare function imageTileEncodeForLLM(urls: BufferLike[], options: DefImagesOptions & TraceOptions & CancellationOptions): Promise<{ + width: number; + height: number; + type: any; + url: string; + detail: "low" | "high"; +}>; +/** + * Renders an image to the terminal within specified dimensions, adding an optional label and usage information. + * + * @param url - The source of the image, which can be a URL, Buffer, or similar. + * @param options - Configuration object containing: + * - columns: The total number of terminal columns available. + * - rows: The total number of terminal rows available. + * - label: An optional string to display as the image's label. + * - usage: Optional usage statistics to display below the image. + * - cancellationToken: Optional token to handle cancellation. + * @returns A string representation of the image formatted for terminal output. + */ +export declare function renderImageToTerminal(url: BufferLike, options: { + columns: number; + rows: number; + label?: string; + modelId?: string; + usage?: ImageGenerationUsage; +} & CancellationOptions): Promise; +//# sourceMappingURL=image.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/image.d.ts.map b/packages/core/.tshy-build/browser/image.d.ts.map new file mode 100644 index 0000000000..7248616ad7 --- /dev/null +++ b/packages/core/.tshy-build/browser/image.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAK5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAEhB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA6KpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,qBAAqB,GAAG,YAAY,GAAG,mBAAmB,GAClE,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,gBAAgB,GAAG,YAAY,GAAG,mBAAmB;;;;;;GAK/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,UAAU,EAAE,EAClB,OAAO,EAAE,gBAAgB,GAAG,YAAY,GAAG,mBAAmB;;;;;;GAuC/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B,GAAG,mBAAmB,mBAgDxB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/image.js b/packages/core/.tshy-build/browser/image.js new file mode 100644 index 0000000000..814932b163 --- /dev/null +++ b/packages/core/.tshy-build/browser/image.js @@ -0,0 +1,258 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveBufferLike } from "./bufferlike.js"; +import { BOX_DOWN_AND_RIGHT, BOX_LEFT_AND_DOWN, BOX_LEFT_AND_UP, BOX_RIGHT, BOX_UP_AND_DOWN, BOX_UP_AND_RIGHT, CHAR_DOWN_ARROW, CHAR_UP_ARROW, CHAR_UP_DOWN_ARROWS, CONSOLE_COLOR_DEBUG, IMAGE_DETAIL_HIGH_HEIGHT, IMAGE_DETAIL_HIGH_WIDTH, IMAGE_DETAIL_LOW_HEIGHT, IMAGE_DETAIL_LOW_WIDTH, } from "./constants.js"; +import { ellipse, logVerbose } from "./util.js"; +import pLimit from "p-limit"; +import { checkCancelled } from "./cancellation.js"; +import { wrapColor, wrapRgbColor } from "./consolecolor.js"; +import { assert } from "console"; +import { genaiscriptDebug } from "./debug.js"; +import { estimateImageCost } from "./usage.js"; +import { prettyCost } from "./pretty.js"; +const dbg = genaiscriptDebug("image"); +async function prepare(url, options) { + // Dynamically import the Jimp library and its alignment enums + const { cancellationToken, autoCrop, maxHeight, maxWidth, scale, rotate, greyscale, crop, flip, detail, } = options; + checkCancelled(cancellationToken); + dbg(`loading image`); + // https://platform.openai.com/docs/guides/vision/calculating-costs#managing-images + // If the URL is a string, resolve it to a data URI + const buffer = await resolveBufferLike(url); + checkCancelled(cancellationToken); + // failed to resolve buffer + if (!buffer) { + dbg(`failed to resolve image`); + return undefined; + } + // Read the image using Jimp + const { Jimp, HorizontalAlign, VerticalAlign } = await import("jimp"); + const img = await Jimp.read(buffer); + checkCancelled(cancellationToken); + const { width, height } = img; + if (crop) { + dbg(`cropping image with provided dimensions`); + const x = Math.max(0, Math.min(width, crop.x ?? 0)); + const y = Math.max(0, Math.min(height, crop.y ?? 0)); + const w = Math.max(1, Math.min(width - x, crop.w ?? width)); + const h = Math.max(1, Math.min(height - y, crop.h ?? height)); + img.crop({ x, y, w, h }); + } + if (!isNaN(scale)) { + dbg(`scaling image by factor ${scale}`); + img.scale(scale); + } + if (!isNaN(rotate)) { + dbg(`rotating image by ${rotate} degrees`); + img.rotate(rotate); + } + if (flip) { + dbg(`flipping image`, flip); + img.flip(flip); + } + // Contain the image within specified max dimensions if provided + if (options.maxWidth ?? options.maxHeight) { + if (options.maxWidth && !options.maxHeight) { + if (img.width > options.maxWidth) { + dbg(`resize width to %d`, options.maxWidth); + img.resize({ + w: options.maxWidth, + h: Math.ceil((img.height / img.width) * options.maxWidth), + }); + } + } + else if (options.maxHeight && !options.maxWidth) { + if (img.height > options.maxHeight) { + dbg(`resize height to %d`, options.maxHeight); + img.resize({ + h: options.maxHeight, + w: Math.ceil((img.width / img.height) * options.maxHeight), + }); + } + } + else { + dbg(`containing image within ${options.maxWidth || ""}x${options.maxHeight || ""}`); + contain(img, img.width > maxWidth ? maxWidth : img.width, img.height > maxHeight ? maxHeight : img.height, HorizontalAlign.CENTER | VerticalAlign.MIDDLE); + } + } + // Auto-crop the image if required by options + if (autoCrop) { + dbg(`auto-cropping image`); + img.autocrop(); + } + if (greyscale) { + dbg(`applying greyscale to image`); + img.greyscale(); + } + checkCancelled(cancellationToken); + // https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding#low-or-high-fidelity-image-understanding + if (detail === "low") { + dbg(`setting image detail to low`); + contain(img, Math.min(img.width, IMAGE_DETAIL_LOW_WIDTH), Math.min(img.height, IMAGE_DETAIL_LOW_HEIGHT), HorizontalAlign.CENTER | VerticalAlign.MIDDLE); + } + else if (detail !== "original") { + dbg(`setting image detail to low`); + contain(img, IMAGE_DETAIL_HIGH_WIDTH, IMAGE_DETAIL_HIGH_HEIGHT, HorizontalAlign.CENTER | VerticalAlign.MIDDLE); + } + return img; +} +function contain(img, width, height, align) { + if (img.width > width || img.height > height) { + img.contain({ + w: Math.min(img.width, width), + h: Math.min(img.height, height), + align, + }); + } +} +async function encode(img, options) { + // Determine the output MIME type, defaulting to image/jpeg + const { detail, mime } = options || {}; + const outputMime = mime || img.mime || "image/jpeg"; + const buf = await img.getBuffer(outputMime); + const imageDataUri = `data:${outputMime};base64,${buf.toString("base64")}`; + // Return the encoded image data URI + return { + width: img.width, + height: img.height, + type: outputMime, + url: imageDataUri, + detail, + }; +} +/** + * Transforms an image based on the provided options. + * + * @param url - The source of the image, which can be a URL, Buffer, or Blob. + * @param options - Configuration object for image transformation, including: + * - mime: Optional MIME type for the output image. + * - detail: Optional. Specifies the level of detail for the image (e.g., "original"). + * - cancellationToken: Optional. Token to handle cancellation of the operation. + * - autoCrop: Optional. Indicates whether to automatically crop the image. + * - maxHeight: Optional. Maximum height for resizing the image. + * - maxWidth: Optional. Maximum width for resizing the image. + * - scale: Optional. Scaling factor for resizing the image. + * - rotate: Optional. Angle in degrees to rotate the image. + * - crop: Optional. Cropping dimensions (x, y, width, height). + * - flip: Optional. Specifies whether to flip the image vertically or horizontally. + * - greyscale: Optional. Indicates whether to apply a greyscale effect. + * + * @returns A Promise that resolves to the transformed image as a Buffer. + */ +export async function imageTransform(url, options) { + const { mime } = options || {}; + const img = await prepare(url, { ...(options || {}), detail: "original" }); + const outputMime = mime || img.mime || "image/jpeg"; + const buf = await img.getBuffer(outputMime); + return Buffer.from(buf); +} +/** + * Encodes an image for use in Language Learning Models (LLMs). + * + * @param url - The source of the image, which can be a URL, Buffer, or Blob. + * @param options - Configuration for image processing, including detail level, trace settings, cancellation handling, MIME type, scaling, cropping, rotation, greyscale, and auto-cropping. + * @returns A promise that resolves to the image encoded as a data URI. + */ +export async function imageEncodeForLLM(url, options) { + const img = await prepare(url, options); + if (!img) + return undefined; + return await encode(img, options); +} +/** + * Combines multiple images into a single tiled image and encodes it for use in Language Learning Models (LLMs). + * + * @param urls - An array of sources for the images to be tiled. Each source can be a URL, Buffer, or another supported format. + * @param options - Configuration for image processing, including: + * - cancellationToken: Token to handle cancellation of the operation. + * - detail: Detail level of the images (e.g., high, low, or original). + * - mime: Desired MIME type for the output image. + * - trace: Debug or trace options. + * - crop, scale, rotate, greyscale, autoCrop: Image manipulation settings. + * - other supported image generation options. + * + * @throws Will throw an error if no images are provided in the input array. + * + * @returns A promise resolving to the tiled image encoded as a data URI or other specified format. + */ +export async function imageTileEncodeForLLM(urls, options) { + if (urls.length === 0) { + dbg(`no images provided for tiling`); + throw new Error("image: no images provided for tiling"); + } + const { cancellationToken } = options; + const limit = pLimit(4); + const imgs = await Promise.all(urls.map((url) => limit(() => prepare(url, options)))); + checkCancelled(cancellationToken); + logVerbose(`image: tiling ${imgs.length} images`); + const imgw = imgs.reduce((acc, img) => Math.max(acc, img.width), 0); + const imgh = imgs.reduce((acc, img) => Math.max(acc, img.height), 0); + const ncols = Math.ceil(Math.sqrt(imgs.length)); + const nrows = Math.ceil(imgs.length / ncols); + const width = ncols * imgw; + const height = nrows * imgh; + const { Jimp, HorizontalAlign, VerticalAlign } = await import("jimp"); + const canvas = new Jimp({ width, height }); + for (let i = 0; i < imgs.length; i++) { + const ci = Math.floor(i / nrows); + const ri = i % nrows; + const x = ci * imgw; + const y = ri * imgh; + canvas.composite(imgs[i], x, y); + } + contain(canvas, IMAGE_DETAIL_HIGH_WIDTH, IMAGE_DETAIL_HIGH_HEIGHT, HorizontalAlign.CENTER | VerticalAlign.MIDDLE); + return await encode(canvas, { ...options, detail: undefined }); +} +/** + * Renders an image to the terminal within specified dimensions, adding an optional label and usage information. + * + * @param url - The source of the image, which can be a URL, Buffer, or similar. + * @param options - Configuration object containing: + * - columns: The total number of terminal columns available. + * - rows: The total number of terminal rows available. + * - label: An optional string to display as the image's label. + * - usage: Optional usage statistics to display below the image. + * - cancellationToken: Optional token to handle cancellation. + * @returns A string representation of the image formatted for terminal output. + */ +export async function renderImageToTerminal(url, options) { + assert(!!url, "image buffer"); + const { columns, rows, label, usage, modelId } = options; + const image = await prepare(url, { + maxWidth: Math.max(16, Math.min(126, (columns >> 1) - 2)), + maxHeight: Math.max(16, Math.min(126, rows - 4)), + }); + const { width, height } = image; + const title = label ? ellipse(label, width * 2 - 2) : ""; + const res = [ + wrapColor(CONSOLE_COLOR_DEBUG, `${BOX_DOWN_AND_RIGHT}${BOX_RIGHT}` + + title + + BOX_RIGHT.repeat(width * 2 - title.length - 1) + + `${BOX_LEFT_AND_DOWN}\n`), + ]; + const wall = wrapColor(CONSOLE_COLOR_DEBUG, BOX_UP_AND_DOWN); + for (let y = 0; y < height; ++y) { + res.push(wall); + for (let x = 0; x < width; ++x) { + const c = image.getPixelColor(x, y); + const cc = c ? wrapRgbColor(c >> 8, " ", true) : " "; + res.push(cc, cc); + } + res.push(wall, "\n"); + } + const cost = estimateImageCost(modelId, usage); + const usageStr = usage + ? [ + `${CHAR_UP_DOWN_ARROWS}${usage.total_tokens}`, + `${CHAR_UP_ARROW}${usage.input_tokens}`, + `${CHAR_DOWN_ARROW}${usage.output_tokens}`, + prettyCost(cost), + ].join(" ") + : ""; + res.push(wrapColor(CONSOLE_COLOR_DEBUG, BOX_UP_AND_RIGHT + + usageStr + + BOX_RIGHT.repeat(width * 2 - usageStr.length) + + `${BOX_LEFT_AND_UP}\n`)); + return res.join(""); +} +//# sourceMappingURL=image.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/image.js.map b/packages/core/.tshy-build/browser/image.js.map new file mode 100644 index 0000000000..49a8380cfb --- /dev/null +++ b/packages/core/.tshy-build/browser/image.js.map @@ -0,0 +1 @@ +{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/importprompt.d.ts b/packages/core/.tshy-build/browser/importprompt.d.ts new file mode 100644 index 0000000000..cdb37cc45f --- /dev/null +++ b/packages/core/.tshy-build/browser/importprompt.d.ts @@ -0,0 +1,34 @@ +import type { TraceOptions } from "./trace.js"; +import type { Awaitable, PromptContext, PromptScript } from "./types.js"; +/** + * Dynamically imports a JavaScript module from a specified file. + * + * @param filename - The path of the file to be imported. Must be a valid string. + * @param options - Optional parameters: + * - onImported: A callback executed after the module is imported. Receives the module as an argument. + * - logCb: A callback for logging messages. + * - trace: Optional tracing utility for debugging and error tracking. + * @returns A promise that resolves to the value returned by the `onImported` callback, if provided. + * + * @throws An error if the `filename` is not provided or if the module import fails. + */ +export declare function importFile(filename: string, options?: { + onImported?: (module: any) => Awaitable; + logCb?: (msg: string) => void; +} & TraceOptions): Promise; +/** + * Imports and executes the default export of a given file as a function. + * + * @param ctx0 - The prompt context to pass to the imported function. + * @param r - The prompt script object containing the filename and system prompt information. + * @param options - Optional configuration: + * - logCb: A callback for logging messages. + * - TraceOptions: Additional tracing options. + * + * @throws Error if the imported file is a system prompt and does not export a default function. + * @returns A promise that resolves when the function execution is complete. + */ +export declare function importPrompt(ctx0: PromptContext, r: PromptScript, options?: { + logCb?: (msg: string) => void; +} & TraceOptions): Promise; +//# sourceMappingURL=importprompt.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/importprompt.d.ts.map b/packages/core/.tshy-build/browser/importprompt.d.ts.map new file mode 100644 index 0000000000..0747ddf104 --- /dev/null +++ b/packages/core/.tshy-build/browser/importprompt.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"importprompt.d.ts","sourceRoot":"","sources":["../../src/importprompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAezE;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,IAAI,EACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,GAAG,YAAY,GACf,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,CAAC,EAAE,YAAY,EACf,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,GAAG,YAAY,iBAmBjB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/importprompt.js b/packages/core/.tshy-build/browser/importprompt.js new file mode 100644 index 0000000000..fb67f6e9f3 --- /dev/null +++ b/packages/core/.tshy-build/browser/importprompt.js @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveRuntimeHost } from "./host.js"; +import { logError } from "./util.js"; +import { pathToFileURL } from "node:url"; +import { mark } from "./performance.js"; +import { getModulePaths } from "./pathUtils.js"; +import { tsImport, register } from "tsx/esm/api"; +import { genaiscriptDebug } from "./debug.js"; +import { errorMessage } from "./error.js"; +import { isAbsolute, join } from "node:path"; +const dbg = genaiscriptDebug("tsx"); +const dbgi = genaiscriptDebug("tsx:import"); +const { __filename } = typeof module !== "undefined" && module.filename + ? getModulePaths(module) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + getModulePaths(import.meta); +/** + * Dynamically imports a JavaScript module from a specified file. + * + * @param filename - The path of the file to be imported. Must be a valid string. + * @param options - Optional parameters: + * - onImported: A callback executed after the module is imported. Receives the module as an argument. + * - logCb: A callback for logging messages. + * - trace: Optional tracing utility for debugging and error tracking. + * @returns A promise that resolves to the value returned by the `onImported` callback, if provided. + * + * @throws An error if the `filename` is not provided or if the module import fails. + */ +export async function importFile(filename, options) { + const { trace, onImported } = options || {}; + if (!filename) { + throw new Error("filename is required"); + } + const runtimeHost = resolveRuntimeHost(); + let unregister = undefined; + try { + const modulePath = pathToFileURL(isAbsolute(filename) ? filename : join(runtimeHost.projectFolder(), filename)).toString(); + const parentURL = pathToFileURL(__filename).toString(); + const onImport = (_file) => dbgi(`%s`, _file); + dbg(`import %s, parent %s`, modulePath, parentURL); + unregister = register({ onImport }); + const module = await tsImport(modulePath, { + parentURL, + // tsconfig: false, + onImport, + }); + const result = await onImported?.(module); + unregister?.(); + return result; + } + catch (err) { + dbg(`error %s`, errorMessage(err)); + unregister?.(); + logError(err); + trace?.error(err); + throw err; + } +} +/** + * Imports and executes the default export of a given file as a function. + * + * @param ctx0 - The prompt context to pass to the imported function. + * @param r - The prompt script object containing the filename and system prompt information. + * @param options - Optional configuration: + * - logCb: A callback for logging messages. + * - TraceOptions: Additional tracing options. + * + * @throws Error if the imported file is a system prompt and does not export a default function. + * @returns A promise that resolves when the function execution is complete. + */ +export async function importPrompt(ctx0, r, options) { + mark("prompt.import"); + const { filename } = r; + dbg(`importing file: ${filename}`); + return await importFile(filename, { + ...(options || {}), + onImported: async (module) => { + const main = module.default; + if (typeof main === "function") { + dbg(`found default export as function, calling`); + await main(ctx0); + } + else if (r.isSystem) { + throw new Error("system prompt using esm JavaScript (mjs, mts) must have a default function."); + } + }, + }); +} +//# sourceMappingURL=importprompt.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/importprompt.js.map b/packages/core/.tshy-build/browser/importprompt.js.map new file mode 100644 index 0000000000..99eba2124a --- /dev/null +++ b/packages/core/.tshy-build/browser/importprompt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"importprompt.js","sourceRoot":"","sources":["../../src/importprompt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/indent.d.ts b/packages/core/.tshy-build/browser/indent.d.ts new file mode 100644 index 0000000000..75de128985 --- /dev/null +++ b/packages/core/.tshy-build/browser/indent.d.ts @@ -0,0 +1,16 @@ +/** + * Indents each line of a given text by a specified indentation string. + * + * @param text - The input text to be indented. Returns the original text if it is undefined, null, or empty. + * @param indentation - The string to prepend to each line of the input text. + * @returns The indented text or the original input if it is undefined, null, or empty. + */ +export declare function indent(text: string, indentation: string): string; +/** + * Unindents a string. + * + * @param templ - Template or string to unindent. + * @param values - Values to interpolate into the template. + */ +export declare function dedent(templ: TemplateStringsArray | string, ...values: unknown[]): string; +//# sourceMappingURL=indent.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/indent.d.ts.map b/packages/core/.tshy-build/browser/indent.d.ts.map new file mode 100644 index 0000000000..b86685fa57 --- /dev/null +++ b/packages/core/.tshy-build/browser/indent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"indent.d.ts","sourceRoot":"","sources":["../../src/indent.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAMvD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAIzF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/indent.js b/packages/core/.tshy-build/browser/indent.js new file mode 100644 index 0000000000..fd1f048684 --- /dev/null +++ b/packages/core/.tshy-build/browser/indent.js @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { dedent as localDedent } from "ts-dedent"; +/** + * Indents each line of a given text by a specified indentation string. + * + * @param text - The input text to be indented. Returns the original text if it is undefined, null, or empty. + * @param indentation - The string to prepend to each line of the input text. + * @returns The indented text or the original input if it is undefined, null, or empty. + */ +export function indent(text, indentation) { + if (text === undefined || text === null || text === "") + return text; + return text + ?.split(/\r?\n/g) + .map((line) => indentation + line) + .join("\n"); +} +/** + * Unindents a string. + * + * @param templ - Template or string to unindent. + * @param values - Values to interpolate into the template. + */ +export function dedent(templ, ...values) { + if (templ === undefined) + return undefined; + if (templ === null) + return null; + return localDedent(templ, ...values); +} +//# sourceMappingURL=indent.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/indent.js.map b/packages/core/.tshy-build/browser/indent.js.map new file mode 100644 index 0000000000..785185f5fd --- /dev/null +++ b/packages/core/.tshy-build/browser/indent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"indent.js","sourceRoot":"","sources":["../../src/indent.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,WAAmB;IACtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,IAAI;QACT,EAAE,KAAK,CAAC,QAAQ,CAAC;SAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAoC,EAAE,GAAG,MAAiB;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/index-browser.d.mts.map b/packages/core/.tshy-build/browser/index-browser.d.mts.map new file mode 100644 index 0000000000..15ded47b37 --- /dev/null +++ b/packages/core/.tshy-build/browser/index-browser.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"index-browser.d.mts","sourceRoot":"","sources":["../../src/index-browser.mts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAG3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/index-browser.mjs.map b/packages/core/.tshy-build/browser/index-browser.mjs.map new file mode 100644 index 0000000000..8ec40fc9bb --- /dev/null +++ b/packages/core/.tshy-build/browser/index-browser.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-browser.mjs","sourceRoot":"","sources":["../../src/index-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAE3B,SAAS;AACT,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/index.d.ts b/packages/core/.tshy-build/browser/index.d.ts new file mode 100644 index 0000000000..2f34c4e107 --- /dev/null +++ b/packages/core/.tshy-build/browser/index.d.ts @@ -0,0 +1,8 @@ +export * from "./base64.js"; +export * from "./chattypes.js"; +export * from "./clone.js"; +export * from "./constants.js"; +export * from "./types.js"; +export * from "./server/messages.js"; +export * from "./server/wsclient.js"; +//# sourceMappingURL=index-browser.d.mts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/index.js b/packages/core/.tshy-build/browser/index.js new file mode 100644 index 0000000000..3ca28b17a9 --- /dev/null +++ b/packages/core/.tshy-build/browser/index.js @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export * from "./base64.js"; +export * from "./chattypes.js"; +export * from "./clone.js"; +export * from "./constants.js"; +export * from "./types.js"; +// Server +export * from "./server/messages.js"; +export * from "./server/wsclient.js"; +//# sourceMappingURL=index-browser.mjs.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/inflection.d.ts b/packages/core/.tshy-build/browser/inflection.d.ts new file mode 100644 index 0000000000..d64e8b5239 --- /dev/null +++ b/packages/core/.tshy-build/browser/inflection.d.ts @@ -0,0 +1,29 @@ +import { capitalize, camelize } from "inflection"; +export { capitalize, camelize }; +/** + * Splits camelCase or PascalCase text into separate words by inserting a space + * between lowercase and uppercase character boundaries. + * + * @param text - The input string to be split. If null or undefined, the function returns as is. + * @returns The modified string with spaces added between camelCase or PascalCase boundaries, or the original value if empty. + */ +export declare function splitalize(text: string): string; +/** + * Transforms a given text into a titleized format. The function first separates + * camelCase or PascalCase text into distinct words and then converts it into + * a title format where the first letter of each word is capitalized. + * + * @param text - The input string to be titleized. If the input is null or empty, + * it returns the input as is. + * @returns The titleized version of the input string. + */ +export declare function titleize(text: string): string; +/** + * Converts a given text into a more human-readable format by separating camelCase or PascalCase + * words and applying a humanization transformation. + * + * @param text - The input text to be humanized. If the input is falsy, it will be returned as is. + * @returns The humanized version of the input text. + */ +export declare function humanize(text: string): string; +//# sourceMappingURL=inflection.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/inflection.d.ts.map b/packages/core/.tshy-build/browser/inflection.d.ts.map new file mode 100644 index 0000000000..bd9df658e4 --- /dev/null +++ b/packages/core/.tshy-build/browser/inflection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"inflection.d.ts","sourceRoot":"","sources":["../../src/inflection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiD,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAEhC;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAGtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,UAGpC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,UAGpC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/inflection.js b/packages/core/.tshy-build/browser/inflection.js new file mode 100644 index 0000000000..a9fae74fcb --- /dev/null +++ b/packages/core/.tshy-build/browser/inflection.js @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { titleize as _titlelize, humanize as _humanize, capitalize, camelize } from "inflection"; +export { capitalize, camelize }; +/** + * Splits camelCase or PascalCase text into separate words by inserting a space + * between lowercase and uppercase character boundaries. + * + * @param text - The input string to be split. If null or undefined, the function returns as is. + * @returns The modified string with spaces added between camelCase or PascalCase boundaries, or the original value if empty. + */ +export function splitalize(text) { + if (!text) + return text; + return text?.replace(/([a-z])([A-Z])/g, "$1 $2"); +} +/** + * Transforms a given text into a titleized format. The function first separates + * camelCase or PascalCase text into distinct words and then converts it into + * a title format where the first letter of each word is capitalized. + * + * @param text - The input string to be titleized. If the input is null or empty, + * it returns the input as is. + * @returns The titleized version of the input string. + */ +export function titleize(text) { + if (!text) + return text; + return _titlelize(splitalize(text)); +} +/** + * Converts a given text into a more human-readable format by separating camelCase or PascalCase + * words and applying a humanization transformation. + * + * @param text - The input text to be humanized. If the input is falsy, it will be returned as is. + * @returns The humanized version of the input text. + */ +export function humanize(text) { + if (!text) + return text; + return _humanize(splitalize(text)); +} +//# sourceMappingURL=inflection.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/inflection.js.map b/packages/core/.tshy-build/browser/inflection.js.map new file mode 100644 index 0000000000..6cce1d0651 --- /dev/null +++ b/packages/core/.tshy-build/browser/inflection.js.map @@ -0,0 +1 @@ +{"version":3,"file":"inflection.js","sourceRoot":"","sources":["../../src/inflection.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,QAAQ,IAAI,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ini.d.ts b/packages/core/.tshy-build/browser/ini.d.ts new file mode 100644 index 0000000000..62aad1550a --- /dev/null +++ b/packages/core/.tshy-build/browser/ini.d.ts @@ -0,0 +1,25 @@ +/** + * Parses an INI formatted string after cleaning it by removing fencing and resolving file content. + * + * @param text - INI formatted string or file content to process + * @returns Parsed object + */ +export declare function INIParse(text: string): { + [key: string]: any; +}; +/** + * Parses an INI formatted string, logs errors if parsing fails, and returns a default value. + * + * @param text - The INI formatted string or file content to parse + * @param defaultValue - The value to return if parsing fails + * @returns The parsed object or the default value + */ +export declare function INITryParse(text: string, defaultValue?: any): any; +/** + * Converts an object into an INI formatted string. + * + * @param o - The object to stringify + * @returns The INI formatted string + */ +export declare function INIStringify(o: any): string; +//# sourceMappingURL=ini.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ini.d.ts.map b/packages/core/.tshy-build/browser/ini.d.ts.map new file mode 100644 index 0000000000..78ff244377 --- /dev/null +++ b/packages/core/.tshy-build/browser/ini.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ini.d.ts","sourceRoot":"","sources":["../../src/ini.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM;;EAIpC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,OAO3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,UAElC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ini.js b/packages/core/.tshy-build/browser/ini.js new file mode 100644 index 0000000000..5887b1ac29 --- /dev/null +++ b/packages/core/.tshy-build/browser/ini.js @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides functions to parse and stringify INI formatted strings, +// with error handling and utility support for cleaning up the input content. +// Import the parse and stringify functions from the "ini" library +import { parse, stringify } from "ini"; +// Import a utility function to log errors +import { logError } from "./util.js"; +// Import a custom function to clean up INI content by removing any fencing +import { unfence } from "./unwrappers.js"; +import { filenameOrFileToContent } from "./unwrappers.js"; +/** + * Parses an INI formatted string after cleaning it by removing fencing and resolving file content. + * + * @param text - INI formatted string or file content to process + * @returns Parsed object + */ +export function INIParse(text) { + text = filenameOrFileToContent(text); + const cleaned = unfence(text, "ini"); // Remove any fencing from the text + return parse(cleaned); // Parse the cleaned text into an object +} +/** + * Parses an INI formatted string, logs errors if parsing fails, and returns a default value. + * + * @param text - The INI formatted string or file content to parse + * @param defaultValue - The value to return if parsing fails + * @returns The parsed object or the default value + */ +export function INITryParse(text, defaultValue) { + try { + return INIParse(text); // Attempt to parse the text + } + catch (e) { + logError(e); // Log any parsing errors + return defaultValue; // Return the default value if parsing fails + } +} +/** + * Converts an object into an INI formatted string. + * + * @param o - The object to stringify + * @returns The INI formatted string + */ +export function INIStringify(o) { + return stringify(o); // Convert the object to an INI formatted string +} +//# sourceMappingURL=ini.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ini.js.map b/packages/core/.tshy-build/browser/ini.js.map new file mode 100644 index 0000000000..0caf64aeee --- /dev/null +++ b/packages/core/.tshy-build/browser/ini.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ini.js","sourceRoot":"","sources":["../../src/ini.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,+EAA+E;AAC/E,6EAA6E;AAE7E,kEAAkE;AAClE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAEvC,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,2EAA2E;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,mCAAmC;IACzE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,YAAkB;IAC1D,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;QACtC,OAAO,YAAY,CAAC,CAAC,4CAA4C;IACnE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAAM;IACjC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD;AACvE,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jinja.d.ts b/packages/core/.tshy-build/browser/jinja.d.ts new file mode 100644 index 0000000000..ecd509a337 --- /dev/null +++ b/packages/core/.tshy-build/browser/jinja.d.ts @@ -0,0 +1,31 @@ +import type { ChatCompletionMessageParam } from "./chattypes.js"; +/** + * Renders a string template using the Jinja templating engine. + * + * This function takes a Jinja template string and an object containing + * key-value pairs. It uses the Jinja engine to replace placeholders + * in the template with the corresponding values from the object. + * + * @param template - The string containing Jinja template syntax. + * @param values - An object with key-value pairs to replace in the template. + * @returns The rendered string with values substituted. + */ +export declare function jinjaRender(template: string, values: Record): string; +/** + * Renders a chat message using Jinja template syntax. + * + * This function processes a chat message object and renders its content + * using provided arguments. The content can include text, image URLs, + * or refusal messages, which are formatted into a Jinja-compatible + * template string before substitution. + * + * @param msg - The chat message object containing the content to render. + * If the content is a string, it is used directly; otherwise, its + * components are processed based on their type. + * @param args - A key-value mapping of arguments to replace the placeholders + * within the Jinja template derived from the chat message content. + * @returns The rendered string with the placeholders substituted using the + * provided arguments. + */ +export declare function jinjaRenderChatMessage(msg: ChatCompletionMessageParam, args: Record): string; +//# sourceMappingURL=jinja.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jinja.d.ts.map b/packages/core/.tshy-build/browser/jinja.d.ts.map new file mode 100644 index 0000000000..be7c553155 --- /dev/null +++ b/packages/core/.tshy-build/browser/jinja.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"jinja.d.ts","sourceRoot":"","sources":["../../src/jinja.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAGjE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CASjF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAWhG"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jinja.js b/packages/core/.tshy-build/browser/jinja.js new file mode 100644 index 0000000000..f0a9df43db --- /dev/null +++ b/packages/core/.tshy-build/browser/jinja.js @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import the Template class from the @huggingface/jinja package +import { Template } from "@huggingface/jinja"; +import { collapseEmptyLines } from "./util.js"; +/** + * Renders a string template using the Jinja templating engine. + * + * This function takes a Jinja template string and an object containing + * key-value pairs. It uses the Jinja engine to replace placeholders + * in the template with the corresponding values from the object. + * + * @param template - The string containing Jinja template syntax. + * @param values - An object with key-value pairs to replace in the template. + * @returns The rendered string with values substituted. + */ +export function jinjaRender(template, values) { + // Create a new Template instance with the provided template string + const t = new Template(template); + // Render the template using the provided values + const res = t.render(values); + // Return the rendered string + return collapseEmptyLines(res); +} +/** + * Renders a chat message using Jinja template syntax. + * + * This function processes a chat message object and renders its content + * using provided arguments. The content can include text, image URLs, + * or refusal messages, which are formatted into a Jinja-compatible + * template string before substitution. + * + * @param msg - The chat message object containing the content to render. + * If the content is a string, it is used directly; otherwise, its + * components are processed based on their type. + * @param args - A key-value mapping of arguments to replace the placeholders + * within the Jinja template derived from the chat message content. + * @returns The rendered string with the placeholders substituted using the + * provided arguments. + */ +export function jinjaRenderChatMessage(msg, args) { + const { content } = msg; + const template = []; + if (typeof content === "string") + template.push(content); + else + for (const part of content) { + if (part.type === "text") + template.push(part.text); + else if (part.type === "image_url") + template.push(`![](${part.image_url})`); + else if (part.type === "refusal") + template.push(`refusal: ${part.refusal}`); + } + return jinjaRender(template.join("\n"), args); +} +//# sourceMappingURL=jinja.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jinja.js.map b/packages/core/.tshy-build/browser/jinja.js.map new file mode 100644 index 0000000000..8e5f9190d6 --- /dev/null +++ b/packages/core/.tshy-build/browser/jinja.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jinja.js","sourceRoot":"","sources":["../../src/jinja.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,gEAAgE;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,MAA2B;IACvE,mEAAmE;IACnE,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjC,gDAAgD;IAChD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE7B,6BAA6B;IAC7B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAA+B,EAAE,IAAyB;IAC/F,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACxB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAEtD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;iBACvE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/json5.d.ts b/packages/core/.tshy-build/browser/json5.d.ts new file mode 100644 index 0000000000..6b669eb217 --- /dev/null +++ b/packages/core/.tshy-build/browser/json5.d.ts @@ -0,0 +1,65 @@ +/** + * This module provides functions for parsing and repairing JSON5 strings, + * as well as utilities for handling fenced code blocks. + * + * Tags: JSON5, Parsing, Repair, Fenced Blocks + */ +import json5Pkg from "json5"; +/** + * Checks if the input text starts with '{' or '[', indicating a JSON object or array. + * Removes leading whitespace before evaluation. + * @param text - The input string to check. + * @returns True if the string starts with '{' or '[', false otherwise. + */ +export declare function isJSONObjectOrArray(text: string): boolean; +/** + * Parses the input text as JSON. Returns undefined if parsing fails. + * @param text - The input string to parse as JSON. + * @returns The parsed object or undefined if parsing fails. + */ +export declare function JSONTryParse(text: string): any; +/** + * Repairs a potentially broken JSON string using jsonrepair. + * @param text - The JSON string to repair. + * @returns The repaired JSON string. + */ +export declare function JSONrepair(text: string): string; +/** + * Parses a JSON5 string with optional error handling and repair. + * Removes fencing if present. + * @param text - The JSON5 string to parse. + * @param options - An object containing: + * - defaultValue: The value to return if parsing fails. + * - errorAsDefaultValue: Whether to return the default value on error. + * - repair: Whether to attempt repairing the input before parsing. + * @returns The parsed object, the default value, or undefined/null based on options. + */ +export declare function JSON5parse(text: string, options?: { + defaultValue?: T; + errorAsDefaultValue?: boolean; + repair?: boolean; +}): T | undefined | null; +/** + * Tries to parse a JSON5 string and returns a default value if parsing fails. + * @param text - The JSON5 string to parse. + * @param defaultValue - The value to return if parsing fails. + * @returns The parsed object or the default value. + */ +/** + * Tries to parse a JSON5 string and returns a default value if parsing fails. + * + * @param text - The JSON5 string to parse. Can be undefined, null, or empty. + * @param defaultValue - The value to return if parsing fails or if the input is empty. + * @returns The parsed object, default value, or null/undefined based on input. + */ +export declare function JSON5TryParse(text: string | undefined | null, defaultValue?: T): T | undefined | null; +/** + * Parses a JSON-like string, removes fencing and unnecessary formatting, and returns the parsed object. + * If the input is undefined or null, returns it as-is. If the input is an empty string, returns an empty object. + * Removes fencing and applies additional cleaning before parsing. + * @param s - The JSON-like string to parse. Can be undefined, null, or empty. Fencing and unnecessary formatting are removed. + * @returns The parsed object, the original input, or an empty object if input is empty. + */ +export declare function JSONLLMTryParse(s: string): any; +export declare const JSON5Stringify: typeof json5Pkg.stringify; +//# sourceMappingURL=json5.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/json5.d.ts.map b/packages/core/.tshy-build/browser/json5.d.ts.map new file mode 100644 index 0000000000..bead6448a4 --- /dev/null +++ b/packages/core/.tshy-build/browser/json5.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json5.d.ts","sourceRoot":"","sources":["../../src/json5.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAGH,OAAO,QAAQ,MAAM,OAAO,CAAC;AAU7B;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,WAG/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,OAMxC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAItC;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,CAAC,GAAG,SAAS,GAAG,IAAI,CAyBtB;AAED;;;;;GAKG;AACH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EACvC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,YAAY,CAAC,EAAE,CAAC,GACf,CAAC,GAAG,SAAS,GAAG,IAAI,CAStB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAM9C;AAGD,eAAO,MAAM,cAAc,2BAAY,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/json5.js b/packages/core/.tshy-build/browser/json5.js new file mode 100644 index 0000000000..81de2fdc7e --- /dev/null +++ b/packages/core/.tshy-build/browser/json5.js @@ -0,0 +1,134 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* eslint-disable curly */ +/** + * This module provides functions for parsing and repairing JSON5 strings, + * as well as utilities for handling fenced code blocks. + * + * Tags: JSON5, Parsing, Repair, Fenced Blocks + */ +// Importing parse and stringify functions from the json5 library. +import json5Pkg from "json5"; +const { parse, stringify } = json5Pkg; +// Importing jsonrepair function for fixing broken JSON strings. +import { jsonrepair } from "jsonrepair"; +// Importing unfence function to handle fenced code blocks. +import { unfence } from "./unwrappers.js"; +import { unthink } from "./think.js"; +/** + * Checks if the input text starts with '{' or '[', indicating a JSON object or array. + * Removes leading whitespace before evaluation. + * @param text - The input string to check. + * @returns True if the string starts with '{' or '[', false otherwise. + */ +export function isJSONObjectOrArray(text) { + // Tests if the input string starts with '{' or '[' after removing any leading whitespace. + return /^\s*[\{\[]/.test(text); +} +/** + * Parses the input text as JSON. Returns undefined if parsing fails. + * @param text - The input string to parse as JSON. + * @returns The parsed object or undefined if parsing fails. + */ +export function JSONTryParse(text) { + try { + return JSON.parse(text); + } + catch (e) { + return undefined; + } +} +/** + * Repairs a potentially broken JSON string using jsonrepair. + * @param text - The JSON string to repair. + * @returns The repaired JSON string. + */ +export function JSONrepair(text) { + // Uses jsonrepair to fix any issues in the JSON string. + const repaired = jsonrepair(text); + return repaired; +} +/** + * Parses a JSON5 string with optional error handling and repair. + * Removes fencing if present. + * @param text - The JSON5 string to parse. + * @param options - An object containing: + * - defaultValue: The value to return if parsing fails. + * - errorAsDefaultValue: Whether to return the default value on error. + * - repair: Whether to attempt repairing the input before parsing. + * @returns The parsed object, the default value, or undefined/null based on options. + */ +export function JSON5parse(text, options) { + try { + // Remove fencing if present. + text = unfence(text, "json"); + if (options?.repair) { + try { + // Attempt parsing without repairing first. + const res = parse(text); + return res; + } + catch { + // Repair and parse if initial parsing fails. + const repaired = JSONrepair(text); + const res = parse(repaired); + return res ?? options?.defaultValue; + } + } + else { + // Parse without repair if repair option is false. + const res = parse(text); + return res; + } + } + catch (e) { + // Return default value if error occurs and errorAsDefaultValue is true. + if (options?.errorAsDefaultValue) + return options?.defaultValue; + throw e; + } +} +/** + * Tries to parse a JSON5 string and returns a default value if parsing fails. + * @param text - The JSON5 string to parse. + * @param defaultValue - The value to return if parsing fails. + * @returns The parsed object or the default value. + */ +/** + * Tries to parse a JSON5 string and returns a default value if parsing fails. + * + * @param text - The JSON5 string to parse. Can be undefined, null, or empty. + * @param defaultValue - The value to return if parsing fails or if the input is empty. + * @returns The parsed object, default value, or null/undefined based on input. + */ +export function JSON5TryParse(text, defaultValue) { + if (text === undefined) + return undefined; + if (text === null) + return null; + // Uses JSON5parse with repair option and errorAsDefaultValue set to true. + return JSON5parse(text, { + defaultValue, + errorAsDefaultValue: true, + repair: true, + }); +} +/** + * Parses a JSON-like string, removes fencing and unnecessary formatting, and returns the parsed object. + * If the input is undefined or null, returns it as-is. If the input is an empty string, returns an empty object. + * Removes fencing and applies additional cleaning before parsing. + * @param s - The JSON-like string to parse. Can be undefined, null, or empty. Fencing and unnecessary formatting are removed. + * @returns The parsed object, the original input, or an empty object if input is empty. + */ +export function JSONLLMTryParse(s) { + if (s === undefined || s === null) + return s; + if (s === "") + return {}; + // Removes any fencing and then tries to parse the string. + const cleaned = unfence(unthink(s), "json"); + return JSON5TryParse(cleaned); +} +// Export the JSON5 stringify function directly for convenience. +export const JSON5Stringify = stringify; +//# sourceMappingURL=json5.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/json5.js.map b/packages/core/.tshy-build/browser/json5.js.map new file mode 100644 index 0000000000..cba291cdf2 --- /dev/null +++ b/packages/core/.tshy-build/browser/json5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"json5.js","sourceRoot":"","sources":["../../src/json5.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonl.d.ts b/packages/core/.tshy-build/browser/jsonl.d.ts new file mode 100644 index 0000000000..795ff315ce --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonl.d.ts @@ -0,0 +1,44 @@ +import type { JSONLObject } from "./types.js"; +/** + * Determines if a given filename has a JSONL-compatible extension. + * + * @param fn - The filename to evaluate. + * @returns True if the filename ends with .jsonl, .mdjson, or .ldjson (case-insensitive), otherwise false. + */ +export declare function isJSONLFilename(fn: string): boolean; +/** + * Parses a JSONL (JSON Lines) formatted string into an array of objects. + * + * @param text - The string containing JSONL data. If empty, an empty array is returned. + * @param options - Optional. Contains parsing configuration: + * - repair: If true, attempts to repair invalid JSON during parsing. + * + * @returns An array of parsed objects. Lines that fail parsing or are empty are skipped. + */ +export declare function JSONLTryParse(text: string, options?: { + repair?: boolean; +}): any[]; +/** + * Converts an array of objects into a JSON Lines (JSONL) formatted string. + * + * @param objs - The array of objects to be serialized. Objects that are undefined or null are excluded from the output. + * @returns A string where each object in the array is serialized as a JSON string and separated by newlines. Returns an empty string if the input array is empty or null. + */ +export declare function JSONLStringify(objs: any[]): string; +/** + * Writes a JSON Lines (JSONL) file. Overwrites the file if it already exists. + * + * @param fn - The name of the file to write. + * @param objs - An array of objects to serialize and write to the file. + */ +export declare function writeJSONL(fn: string, objs: any[]): Promise; +/** + * Appends objects to a JSON Lines (JSONL) file. If metadata is provided, it will be added to each object before appending. + * + * @param name - The name of the JSONL file to append to. + * @param objs - The objects to be appended to the file. + * @param meta - Optional metadata to include in each appended object under the `__meta` key. + */ +export declare function appendJSONL(name: string, objs: object | object[], meta?: any): Promise; +export declare function createJSONL(): Readonly; +//# sourceMappingURL=jsonl.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonl.d.ts.map b/packages/core/.tshy-build/browser/jsonl.d.ts.map new file mode 100644 index 0000000000..42b224620d --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/jsonl.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY9C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,WAEzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,GAAG,EAAE,CASP;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAQzC;AAkBD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,iBAEvD;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,iBASlF;AAED,wBAAgB,WAAW,0BAM1B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonl.js b/packages/core/.tshy-build/browser/jsonl.js new file mode 100644 index 0000000000..a6b0bf3e05 --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonl.js @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveRuntimeHost } from "./host.js"; +import { JSON5TryParse } from "./json5.js"; +import { concatBuffers } from "./util.js"; +import { arrayify } from "./cleaners.js"; +import { createUTF8Encoder } from "./utf8.js"; +function tryReadFile(fn) { + const runtimeHost = resolveRuntimeHost(); + return runtimeHost.readFile(fn).then((r) => r, (_) => null); +} +/** + * Determines if a given filename has a JSONL-compatible extension. + * + * @param fn - The filename to evaluate. + * @returns True if the filename ends with .jsonl, .mdjson, or .ldjson (case-insensitive), otherwise false. + */ +export function isJSONLFilename(fn) { + return /\.(jsonl|mdjson|ldjson)$/i.test(fn); +} +/** + * Parses a JSONL (JSON Lines) formatted string into an array of objects. + * + * @param text - The string containing JSONL data. If empty, an empty array is returned. + * @param options - Optional. Contains parsing configuration: + * - repair: If true, attempts to repair invalid JSON during parsing. + * + * @returns An array of parsed objects. Lines that fail parsing or are empty are skipped. + */ +export function JSONLTryParse(text, options) { + if (!text) + return []; + const res = []; + const lines = text.split("\n"); + for (const line of lines.filter((l) => !!l.trim())) { + const obj = JSON5TryParse(line, options); + if (obj !== undefined && obj !== null) + res.push(obj); + } + return res; +} +/** + * Converts an array of objects into a JSON Lines (JSONL) formatted string. + * + * @param objs - The array of objects to be serialized. Objects that are undefined or null are excluded from the output. + * @returns A string where each object in the array is serialized as a JSON string and separated by newlines. Returns an empty string if the input array is empty or null. + */ +export function JSONLStringify(objs) { + if (!objs?.length) + return ""; + const acc = []; + for (const o of objs.filter((o) => o !== undefined && o !== null)) { + const s = JSON.stringify(o); + acc.push(s); + } + return acc.join("\n") + "\n"; +} +function serialize(objs) { + const acc = JSONLStringify(objs); + const buf = createUTF8Encoder().encode(acc); + return buf; +} +async function writeJSONLCore(fn, objs, append) { + let buf = serialize(objs); + if (append) { + const curr = await tryReadFile(fn); + if (curr) + buf = concatBuffers(curr, buf); + } + const runtimeHost = resolveRuntimeHost(); + await runtimeHost.writeFile(fn, buf); +} +/** + * Writes a JSON Lines (JSONL) file. Overwrites the file if it already exists. + * + * @param fn - The name of the file to write. + * @param objs - An array of objects to serialize and write to the file. + */ +export async function writeJSONL(fn, objs) { + await writeJSONLCore(fn, objs, false); +} +/** + * Appends objects to a JSON Lines (JSONL) file. If metadata is provided, it will be added to each object before appending. + * + * @param name - The name of the JSONL file to append to. + * @param objs - The objects to be appended to the file. + * @param meta - Optional metadata to include in each appended object under the `__meta` key. + */ +export async function appendJSONL(name, objs, meta) { + const row = arrayify(objs); + if (meta) + await writeJSONLCore(name, row.map((obj) => ({ ...obj, __meta: meta })), true); + else + await writeJSONLCore(name, row, true); +} +export function createJSONL() { + return Object.freeze({ + parse: JSONLTryParse, + stringify: JSONLStringify, + append: appendJSONL, + }); +} +//# sourceMappingURL=jsonl.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonl.js.map b/packages/core/.tshy-build/browser/jsonl.js.map new file mode 100644 index 0000000000..8f815f763a --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../src/jsonl.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonlinecache.d.ts b/packages/core/.tshy-build/browser/jsonlinecache.d.ts new file mode 100644 index 0000000000..71a7c8f71d --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonlinecache.d.ts @@ -0,0 +1,22 @@ +import type { CacheEntry } from "./cache.js"; +import { MemoryCache } from "./memcache.js"; +/** + * A cache class that manages entries stored in JSONL format. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export declare class JSONLineCache extends MemoryCache { + readonly name: string; + constructor(name: string); + private folder; + private path; + private _initializePromise; + /** + * Initialize the cache by loading entries from the file. + * Identifies duplicate entries and rewrites the file if necessary. + */ + initialize(): Promise; + appendEntry(ent: CacheEntry): Promise; +} +//# sourceMappingURL=jsonlinecache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonlinecache.d.ts.map b/packages/core/.tshy-build/browser/jsonlinecache.d.ts.map new file mode 100644 index 0000000000..1bb0b53555 --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonlinecache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonlinecache.d.ts","sourceRoot":"","sources":["../../src/jsonlinecache.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,aAAa,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;aAE5B,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAKxC,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,kBAAkB,CAAgB;IAC1C;;;OAGG;IACY,UAAU;IA8BV,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;CAG9C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonlinecache.js b/packages/core/.tshy-build/browser/jsonlinecache.js new file mode 100644 index 0000000000..05cea380be --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonlinecache.js @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { appendJSONL, JSONLTryParse, writeJSONL } from "./jsonl.js"; +import { resolveRuntimeHost } from "./host.js"; +import { tryReadText } from "./fs.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { MemoryCache } from "./memcache.js"; +/** + * A cache class that manages entries stored in JSONL format. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export class JSONLineCache extends MemoryCache { + name; + // Constructor is private to enforce the use of byName factory method + constructor(name) { + super(name); // Initialize EventTarget + this.name = name; + } + // Get the folder path for the cache storage + folder() { + return dotGenaiscriptPath("cache", this.name); + } + // Get the full path to the cache file + path() { + const runtimeHost = resolveRuntimeHost(); + return runtimeHost.resolvePath(this.folder(), "db.jsonl"); + } + _initializePromise; + /** + * Initialize the cache by loading entries from the file. + * Identifies duplicate entries and rewrites the file if necessary. + */ + async initialize() { + if (this._entries) + return; + if (this._initializePromise) + return await this._initializePromise; + this._initializePromise = (async () => { + const runtimeHost = resolveRuntimeHost(); + await runtimeHost.createDirectory(this.folder()); // Ensure directory exists + const content = await tryReadText(this.path()); + const entries = {}; + const objs = (await JSONLTryParse(content)) ?? []; + let numdup = 0; // Counter for duplicates + for (const obj of objs) { + if (entries[obj.sha]) + numdup++; // Count duplicates + entries[obj.sha] = obj; + } + if (2 * numdup > objs.length) { + // Rewrite file if too many duplicates + await writeJSONL(this.path(), objs.filter((o) => entries[o.sha] === o)); + } + // success + super.initialize(); + this._entries = entries; + this._initializePromise = undefined; + })(); + return this._initializePromise; + } + async appendEntry(ent) { + await appendJSONL(this.path(), [ent]); // Append to file + } +} +//# sourceMappingURL=jsonlinecache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/jsonlinecache.js.map b/packages/core/.tshy-build/browser/jsonlinecache.js.map new file mode 100644 index 0000000000..0189508d14 --- /dev/null +++ b/packages/core/.tshy-build/browser/jsonlinecache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonlinecache.js","sourceRoot":"","sources":["../../src/jsonlinecache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,OAAO,aAAoB,SAAQ,WAAiB;IAE5B;IAD5B,qEAAqE;IACrE,YAA4B,IAAY;QACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;QADZ,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;IAED,4CAA4C;IACpC,MAAM;QACZ,OAAO,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,sCAAsC;IAC9B,IAAI;QACV,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAEO,kBAAkB,CAAgB;IAC1C;;;OAGG;IACM,KAAK,CAAC,UAAU;QACvB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC;QAElE,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;YACzC,MAAM,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,0BAA0B;YAC5E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAkC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAoB,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,yBAAyB;YACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM,EAAE,CAAC,CAAC,mBAAmB;gBACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,sCAAsC;gBACtC,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,EAAE,EACX,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACzC,CAAC;YACJ,CAAC;YACD,UAAU;YACV,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,GAAkB;QAC3C,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAC1D,CAAC;CACF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/levenshtein.d.ts b/packages/core/.tshy-build/browser/levenshtein.d.ts new file mode 100644 index 0000000000..d02e0b095a --- /dev/null +++ b/packages/core/.tshy-build/browser/levenshtein.d.ts @@ -0,0 +1,2 @@ +export declare function levenshteinDistance(a: string, b: string): Promise; +//# sourceMappingURL=levenshtein.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/levenshtein.d.ts.map b/packages/core/.tshy-build/browser/levenshtein.d.ts.map new file mode 100644 index 0000000000..6222c4cade --- /dev/null +++ b/packages/core/.tshy-build/browser/levenshtein.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"levenshtein.d.ts","sourceRoot":"","sources":["../../src/levenshtein.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI/E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/levenshtein.js b/packages/core/.tshy-build/browser/levenshtein.js new file mode 100644 index 0000000000..05f256bbc5 --- /dev/null +++ b/packages/core/.tshy-build/browser/levenshtein.js @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export async function levenshteinDistance(a, b) { + // Using the fastest-levenshtein package for efficient distance calculation + const { distance } = await import("fastest-levenshtein"); + return distance(a, b); +} +//# sourceMappingURL=levenshtein.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/levenshtein.js.map b/packages/core/.tshy-build/browser/levenshtein.js.map new file mode 100644 index 0000000000..e69456b319 --- /dev/null +++ b/packages/core/.tshy-build/browser/levenshtein.js.map @@ -0,0 +1 @@ +{"version":3,"file":"levenshtein.js","sourceRoot":"","sources":["../../src/levenshtein.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,CAAS,EAAE,CAAS;IAC5D,2EAA2E;IAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/liner.d.ts b/packages/core/.tshy-build/browser/liner.d.ts new file mode 100644 index 0000000000..dbb8f812fb --- /dev/null +++ b/packages/core/.tshy-build/browser/liner.d.ts @@ -0,0 +1,43 @@ +/** + * Adds 1-based line numbers to each line of the input text. + * If the language is "diff" or the text is detected as a diff, processes it using llmifyDiff. + * + * @param text - The input text to process. + * @param options - Optional parameters: + * - language: Specifies the language format (e.g., "diff"). + * - startLine: The starting line number for numbering (default is 1). + * @returns The text with line numbers added, the original text if it is too small, or processed diff text if applicable. + */ +export declare function addLineNumbers(text: string, options?: { + language?: string; + startLine?: number; +}): string; +/** + * Removes line numbers from each line of a given text. + * Assumes line numbers are in the format "[number] ". + * + * @param text - The text from which line numbers will be removed. + * @returns The text without line numbers, or the original text if no line numbers are found. + */ +export declare function removeLineNumbers(text: string): string; +/** + * Extracts a line range from the text using 1-based inclusive line numbers. + * + * @param text - The input text from which to extract the range. + * @param options - An object specifying the line range. + * - lineStart: The 1-based starting line number of the range. + * - lineEnd: The 1-based ending line number of the range. + * @returns The extracted range of text or the original text if no valid range is provided. + */ +export declare function extractRange(text: string, options?: { + lineStart?: number; + lineEnd?: number; +}): string; +/** + * Converts a string position index to a line number. + * @param text - The text in which to find the line number. + * @param index - The position index within the text. + * @returns The line number corresponding to the position index, starting from 1. + */ +export declare function indexToLineNumber(text: string, index: number): number; +//# sourceMappingURL=liner.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/liner.d.ts.map b/packages/core/.tshy-build/browser/liner.d.ts.map new file mode 100644 index 0000000000..55ff8bea24 --- /dev/null +++ b/packages/core/.tshy-build/browser/liner.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"liner.d.ts","sourceRoot":"","sources":["../../src/liner.ts"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,UAc/F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,UAQ7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,UAQ5F;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUrE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/liner.js b/packages/core/.tshy-build/browser/liner.js new file mode 100644 index 0000000000..7f6023e092 --- /dev/null +++ b/packages/core/.tshy-build/browser/liner.js @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides functions to add and remove line numbers from text. +// It includes special handling for "diff" formatted text. +import { llmifyDiff } from "./llmdiff.js"; +import { MIN_LINE_NUMBER_LENGTH } from "./constants.js"; +import { tryDiffParse } from "./diff.js"; +/** + * Adds 1-based line numbers to each line of the input text. + * If the language is "diff" or the text is detected as a diff, processes it using llmifyDiff. + * + * @param text - The input text to process. + * @param options - Optional parameters: + * - language: Specifies the language format (e.g., "diff"). + * - startLine: The starting line number for numbering (default is 1). + * @returns The text with line numbers added, the original text if it is too small, or processed diff text if applicable. + */ +export function addLineNumbers(text, options) { + const { language, startLine = 1 } = options || {}; + if (language === "diff" || tryDiffParse(text)) { + const diffed = llmifyDiff(text); // Process the text with a special function for diffs + if (diffed !== undefined) + return diffed; // Return processed text if diff handling was successful + } + // don't add line numbers for small files + const lines = text.split("\n"); // Split text into lines + if (startLine === 1 && lines.length < MIN_LINE_NUMBER_LENGTH) + return text; + return lines + .map((line, i) => `[${i + startLine}] ${line}`) // Add line numbers in the format "[line_number] " + .join("\n"); // Join lines back into a single string +} +/** + * Removes line numbers from each line of a given text. + * Assumes line numbers are in the format "[number] ". + * + * @param text - The text from which line numbers will be removed. + * @returns The text without line numbers, or the original text if no line numbers are found. + */ +export function removeLineNumbers(text) { + const rx = /^\[\d+\] /; // Regular expression to match line numbers in the format "[number] " + const lines = text.split("\n"); // Split text into lines + // Check the first 10 lines for the presence of line numbers + if (!lines.slice(0, 10).every((line) => rx.test(line))) + return text; // Return original text if not all lines have numbers + return lines.map((line) => line.replace(rx, "")).join("\n"); // Remove line numbers and join lines back +} +/** + * Extracts a line range from the text using 1-based inclusive line numbers. + * + * @param text - The input text from which to extract the range. + * @param options - An object specifying the line range. + * - lineStart: The 1-based starting line number of the range. + * - lineEnd: The 1-based ending line number of the range. + * @returns The extracted range of text or the original text if no valid range is provided. + */ +export function extractRange(text, options) { + const { lineStart, lineEnd } = options || {}; + if (isNaN(lineStart) && isNaN(lineEnd)) + return text; + const lines = text.split("\n"); + const startLine = lineStart || 1; + const endLine = lineEnd || lines.length; + return lines.slice(startLine - 1, endLine).join("\n"); +} +/** + * Converts a string position index to a line number. + * @param text - The text in which to find the line number. + * @param index - The position index within the text. + * @returns The line number corresponding to the position index, starting from 1. + */ +export function indexToLineNumber(text, index) { + if (text === undefined || text === null || index < 0 || index >= text.length) + return -1; + let lineNumber = 1; + const n = Math.min(index, text.length); + for (let i = 0; i < n; i++) { + if (text[i] === "\n") { + lineNumber++; + } + } + return lineNumber; +} +//# sourceMappingURL=liner.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/liner.js.map b/packages/core/.tshy-build/browser/liner.js.map new file mode 100644 index 0000000000..608be5e66c --- /dev/null +++ b/packages/core/.tshy-build/browser/liner.js.map @@ -0,0 +1 @@ +{"version":3,"file":"liner.js","sourceRoot":"","sources":["../../src/liner.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmdiff.d.ts b/packages/core/.tshy-build/browser/llmdiff.d.ts new file mode 100644 index 0000000000..6a7527debc --- /dev/null +++ b/packages/core/.tshy-build/browser/llmdiff.d.ts @@ -0,0 +1,55 @@ +/** + * Represents a chunk of changes in a diff. + */ +export interface Chunk { + state: "existing" | "deleted" | "added"; + lines: string[]; + lineNumbers: number[]; +} +/** + * Parses a text in the LLMD diff format into an array of chunks. + * Each chunk represents a segment of existing, added, or deleted lines. + * Adjusts line numbers, removes duplicate lines without actual changes, + * ensures proper chunk segmentation, and handles trailing empty lines. + * + * @param text - The LLMD diff text to parse. Must be a newline-separated string. + * @returns An array of chunks representing the parsed diff, with each chunk containing its state, lines, and line numbers. + */ +export declare function parseLLMDiffs(text: string): Chunk[]; +/** + * Applies a series of LLMDiff chunks to a source string. + * + * @param source - The original source content to which changes will be applied. + * @param chunks - The list of chunks representing changes, including existing, deleted, and added lines. Chunks must be in sequential order. Each chunk must have valid state and line data. + * @returns The modified source content after applying the changes, or the original content if no chunks are provided. + * @throws Error if the chunk sequence is invalid, unexpected states are encountered, or if chunk alignment fails. + */ +export declare function applyLLMDiff(source: string, chunks: Chunk[]): string; +/** + * Custom error class for handling diff-related errors. + */ +export declare class DiffError extends Error { + constructor(message: string); +} +/** + * Applies a series of LLMDiff chunks to a source string using line numbers. + * Processes modified and deleted chunks, then inserts added chunks in sequence. + * Ensures valid line numbers and updates the source content accordingly. + * + * @param source - The original source content to modify. + * @param chunks - The list of chunks representing changes, including added, deleted, and existing lines. Chunks must be in sequence and contain valid line numbers. + * @returns The updated source content after applying the changes. Filters out undefined lines resulting from deletions. + * @throws DiffError if invalid or missing line numbers are encountered. + */ +export declare function applyLLMPatch(source: string, chunks: Chunk[]): string; +/** + * Converts a diff string into the LLMDiff format. + * Parses the input diff string using the parse-diff library, processes it into a structured format, and converts it back to a unified diff format with LLMDiff annotations. + * Updates line numbers for changes and includes them in the output. + * Returns the LLMDiff formatted string or undefined if parsing fails. + * + * @param diff - The diff string to process. Must be in a supported diff format. + * @returns The LLMDiff formatted string or undefined if parsing fails. + */ +export declare function llmifyDiff(diff: string): string; +//# sourceMappingURL=llmdiff.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmdiff.d.ts.map b/packages/core/.tshy-build/browser/llmdiff.d.ts.map new file mode 100644 index 0000000000..b3978f8e78 --- /dev/null +++ b/packages/core/.tshy-build/browser/llmdiff.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"llmdiff.d.ts","sourceRoot":"","sources":["../../src/llmdiff.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAgHnD;AAkCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA4CpE;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAG5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAoCrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UA+BtC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmdiff.js b/packages/core/.tshy-build/browser/llmdiff.js new file mode 100644 index 0000000000..c7d5733ae5 --- /dev/null +++ b/packages/core/.tshy-build/browser/llmdiff.js @@ -0,0 +1,305 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { assert } from "./assert.js"; +import { tryDiffParse } from "./diff.js"; +/** + * Parses a text in the LLMD diff format into an array of chunks. + * Each chunk represents a segment of existing, added, or deleted lines. + * Adjusts line numbers, removes duplicate lines without actual changes, + * ensures proper chunk segmentation, and handles trailing empty lines. + * + * @param text - The LLMD diff text to parse. Must be a newline-separated string. + * @returns An array of chunks representing the parsed diff, with each chunk containing its state, lines, and line numbers. + */ +export function parseLLMDiffs(text) { + const lines = text.split("\n"); + const chunks = []; + // Initialize the first chunk + let chunk = { state: "existing", lines: [], lineNumbers: [] }; + chunks.push(chunk); + let currentLine = Number.NaN; + for (let i = 0; i < lines.length; ++i) { + const line = lines[i]; + const diffM = /^(\[(\d+)\] )?(-|\+) (\[(\d+)\] )?/.exec(line); + // Process lines that match the diff pattern + if (diffM) { + const l = line.substring(diffM[0].length); + let diffln = diffM ? parseInt(diffM[5] ?? diffM[2]) : Number.NaN; + const op = diffM[3]; + // Adjust line numbers + if (isNaN(diffln) && !isNaN(currentLine)) { + currentLine++; + diffln = currentLine; + if (op === "-") + currentLine--; + } + else { + currentLine = diffln; + } + // Handle added lines + if (op === "+") { + const l = line.substring(diffM[0].length); + if (lines[diffln] === l) { + // Skip duplicate line + continue; + } + if (chunk.state === "added") { + chunk.lines.push(l); + chunk.lineNumbers.push(diffln); + } + else { + chunk = { + state: "added", + lines: [l], + lineNumbers: [diffln], + }; + chunks.push(chunk); + } + } + else { + // Handle deleted lines + assert(op === "-"); + if (chunk.state === "deleted") { + chunk.lines.push(l); + chunk.lineNumbers.push(diffln); + } + else { + chunk = { + state: "deleted", + lines: [l], + lineNumbers: [diffln], + }; + chunks.push(chunk); + } + } + } + else { + // Handle existing lines + const lineM = /^\[(\d+)\] /.exec(line); + let lineNumber = lineM ? parseInt(lineM[1]) : Number.NaN; + const l = line.substring(lineM ? lineM[0].length : 0); + if (isNaN(lineNumber) && !isNaN(currentLine)) { + currentLine++; + lineNumber = currentLine; + } + else { + currentLine = lineNumber; + } + if (chunk.state === "existing") { + chunk.lines.push(l); + chunk.lineNumbers.push(lineNumber); + } + else { + chunk = { + state: "existing", + lines: [l], + lineNumbers: [lineNumber], + }; + chunks.push(chunk); + } + } + } + // Clean trailing empty lines in the last chunk + if (chunk.state === "existing") { + while (/^\s*$/.test(chunk.lines[chunk.lines.length - 1])) { + chunk.lines.pop(); + chunk.lineNumbers.pop(); + } + if (chunk.lines.length === 0) + chunks.pop(); + } + // Remove duplicate lines added without changes + for (let i = 0; i < chunks.length - 1; ++i) { + const current = chunks[i]; + const next = chunks[i + 1]; + if (current.lines.length === 1 && + next.lines.length === 1 && + current.state === "existing" && + next.state === "added" && + current.lines[0] === next.lines[0]) { + // Remove current, added line since it does not change the file + chunks.splice(i, 2); + } + } + return chunks; +} +const MIN_CHUNK_SIZE = 4; +/** + * Finds the starting position of a chunk in the given lines. + * @param lines - The array of lines to search through. + * @param chunk - The chunk to find. + * @param startLine - The line to start the search from. + * @returns The index of the starting line of the chunk, or -1 if not found. + */ +function findChunk(lines, chunk, startLine) { + const chunkLines = chunk.lines; + if (chunkLines.length === 0) + return startLine; + const chunkStart = chunkLines[0].trim(); + let linei = startLine; + while (linei < lines.length) { + const line = lines[linei].trim(); + if (line === chunkStart) { + let found = true; + let i = 1; + for (; i < Math.min(MIN_CHUNK_SIZE, chunkLines.length) && linei + i < lines.length; ++i) { + if (lines[linei + i].trim() !== chunkLines[i].trim()) { + found = false; + break; + } + } + if (found && i === chunkLines.length) + return linei; + } + ++linei; + } + return -1; +} +/** + * Applies a series of LLMDiff chunks to a source string. + * + * @param source - The original source content to which changes will be applied. + * @param chunks - The list of chunks representing changes, including existing, deleted, and added lines. Chunks must be in sequential order. Each chunk must have valid state and line data. + * @returns The modified source content after applying the changes, or the original content if no chunks are provided. + * @throws Error if the chunk sequence is invalid, unexpected states are encountered, or if chunk alignment fails. + */ +export function applyLLMDiff(source, chunks) { + if (!chunks?.length || !source) + return source; + const lines = source.split("\n"); + let current = 0; + let i = 0; + while (i + 1 < chunks.length) { + const chunk = chunks[i++]; + if (chunk.state !== "existing") + throw new Error("expecting existing chunk"); + // Find location of existing chunk + const chunkStart = findChunk(lines, chunk, current); + if (chunkStart === -1) + break; + current = chunkStart + chunk.lines.length; + // Handle deleted chunk + if (chunks[i]?.state === "deleted") { + const deletedChunk = chunks[i++]; + const chunkDel = findChunk(lines, deletedChunk, current); + if (chunkDel === current) { + lines.splice(current, deletedChunk.lines.length); + } + if (chunks[i]?.state === "existing") + continue; + } + const addedChunk = chunks[i++]; + if (!addedChunk) + break; + if (addedChunk?.state !== "added") + throw new Error("expecting added chunk"); + // Find the end of the next existing chunk + const nextChunk = chunks[i]; + if (nextChunk && nextChunk.state !== "existing") + throw new Error("expecting existing chunk"); + const chunkEnd = nextChunk ? findChunk(lines, nextChunk, current) : lines.length; + if (chunkEnd === -1) + break; + // Finally, replace the lines with the added chunk + const toRemove = chunkEnd - current; + lines.splice(current, toRemove, ...addedChunk.lines); + current += addedChunk.lines.length - toRemove; + } + return lines.join("\n"); +} +/** + * Custom error class for handling diff-related errors. + */ +export class DiffError extends Error { + constructor(message) { + super(message); + } +} +/** + * Applies a series of LLMDiff chunks to a source string using line numbers. + * Processes modified and deleted chunks, then inserts added chunks in sequence. + * Ensures valid line numbers and updates the source content accordingly. + * + * @param source - The original source content to modify. + * @param chunks - The list of chunks representing changes, including added, deleted, and existing lines. Chunks must be in sequence and contain valid line numbers. + * @returns The updated source content after applying the changes. Filters out undefined lines resulting from deletions. + * @throws DiffError if invalid or missing line numbers are encountered. + */ +export function applyLLMPatch(source, chunks) { + if (!chunks?.length || !source) + return source; + const lines = source.split("\n"); + // Process modified and deleted chunks + chunks + .filter((c) => c.state !== "added") + .forEach((chunk) => { + for (let li = 0; li < chunk.lines.length; ++li) { + const line = chunk.state === "deleted" ? undefined : chunk.lines[li]; + const linei = chunk.lineNumbers[li] - 1; + if (isNaN(linei)) + throw new DiffError(`diff: missing or nan line number`); + if (linei < 0 || linei >= lines.length) + throw new DiffError(`diff: invalid line number ${linei} in ${lines.length}`); + lines[linei] = line; + } + }); + // Insert added chunks after processing deletions and modifications + for (let ci = chunks.length - 1; ci > 0; ci--) { + const chunk = chunks[ci]; + if (chunk.state !== "added") + continue; + let previ = ci - 1; + let prev = chunks[previ]; + // Find the previous existing chunk + while (prev && prev.state !== "existing") { + prev = chunks[--previ]; + } + if (!prev) + throw new Error("missing previous chunk for added chunk"); + const prevLinei = prev.lineNumbers[prev.lineNumbers.length - 1]; + lines.splice(prevLinei, 0, ...chunk.lines); + } + // Filter out undefined lines (deleted) + return lines.filter((l) => l !== undefined).join("\n"); +} +/** + * Converts a diff string into the LLMDiff format. + * Parses the input diff string using the parse-diff library, processes it into a structured format, and converts it back to a unified diff format with LLMDiff annotations. + * Updates line numbers for changes and includes them in the output. + * Returns the LLMDiff formatted string or undefined if parsing fails. + * + * @param diff - The diff string to process. Must be in a supported diff format. + * @returns The LLMDiff formatted string or undefined if parsing fails. + */ +export function llmifyDiff(diff) { + if (!diff) + return diff; + const parsed = tryDiffParse(diff); + if (!parsed?.length) + return undefined; + for (const file of parsed) { + for (const chunk of file.chunks) { + let currentLineNumber = chunk.newStart; + for (const change of chunk.changes) { + if (change.type === "del") + continue; + change.line = currentLineNumber; + currentLineNumber++; + } + } + } + // Convert back to unified diff format + let result = ""; + for (const file of parsed) { + result += `--- ${file.from}\n+++ ${file.to}\n`; + for (const chunk of file.chunks) { + result += `${chunk.content}\n`; + for (const change of chunk.changes) { + const ln = change.line !== undefined ? `[${change.line}] ` : ""; + result += `${ln}${change.content}\n`; + } + } + } + return result; +} +//# sourceMappingURL=llmdiff.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmdiff.js.map b/packages/core/.tshy-build/browser/llmdiff.js.map new file mode 100644 index 0000000000..b7588e933a --- /dev/null +++ b/packages/core/.tshy-build/browser/llmdiff.js.map @@ -0,0 +1 @@ +{"version":3,"file":"llmdiff.js","sourceRoot":"","sources":["../../src/llmdiff.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llms.d.ts b/packages/core/.tshy-build/browser/llms.d.ts new file mode 100644 index 0000000000..77bfd2a001 --- /dev/null +++ b/packages/core/.tshy-build/browser/llms.d.ts @@ -0,0 +1,24 @@ +import type { ModelConfigurations } from "./host.js"; +/** + * Generates default model configurations by aggregating model aliases and + * merging them with pre-defined mappings from LLM configurations. + * + * @returns The aggregated and structured clone of model configurations. + * + * @param collectAliases + * Helper function that collects unique model aliases based on predetermined IDs + * and candidate aliases defined in the LLM providers. + * - ids: An array of strings representing predefined model identifiers. + * + * @param readModelAlias + * Helper function that reads the configuration for a specific alias. + * - alias: A string representing the alias to fetch the model details for. + * + * Function behavior: + * - Creates a mapping of aliases to their corresponding model configurations + * by merging collected aliases with provider-defined ones. + * - Ensures all resulting configurations are free of empty values. + * - Returns a structured clone of the final configurations object. + */ +export declare function defaultModelConfigurations(): ModelConfigurations; +//# sourceMappingURL=llms.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llms.d.ts.map b/packages/core/.tshy-build/browser/llms.d.ts.map new file mode 100644 index 0000000000..8aa4171240 --- /dev/null +++ b/packages/core/.tshy-build/browser/llms.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"llms.d.ts","sourceRoot":"","sources":["../../src/llms.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKzE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,IAAI,mBAAmB,CA0ChE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llms.js b/packages/core/.tshy-build/browser/llms.js new file mode 100644 index 0000000000..acac1ee2d5 --- /dev/null +++ b/packages/core/.tshy-build/browser/llms.js @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { LARGE_MODEL_ID, SMALL_MODEL_ID, VISION_MODEL_ID } from "./constants.js"; +import LLMS from "./llmsdata.js"; +import { deleteEmptyValues } from "./cleaners.js"; +import { uniq } from "es-toolkit"; +/** + * Generates default model configurations by aggregating model aliases and + * merging them with pre-defined mappings from LLM configurations. + * + * @returns The aggregated and structured clone of model configurations. + * + * @param collectAliases + * Helper function that collects unique model aliases based on predetermined IDs + * and candidate aliases defined in the LLM providers. + * - ids: An array of strings representing predefined model identifiers. + * + * @param readModelAlias + * Helper function that reads the configuration for a specific alias. + * - alias: A string representing the alias to fetch the model details for. + * + * Function behavior: + * - Creates a mapping of aliases to their corresponding model configurations + * by merging collected aliases with provider-defined ones. + * - Ensures all resulting configurations are free of empty values. + * - Returns a structured clone of the final configurations object. + */ +export function defaultModelConfigurations() { + const aliases = collectAliases([ + LARGE_MODEL_ID, + SMALL_MODEL_ID, + VISION_MODEL_ID, + "vision_small", + "embeddings", + "reasoning", + "reasoning_small", + ]); + const res = { + ...Object.fromEntries(aliases.map((alias) => [alias, readModelAlias(alias)])), + ...Object.fromEntries(Object.entries(LLMS.aliases).map(([id, model]) => [ + id, + { model, source: "default" }, + ])), + }; + return structuredClone(res); + function collectAliases(ids) { + const candidates = Object.values(LLMS.providers).flatMap(({ aliases }) => Object.keys(aliases || {})); + return uniq([...ids, ...candidates]); + } + function readModelAlias(alias) { + const candidates = Object.values(LLMS.providers) + .map(({ id, aliases }) => { + const ref = aliases?.[alias]; + return ref ? `${id}:${ref}` : undefined; + }) + .filter((c) => !!c); + return deleteEmptyValues({ + model: candidates[0], + candidates, + source: "default", + }); + } +} +//# sourceMappingURL=llms.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llms.js.map b/packages/core/.tshy-build/browser/llms.js.map new file mode 100644 index 0000000000..5e541491e8 --- /dev/null +++ b/packages/core/.tshy-build/browser/llms.js.map @@ -0,0 +1 @@ +{"version":3,"file":"llms.js","sourceRoot":"","sources":["../../src/llms.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,cAAc;QACd,cAAc;QACd,eAAe;QACf,cAAc;QACd,YAAY;QACZ,WAAW;QACX,iBAAiB;KAClB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG;QACV,GAAI,MAAM,CAAC,WAAW,CACpB,OAAO,CAAC,GAAG,CAA+B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D;QACzB,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAA+B,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC9E,EAAE;YACF,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAA+B;SAC1D,CAAC,CACH;KACF,CAAC;IACF,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAE5B,SAAS,cAAc,CAAC,GAAa;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACvE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAC3B,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,SAAS,cAAc,CAAC,KAAa;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aAC7C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACvB,MAAM,GAAG,GAAI,OAAkC,EAAE,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,iBAAiB,CAAC;YACvB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACpB,UAAU;YACV,MAAM,EAAE,SAAS;SACW,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmsdata.d.ts b/packages/core/.tshy-build/browser/llmsdata.d.ts new file mode 100644 index 0000000000..1adddf574f --- /dev/null +++ b/packages/core/.tshy-build/browser/llmsdata.d.ts @@ -0,0 +1,3105 @@ +export interface LanguageModelProviderInformation { + id: string; + detail: string; + url?: string; + seed?: boolean; + logitBias?: boolean; + tools?: boolean; + logprobs?: boolean; + topLogprobs?: boolean; + topP?: boolean; + toolChoice?: boolean; + prediction?: boolean; + bearerToken?: boolean; + listModels?: boolean; + transcribe?: boolean; + speech?: boolean; + tokenless?: boolean; + hidden?: boolean; + imageGeneration?: boolean; + singleModel?: boolean; + metadata?: boolean; + limitations?: string; + responseType?: "json" | "json_object" | "json_schema"; + reasoningEfforts?: Record; + aliases?: Record; + latestTag?: boolean; + openaiCompatibility?: string; + pullModel?: boolean; + models?: Record; + env?: Record; +} +export interface LanguageModelPricing { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate?: number; + tiers?: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate?: number; + }[]; +} +declare const _default: { + $schema: string; + providers: ({ + id: string; + detail: string; + url: string; + bearerToken: true; + transcribe: true; + speech: true; + listModels: true; + imageGeneration: true; + responseType: "json_schema"; + metadata: true; + aliases: { + large: string; + small: string; + tiny: string; + vision: string; + vision_small: string; + embeddings: string; + reasoning: string; + reasoning_small: string; + transcription: string; + speech: string; + image: string; + intent: string; + long?: undefined; + }; + models: { + "o1-preview": { + tools: false; + }; + "o1-mini": { + tools: false; + }; + "phi-3.5-mini-instruct": { + tools: false; + }; + "marco-o1"?: undefined; + tulu3?: undefined; + opencoder?: undefined; + "llama3.2-vision"?: undefined; + "phi3.5"?: undefined; + gemma2?: undefined; + "deep-seek-coder-v2"?: undefined; + codegemma?: undefined; + llava?: undefined; + llama3?: undefined; + gemma?: undefined; + qwen?: undefined; + phi3?: undefined; + llama2?: undefined; + codellama?: undefined; + phi?: undefined; + "deepseek-r1"?: undefined; + gemma3?: undefined; + }; + env: { + OPENAI_API_KEY: { + description: string; + required: true; + secret: true; + }; + OPENAI_API_BASE: { + description: string; + }; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + prediction?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + listModels: true; + bearerToken: false; + prediction: false; + transcribe: true; + speech: true; + imageGeneration: true; + aliases: { + large?: undefined; + small?: undefined; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + embeddings?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + metadata: true; + models: { + "o1-preview": { + tools: false; + }; + "o1-mini": { + tools: false; + }; + "phi-3.5-mini-instruct": { + tools: false; + }; + "marco-o1"?: undefined; + tulu3?: undefined; + opencoder?: undefined; + "llama3.2-vision"?: undefined; + "phi3.5"?: undefined; + gemma2?: undefined; + "deep-seek-coder-v2"?: undefined; + codegemma?: undefined; + llava?: undefined; + llama3?: undefined; + gemma?: undefined; + qwen?: undefined; + phi3?: undefined; + llama2?: undefined; + codellama?: undefined; + phi?: undefined; + "deepseek-r1"?: undefined; + gemma3?: undefined; + }; + env: { + AZURE_OPENAI_API_ENDPOINT: { + description: string; + required: true; + format: string; + }; + AZURE_OPENAI_API_KEY: { + description: string; + secret: true; + }; + AZURE_OPENAI_SUBSCRIPTION_ID: { + description: string; + }; + AZURE_OPENAI_API_VERSION: { + description: string; + }; + AZURE_OPENAI_API_CREDENTIALS: { + description: string; + enum: string[]; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + responseType?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + listModels: false; + bearerToken: false; + prediction: false; + logprobs: false; + topLogprobs: false; + aliases: { + large: string; + small: string; + vision: string; + vision_small: string; + reasoning: string; + reasoning_small: string; + embeddings: string; + tiny?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + models: { + "o1-preview": { + tools: false; + }; + "o1-mini": { + tools: false; + }; + "phi-3.5-mini-instruct": { + tools: false; + }; + "marco-o1"?: undefined; + tulu3?: undefined; + opencoder?: undefined; + "llama3.2-vision"?: undefined; + "phi3.5"?: undefined; + gemma2?: undefined; + "deep-seek-coder-v2"?: undefined; + codegemma?: undefined; + llava?: undefined; + llama3?: undefined; + gemma?: undefined; + qwen?: undefined; + phi3?: undefined; + llama2?: undefined; + codellama?: undefined; + phi?: undefined; + "deepseek-r1"?: undefined; + gemma3?: undefined; + }; + env: { + AZURE_AI_INFERENCE_API_KEY: { + description: string; + required: true; + secret: true; + }; + AZURE_AI_INFERENCE_API_ENDPOINT: { + description: string; + required: true; + }; + AZURE_AI_INFERENCE_API_VERSION: { + description: string; + }; + AZURE_AI_INFERENCE_API_CREDENTIALS: { + description: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + listModels: false; + bearerToken: false; + prediction: false; + aliases: { + large: string; + small: string; + vision: string; + vision_small: string; + reasoning: string; + reasoning_small: string; + embeddings: string; + tiny?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + models: { + "o1-preview": { + tools: false; + }; + "o1-mini": { + tools: false; + }; + "phi-3.5-mini-instruct": { + tools: false; + }; + "marco-o1"?: undefined; + tulu3?: undefined; + opencoder?: undefined; + "llama3.2-vision"?: undefined; + "phi3.5"?: undefined; + gemma2?: undefined; + "deep-seek-coder-v2"?: undefined; + codegemma?: undefined; + llava?: undefined; + llama3?: undefined; + gemma?: undefined; + qwen?: undefined; + phi3?: undefined; + llama2?: undefined; + codellama?: undefined; + phi?: undefined; + "deepseek-r1"?: undefined; + gemma3?: undefined; + }; + env: { + AZURE_SERVERLESS_OPENAI_API_KEY: { + description: string; + required: true; + secret: true; + }; + AZURE_SERVERLESS_OPENAI_ENDPOINT: { + description: string; + required: true; + }; + AZURE_SERVERLESS_OPENAI_API_VERSION: { + description: string; + }; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS: { + description: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + listModels: false; + prediction: false; + bearerToken: true; + env: { + AZURE_SERVERLESS_MODELS_API_KEY: { + description: string; + required: true; + secret: true; + }; + AZURE_SERVERLESS_MODELS_ENDPOINT: { + description: string; + required: true; + }; + AZURE_SERVERLESS_MODELS_API_VERSION: { + description: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + logprobs: false; + topLogprobs: false; + limitations: string; + prediction: false; + listModels: false; + bearerToken: true; + aliases: { + large: string; + small: string; + tiny: string; + vision: string; + reasoning: string; + reasoning_small: string; + embeddings: string; + vision_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + models: { + "o1-preview": { + tools: false; + }; + "o1-mini": { + tools: false; + }; + "phi-3.5-mini-instruct": { + tools: false; + }; + "marco-o1"?: undefined; + tulu3?: undefined; + opencoder?: undefined; + "llama3.2-vision"?: undefined; + "phi3.5"?: undefined; + gemma2?: undefined; + "deep-seek-coder-v2"?: undefined; + codegemma?: undefined; + llava?: undefined; + llama3?: undefined; + gemma?: undefined; + qwen?: undefined; + phi3?: undefined; + llama2?: undefined; + codellama?: undefined; + phi?: undefined; + "deepseek-r1"?: undefined; + gemma3?: undefined; + }; + env: { + GITHUB_TOKEN: { + description: string; + required: true; + secret: true; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + logitBias: false; + openaiCompatibility: string; + prediction: false; + bearerToken: true; + tokenless: true; + latestTag: true; + aliases: { + embeddings: string; + large?: undefined; + small?: undefined; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + OLLAMA_HOST: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + models: { + "marco-o1": { + tools: false; + }; + tulu3: { + tools: false; + }; + opencoder: { + tools: false; + }; + "llama3.2-vision": { + tools: false; + }; + "phi3.5": { + tools: false; + }; + gemma2: { + tools: false; + }; + "deep-seek-coder-v2": { + tools: false; + }; + codegemma: { + tools: false; + }; + llava: { + tools: false; + }; + llama3: { + tools: false; + }; + gemma: { + tools: false; + }; + qwen: { + tools: false; + }; + phi3: { + tools: false; + }; + llama2: { + tools: false; + }; + codellama: { + tools: false; + }; + phi: { + tools: false; + }; + "deepseek-r1": { + tools: false; + }; + gemma3: { + tools: false; + }; + "o1-preview"?: undefined; + "o1-mini"?: undefined; + "phi-3.5-mini-instruct"?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + tokenless: true; + listModels: false; + imageGeneration: false; + speech: false; + aliases: { + small: string; + large?: undefined; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + embeddings?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + env?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + logprobs: false; + topLogprobs: false; + prediction: false; + aliases: { + large: string; + small: string; + vision: string; + vision_small: string; + reasoning: string; + reasoning_small: string; + tiny?: undefined; + embeddings?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + reasoningEfforts: { + low: number; + medium: number; + high: number; + }; + env: { + ANTHROPIC_API_KEY: { + description: string; + required: true; + secret: true; + }; + ANTHROPIC_API_BASE: { + description: string; + }; + ANTHROPIC_API_VERSION: { + description: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + logprobs: false; + topLogprobs: false; + prediction: false; + reasoningEfforts: { + low: number; + medium: number; + high: number; + }; + aliases: { + reasoning: string; + reasoning_small: string; + large: string; + small: string; + vision: string; + vision_small: string; + tiny?: undefined; + embeddings?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + seed: false; + tools: false; + logprobs: false; + topLogprobs: false; + openaiCompatibility: string; + prediction: false; + bearerToken: true; + listModels: false; + aliases: { + large: string; + small: string; + vision: string; + long: string; + reasoning: string; + reasoning_small: string; + embeddings: string; + tiny?: undefined; + vision_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + }; + env: { + GEMINI_API_KEY: { + description: string; + required: true; + secret: true; + }; + GEMINI_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + limitations?: undefined; + logitBias?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + listModels: false; + openaiCompatibility: string; + aliases: { + large: string; + small: string; + vision: string; + embeddings: string; + tiny?: undefined; + vision_small?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + HUGGINGFACE_API_KEY: { + description: string; + required: true; + secret: true; + }; + HUGGINGFACE_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + bearerToken: true; + aliases: { + large: string; + small: string; + vision: string; + tiny?: undefined; + vision_small?: undefined; + embeddings?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + MISTRAL_API_KEY: { + description: string; + required: true; + secret: true; + }; + MISTRAL_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + openaiCompatibility: string; + tools: false; + prediction: false; + listModels: false; + bearerToken: true; + aliases: { + large: string; + small: string; + long: string; + embeddings: string; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + }; + env: { + ALIBABA_API_KEY: { + description: string; + required: true; + secret: true; + }; + ALIBABA_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + bearerToken: true; + aliases: { + large: string; + small: string; + vision: string; + tiny?: undefined; + vision_small?: undefined; + embeddings?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + DEEPSEEK_API_KEY: { + description: string; + required: true; + secret: true; + }; + DEEPSEEK_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + url?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + prediction?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + tokenless?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + bearerToken: true; + tokenless: true; + aliases: { + embeddings: string; + large?: undefined; + small?: undefined; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + LMSTUDIO_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + listModels: false; + tokenless: true; + topP: false; + env: { + DOCKER_MODEL_RUNNER_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + listModels: true; + tokenless: true; + topP: false; + env: { + JAN_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + tokenless: true; + singleModel: true; + listModels: false; + speech: false; + pullModel: false; + env: { + LLAMAFILE_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + prediction: false; + tokenless: true; + listModels: false; + speech: false; + pullModel: false; + env: { + SGLANG_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + openaiCompatibility: string; + prediction: false; + tokenless: true; + listModels: false; + speech: false; + pullModel: false; + env: { + VLLM_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + prediction: false; + tokenless: true; + env: { + LITELLM_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + url?: undefined; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + url: string; + tokenless: true; + aliases: { + transcription: string; + large?: undefined; + small?: undefined; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + embeddings?: undefined; + reasoning?: undefined; + reasoning_small?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + WHISPERASR_API_BASE: { + description: string; + format: string; + }; + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + }; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + prediction?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + tools?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + hidden: true; + tools: false; + prediction: false; + tokenless: true; + aliases: { + large: string; + small: string; + reasoning: string; + reasoning_small: string; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + embeddings?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + url?: undefined; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + toolChoice?: undefined; + } | { + id: string; + detail: string; + hidden: true; + tools: false; + prediction: false; + tokenless: true; + imageGeneration: false; + listModels: false; + pullModel: false; + speech: false; + toolChoice: false; + logprobs: false; + topLogprobs: false; + topP: false; + transcribe: false; + url: string; + logitBias: false; + aliases: { + large: string; + small: string; + reasoning: string; + reasoning_small: string; + tiny?: undefined; + vision?: undefined; + vision_small?: undefined; + embeddings?: undefined; + transcription?: undefined; + speech?: undefined; + image?: undefined; + intent?: undefined; + long?: undefined; + }; + env: { + OPENAI_API_KEY?: undefined; + OPENAI_API_BASE?: undefined; + AZURE_OPENAI_API_ENDPOINT?: undefined; + AZURE_OPENAI_API_KEY?: undefined; + AZURE_OPENAI_SUBSCRIPTION_ID?: undefined; + AZURE_OPENAI_API_VERSION?: undefined; + AZURE_OPENAI_API_CREDENTIALS?: undefined; + AZURE_AI_INFERENCE_API_KEY?: undefined; + AZURE_AI_INFERENCE_API_ENDPOINT?: undefined; + AZURE_AI_INFERENCE_API_VERSION?: undefined; + AZURE_AI_INFERENCE_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_OPENAI_API_KEY?: undefined; + AZURE_SERVERLESS_OPENAI_ENDPOINT?: undefined; + AZURE_SERVERLESS_OPENAI_API_VERSION?: undefined; + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS?: undefined; + AZURE_SERVERLESS_MODELS_API_KEY?: undefined; + AZURE_SERVERLESS_MODELS_ENDPOINT?: undefined; + AZURE_SERVERLESS_MODELS_API_VERSION?: undefined; + GITHUB_TOKEN?: undefined; + OLLAMA_HOST?: undefined; + ANTHROPIC_API_KEY?: undefined; + ANTHROPIC_API_BASE?: undefined; + ANTHROPIC_API_VERSION?: undefined; + GEMINI_API_KEY?: undefined; + GEMINI_API_BASE?: undefined; + HUGGINGFACE_API_KEY?: undefined; + HUGGINGFACE_API_BASE?: undefined; + MISTRAL_API_KEY?: undefined; + MISTRAL_API_BASE?: undefined; + ALIBABA_API_KEY?: undefined; + ALIBABA_API_BASE?: undefined; + DEEPSEEK_API_KEY?: undefined; + DEEPSEEK_API_BASE?: undefined; + LMSTUDIO_API_BASE?: undefined; + DOCKER_MODEL_RUNNER_API_BASE?: undefined; + JAN_API_BASE?: undefined; + LLAMAFILE_API_BASE?: undefined; + SGLANG_API_BASE?: undefined; + VLLM_API_BASE?: undefined; + LITELLM_API_BASE?: undefined; + WHISPERASR_API_BASE?: undefined; + }; + bearerToken?: undefined; + responseType?: undefined; + metadata?: undefined; + models?: undefined; + limitations?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + singleModel?: undefined; + } | { + id: string; + detail: string; + tools: true; + tokenless: true; + url?: undefined; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + env?: undefined; + prediction?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + hidden?: undefined; + toolChoice?: undefined; + } | { + id: string; + tools: true; + tokenless: true; + hidden: true; + detail: string; + url?: undefined; + bearerToken?: undefined; + transcribe?: undefined; + speech?: undefined; + listModels?: undefined; + imageGeneration?: undefined; + responseType?: undefined; + metadata?: undefined; + aliases?: undefined; + models?: undefined; + env?: undefined; + prediction?: undefined; + logprobs?: undefined; + topLogprobs?: undefined; + limitations?: undefined; + logitBias?: undefined; + openaiCompatibility?: undefined; + latestTag?: undefined; + reasoningEfforts?: undefined; + seed?: undefined; + topP?: undefined; + singleModel?: undefined; + pullModel?: undefined; + toolChoice?: undefined; + })[]; + aliases: { + agent: string; + long: string; + tiny: string; + memory: string; + classify: string; + summarize: string; + cast: string; + vision_small: string; + ocr: string; + think: string; + intent: string; + }; + pricings: { + "github:o4-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:o4-mini-2025-04-16": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1-nano": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:gpt-4o": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "github:gpt-4o-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "github:gpt-4o-2024-11-20": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "github:o1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:o1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "github:o3-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-image-1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:o4-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o4-mini-2025-04-16": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1-nano": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:gpt-4o": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-2024-11-20": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-2024-08-06": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-2024-05-13": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-mini-2024-07-18": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:o1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o1-2024-12-17": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o1-preview": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o1-preview-2024-09-12": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o1-mini-2024-09-12": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o3-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:o3-mini-2025-01-31": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "openai:text-embedding-3-small": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: any; + }; + "openai:text-embedding-3-large": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: any; + }; + "openai:ada v2": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: any; + }; + "openai:gpt-4o-realtime-preview": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4o-realtime-preview-2024-10-01": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:chatgpt-4o-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-turbo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-turbo-2024-04-09": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-32k": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-0125-preview": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-1106-preview": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-4-vision-preview": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-0125": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-1106": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-0613": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-16k-0613": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:gpt-3.5-turbo-0301": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:davinci-002": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "openai:babbage-002": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-4.1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4.1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4.1-nano": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:o1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:o1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure:gpt-4o-2024-08-06": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-4o": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-4o-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-0301": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-0613": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-0613-16k": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-1106": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-0125": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-3.5-turbo-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-4": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure:gpt-4-32k": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4.1": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4.1-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4.1-nano": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "azure_serverless:gpt-4o": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4o-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4o-2024-05-13": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4o-2024-08-06": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-3.5-turbo-11066": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4-turbo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless:gpt-4-turbo-vision": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3-405b-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:llama-3.2-90b-vision-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:llama-3.2-11b-vision-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3.1-405b-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3.1-70b-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3.1-8b-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3-8b-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:meta-llama-3-2-90b-vision-instruct": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-large": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-large-2407": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-small": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-nemo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-3b": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:cohere command r+": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:cohere command r": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:ai21-jamba-1.5-large": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:ai21-jamba-1.5-mini": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:mistral-3b-2410": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_serverless_models:ministral-3b": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "azure_ai_inference:deepseek-v3": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "google:gemini-1.5-flash": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-flash-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-flash-002": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-flash-8b": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-flash-8b-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-pro": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-pro-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1.5-pro-002": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + tiers: { + context_size: number; + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }[]; + }; + "google:gemini-1-pro": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "alibaba:qwen-max": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "alibaba:qwen-plus": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "alibaba:qwen-turbo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "mistral:mistral-large-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "mistral:mistral-small-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "mistral:pixtral-large-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "mistral:codestral-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "mistral:mistral-nemo": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + }; + "anthropic:claude-3-7-sonnet-20250219": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-7-sonnet-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-5-sonnet-20240620": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-5-sonnet-20241022": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-5-sonnet-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-5-haiku-20241022": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "anthropic:claude-3-5-haiku-latest": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + "deepseek:deepseek-chat": { + price_per_million_input_tokens: number; + price_per_million_output_tokens: number; + input_cache_token_rebate: number; + }; + }; +}; +export default _default; +//# sourceMappingURL=llmsdata.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmsdata.d.ts.map b/packages/core/.tshy-build/browser/llmsdata.d.ts.map new file mode 100644 index 0000000000..054aa026c0 --- /dev/null +++ b/packages/core/.tshy-build/browser/llmsdata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"llmsdata.d.ts","sourceRoot":"","sources":["../../src/llmsdata.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAo2CE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmsdata.js b/packages/core/.tshy-build/browser/llmsdata.js new file mode 100644 index 0000000000..9599cd97be --- /dev/null +++ b/packages/core/.tshy-build/browser/llmsdata.js @@ -0,0 +1,1374 @@ +export default { + $schema: "../../../docs/public/schemas/llms.json", + providers: [ + { + id: "openai", + detail: "OpenAI (or compatible)", + url: "https://platform.openai.com/docs/models", + bearerToken: true, + transcribe: true, + speech: true, + listModels: true, + imageGeneration: true, + responseType: "json_schema", + metadata: true, + aliases: { + large: "gpt-4.1", + small: "gpt-4.1-mini", + tiny: "gpt-4.1-nano", + vision: "gpt-4.1", + vision_small: "gpt-4.1-mini", + embeddings: "text-embedding-3-small", + reasoning: "o1", + reasoning_small: "o3-mini", + transcription: "whisper-1", + speech: "tts-1", + image: "dall-e-3", + intent: "gpt-4.1-mini", + }, + models: { + "o1-preview": { + tools: false, + }, + "o1-mini": { + tools: false, + }, + "phi-3.5-mini-instruct": { + tools: false, + }, + }, + env: { + OPENAI_API_KEY: { + description: "OpenAI API key", + required: true, + secret: true, + }, + OPENAI_API_BASE: { + description: "OpenAI API base URL", + }, + }, + }, + { + id: "azure", + detail: "Azure OpenAI deployment", + url: "https://azure.microsoft.com/en-us/products/ai-services/openai-service", + listModels: true, + bearerToken: false, + prediction: false, + transcribe: true, + speech: true, + imageGeneration: true, + aliases: {}, + metadata: true, + models: { + "o1-preview": { + tools: false, + }, + "o1-mini": { + tools: false, + }, + "phi-3.5-mini-instruct": { + tools: false, + }, + }, + env: { + AZURE_OPENAI_API_ENDPOINT: { + description: "Azure OpenAI endpoint. In the Azure Portal, open your Azure OpenAI resource, Keys and Endpoints, copy Endpoint.", + required: true, + format: "url", + }, + AZURE_OPENAI_API_KEY: { + description: "Azure OpenAI API key. **You do NOT need this if you are using Microsoft Entra ID.", + secret: true, + }, + AZURE_OPENAI_SUBSCRIPTION_ID: { + description: "Azure OpenAI subscription ID to list available deployments (Microsoft Entra only).", + }, + AZURE_OPENAI_API_VERSION: { + description: "Azure OpenAI API version.", + }, + AZURE_OPENAI_API_CREDENTIALS: { + description: "Azure OpenAI API credentials type. Leave as 'default' unless you have a special Azure setup.", + enum: [ + "default", + "cli", + "env", + "powershell", + "devcli", + "managedidentity", + "workloadidentity", + ], + }, + }, + }, + { + id: "azure_ai_inference", + detail: "Azure AI Inference", + url: "https://learn.microsoft.com/en-us/azure/ai-foundry/model-inference/overview", + listModels: false, + bearerToken: false, + prediction: false, + logprobs: false, + topLogprobs: false, + aliases: { + large: "gpt-4o", + small: "gpt-4o-mini", + vision: "gpt-4o", + vision_small: "gpt-4o-mini", + reasoning: "o1", + reasoning_small: "o1-mini", + embeddings: "text-embedding-3-small", + }, + models: { + "o1-preview": { + tools: false, + }, + "o1-mini": { + tools: false, + }, + "phi-3.5-mini-instruct": { + tools: false, + }, + }, + env: { + AZURE_AI_INFERENCE_API_KEY: { + description: "Azure AI Inference key", + required: true, + secret: true, + }, + AZURE_AI_INFERENCE_API_ENDPOINT: { + description: "Azure Serverless OpenAI endpoint", + required: true, + }, + AZURE_AI_INFERENCE_API_VERSION: { + description: "Azure Serverless OpenAI API version", + }, + AZURE_AI_INFERENCE_API_CREDENTIALS: { + description: "Azure Serverless OpenAI API credentials type", + }, + }, + }, + { + id: "azure_serverless", + detail: "Azure AI OpenAI (serverless deployments)", + url: "https://ai.azure.com/", + listModels: false, + bearerToken: false, + prediction: false, + aliases: { + large: "gpt-4o", + small: "gpt-4o-mini", + vision: "gpt-4o", + vision_small: "gpt-4o-mini", + reasoning: "o1", + reasoning_small: "o1-mini", + embeddings: "text-embedding-3-small", + }, + models: { + "o1-preview": { + tools: false, + }, + "o1-mini": { + tools: false, + }, + "phi-3.5-mini-instruct": { + tools: false, + }, + }, + env: { + AZURE_SERVERLESS_OPENAI_API_KEY: { + description: "Azure Serverless OpenAI API key", + required: true, + secret: true, + }, + AZURE_SERVERLESS_OPENAI_ENDPOINT: { + description: "Azure Serverless OpenAI endpoint", + required: true, + }, + AZURE_SERVERLESS_OPENAI_API_VERSION: { + description: "Azure Serverless OpenAI API version", + }, + AZURE_SERVERLESS_OPENAI_API_CREDENTIALS: { + description: "Azure Serverless OpenAI API credentials type", + }, + }, + }, + { + id: "azure_serverless_models", + detail: "Azure AI Models (serverless deployments, not OpenAI)", + url: "https://ai.azure.com/", + listModels: false, + prediction: false, + bearerToken: true, + env: { + AZURE_SERVERLESS_MODELS_API_KEY: { + description: "Azure Serverless Models API key", + required: true, + secret: true, + }, + AZURE_SERVERLESS_MODELS_ENDPOINT: { + description: "Azure Serverless Models endpoint", + required: true, + }, + AZURE_SERVERLESS_MODELS_API_VERSION: { + description: "Azure Serverless Models API version", + }, + }, + }, + { + id: "github", + detail: "GitHub Models", + url: "https://github.com/marketplace/models-github", + logprobs: false, + topLogprobs: false, + limitations: "Smaller context windows, and rate limiting in free tier. See https://docs.github.com/en/github-models/use-github-models/prototyping-with-ai-models.", + prediction: false, + listModels: false, + bearerToken: true, + aliases: { + large: "openai/gpt-4.1", + small: "openai/gpt-4.1-mini", + tiny: "openai/gpt-4.1-nano", + vision: "openai/gpt-4.1", + reasoning: "openai/o3", + reasoning_small: "openai/o3-mini", + embeddings: "openai/text-embedding-3-small", + }, + models: { + "o1-preview": { + tools: false, + }, + "o1-mini": { + tools: false, + }, + "phi-3.5-mini-instruct": { + tools: false, + }, + }, + env: { + GITHUB_TOKEN: { + description: "GitHub token with `models: read` permission at least (https://microsoft.github.io/genaiscript/reference/github-actions/#github-models-permissions).", + required: true, + secret: true, + }, + }, + }, + { + id: "ollama", + detail: "Ollama local model", + url: "https://ollama.ai/", + logitBias: false, + openaiCompatibility: "https://github.com/ollama/ollama/blob/main/docs/openai.md", + prediction: false, + bearerToken: true, + tokenless: true, + latestTag: true, + aliases: { + embeddings: "nomic-embed-text", + }, + env: { + OLLAMA_HOST: { + description: "Ollama host", + format: "url", + }, + }, + models: { + "marco-o1": { + tools: false, + }, + tulu3: { + tools: false, + }, + opencoder: { + tools: false, + }, + "llama3.2-vision": { + tools: false, + }, + "phi3.5": { + tools: false, + }, + gemma2: { + tools: false, + }, + "deep-seek-coder-v2": { + tools: false, + }, + codegemma: { + tools: false, + }, + llava: { + tools: false, + }, + llama3: { + tools: false, + }, + gemma: { + tools: false, + }, + qwen: { + tools: false, + }, + phi3: { + tools: false, + }, + llama2: { + tools: false, + }, + codellama: { + tools: false, + }, + phi: { + tools: false, + }, + "deepseek-r1": { + tools: false, + }, + gemma3: { + tools: false, + }, + }, + }, + { + id: "windows", + detail: "Windows AI", + url: "https://learn.microsoft.com/en-us/windows/ai/", + prediction: false, + tokenless: true, + listModels: false, + imageGeneration: false, + speech: false, + aliases: { + small: "Phi-3-mini-4k-cpu-int4-rtn-block-32-onnx", + }, + }, + { + id: "anthropic", + detail: "Anthropic models", + url: "https://docs.anthropic.com/en/docs/about-claude/models", + logprobs: false, + topLogprobs: false, + prediction: false, + aliases: { + large: "claude-sonnet-4-0", + small: "claude-3-5-haiku-latest", + vision: "claude-sonnet-4-0", + vision_small: "claude-3-5-sonnet-latest", + reasoning: "claude-sonnet-4-0:high", + reasoning_small: "claude-sonnet-4-0:low", + }, + reasoningEfforts: { + low: 1024, + medium: 4096, + high: 16384, + }, + env: { + ANTHROPIC_API_KEY: { + description: "Anthropic API key", + required: true, + secret: true, + }, + ANTHROPIC_API_BASE: { + description: "Anthropic API base URL", + }, + ANTHROPIC_API_VERSION: { + description: "Anthropic API version", + }, + }, + }, + { + id: "anthropic_bedrock", + detail: "Anthropic on AWS Bedrock models", + url: "https://support.anthropic.com/en/articles/7996918-what-is-amazon-bedrock", + logprobs: false, + topLogprobs: false, + prediction: false, + reasoningEfforts: { + low: 1024, + medium: 4096, + high: 16384, + }, + aliases: { + reasoning: "anthropic.claude-3-7-sonnet-20250219-v1:0:high", + reasoning_small: "anthropic.claude-3-7-sonnet-20250219-v1:0:low", + large: "anthropic.claude-3-7-sonnet-20250219-v1:0:0", + small: "anthropic.claude-3-5-haiku-20241022-v1:0", + vision: "anthropic.claude-3-7-sonnet-20250219-v1:0:0", + vision_small: "anthropic.claude-3-5-haiku-20241022-v1:0", + }, + env: {}, + }, + { + id: "google", + detail: "Google AI", + url: "https://gemini.google.com/app", + seed: false, + tools: false, + logprobs: false, + topLogprobs: false, + openaiCompatibility: "https://ai.google.dev/gemini-api/docs/openai", + prediction: false, + bearerToken: true, + listModels: false, + aliases: { + large: "gemini-1.5-flash-latest", + small: "gemini-1.5-flash-latest", + vision: "gemini-1.5-flash-latest", + long: "gemini-1.5-flash-latest", + reasoning: "gemini-2.0-flash-thinking-exp-1219", + reasoning_small: "gemini-2.0-flash-thinking-exp-1219", + embeddings: "text-embedding-004", + }, + env: { + GEMINI_API_KEY: { + description: "Google Gemini API key", + required: true, + secret: true, + }, + GEMINI_API_BASE: { + description: "Google Gemini API base URL", + format: "url", + }, + }, + }, + { + id: "huggingface", + detail: "Hugging Face models", + url: "https://huggingface.co/docs/api-inference/index", + prediction: false, + listModels: false, + openaiCompatibility: "https://huggingface.github.io/text-generation-inference/", + aliases: { + large: "meta-llama/Llama-3.3-70B-Instruct", + small: "microsoft/phi-4", + vision: "meta-llama/Llama-3.2-11B-Vision-Instruct", + embeddings: "nomic-ai/nomic-embed-text-v1.5", + }, + env: { + HUGGINGFACE_API_KEY: { + description: "Hugging Face API key", + required: true, + secret: true, + }, + HUGGINGFACE_API_BASE: { + description: "Hugging Face API base URL", + format: "url", + }, + }, + }, + { + id: "mistral", + detail: "Mistral AI", + url: "https://mistral.ai/", + prediction: false, + bearerToken: true, + aliases: { + large: "mistral-large-latest", + small: "mistral-small-latest", + vision: "pixtral-large-latest", + }, + env: { + MISTRAL_API_KEY: { + description: "Mistral API key", + required: true, + secret: true, + }, + MISTRAL_API_BASE: { + description: "Mistral API base URL", + format: "url", + }, + }, + }, + { + id: "alibaba", + detail: "Alibaba models", + url: "https://www.alibabacloud.com/", + openaiCompatibility: "https://www.alibabacloud.com/help/en/model-studio/developer-reference/compatibility-of-openai-with-dashscope", + tools: false, + prediction: false, + listModels: false, + bearerToken: true, + aliases: { + large: "qwen-max", + small: "qwen-turbo", + long: "qwen-plus", + embeddings: "text-embedding-v3", + }, + env: { + ALIBABA_API_KEY: { + description: "Alibaba API key", + required: true, + secret: true, + }, + ALIBABA_API_BASE: { + description: "Alibaba API base URL", + format: "url", + }, + }, + }, + { + id: "deepseek", + detail: "DeepSeek Models", + bearerToken: true, + aliases: { + large: "deepseek-chat", + small: "deepseek-chat", + vision: "deepseek-chat", + }, + env: { + DEEPSEEK_API_KEY: { + description: "DeepSeek API key", + required: true, + secret: true, + }, + DEEPSEEK_API_BASE: { + description: "DeepSeek API base URL", + format: "url", + }, + }, + }, + { + id: "lmstudio", + detail: "LM Studio local server", + url: "https://lmstudio.ai/", + prediction: false, + bearerToken: true, + tokenless: true, + aliases: { + embeddings: "text-embedding-nomic-embed-text-v1.5", + }, + env: { + LMSTUDIO_API_BASE: { + description: "LM Studio API base URL", + format: "url", + }, + }, + }, + { + id: "docker", + detail: "Docker Model Runner", + url: "https://docs.docker.com/model-runner/", + prediction: false, + listModels: false, + tokenless: true, + topP: false, + env: { + DOCKER_MODEL_RUNNER_API_BASE: { + description: "Docker Model Runner API base URL", + format: "url", + }, + }, + }, + { + id: "jan", + detail: "Jan local server", + url: "https://jan.ai/", + prediction: false, + listModels: true, + tokenless: true, + topP: false, + env: { + JAN_API_BASE: { + description: "Jan API base URL", + format: "url", + }, + }, + }, + { + id: "llamafile", + detail: "llamafile.ai local model", + url: "https://llamafile.ai/", + prediction: false, + tokenless: true, + singleModel: true, + listModels: false, + speech: false, + pullModel: false, + env: { + LLAMAFILE_API_BASE: { + description: "Llamafile API base URL", + format: "url", + }, + }, + }, + { + id: "sglang", + detail: "SGLang local model", + url: "https://docs.sglang.ai/", + prediction: false, + tokenless: true, + listModels: false, + speech: false, + pullModel: false, + env: { + SGLANG_API_BASE: { + description: "SGLang API base URL", + format: "url", + }, + }, + }, + { + id: "vllm", + detail: "vLLM local model", + url: "https://docs.vllm.ai/", + openaiCompatibility: "https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html", + prediction: false, + tokenless: true, + listModels: false, + speech: false, + pullModel: false, + env: { + VLLM_API_BASE: { + description: "VLLM API base URL", + format: "url", + }, + }, + }, + { + id: "litellm", + detail: "LiteLLM proxy", + prediction: false, + tokenless: true, + env: { + LITELLM_API_BASE: { + description: "LiteLLM API base URL", + format: "url", + }, + }, + }, + { + id: "whisperasr", + detail: "Whisper ASR Webservice", + url: "https://github.com/ahmetoner/whisper-asr-webservice", + tokenless: true, + aliases: { + transcription: "default", + }, + env: { + WHISPERASR_API_BASE: { + description: "Whisper ASR API base URL", + format: "url", + }, + }, + }, + { + id: "github_copilot_chat", + detail: "GitHub Copilot Chat Models", + hidden: true, + tools: false, + prediction: false, + tokenless: true, + aliases: { + large: "gpt-4o", + small: "gpt-4o-mini", + reasoning: "o3-mini", + reasoning_small: "o1-mini", + }, + env: {}, + }, + { + id: "mcp", + detail: "MCP Client Sampling", + hidden: true, + tools: false, + prediction: false, + tokenless: true, + imageGeneration: false, + listModels: false, + pullModel: false, + speech: false, + toolChoice: false, + logprobs: false, + topLogprobs: false, + topP: false, + transcribe: false, + url: "https://modelcontextprotocol.io/docs/concepts/sampling", + logitBias: false, + aliases: { + large: "gpt-4o", + small: "gpt-4o-mini", + reasoning: "o3-mini", + reasoning_small: "o1-mini", + }, + env: {}, + }, + { + id: "echo", + detail: "A fake LLM provider that responds with the input messages.", + tools: true, + tokenless: true, + }, + { + id: "none", + tools: true, + tokenless: true, + hidden: true, + detail: "A LLM provider that stops the execution. Used on top level script to prevent LLM execution.", + }, + ], + aliases: { + agent: "large", + long: "large", + tiny: "small", + memory: "small", + classify: "small", + summarize: "small", + cast: "small", + vision_small: "vision", + ocr: "vision_small", + think: "reasoning_small", + intent: "small", + }, + pricings: { + "github:o4-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.25, + }, + "github:o4-mini-2025-04-16": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1-mini": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1-nano": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "github:gpt-4o": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "github:gpt-4o-mini": { + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + "github:gpt-4o-2024-11-20": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "github:o1": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "github:o1-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "github:o3-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "openai:gpt-image-1": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 40, + }, + "openai:o4-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.25, + }, + "openai:o4-mini-2025-04-16": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1-mini": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1-nano": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "openai:gpt-4o": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "openai:gpt-4o-2024-11-20": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "openai:gpt-4o-2024-08-06": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "openai:gpt-4o-2024-05-13": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "openai:gpt-4o-mini": { + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + "openai:gpt-4o-mini-2024-07-18": { + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + "openai:o1": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "openai:o1-2024-12-17": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "openai:o1-preview": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "openai:o1-preview-2024-09-12": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "openai:o1-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "openai:o1-mini-2024-09-12": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "openai:o3-mini": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "openai:o3-mini-2025-01-31": { + price_per_million_input_tokens: 1.1, + price_per_million_output_tokens: 4.4, + input_cache_token_rebate: 0.5, + }, + "openai:text-embedding-3-small": { + price_per_million_input_tokens: 0.02, + price_per_million_output_tokens: null, + }, + "openai:text-embedding-3-large": { + price_per_million_input_tokens: 0.13, + price_per_million_output_tokens: null, + }, + "openai:ada v2": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: null, + }, + "openai:gpt-4o-realtime-preview": { + price_per_million_input_tokens: 5, + price_per_million_output_tokens: 20, + }, + "openai:gpt-4o-realtime-preview-2024-10-01": { + price_per_million_input_tokens: 5, + price_per_million_output_tokens: 20, + }, + "openai:chatgpt-4o-latest": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "openai:gpt-4-turbo": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "openai:gpt-4-turbo-2024-04-09": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "openai:gpt-4": { + price_per_million_input_tokens: 30, + price_per_million_output_tokens: 60, + }, + "openai:gpt-4-32k": { + price_per_million_input_tokens: 60, + price_per_million_output_tokens: 120, + }, + "openai:gpt-4-0125-preview": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "openai:gpt-4-1106-preview": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "openai:gpt-4-vision-preview": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "openai:gpt-3.5-turbo-0125": { + price_per_million_input_tokens: 0.5, + price_per_million_output_tokens: 1.5, + }, + "openai:gpt-3.5-turbo-instruct": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "openai:gpt-3.5-turbo-1106": { + price_per_million_input_tokens: 1, + price_per_million_output_tokens: 2, + }, + "openai:gpt-3.5-turbo-0613": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "openai:gpt-3.5-turbo": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "openai:gpt-3.5-turbo-16k-0613": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 4, + }, + "openai:gpt-3.5-turbo-0301": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "openai:davinci-002": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 2, + }, + "openai:babbage-002": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 0.4, + }, + "azure:gpt-4.1": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "azure:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "azure:gpt-4.1-mini": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "azure:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "azure:gpt-4.1-nano": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "azure:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "azure:o1": { + price_per_million_input_tokens: 15, + price_per_million_output_tokens: 60, + input_cache_token_rebate: 0.5, + }, + "azure:o1-mini": { + price_per_million_input_tokens: 3.3, + price_per_million_output_tokens: 13.2, + input_cache_token_rebate: 0.5, + }, + "azure:gpt-4o-2024-08-06": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "azure:gpt-4o": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "azure:gpt-4o-mini": { + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + "azure:gpt-3.5-turbo-0301": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 2, + }, + "azure:gpt-3.5-turbo-0613": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "azure:gpt-3.5-turbo-0613-16k": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 4, + }, + "azure:gpt-3.5-turbo-1106": { + price_per_million_input_tokens: 1, + price_per_million_output_tokens: 2, + }, + "azure:gpt-3.5-turbo-0125": { + price_per_million_input_tokens: 0.5, + price_per_million_output_tokens: 1.5, + }, + "azure:gpt-3.5-turbo-instruct": { + price_per_million_input_tokens: 1.5, + price_per_million_output_tokens: 2, + }, + "azure:gpt-4": { + price_per_million_input_tokens: 30, + price_per_million_output_tokens: 60, + }, + "azure:gpt-4-32k": { + price_per_million_input_tokens: 60, + price_per_million_output_tokens: 120, + }, + "azure_serverless:gpt-4.1": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4.1-2025-04-14": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4.1-mini": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4.1-mini-2025-04-14": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.6, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4.1-nano": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4.1-nano-2025-04-14": { + price_per_million_input_tokens: 0.1, + price_per_million_output_tokens: 0.4, + input_cache_token_rebate: 0.25, + }, + "azure_serverless:gpt-4o": { + price_per_million_input_tokens: 5, + price_per_million_output_tokens: 15, + }, + "azure_serverless:gpt-4o-mini": { + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + "azure_serverless:gpt-4o-2024-05-13": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "azure_serverless:gpt-4o-2024-08-06": { + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + "azure_serverless:gpt-3.5-turbo-11066": { + price_per_million_input_tokens: 1, + price_per_million_output_tokens: 2, + }, + "azure_serverless:gpt-4-turbo": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "azure_serverless:gpt-4-turbo-vision": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "azure_serverless_models:meta-llama-3-405b-instruct": { + price_per_million_input_tokens: 5.33, + price_per_million_output_tokens: 16, + }, + "azure_serverless_models:llama-3.2-90b-vision-instruct": { + price_per_million_input_tokens: 2.04, + price_per_million_output_tokens: 2.04, + }, + "azure_serverless_models:llama-3.2-11b-vision-instruct": { + price_per_million_input_tokens: 0.37, + price_per_million_output_tokens: 0.37, + }, + "azure_serverless_models:meta-llama-3.1-405b-instruct": { + price_per_million_input_tokens: 5.33, + price_per_million_output_tokens: 16, + }, + "azure_serverless_models:meta-llama-3.1-70b-instruct": { + price_per_million_input_tokens: 2.68, + price_per_million_output_tokens: 3.64, + }, + "azure_serverless_models:meta-llama-3.1-8b-instruct": { + price_per_million_input_tokens: 0.61, + price_per_million_output_tokens: 0.3, + }, + "azure_serverless_models:meta-llama-3-8b-instruct": { + price_per_million_input_tokens: 0.61, + price_per_million_output_tokens: 0.3, + }, + "azure_serverless_models:meta-llama-3-2-90b-vision-instruct": { + price_per_million_input_tokens: 2.04, + price_per_million_output_tokens: 2.04, + }, + "azure_serverless_models:mistral-large": { + price_per_million_input_tokens: 12, + price_per_million_output_tokens: 4, + }, + "azure_serverless_models:mistral-large-2407": { + price_per_million_input_tokens: 9, + price_per_million_output_tokens: 3, + }, + "azure_serverless_models:mistral-small": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 1, + }, + "azure_serverless_models:mistral-nemo": { + price_per_million_input_tokens: 0.3, + price_per_million_output_tokens: 0.3, + }, + "azure_serverless_models:mistral-3b": { + price_per_million_input_tokens: 0.04, + price_per_million_output_tokens: 0.04, + }, + "azure_serverless_models:cohere command r+": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 2.5, + }, + "azure_serverless_models:cohere command r": { + price_per_million_input_tokens: 0.6, + price_per_million_output_tokens: 0.15, + }, + "azure_serverless_models:ai21-jamba-1.5-large": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 8, + }, + "azure_serverless_models:ai21-jamba-1.5-mini": { + price_per_million_input_tokens: 0.2, + price_per_million_output_tokens: 0.4, + }, + "azure_serverless_models:mistral-3b-2410": { + price_per_million_input_tokens: 0.04, + price_per_million_output_tokens: 0.04, + }, + "azure_serverless_models:ministral-3b": { + price_per_million_input_tokens: 0.04, + price_per_million_output_tokens: 0.04, + }, + "azure_ai_inference:deepseek-v3": { + price_per_million_input_tokens: 0.00114, + price_per_million_output_tokens: 0.00456, + }, + "google:gemini-1.5-flash": { + price_per_million_input_tokens: 0.075, + price_per_million_output_tokens: 0.3, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + ], + }, + "google:gemini-1.5-flash-latest": { + price_per_million_input_tokens: 0.075, + price_per_million_output_tokens: 0.3, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + ], + }, + "google:gemini-1.5-flash-002": { + price_per_million_input_tokens: 0.075, + price_per_million_output_tokens: 0.3, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 0.15, + price_per_million_output_tokens: 0.6, + }, + ], + }, + "google:gemini-1.5-flash-8b": { + price_per_million_input_tokens: 0.0375, + price_per_million_output_tokens: 0.15, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 0.075, + price_per_million_output_tokens: 0.3, + }, + ], + }, + "google:gemini-1.5-flash-8b-latest": { + price_per_million_input_tokens: 0.0375, + price_per_million_output_tokens: 0.15, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 0.075, + price_per_million_output_tokens: 0.3, + }, + ], + }, + "google:gemini-1.5-pro": { + price_per_million_input_tokens: 1.25, + price_per_million_output_tokens: 5, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + ], + }, + "google:gemini-1.5-pro-latest": { + price_per_million_input_tokens: 1.25, + price_per_million_output_tokens: 5, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + ], + }, + "google:gemini-1.5-pro-002": { + price_per_million_input_tokens: 1.25, + price_per_million_output_tokens: 5, + tiers: [ + { + context_size: 128000, + price_per_million_input_tokens: 2.5, + price_per_million_output_tokens: 10, + }, + ], + }, + "google:gemini-1-pro": { + price_per_million_input_tokens: 0.5, + price_per_million_output_tokens: 1.5, + }, + "alibaba:qwen-max": { + price_per_million_input_tokens: 10, + price_per_million_output_tokens: 30, + }, + "alibaba:qwen-plus": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 9, + }, + "alibaba:qwen-turbo": { + price_per_million_input_tokens: 0.4, + price_per_million_output_tokens: 1.2, + }, + "mistral:mistral-large-latest": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 6, + }, + "mistral:mistral-small-latest": { + price_per_million_input_tokens: 0.2, + price_per_million_output_tokens: 0.6, + }, + "mistral:pixtral-large-latest": { + price_per_million_input_tokens: 2, + price_per_million_output_tokens: 6, + }, + "mistral:codestral-latest": { + price_per_million_input_tokens: 0.2, + price_per_million_output_tokens: 0.6, + }, + "mistral:mistral-nemo": { + price_per_million_input_tokens: 0.2, + price_per_million_output_tokens: 0.6, + }, + "anthropic:claude-3-7-sonnet-20250219": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 15, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-7-sonnet-latest": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 15, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-5-sonnet-20240620": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 15, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-5-sonnet-20241022": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 15, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-5-sonnet-latest": { + price_per_million_input_tokens: 3, + price_per_million_output_tokens: 15, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-5-haiku-20241022": { + price_per_million_input_tokens: 0.8, + price_per_million_output_tokens: 4, + input_cache_token_rebate: 0.1, + }, + "anthropic:claude-3-5-haiku-latest": { + price_per_million_input_tokens: 0.8, + price_per_million_output_tokens: 4, + input_cache_token_rebate: 0.1, + }, + "deepseek:deepseek-chat": { + price_per_million_input_tokens: 0.14, + price_per_million_output_tokens: 0.28, + input_cache_token_rebate: 0.1, + }, + }, +}; +//# sourceMappingURL=llmsdata.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/llmsdata.js.map b/packages/core/.tshy-build/browser/llmsdata.js.map new file mode 100644 index 0000000000..e1a27725e0 --- /dev/null +++ b/packages/core/.tshy-build/browser/llmsdata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"llmsdata.js","sourceRoot":"","sources":["../../src/llmsdata.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lm.d.ts b/packages/core/.tshy-build/browser/lm.d.ts new file mode 100644 index 0000000000..0a86af1204 --- /dev/null +++ b/packages/core/.tshy-build/browser/lm.d.ts @@ -0,0 +1,15 @@ +import type { LanguageModel } from "./chat.js"; +/** + * Resolves and returns a language model based on the provided model provider identifier. + * + * @param provider - The identifier of the model provider. It determines which language model to return. + * Supported providers include predefined constants from "./constants". + * + * @returns The resolved language model instance corresponding to the specified provider. + * + * @throws An error if the provider is MODEL_PROVIDER_GITHUB_COPILOT_CHAT and no client language model is available. + * If the provider does not match any predefined constant, a LocalOpenAICompatibleModel is returned with + * features derived from the MODEL_PROVIDERS configuration. + */ +export declare function resolveLanguageModel(provider: string): LanguageModel; +//# sourceMappingURL=lm.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lm.d.ts.map b/packages/core/.tshy-build/browser/lm.d.ts.map new file mode 100644 index 0000000000..79c17d2ea7 --- /dev/null +++ b/packages/core/.tshy-build/browser/lm.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"lm.d.ts","sourceRoot":"","sources":["../../src/lm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AA2B/C;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CA8BpE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lm.js b/packages/core/.tshy-build/browser/lm.js new file mode 100644 index 0000000000..062c1391a4 --- /dev/null +++ b/packages/core/.tshy-build/browser/lm.js @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { AnthropicBedrockModel, AnthropicModel } from "./anthropic.js"; +import { MODEL_PROVIDER_ANTHROPIC, MODEL_PROVIDER_ANTHROPIC_BEDROCK, MODEL_PROVIDER_GITHUB_COPILOT_CHAT, MODEL_PROVIDER_GITHUB, MODEL_PROVIDER_LMSTUDIO, MODEL_PROVIDER_OLLAMA, MODEL_PROVIDER_WHISPERASR, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_ECHO, MODEL_PROVIDER_NONE, MODEL_PROVIDER_AZURE_AI_INFERENCE, MODEL_PROVIDER_MCP, } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { OllamaModel } from "./ollama.js"; +import { LocalOpenAICompatibleModel } from "./openai.js"; +import { GitHubModel } from "./github.js"; +import { LMStudioModel } from "./lmstudio.js"; +import { WhisperAsrModel } from "./whisperasr.js"; +import { AzureOpenAIModel } from "./azureopenai.js"; +import { EchoModel } from "./echomodel.js"; +import { NoneModel } from "./nonemodel.js"; +import { AzureAIInferenceModel } from "./azureaiinference.js"; +import { providerFeatures } from "./features.js"; +/** + * Resolves and returns a language model based on the provided model provider identifier. + * + * @param provider - The identifier of the model provider. It determines which language model to return. + * Supported providers include predefined constants from "./constants". + * + * @returns The resolved language model instance corresponding to the specified provider. + * + * @throws An error if the provider is MODEL_PROVIDER_GITHUB_COPILOT_CHAT and no client language model is available. + * If the provider does not match any predefined constant, a LocalOpenAICompatibleModel is returned with + * features derived from the MODEL_PROVIDERS configuration. + */ +export function resolveLanguageModel(provider) { + const runtimeHost = resolveRuntimeHost(); + if (provider === MODEL_PROVIDER_GITHUB_COPILOT_CHAT) { + const m = runtimeHost.clientLanguageModel; + if (!m) + throw new Error("Github Copilot Chat Models not available"); + return m; + } + if (provider === MODEL_PROVIDER_MCP) { + const m = runtimeHost.clientLanguageModel; + if (!m) + throw new Error("MCP Client Sampling not available"); + return m; + } + if (provider === MODEL_PROVIDER_AZURE_OPENAI) + return AzureOpenAIModel; + if (provider === MODEL_PROVIDER_AZURE_AI_INFERENCE) + return AzureAIInferenceModel; + if (provider === MODEL_PROVIDER_GITHUB) + return GitHubModel; + if (provider === MODEL_PROVIDER_OLLAMA) + return OllamaModel; + if (provider === MODEL_PROVIDER_ANTHROPIC) + return AnthropicModel; + if (provider === MODEL_PROVIDER_ANTHROPIC_BEDROCK) + return AnthropicBedrockModel; + if (provider === MODEL_PROVIDER_LMSTUDIO) + return LMStudioModel; + if (provider === MODEL_PROVIDER_WHISPERASR) + return WhisperAsrModel; + if (provider === MODEL_PROVIDER_ECHO) + return EchoModel; + if (provider === MODEL_PROVIDER_NONE) + return NoneModel; + const features = providerFeatures(provider); + return LocalOpenAICompatibleModel(provider, { + listModels: features?.listModels !== false, + transcribe: features?.transcribe, + speech: features?.speech, + imageGeneration: features?.imageGeneration, + }); +} +//# sourceMappingURL=lm.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lm.js.map b/packages/core/.tshy-build/browser/lm.js.map new file mode 100644 index 0000000000..77de038c37 --- /dev/null +++ b/packages/core/.tshy-build/browser/lm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lm.js","sourceRoot":"","sources":["../../src/lm.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,kCAAkC,EAClC,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,iCAAiC,EACjC,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,IAAI,QAAQ,KAAK,kCAAkC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;QAC1C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC;QAC1C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,KAAK,2BAA2B;QAAE,OAAO,gBAAgB,CAAC;IACtE,IAAI,QAAQ,KAAK,iCAAiC;QAAE,OAAO,qBAAqB,CAAC;IACjF,IAAI,QAAQ,KAAK,qBAAqB;QAAE,OAAO,WAAW,CAAC;IAC3D,IAAI,QAAQ,KAAK,qBAAqB;QAAE,OAAO,WAAW,CAAC;IAC3D,IAAI,QAAQ,KAAK,wBAAwB;QAAE,OAAO,cAAc,CAAC;IACjE,IAAI,QAAQ,KAAK,gCAAgC;QAAE,OAAO,qBAAqB,CAAC;IAChF,IAAI,QAAQ,KAAK,uBAAuB;QAAE,OAAO,aAAa,CAAC;IAC/D,IAAI,QAAQ,KAAK,yBAAyB;QAAE,OAAO,eAAe,CAAC;IACnE,IAAI,QAAQ,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC;IACvD,IAAI,QAAQ,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC;IAEvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,0BAA0B,CAAC,QAAQ,EAAE;QAC1C,UAAU,EAAE,QAAQ,EAAE,UAAU,KAAK,KAAK;QAC1C,UAAU,EAAE,QAAQ,EAAE,UAAU;QAChC,MAAM,EAAE,QAAQ,EAAE,MAAM;QACxB,eAAe,EAAE,QAAQ,EAAE,eAAe;KAC3C,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lmstudio.d.ts b/packages/core/.tshy-build/browser/lmstudio.d.ts new file mode 100644 index 0000000000..5de64c413b --- /dev/null +++ b/packages/core/.tshy-build/browser/lmstudio.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const LMStudioModel: Readonly; +//# sourceMappingURL=lmstudio.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lmstudio.d.ts.map b/packages/core/.tshy-build/browser/lmstudio.d.ts.map new file mode 100644 index 0000000000..d3c71d222f --- /dev/null +++ b/packages/core/.tshy-build/browser/lmstudio.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"lmstudio.d.ts","sourceRoot":"","sources":["../../src/lmstudio.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,WAAW,CAAC;AAiBlE,eAAO,MAAM,aAAa,yBAMxB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lmstudio.js b/packages/core/.tshy-build/browser/lmstudio.js new file mode 100644 index 0000000000..b5fa03ff0f --- /dev/null +++ b/packages/core/.tshy-build/browser/lmstudio.js @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDER_LMSTUDIO, SUCCESS_ERROR_CODE } from "./constants.js"; +import { OpenAIChatCompletion, OpenAIEmbedder, OpenAIListModels } from "./openai.js"; +import { logVerbose } from "./util.js"; +import { resolveRuntimeHost } from "./host.js"; +const pullModel = async (cfg, _options) => { + const runtimeHost = resolveRuntimeHost(); + const model = cfg.model; + logVerbose(`lms get ${model} --yes`); + const res = await runtimeHost.exec(undefined, `lms`, [`get`, model, `--yes`], _options); + return { + ok: res.exitCode === SUCCESS_ERROR_CODE, + }; +}; +// Define the Ollama model with its completion handler and model listing function +export const LMStudioModel = Object.freeze({ + id: MODEL_PROVIDER_LMSTUDIO, + completer: OpenAIChatCompletion, + listModels: OpenAIListModels, + pullModel, + embedder: OpenAIEmbedder, +}); +//# sourceMappingURL=lmstudio.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/lmstudio.js.map b/packages/core/.tshy-build/browser/lmstudio.js.map new file mode 100644 index 0000000000..03a64833da --- /dev/null +++ b/packages/core/.tshy-build/browser/lmstudio.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lmstudio.js","sourceRoot":"","sources":["../../src/lmstudio.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,SAAS,GAAsB,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC3D,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,UAAU,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxF,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,QAAQ,KAAK,kBAAkB;KACxC,CAAC;AACJ,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAgB;IACxD,EAAE,EAAE,uBAAuB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,UAAU,EAAE,gBAAgB;IAC5B,SAAS;IACT,QAAQ,EAAE,cAAc;CACzB,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/log.d.ts b/packages/core/.tshy-build/browser/log.d.ts new file mode 100644 index 0000000000..aee7553ab6 --- /dev/null +++ b/packages/core/.tshy-build/browser/log.d.ts @@ -0,0 +1,33 @@ +import type { SerializedError } from "./types.js"; +/** + * Logs an informational message. + * + * @param msg - The message to log. Must be a string containing the information to log. + */ +export declare function logInfo(msg: string): void; +/** + * Logs a verbose debug message using the host logging system. + * + * @param msg - The message to be logged at debug level. + */ +export declare function logVerbose(msg: string): void; +/** + * Logs a warning message to the host system's logger. + * + * @param msg - The warning message to log. Should be a descriptive string providing details about the warning. + */ +export declare function logWarn(msg: string): void; +/** + * Logs an error message with additional debug information if available. + * + * @param msg - The error message, error object, or serialized error to log. + * If the message indicates a cancellation, it is logged as a warning. + * + * Details: + * - Extracts error details such as message, name, and stack from the error object. + * - Logs the error message at "error" severity. + * - Logs the stack trace and additional serialized error data at "debug" severity if present. + * - If the error is a cancellation, logs the message at "warn" severity instead. + */ +export declare function logError(msg: string | Error | SerializedError): void; +//# sourceMappingURL=log.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/log.d.ts.map b/packages/core/.tshy-build/browser/log.d.ts.map new file mode 100644 index 0000000000..74de028b5f --- /dev/null +++ b/packages/core/.tshy-build/browser/log.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,QAGlC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAGrC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,QAGlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,eAAe,QAc7D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/log.js b/packages/core/.tshy-build/browser/log.js new file mode 100644 index 0000000000..7452f8aee9 --- /dev/null +++ b/packages/core/.tshy-build/browser/log.js @@ -0,0 +1,59 @@ +import { isCancelError, serializeError } from "./error.js"; +import { resolveRuntimeHost } from "./host.js"; +import { YAMLStringify } from "./yaml.js"; +/** + * Logs an informational message. + * + * @param msg - The message to log. Must be a string containing the information to log. + */ +export function logInfo(msg) { + const runtimeHost = resolveRuntimeHost(); + runtimeHost.log("info", msg); +} +/** + * Logs a verbose debug message using the host logging system. + * + * @param msg - The message to be logged at debug level. + */ +export function logVerbose(msg) { + const runtimeHost = resolveRuntimeHost(); + runtimeHost.log("debug", msg); +} +/** + * Logs a warning message to the host system's logger. + * + * @param msg - The warning message to log. Should be a descriptive string providing details about the warning. + */ +export function logWarn(msg) { + const runtimeHost = resolveRuntimeHost(); + runtimeHost.log("warn", msg); +} +/** + * Logs an error message with additional debug information if available. + * + * @param msg - The error message, error object, or serialized error to log. + * If the message indicates a cancellation, it is logged as a warning. + * + * Details: + * - Extracts error details such as message, name, and stack from the error object. + * - Logs the error message at "error" severity. + * - Logs the stack trace and additional serialized error data at "debug" severity if present. + * - If the error is a cancellation, logs the message at "warn" severity instead. + */ +export function logError(msg) { + const runtimeHost = resolveRuntimeHost(); + const err = serializeError(msg); + const { message, name, stack, ...e } = err || {}; + if (isCancelError(err)) { + runtimeHost.log("warn", message || "cancelled"); + return; + } + runtimeHost.log("error", message ?? name ?? "error"); + if (stack) + runtimeHost.log("debug", stack); + if (Object.keys(e).length) { + const se = YAMLStringify(e); + runtimeHost.log("debug", se); + } +} +//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/log.js.map b/packages/core/.tshy-build/browser/log.js.map new file mode 100644 index 0000000000..9c3255efcb --- /dev/null +++ b/packages/core/.tshy-build/browser/log.js.map @@ -0,0 +1 @@ +{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAqC;IAC5D,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;IACjD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,WAAW,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;IACrD,IAAI,KAAK;QAAE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logging.d.ts b/packages/core/.tshy-build/browser/logging.d.ts new file mode 100644 index 0000000000..ff1b1dd462 --- /dev/null +++ b/packages/core/.tshy-build/browser/logging.d.ts @@ -0,0 +1,12 @@ +/** + * Formats an array of arguments into a single string for logging purposes. + * + * @param args - The arguments to format. Can include values of various types: + * - Primitive types (number, bigint, string, boolean, undefined). + * - Symbols, which are converted to their string representation. + * - Objects or functions, which are serialized using a custom inspection method. + * + * @returns A string representation of the input arguments. + */ +export declare function consoleLogFormat(...args: any[]): string; +//# sourceMappingURL=logging.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logging.d.ts.map b/packages/core/.tshy-build/browser/logging.d.ts.map new file mode 100644 index 0000000000..fe4bf36567 --- /dev/null +++ b/packages/core/.tshy-build/browser/logging.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/logging.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,UA6B9C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logging.js b/packages/core/.tshy-build/browser/logging.js new file mode 100644 index 0000000000..902125b5f1 --- /dev/null +++ b/packages/core/.tshy-build/browser/logging.js @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import inspect from "object-inspect"; +/** + * Formats an array of arguments into a single string for logging purposes. + * + * @param args - The arguments to format. Can include values of various types: + * - Primitive types (number, bigint, string, boolean, undefined). + * - Symbols, which are converted to their string representation. + * - Objects or functions, which are serialized using a custom inspection method. + * + * @returns A string representation of the input arguments. + */ +export function consoleLogFormat(...args) { + let line = ""; + for (let i = 0; i < args.length; ++i) { + if (i > 0) + line += " "; + const a = args[i]; + switch (typeof a) { + case "bigint": + case "number": + case "boolean": + case "undefined": + line += a; + break; + case "string": + line += a; + break; + case "symbol": + line += a.toString(); + break; + case "object": + case "function": + line += inspect(a, { + indent: 2, + depth: 4, + maxStringLength: 2048, + }); + break; + } + } + return line; +} +//# sourceMappingURL=logging.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logging.js.map b/packages/core/.tshy-build/browser/logging.js.map new file mode 100644 index 0000000000..e00768a9d7 --- /dev/null +++ b/packages/core/.tshy-build/browser/logging.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/logging.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAG,IAAW;IAC7C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC;YAAE,IAAI,IAAI,GAAG,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,QAAQ,OAAO,CAAC,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,IAAI,IAAI,CAAC,CAAC;gBACV,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,CAAC;gBACV,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACb,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE;oBACjB,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC;oBACR,eAAe,EAAE,IAAI;iBACtB,CAAC,CAAC;gBACH,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logprob.d.ts b/packages/core/.tshy-build/browser/logprob.d.ts new file mode 100644 index 0000000000..5f2ce8e237 --- /dev/null +++ b/packages/core/.tshy-build/browser/logprob.d.ts @@ -0,0 +1,106 @@ +import type { ChatCompletionChunkChoice, ChatCompletionTokenLogprob } from "./chattypes.js"; +import type { Logprob } from "./types.js"; +/** + * Serializes a log probability object into a standardized format. + * + * @param content - The log probability object containing: + * - `token`: The token (string) associated with the generated result. + * - `logprob`: The log probability of the given token. + * - `top_logprobs`: An array of top log probabilities, where each entry contains: + * - `token`: The token. + * - `logprob`: The log probability of the token. + * @returns A cleaned and standardized object with: + * - `token`: Serialized token. + * - `logprob`: Log probability of the token. + * - `topLogprobs`: List of top probabilities with associated tokens. + * - `probPercent`: The linear probability percentage. + * - `entropy`: The normalized entropy based on top log probabilities. + */ +export declare function serializeLogProb(content: ChatCompletionTokenLogprob): Logprob; +/** + * Converts a ChatCompletionChunkChoice into an array of Logprob objects. + * + * @param choice - The ChatCompletionChunkChoice to be serialized. It contains: + * - `delta`: Partial content or token emitted by the model. + * - `logprobs`: Log probability details, including `content` if available. + * + * @returns An array of Logprob objects. If `logprobs.content` exists, it maps each token to its Logprob. + * Otherwise, returns a single Logprob with the token from `delta.content` and a NaN logprob value. + */ +export declare function serializeChunkChoiceToLogProbs(choice: ChatCompletionChunkChoice): Logprob[]; +/** + * Renders a log probability value as a formatted string. + * + * @param logprob - The log probability value to render. If undefined or NaN, the result will be "--". + * @returns A formatted string displaying the probability as a percentage (with two decimal places) and the raw log probability rounded to two decimal places. + */ +export declare function renderLogprob(logprob: number | undefined): string; +/** + * Computes a color value based on a log probability, suitable for a red-to-blue gradient. + * + * @param logprob - The log probability data containing token, log probability, and optional entropy values. + * @param options - Optional settings for calculating the color gradient. + * @param options.maxIntensity - Maximum intensity value for the gradient. Defaults to 210. + * @param options.entropy - If true, the entropy value is used to normalize the calculation. Defaults to false. + * + * @returns A 24-bit RGB color value where each 8 bits represent red, green, and blue channels respectively. + */ +export declare function logprobColor(logprob: Logprob, options?: { + maxIntensity?: number; + entropy?: boolean; +}): number; +/** + * Converts an RGB integer value to a CSS-compatible string. + * + * @param value - The RGB value packed as an integer, where each byte represents a color channel (red, green, blue). + * For example, 0xRRGGBB. + * + * @returns A CSS color string in the format `rgb(r, g, b)`. Defaults to `#fff` if the input is not a valid number. + */ +export declare function rgbToCss(value: number): string; +/** + * Converts a log probability value and associated token into a styled Markdown-like string. + * The output includes a span element styled with colors that represent the intensity of the log probability. + * + * @param value - The log probability entry containing the token, log probability, and entropy value. + * @param options - Optional configuration for customization: + * - maxIntensity: Adjusts the maximum intensity of color used in the gradient. + * - entropy: Determines whether entropy is displayed in the title. + * - eatSpaces: When true, replaces newlines in the token with spaces. Otherwise, replaces spaces with non-breaking spaces and converts newlines to HTML line breaks. + * @returns A styled string representing the token with gradient-based log probability coloring. + */ +export declare function logprobToMarkdown(value: Logprob, options?: { + maxIntensity?: number; + entropy?: boolean; + eatSpaces?: boolean; +}): string; +/** + * Converts the top log probabilities of a given value into an HTML table representation for markdown rendering. + * + * @param value - The log probability object containing the token and its associated top log probabilities. + * @param options - Optional configuration for rendering: + * - maxIntensity: Controls the maximum intensity of the color gradient. + * + * @returns A string of HTML representing the top log probabilities in a styled table. + */ +export declare function topLogprobsToMarkdown(value: Logprob, options?: { + maxIntensity?: number; +}): string; +/** + * Computes the perplexity of a series of log probabilities. + * Perplexity is a measure of uncertainty or variability, with lower values indicating more confident predictions. + * + * @param logprobs - An array of log probability objects, where each object contains a log probability value. If the array is undefined or empty, the function returns undefined. + * @returns The computed perplexity as a number, or undefined if the input array is undefined or empty. + */ +export declare function computePerplexity(logprobs: Logprob[] | undefined): number | undefined; +/** + * Computes the average structural uncertainty of a series of log probabilities. + * Filters log probabilities with defined top probabilities and calculates normalized entropy for each. + * Returns the mean of valid normalized entropy values, or undefined if no valid data is found. + * + * @param logprobs - Array of log probabilities to process. Each log probability must include a token and may include top probabilities. + * @returns The average normalized entropy or undefined if no valid data exists. + */ +export declare function computeStructuralUncertainty(logprobs: Logprob[] | undefined): number; +//# sourceMappingURL=logprob.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logprob.d.ts.map b/packages/core/.tshy-build/browser/logprob.d.ts.map new file mode 100644 index 0000000000..3bf1801f7a --- /dev/null +++ b/packages/core/.tshy-build/browser/logprob.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logprob.d.ts","sourceRoot":"","sources":["../../src/logprob.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAI5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAY7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,EAAE,CAU3F;AAQD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,MAAM,CASR;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,UAS5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,UAIxF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIrF;AAkBD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,CAQpF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logprob.js b/packages/core/.tshy-build/browser/logprob.js new file mode 100644 index 0000000000..104ffd5630 --- /dev/null +++ b/packages/core/.tshy-build/browser/logprob.js @@ -0,0 +1,187 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { escape } from "html-escaper"; +import { roundWithPrecision } from "./precision.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +/** + * Serializes a log probability object into a standardized format. + * + * @param content - The log probability object containing: + * - `token`: The token (string) associated with the generated result. + * - `logprob`: The log probability of the given token. + * - `top_logprobs`: An array of top log probabilities, where each entry contains: + * - `token`: The token. + * - `logprob`: The log probability of the token. + * @returns A cleaned and standardized object with: + * - `token`: Serialized token. + * - `logprob`: Log probability of the token. + * - `topLogprobs`: List of top probabilities with associated tokens. + * - `probPercent`: The linear probability percentage. + * - `entropy`: The normalized entropy based on top log probabilities. + */ +export function serializeLogProb(content) { + const { token, logprob, top_logprobs } = content; + return deleteUndefinedValues({ + token, + logprob, + topLogprobs: top_logprobs?.map((tp) => ({ + token: tp.token, + logprob: tp.logprob, + })), + probPercent: logprobToPercent(logprob), + entropy: computeNormalizedEntropy(top_logprobs), + }); +} +/** + * Converts a ChatCompletionChunkChoice into an array of Logprob objects. + * + * @param choice - The ChatCompletionChunkChoice to be serialized. It contains: + * - `delta`: Partial content or token emitted by the model. + * - `logprobs`: Log probability details, including `content` if available. + * + * @returns An array of Logprob objects. If `logprobs.content` exists, it maps each token to its Logprob. + * Otherwise, returns a single Logprob with the token from `delta.content` and a NaN logprob value. + */ +export function serializeChunkChoiceToLogProbs(choice) { + const { delta, logprobs } = choice; + if (logprobs?.content) + return logprobs.content.map(serializeLogProb); + else + return [ + { + token: delta.content || "", + logprob: Number.NaN, + }, + ]; +} +function logprobToPercent(value) { + if (value === undefined) + return NaN; + const linearProbability = roundWithPrecision(Math.exp(value) * 100, 2); + return linearProbability; +} +/** + * Renders a log probability value as a formatted string. + * + * @param logprob - The log probability value to render. If undefined or NaN, the result will be "--". + * @returns A formatted string displaying the probability as a percentage (with two decimal places) and the raw log probability rounded to two decimal places. + */ +export function renderLogprob(logprob) { + return logprob === undefined || isNaN(logprob) + ? `--` + : `${logprobToPercent(logprob)}% (${roundWithPrecision(logprob, 2)})`; +} +/** + * Computes a color value based on a log probability, suitable for a red-to-blue gradient. + * + * @param logprob - The log probability data containing token, log probability, and optional entropy values. + * @param options - Optional settings for calculating the color gradient. + * @param options.maxIntensity - Maximum intensity value for the gradient. Defaults to 210. + * @param options.entropy - If true, the entropy value is used to normalize the calculation. Defaults to false. + * + * @returns A 24-bit RGB color value where each 8 bits represent red, green, and blue channels respectively. + */ +export function logprobColor(logprob, options) { + const { maxIntensity = 210, entropy } = options || {}; + // Normalize log probability for a red to blue gradient range + const alpha = entropy ? 1 - (logprob.entropy || 0) : logprobToPercent(logprob.logprob) / 100; + const intensity = Math.round(maxIntensity * alpha); + const red = maxIntensity - intensity; // Higher logProb gives less red, more blue + const blue = intensity; // Higher logProb gives more blue + const green = 0; + return (red << 16) | (green << 8) | (blue << 0); +} +/** + * Converts an RGB integer value to a CSS-compatible string. + * + * @param value - The RGB value packed as an integer, where each byte represents a color channel (red, green, blue). + * For example, 0xRRGGBB. + * + * @returns A CSS color string in the format `rgb(r, g, b)`. Defaults to `#fff` if the input is not a valid number. + */ +export function rgbToCss(value) { + return isNaN(value) + ? `#fff` + : `rgb(${(value >> 16) & 0xff}, ${(value >> 8) & 0xff}, ${value & 0xff})`; +} +/** + * Converts a log probability value and associated token into a styled Markdown-like string. + * The output includes a span element styled with colors that represent the intensity of the log probability. + * + * @param value - The log probability entry containing the token, log probability, and entropy value. + * @param options - Optional configuration for customization: + * - maxIntensity: Adjusts the maximum intensity of color used in the gradient. + * - entropy: Determines whether entropy is displayed in the title. + * - eatSpaces: When true, replaces newlines in the token with spaces. Otherwise, replaces spaces with non-breaking spaces and converts newlines to HTML line breaks. + * @returns A styled string representing the token with gradient-based log probability coloring. + */ +export function logprobToMarkdown(value, options) { + const { token, logprob, entropy } = value; + const c = rgbToCss(logprobColor(value, options)); + const title = options?.entropy ? roundWithPrecision(entropy, 2) : renderLogprob(logprob); + let text = escape(token).replace(//g, ">"); + if (options?.eatSpaces) + text = text.replace(/\n/g, " "); + else + text = text.replace(/ /g, " ").replace(/\n/g, "
"); + return `${text}`; +} +/** + * Converts the top log probabilities of a given value into an HTML table representation for markdown rendering. + * + * @param value - The log probability object containing the token and its associated top log probabilities. + * @param options - Optional configuration for rendering: + * - maxIntensity: Controls the maximum intensity of the color gradient. + * + * @returns A string of HTML representing the top log probabilities in a styled table. + */ +export function topLogprobsToMarkdown(value, options) { + const { token, topLogprobs = [] } = value; + const opts = { ...options, eatSpaces: true }; + return `${topLogprobs.map((tp) => ``).join("")}
${logprobToMarkdown(tp, opts)}
${/\n/.test(token) ? "
" : ""}`; +} +/** + * Computes the perplexity of a series of log probabilities. + * Perplexity is a measure of uncertainty or variability, with lower values indicating more confident predictions. + * + * @param logprobs - An array of log probability objects, where each object contains a log probability value. If the array is undefined or empty, the function returns undefined. + * @returns The computed perplexity as a number, or undefined if the input array is undefined or empty. + */ +export function computePerplexity(logprobs) { + if (!logprobs?.length) + return undefined; + const sum = logprobs.reduce((acc, { logprob }) => acc + logprob, 0); + return Math.exp(-sum / logprobs.length); +} +function computeNormalizedEntropy(logprobs) { + if (!(logprobs?.length >= 2)) + return undefined; + // Calculate entropy + // https://www.watchful.io/blog/decoding-llm-uncertainties-for-better-predictability + const entropy = -logprobs.reduce((acc, lp) => acc + Math.exp(lp.logprob) * lp.logprob, 0); + // Maximum possible entropy with vocab size N + const maxEntropy = Math.log(logprobs.length); + // Calculate normalized entropy + const normalizedEntropy = entropy / maxEntropy; + return normalizedEntropy; +} +/** + * Computes the average structural uncertainty of a series of log probabilities. + * Filters log probabilities with defined top probabilities and calculates normalized entropy for each. + * Returns the mean of valid normalized entropy values, or undefined if no valid data is found. + * + * @param logprobs - Array of log probabilities to process. Each log probability must include a token and may include top probabilities. + * @returns The average normalized entropy or undefined if no valid data exists. + */ +export function computeStructuralUncertainty(logprobs) { + if (!logprobs?.length) + return undefined; + const vs = logprobs + .filter((lp) => lp.topLogprobs) + .map((logprob) => computeNormalizedEntropy(logprob.topLogprobs)) + .filter((v) => v !== undefined && !isNaN(v)); + if (!vs.length) + return undefined; + return vs.reduce((acc, v) => acc + v, 0) / vs.length; +} +//# sourceMappingURL=logprob.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/logprob.js.map b/packages/core/.tshy-build/browser/logprob.js.map new file mode 100644 index 0000000000..6b8a9b0484 --- /dev/null +++ b/packages/core/.tshy-build/browser/logprob.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logprob.js","sourceRoot":"","sources":["../../src/logprob.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdown.d.ts b/packages/core/.tshy-build/browser/markdown.d.ts new file mode 100644 index 0000000000..250781273e --- /dev/null +++ b/packages/core/.tshy-build/browser/markdown.d.ts @@ -0,0 +1,20 @@ +import type { CancellationOptions } from "./cancellation.js"; +/** + * Splits a markdown string into an array of parts, where each part is either a text block or an image block. + * Image blocks are objects of the form { type: "image", alt: string, url: string }. Only local images are supported. + * Text blocks are objects of the form { type: "text", text: string }. + * @param markdown The markdown string to split. + */ +export declare function splitMarkdownTextImageParts(markdown: string, options?: CancellationOptions & { + dir?: string; + allowedDomains?: string[]; + convertToDataUri?: boolean; +}): Promise<({ + type: "text"; + text: string; +} | { + type: "image"; + data: string; + mimeType: string; +})[]>; +//# sourceMappingURL=markdown.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdown.d.ts.map b/packages/core/.tshy-build/browser/markdown.d.ts.map new file mode 100644 index 0000000000..ef7c1e6c98 --- /dev/null +++ b/packages/core/.tshy-build/browser/markdown.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/markdown.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAO5D;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAAG;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;UAMW,MAAM;UAAQ,MAAM;;UACpB,OAAO;UAAQ,MAAM;cAAY,MAAM;MAiDpD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdown.js b/packages/core/.tshy-build/browser/markdown.js new file mode 100644 index 0000000000..6f1d011fd2 --- /dev/null +++ b/packages/core/.tshy-build/browser/markdown.js @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module provides utilities for handling markdown, including prettifying, cleaning, +// generating markdown structures, and parsing trace trees. It supports operations like +// converting annotations to markdown, wrapping text in fences, creating links and details blocks, +// and working with trace trees. +import { resolveFileDataUri } from "./filebytes.js"; +import { checkCancelled } from "./cancellation.js"; +import { HTTP_OR_S_REGEX } from "./constants.js"; +import { genaiscriptDebug } from "./debug.js"; +import { join, resolve } from "node:path"; +const dbg = genaiscriptDebug("markdown"); +/** + * Splits a markdown string into an array of parts, where each part is either a text block or an image block. + * Image blocks are objects of the form { type: "image", alt: string, url: string }. Only local images are supported. + * Text blocks are objects of the form { type: "text", text: string }. + * @param markdown The markdown string to split. + */ +export async function splitMarkdownTextImageParts(markdown, options) { + const { dir = "", cancellationToken, allowedDomains, convertToDataUri } = options || {}; + // remove \. for all images + const regex = /^!\[(?[^\]]*)\]\((?\.[^)]+)\)$/gm; + const parts = []; + let lastIndex = 0; + let match; + while ((match = regex.exec(markdown)) !== null) { + checkCancelled(cancellationToken); + if (match.index > lastIndex) { + const text = markdown.slice(lastIndex, match.index); + if (text) + parts.push({ type: "text", text }); + } + const { alt, imageUrl } = match.groups; + let data; + let mimeType; + const isDataUri = /^datauri:\/\//.test(imageUrl); + if (isDataUri) { + // TODO + } + else if (HTTP_OR_S_REGEX.test(imageUrl)) { + // TODO + } + else if (/^\./.test(imageUrl)) { + dbg(`local image: %s`, imageUrl); + if (convertToDataUri) { + const filename = resolve(join(dir, imageUrl)); + dbg(`local file: %s`, filename); + try { + const res = await resolveFileDataUri(filename, options); + data = res.data; + mimeType = res.mimeType; + } + catch (err) { + dbg(`%O`, err); + } + } + } + if (data && mimeType) { + parts.push({ type: "image", data, mimeType }); + } + else { + const lastPart = parts.at(-1); + if (lastPart?.type === "text") + lastPart.text += match[0]; + else + parts.push({ type: "text", text: match[0] }); + } + lastIndex = regex.lastIndex; + } + if (lastIndex < markdown.length) { + const text = markdown.slice(lastIndex); + if (text) + parts.push({ type: "text", text }); + } + return parts; +} +//# sourceMappingURL=markdown.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdown.js.map b/packages/core/.tshy-build/browser/markdown.js.map new file mode 100644 index 0000000000..9331b80cca --- /dev/null +++ b/packages/core/.tshy-build/browser/markdown.js.map @@ -0,0 +1 @@ +{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/markdown.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdownscript.d.ts b/packages/core/.tshy-build/browser/markdownscript.d.ts new file mode 100644 index 0000000000..161854d67e --- /dev/null +++ b/packages/core/.tshy-build/browser/markdownscript.d.ts @@ -0,0 +1,18 @@ +import type { PromptArgs } from "./types.js"; +/** + * Parses a markdown script file with frontmatter and transpiles it to GenAIScript. + * + * @param filename - The name of the file being processed + * @param text - The raw text of the document, including optional frontmatter and content body + * @returns The transpiled JavaScript source code + * + * The parsing process: + * - Splits the document into frontmatter and content using splitMarkdown + * - Converts frontmatter to PromptArgs metadata + * - Converts content body to $ calls for the prompt using unified/remark AST processing + */ +export declare function markdownScriptParse(text: string): Promise<{ + jsSource: string; + meta: PromptArgs; +}>; +//# sourceMappingURL=markdownscript.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdownscript.d.ts.map b/packages/core/.tshy-build/browser/markdownscript.d.ts.map new file mode 100644 index 0000000000..1610b4ba2c --- /dev/null +++ b/packages/core/.tshy-build/browser/markdownscript.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"markdownscript.d.ts","sourceRoot":"","sources":["../../src/markdownscript.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM;;;GAuErD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdownscript.js b/packages/core/.tshy-build/browser/markdownscript.js new file mode 100644 index 0000000000..45ce93251a --- /dev/null +++ b/packages/core/.tshy-build/browser/markdownscript.js @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { splitMarkdown } from "./frontmatter.js"; +import { YAMLParse } from "./yaml.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { JSON5Stringify } from "./json5.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("md"); +/** + * Parses a markdown script file with frontmatter and transpiles it to GenAIScript. + * + * @param filename - The name of the file being processed + * @param text - The raw text of the document, including optional frontmatter and content body + * @returns The transpiled JavaScript source code + * + * The parsing process: + * - Splits the document into frontmatter and content using splitMarkdown + * - Converts frontmatter to PromptArgs metadata + * - Converts content body to $ calls for the prompt using unified/remark AST processing + */ +export async function markdownScriptParse(text) { + const { frontmatter = "", content = "" } = splitMarkdown(text); + // Parse frontmatter as YAML and convert to PromptArgs + const fm = frontmatter ? YAMLParse(frontmatter) : {}; + const meta = deleteUndefinedValues(fm); + // Generate the script source + let jsSource = ""; + // Add script configuration if metadata exists + if (Object.keys(meta).length) { + jsSource += `script(${JSON5Stringify(meta, null, 2)})\n\n`; + } + // Convert markdown content to $ call using unified/remark + if (content.trim()) { + const { unified } = await import("unified"); + const { default: remarkParse } = await import("remark-parse"); + const { default: remarkStringify } = await import("remark-stringify"); + // Parse the markdown content into an AST + const parse = unified().use(remarkParse); + const stringify = unified().use(remarkStringify, { + bullet: "-", + fence: "`", + fences: true, + incrementListMarker: true, + }); + const tree = parse.parse(content); + let contents = []; + const flush = () => { + if (contents.length) + jsSource += `$\`${contents.join("\n")}\`\n\n`; + contents = []; + }; + for (const child of tree.children) { + if (child.type === "code" && + /^(ts|js|typescript|javascript)$/i.test(child.lang) && + /genai/i.test(child.meta)) { + dbg(`js block`); + flush(); + jsSource += `// ${child.lang} ${child.meta} (${child.position?.start?.line || "--"})\n`; + jsSource += child.value + "\n\n"; + } + else if (child.type === "paragraph" && + child.children.length === 1 && + child.children[0].type === "image") { + dbg(`image`); + flush(); + const img = child.children[0]; + jsSource += `// image ${img.alt || "no alt"} (${img.position?.start?.line || "--"})\n`; + jsSource += `defImages(${JSON.stringify(img.url)});\n\n`; + } + else { + const tempTree = { type: "root", children: [child] }; + const result = stringify.stringify(tempTree); + const escapedContent = result.replace(/`/g, "\\`"); + contents.push(escapedContent); + } + } + flush(); + } + dbg(`meta: %O`, meta); + dbg(`js: %s`, jsSource); + return { jsSource, meta }; +} +//# sourceMappingURL=markdownscript.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/markdownscript.js.map b/packages/core/.tshy-build/browser/markdownscript.js.map new file mode 100644 index 0000000000..8cc6951dca --- /dev/null +++ b/packages/core/.tshy-build/browser/markdownscript.js.map @@ -0,0 +1 @@ +{"version":3,"file":"markdownscript.js","sourceRoot":"","sources":["../../src/markdownscript.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/math.d.ts b/packages/core/.tshy-build/browser/math.d.ts new file mode 100644 index 0000000000..06636a150d --- /dev/null +++ b/packages/core/.tshy-build/browser/math.d.ts @@ -0,0 +1,19 @@ +import type { TraceOptions } from "./trace.js"; +/** + * Asynchronously evaluates a mathematical expression. + * + * @param expr - The string expression to evaluate + * @param options - Optional parameters including: + * - defaultValue: A fallback number if evaluation fails or expression is empty + * - trace: A tracing object for logging errors + * + * @returns A Promise that resolves to the evaluation result which can be: + * - a number if evaluation is successful + * - the default value if specified and the expression is empty + * - undefined if evaluation fails + */ +export declare function MathTryEvaluate(expr: string, options?: { + scope?: object; + defaultValue?: number; +} & TraceOptions): Promise; +//# sourceMappingURL=math.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/math.d.ts.map b/packages/core/.tshy-build/browser/math.d.ts.map new file mode 100644 index 0000000000..df349123a0 --- /dev/null +++ b/packages/core/.tshy-build/browser/math.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,GACjE,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAoBtC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/math.js b/packages/core/.tshy-build/browser/math.js new file mode 100644 index 0000000000..a5b76bb299 --- /dev/null +++ b/packages/core/.tshy-build/browser/math.js @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Asynchronously evaluates a mathematical expression. + * + * @param expr - The string expression to evaluate + * @param options - Optional parameters including: + * - defaultValue: A fallback number if evaluation fails or expression is empty + * - trace: A tracing object for logging errors + * + * @returns A Promise that resolves to the evaluation result which can be: + * - a number if evaluation is successful + * - the default value if specified and the expression is empty + * - undefined if evaluation fails + */ +export async function MathTryEvaluate(expr, options) { + // Destructuring options with defaults + const { trace, defaultValue, scope = {} } = options || {}; + try { + // Return defaultValue if expression is empty + if (!expr) + return defaultValue; + const { evaluate } = await import("mathjs"); + // Evaluate the expression and return the result + const res = evaluate(expr, scope); + return res; + } + catch (e) { + // Log an error if tracing is enabled + trace?.error(e); + // Return undefined if evaluation fails + return undefined; + } +} +//# sourceMappingURL=math.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/math.js.map b/packages/core/.tshy-build/browser/math.js.map new file mode 100644 index 0000000000..19836f4468 --- /dev/null +++ b/packages/core/.tshy-build/browser/math.js.map @@ -0,0 +1 @@ +{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,OAAkE;IAElE,sCAAsC;IACtC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE1D,IAAI,CAAC;QACH,6CAA6C;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,YAAY,CAAC;QAE/B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE5C,gDAAgD;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,qCAAqC;QACrC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAEhB,uCAAuC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpclient.d.ts b/packages/core/.tshy-build/browser/mcpclient.d.ts new file mode 100644 index 0000000000..2e805e88f6 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpclient.d.ts @@ -0,0 +1,11 @@ +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { McpClient, McpServerConfig } from "./types.js"; +export declare class McpClientManager extends EventTarget implements AsyncDisposable { + private _clients; + startMcpServer(serverConfig: McpServerConfig, options: Required & CancellationOptions): Promise; + get clients(): McpClient[]; + dispose(): Promise; + [Symbol.asyncDispose](): Promise; +} +//# sourceMappingURL=mcpclient.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpclient.d.ts.map b/packages/core/.tshy-build/browser/mcpclient.d.ts.map new file mode 100644 index 0000000000..03a7acdbc3 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpclient.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpclient.d.ts","sourceRoot":"","sources":["../../src/mcpclient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,OAAO,KAAK,EAEV,SAAS,EACT,eAAe,EAQhB,MAAM,YAAY,CAAC;AAmIpB,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,eAAe;IAC1E,OAAO,CAAC,QAAQ,CAAmB;IAE7B,cAAc,CAClB,YAAY,EAAE,eAAe,EAC7B,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,mBAAmB,GACpD,OAAO,CAAC,SAAS,CAAC;IAqQrB,IAAI,OAAO,IAAI,SAAS,EAAE,CAEzB;IAEK,OAAO;IAOP,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpclient.js b/packages/core/.tshy-build/browser/mcpclient.js new file mode 100644 index 0000000000..42f17a945b --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpclient.js @@ -0,0 +1,355 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { arrayify } from "./cleaners.js"; +import { logError, logVerbose } from "./util.js"; +import { errorMessage } from "./error.js"; +import { toSignal } from "./cancellation.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { hash } from "./crypto.js"; +import { fileWriteCachedJSON } from "./filecache.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { YAMLStringify } from "./yaml.js"; +import { resolvePromptInjectionDetector } from "./contentsafety.js"; +import { genaiscriptDebug } from "./debug.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; +import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; +import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js"; +const dbg = genaiscriptDebug("mcp:client"); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function toolResultContentToText(res) { + let text; + if (typeof res?.text === "string") + text = res.text; + else { + const content = res.content; + if (typeof content === "string") + text = content; + else + text = arrayify(content) + ?.map((c) => { + switch (c.type) { + case "text": + return c.text || ""; + case "image": + return c.data; + case "resource": + return c.resource?.uri || ""; + default: + return c; + } + }) + .join("\n"); + } + text = text || ""; + if (res.isError) { + dbg(`tool error: ${text}`); + text = `Tool Error:\n${text}`; + } + return text; +} +function resolveMcpEnv(_env) { + if (!_env) + return _env; + const res = structuredClone(_env); + Object.entries(res) + .filter(([, v]) => v === "") + .forEach(([key]) => { + dbg(`filling env var: %s`, key); + res[key] = process.env[key] || ""; + }); + return res; +} +function patchInputSchema(inputSchema) { + const res = structuredClone(inputSchema); + delete res["$schema"]; + if (res.type === "object") { + if (!res.properties) + res.properties = {}; + if (!res.required) + res.required = []; + } + return res; +} +/** + * Determine the transport type from the server configuration + */ +function determineTransportType(config) { + // If type is explicitly specified, use it + if (config.type) { + return config.type; + } + // If URL is provided, default to HTTP transport + if (config.url) { + const url = new URL(config.url); + if (url.protocol === "ws:" || url.protocol === "wss:") { + throw new Error("WebSocket transport is not supported. Use HTTP or SSE transport instead."); + } + // Default to streamable HTTP for HTTP URLs + return "http"; + } + // If command/args are provided, use stdio + if (config.command && config.args) { + return "stdio"; + } + // Default fallback to stdio for backward compatibility + return "stdio"; +} +/** + * Create the appropriate transport based on the server configuration + */ +function createTransport(config, mcpEnv) { + const transportType = determineTransportType(config); + switch (transportType) { + case "stdio": { + if (!config.command || !config.args) { + throw new Error("stdio transport requires command and args"); + } + const { command, args, cwd, ...rest } = config; + return new StdioClientTransport(deleteUndefinedValues({ + command, + args, + cwd, + env: mcpEnv, + stderr: "inherit", + })); + } + case "http": { + if (!config.url) { + throw new Error("HTTP transport requires url"); + } + return new StreamableHTTPClientTransport(new URL(config.url)); + } + case "sse": { + if (!config.url) { + throw new Error("SSE transport requires url"); + } + return new SSEClientTransport(new URL(config.url)); + } + default: + throw new Error(`Unsupported transport type: ${transportType}`); + } +} +export class McpClientManager extends EventTarget { + _clients = []; + async startMcpServer(serverConfig, options) { + const { cancellationToken } = options || {}; + logVerbose(`mcp: starting ` + serverConfig.id); + const signal = toSignal(cancellationToken); + const { id, version = "1.0.0", toolsSha, detectPromptInjection, contentSafety, tools: _toolsConfig, generator, intent, disableToolIdMangling, env: unresolvedEnv, ...rest } = serverConfig; + const mcpEnv = resolveMcpEnv(unresolvedEnv); + const toolSpecs = arrayify(_toolsConfig).map(toMcpToolSpecification); + const commonToolOptions = deleteUndefinedValues({ + contentSafety, + detectPromptInjection, + intent, + }); + // genaiscript:mcp:id + const dbgc = dbg.extend(id); + dbgc(`starting`); + const trace = options.trace?.startTraceDetails(`🪚 mcp ${id}`); + try { + const progress = (msg) => (ev) => dbgc(msg + " ", `${ev.progress || ""}/${ev.total || ""}`); + const capabilities = { tools: {} }; + const transportType = determineTransportType(serverConfig); + dbgc(`creating ${transportType} transport %O`, deleteUndefinedValues({ + url: serverConfig.url, + command: serverConfig.command, + args: serverConfig.args, + type: transportType, + env: mcpEnv ? Object.keys(mcpEnv) : undefined, + })); + let transport = createTransport(serverConfig, mcpEnv); + // eslint-disable-next-line prefer-const + let mcpClient; + let client = new Client({ name: id, version }, { capabilities }); + dbgc(`connecting ${transportType} transport`); + await client.connect(transport); + const ping = async () => { + dbgc(`ping`); + await client.ping({ signal }); + }; + const listTools = async () => { + dbgc(`listing tools`); + const { tools } = await client.listTools({}, { signal, onprogress: progress("list tools") }); + return tools.map((t) => ({ + name: t.name, + description: t.description, + inputSchema: patchInputSchema(t.inputSchema), + })); + }; + const listToolCallbacks = async () => { + // list tools + dbgc(`listing tools`); + let { tools: toolDefinitions } = await client.listTools({}, { signal, onprogress: progress("list tools") }); + trace?.fence(toolDefinitions.map(({ name, description }) => ({ + name, + description, + })), "json"); + const toolsFile = await fileWriteCachedJSON(dotGenaiscriptPath("mcp", id, "tools"), toolDefinitions); + logVerbose(`mcp ${id}: tools: ${toolsFile}`); + // apply filter + if (toolSpecs.length > 0) { + dbg(`filtering tools`); + trace?.fence(toolSpecs, "json"); + toolDefinitions = toolDefinitions.filter((tool) => toolSpecs.some((s) => s.id === tool.name)); + dbg(`filtered tools: %d`, toolDefinitions.map((t) => t.name).join(", ")); + } + const sha = await hash(JSON.stringify(toolDefinitions)); + trace?.itemValue("tools sha", sha); + logVerbose(`mcp ${id}: tools sha: ${sha}`); + if (toolsSha !== undefined) { + if (sha === toolsSha) + logVerbose(`mcp ${id}: tools signature validated successfully`); + else { + logError(`mcp ${id}: tools signature changed, please review the tools and update 'toolsSha' in the mcp server configuration.`); + throw new Error(`mcp ${id} tools signature changed`); + } + } + if (detectPromptInjection) { + const detector = await resolvePromptInjectionDetector(serverConfig, { + trace, + cancellationToken, + }); + const result = await detector(YAMLStringify(toolDefinitions)); + if (result.attackDetected) { + dbgc("%O", result); + throw new Error(`mcp ${id}: prompt injection detected in tools`); + } + } + const tools = toolDefinitions.map(({ name, description, inputSchema }) => { + const toolSpec = toolSpecs.find(({ id: tid }) => tid === name); + const toolOptions = { + ...commonToolOptions, + ...(toolSpec || {}), + }; + return { + spec: { + name: disableToolIdMangling ? name : `${id}_${name}`, + description, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + parameters: patchInputSchema(inputSchema), + }, + options: toolOptions, + generator, + impl: async (args) => { + dbgc(`calling tool callback %s`, id); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { context, ...restArgs } = args; + const res = await client.callTool({ + name: name, + arguments: restArgs, + }, undefined, { + signal, + onprogress: progress(`tool call ${name} `), + }); + const text = toolResultContentToText(res); + return text; + }, + }; + }); + dbgc(`tools (imported): %O`, tools.map((t) => t.spec)); + return tools; + }; + const readResource = async (uri) => { + dbgc(`read resource ${uri}`); + const res = await client.readResource({ uri }); + const contents = res.contents; + return contents?.map((content) => deleteUndefinedValues({ + content: content.text + ? String(content.text) + : content.blob + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + Buffer.from(content.blob).toString("base64") + : undefined, + encoding: content.blob ? "base64" : undefined, + filename: content.uri, + type: content.mimeType, + })); + }; + const listResources = async () => { + dbgc(`listing resources`); + const { resources } = await client.listResources({}, { signal, onprogress: progress("list resources") }); + const res = resources.map((r) => ({ + name: r.name, + description: r.description, + uri: r.uri, + mimeType: r.mimeType, + })); + dbgc(`resources: %O`, res); + return res; + }; + const dispose = async () => { + dbgc(`disposing`); + const i = this._clients.indexOf(mcpClient); + if (i >= 0) + this._clients.splice(i, 1); + try { + await client.close(); + client = undefined; + } + catch (err) { + dbgc(`error closing client: ${errorMessage(err)}`); + } + try { + await transport.close(); + transport = undefined; + } + catch (err) { + dbgc(`error closing transport: ${errorMessage(err)}`); + } + }; + const callTool = async (toolId, args) => { + dbgc(`calling tool %s`, toolId); + const responseSchema = undefined; + const callRes = await client.callTool({ + name: toolId, + arguments: args, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + responseSchema, { + signal, + onprogress: progress(`tool call ${toolId} `), + }); + return deleteUndefinedValues({ + isError: callRes.isError, + content: callRes.content, + text: toolResultContentToText(callRes), + }); + }; + mcpClient = Object.freeze({ + config: Object.freeze({ ...serverConfig }), + ping, + listTools, + listToolCallbacks, + callTool, + listResources, + readResource, + dispose, + [Symbol.asyncDispose]: dispose, + }); + this._clients.push(mcpClient); + return mcpClient; + } + finally { + trace?.endDetails(); + } + } + get clients() { + return this._clients.slice(0); + } + async dispose() { + const clients = this._clients.slice(0); + for (const client of clients) { + await client.dispose(); + } + } + async [Symbol.asyncDispose]() { } +} +function toMcpToolSpecification(spec) { + if (typeof spec === "string") + return { id: spec }; + else + return spec; +} +//# sourceMappingURL=mcpclient.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpclient.js.map b/packages/core/.tshy-build/browser/mcpclient.js.map new file mode 100644 index 0000000000..1dafb1bde7 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpclient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpclient.js","sourceRoot":"","sources":["../../src/mcpclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpresource.d.ts b/packages/core/.tshy-build/browser/mcpresource.d.ts new file mode 100644 index 0000000000..c940919903 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpresource.d.ts @@ -0,0 +1,24 @@ +import type { TraceOptions } from "./trace.js"; +import type { BufferLike, ResourceReference, SecretDetectionOptions } from "./types.js"; +export interface ResourceContent { + uri: string; + mimeType?: string; + text?: string; + blob?: string; +} +export interface ResourceContents { + contents: ResourceContent[]; +} +export interface Resource { + reference: ResourceReference; + content: ResourceContents; +} +export declare class ResourceManager extends EventTarget { + private _resources; + resources(): Promise; + readResource(uri: string): Promise; + clear(): Promise; + publishResource(name: string, body: BufferLike, options?: Partial> & TraceOptions & SecretDetectionOptions): Promise; + upsertResource(reference: ResourceReference, content: ResourceContents | undefined): Promise; +} +//# sourceMappingURL=mcpresource.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpresource.d.ts.map b/packages/core/.tshy-build/browser/mcpresource.d.ts.map new file mode 100644 index 0000000000..0ecdf0d06a --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpresource.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpresource.d.ts","sourceRoot":"","sources":["../../src/mcpresource.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,UAAU,CAAgC;IAC5C,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAGzC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKhE,KAAK;IAKL,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,GAAG,sBAAsB;IAStF,cAAc,CAClB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,gBAAgB,GAAG,SAAS,GACpC,OAAO,CAAC,IAAI,CAAC;CAoBjB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpresource.js b/packages/core/.tshy-build/browser/mcpresource.js new file mode 100644 index 0000000000..2dea3c0c9c --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpresource.js @@ -0,0 +1,120 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveBufferLike } from "./bufferlike.js"; +import { CHANGE, MCP_RESOURCE_PROTOCOL, RESOURCE_CHANGE } from "./constants.js"; +import debug from "debug"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { hash } from "./crypto.js"; +import { resolveFileContent } from "./file.js"; +import { redactSecrets } from "./secretscanner.js"; +const dbg = debug("genaiscript:resource"); +export class ResourceManager extends EventTarget { + _resources = {}; + async resources() { + return Object.values(this._resources).map((r) => r.reference); + } + async readResource(uri) { + dbg(`reading resource: ${uri}`); + const resource = this._resources[uri]; + return resource?.content; + } + async clear() { + this._resources = {}; + this.dispatchEvent(new Event(CHANGE)); + } + async publishResource(name, body, options) { + dbg(`publishing ${typeof body}`); + const res = await createResource(name, body, options); + await this.upsertResource(res.reference, res.content); + const { reference } = res; + return reference.uri; + } + async upsertResource(reference, content) { + dbg(`upsert ${reference.uri}`); + if (!reference?.uri) + throw new Error("Resource reference must have a uri"); + const current = await hash(this._resources[reference.uri]); + if (!content) + delete this._resources[reference.uri]; + else + this._resources[reference.uri] = { reference, content }; + const update = await hash(this._resources[reference.uri]); + if (current !== update) { + dbg(`resource changed: ${reference.uri}`); + this.dispatchEvent(new CustomEvent(RESOURCE_CHANGE, { + detail: { + reference, + content, + }, + })); + } + this.dispatchEvent(new Event(CHANGE)); + } +} +async function createResource(name, body, options) { + const { description } = options || {}; + if (!name) + throw new Error("Resource name is required"); + const content = await resolveResourceContents(body, options); + if (!content.uri) { + content.uri = `${MCP_RESOURCE_PROTOCOL}://resources/${await hash(JSON.stringify(content), { + length: 32, + })}`; + } + const reference = { + name, + description, + uri: content.uri, // may be undefined + mimeType: content.mimeType, + }; + return { + reference, + content: { contents: [content] }, + }; +} +async function resolveResourceContents(body, options) { + const { trace, uri, mimeType, secretScanning } = options || {}; + if (typeof body === "string") { + if (secretScanning !== false) { + const redacted = await redactSecrets(body, { trace }); + body = redacted.text; + } + return { + uri, + mimeType: mimeType || "text/plain", + text: body, + }; + } + else if (typeof body === "object" && + (body.content || body.filename)) { + const file = body; + await resolveFileContent(file, options); + if (file.encoding) + return { + uri: uri || file.filename, + mimeType: file.type || "application/octet-stream", + blob: file.content, + }; + else { + if (secretScanning !== false) { + const redacted = await redactSecrets(file.content, { trace }); + file.content = redacted.text; + } + return { + uri: uri || file.filename, + mimeType: file.type || "text/plain", + text: file.content, + }; + } + } + else { + const bytes = await resolveBufferLike(body, options); + const mime = await fileTypeFromBuffer(bytes); + return { + uri: uri, + mimeType: mimeType || mime?.mime || "application/octet-stream", + blob: bytes.toString("base64"), + }; + } +} +//# sourceMappingURL=mcpresource.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpresource.js.map b/packages/core/.tshy-build/browser/mcpresource.js.map new file mode 100644 index 0000000000..9e1c542169 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpresource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpresource.js","sourceRoot":"","sources":["../../src/mcpresource.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,MAAM,GAAG,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AA0B1C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACtC,UAAU,GAA6B,EAAE,CAAC;IAClD,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,GAAG,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,QAAQ,EAAE,OAAO,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,IAAgB,EAChB,OAA0F;QAE1F,GAAG,CAAC,cAAc,OAAO,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;QAC1B,OAAO,SAAS,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,SAA4B,EAC5B,OAAqC;QAErC,GAAG,CAAC,UAAU,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;YAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,qBAAqB,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAW,eAAe,EAAE;gBACzC,MAAM,EAAE;oBACN,SAAS;oBACT,OAAO;iBACR;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AAED,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,IAAgB,EAChB,OAA0F;IAE1F,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,GAAG,GAAG,qBAAqB,gBAAgB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACxF,MAAM,EAAE,EAAE;SACX,CAAC,EAAE,CAAC;IACP,CAAC;IACD,MAAM,SAAS,GAAsB;QACnC,IAAI;QACJ,WAAW;QACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,mBAAmB;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IACF,OAAO;QACL,SAAS;QACT,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,IAAgB,EAChB,OAA4E;IAE5E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO;YACL,GAAG;YACH,QAAQ,EAAE,QAAQ,IAAI,YAAY;YAClC,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;SAAM,IACL,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAE,IAAsB,CAAC,OAAO,IAAK,IAAsB,CAAC,QAAQ,CAAC,EACrE,CAAC;QACD,MAAM,IAAI,GAAG,IAAqB,CAAC;QACnC,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;gBACL,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ;gBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,0BAA0B;gBACjD,IAAI,EAAE,IAAI,CAAC,OAAO;aACnB,CAAC;aACC,CAAC;YACJ,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC/B,CAAC;YAED,OAAO;gBACL,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ;gBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,YAAY;gBACnC,IAAI,EAAE,IAAI,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAkB,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,IAAI,0BAA0B;YAC9D,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC/B,CAAC;IACJ,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpsampling.d.ts b/packages/core/.tshy-build/browser/mcpsampling.d.ts new file mode 100644 index 0000000000..0b0b17e62a --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpsampling.d.ts @@ -0,0 +1,6 @@ +import type { ChatCompletionResponse, CreateChatCompletionRequest } from "./chattypes.js"; +import type { TraceOptions } from "./trace.js"; +import type { Server } from "@modelcontextprotocol/sdk/server/index.js"; +import type { CancellationOptions } from "./cancellation.js"; +export declare function mcpRequestSample(server: Server, req: CreateChatCompletionRequest, options?: TraceOptions & CancellationOptions): Promise; +//# sourceMappingURL=mcpsampling.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpsampling.d.ts.map b/packages/core/.tshy-build/browser/mcpsampling.d.ts.map new file mode 100644 index 0000000000..632a7e5059 --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpsampling.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpsampling.d.ts","sourceRoot":"","sources":["../../src/mcpsampling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAK1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,2BAA2B,EAChC,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAC3C,OAAO,CAAC,sBAAsB,CAAC,CA0DjC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpsampling.js b/packages/core/.tshy-build/browser/mcpsampling.js new file mode 100644 index 0000000000..628defed8b --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpsampling.js @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CreateMessageResultSchema } from "@modelcontextprotocol/sdk/types.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { SYSTEM_FENCE } from "./constants.js"; +import { genaiscriptDebug } from "./debug.js"; +import { parseModelIdentifier } from "./models.js"; +import { toSignal } from "./cancellation.js"; +const dbgs = genaiscriptDebug("mcp:server:sampling"); +export async function mcpRequestSample(server, req, options) { + // Implement the completer logic here + dbgs(`sampling ${req.model}`); + const { trace, cancellationToken } = options ?? {}; + const { model } = parseModelIdentifier(req.model); + const signal = toSignal(cancellationToken); + const maxTokens = req.max_completion_tokens; + const systemMessages = req.messages.filter(({ role }) => role === "system"); + const systemPrompt = systemMessages.map(({ content }) => content).join(SYSTEM_FENCE); + const otherMessages = req.messages.filter(({ role }) => role !== "system"); + const body = deleteUndefinedValues({ + method: "sampling/createMessage", + params: deleteUndefinedValues({ + messages: otherMessages, + temperature: req.temperature, + metadata: req.metadata, + modelPreferences: { + hints: [ + { + name: model, + }, + ].filter(({ name }) => !!name), + intelligencePriority: 0.8, + speedPriority: 0.5, + }, + systemPrompt, + maxTokens, + signal, + }), + }); + trace?.detailsFenced(`🧪 mcp sampling`, body, "json"); + let responseSoFar = ""; + const res = await server.request(body, CreateMessageResultSchema, { + onprogress: (data) => { + dbgs(`%d/%d %s`, data.progress, data.total, data.message); + responseSoFar += data.message; + }, + }); + dbgs(`sampling result: %O`, res); + trace?.detailsFenced(`🧪 sampling result`, res, "json"); + // "endTurn", "stopSequence", "maxTokens" + const finishReason = { + ["endTurn"]: "stop", + ["stopSequence"]: "stop", + ["maxTokens"]: "length", + }[res.stopReason] ?? "stop"; + const response = { + model: res.model, + text: res.content?.type === "text" ? res.content.text : "", + finishReason, + }; + dbgs(`response: %O`, response); + return response; +} +//# sourceMappingURL=mcpsampling.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mcpsampling.js.map b/packages/core/.tshy-build/browser/mcpsampling.js.map new file mode 100644 index 0000000000..7615df59fe --- /dev/null +++ b/packages/core/.tshy-build/browser/mcpsampling.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mcpsampling.js","sourceRoot":"","sources":["../../src/mcpsampling.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdchunk.d.ts b/packages/core/.tshy-build/browser/mdchunk.d.ts new file mode 100644 index 0000000000..b9f702d12e --- /dev/null +++ b/packages/core/.tshy-build/browser/mdchunk.d.ts @@ -0,0 +1,15 @@ +import type { TextChunk, WorkspaceFile } from "./types.js"; +/** + * Chunks markdown into sections based on headings while maintaining subtrees. + * Handles WorkspaceFile objects and plain markdown strings. + * Does not reliably handle code sections containing markdown. + * @param markdown - The markdown content as a string or a WorkspaceFile object. If a WorkspaceFile, its content is used. Throws if encoding is base64. + * @param approximateTokens - Function to estimate token count of text. Used to calculate chunk sizes. + * @param options - Optional configuration including maxTokens (default 4096) and pageSeparator (default "======"). + * @returns Array of TextChunk objects representing the chunks, including metadata such as filename and line range. + */ +export declare function chunkMarkdown(markdown: string | WorkspaceFile, approximateTokens: (text: string) => number, options?: { + maxTokens?: number; + pageSeparator?: string; +}): Promise; +//# sourceMappingURL=mdchunk.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdchunk.d.ts.map b/packages/core/.tshy-build/browser/mdchunk.d.ts.map new file mode 100644 index 0000000000..5f2f7802a9 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdchunk.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mdchunk.d.ts","sourceRoot":"","sources":["../../src/mdchunk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAChC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAC3C,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,SAAS,EAAE,CAAC,CA6GtB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdchunk.js b/packages/core/.tshy-build/browser/mdchunk.js new file mode 100644 index 0000000000..d976402b37 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdchunk.js @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Chunks markdown into sections based on headings while maintaining subtrees. + * Handles WorkspaceFile objects and plain markdown strings. + * Does not reliably handle code sections containing markdown. + * @param markdown - The markdown content as a string or a WorkspaceFile object. If a WorkspaceFile, its content is used. Throws if encoding is base64. + * @param approximateTokens - Function to estimate token count of text. Used to calculate chunk sizes. + * @param options - Optional configuration including maxTokens (default 4096) and pageSeparator (default "======"). + * @returns Array of TextChunk objects representing the chunks, including metadata such as filename and line range. + */ +export async function chunkMarkdown(markdown, approximateTokens, options) { + const { maxTokens = 4096, pageSeparator = "======" } = options || {}; + if (!markdown) + return []; + const filename = typeof markdown === "object" ? markdown.filename : ""; + if (typeof markdown === "object") { + if (markdown.encoding === "base64") + throw new Error("base64 encoding not supported"); + markdown = markdown.content; + } + const lines = markdown.split(/\r?\n/g); + const sections = []; + let current = null; + lines.forEach((line) => { + if (line.startsWith(pageSeparator)) { + if (current) + sections.push(current); + current = null; + return; + } + const match = /^(#{1,6})\s+(.*)/.exec(line); + if (match) { + if (current) + sections.push(current); + current = { + heading: match[2], + lines: [line], + level: match[1].length, + }; + return; + } + if (!current) + current = { heading: "", lines: [], level: 0 }; + current.lines.push(line); + }); + if (current) + sections.push(current); + const chunks = []; + let tempChunk = []; + let tokenCount = 0; + for (let i = 0; i < sections.length; i++) { + const sectionTokens = sectionTokenCount(sections[i], approximateTokens); + if (sectionTokens > maxTokens) { + if (tempChunk.length) { + chunks.push(buildChunk(tempChunk)); + tempChunk = []; + tokenCount = 0; + } + chunks.push(buildChunk([sections[i]])); + continue; + } + if (tokenCount + sectionTokens <= maxTokens) { + tempChunk.push(sections[i]); + tokenCount += sectionTokens; + } + else { + // Instead of discarding, gather removed sections and prepend them to the new chunk + const removedSections = []; + let j = i; + while (j > 0 && + sections[j].level > sections[j - 1].level && + tokenCount + sectionTokens > maxTokens && + tempChunk.length) { + const removed = tempChunk.pop(); + if (removed) { + removedSections.unshift(removed); + tokenCount -= sectionTokenCount(removed, approximateTokens); + } + j--; + } + // Close off current chunk + if (tempChunk.length) { + chunks.push(buildChunk(tempChunk)); + } + // Start the new chunk with removed and current + tempChunk = [...removedSections, sections[i]]; + tokenCount = tempChunk.reduce((acc, sec) => acc + sectionTokenCount(sec, approximateTokens), 0); + } + } + if (tempChunk.length) + chunks.push(buildChunk(tempChunk)); + // convert into text chunk + let currentLine = 0; + return chunks.map((chunk, i) => ({ + filename: filename + `#chunk${i}`, + lineStart: currentLine, + lineEnd: (currentLine += chunk.split(/\r?\n/g).length), + content: chunk, + })); + function sectionTokenCount(section, tokenCount) { + return section.lines.reduce((acc, line) => acc + tokenCount(line), 0); + } + function buildChunk(sections) { + return sections.map((s) => s.lines.join("\n")).join("\n"); + } +} +//# sourceMappingURL=mdchunk.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdchunk.js.map b/packages/core/.tshy-build/browser/mdchunk.js.map new file mode 100644 index 0000000000..32e0940ba8 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdchunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mdchunk.js","sourceRoot":"","sources":["../../src/mdchunk.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mddiff.d.ts b/packages/core/.tshy-build/browser/mddiff.d.ts new file mode 100644 index 0000000000..c4d8a06682 --- /dev/null +++ b/packages/core/.tshy-build/browser/mddiff.d.ts @@ -0,0 +1,15 @@ +/** + * Generates a markdown-styled diff between two strings. + * + * @param oldStr - The original string to compare from. If undefined, the new string will be fenced as is. + * @param newStr - The updated string to compare against the original. + * @param options - Optional configuration object. + * @param options.lang - Specifies the language for the fenced code block. + * @param options.ignoreWhitespace - If true, ignores whitespace differences during the diff computation. + * @returns A fenced markdown string representing the diff or the new string if oldStr is undefined. + */ +export declare function markdownDiff(oldStr: string, newStr: string, options?: { + lang?: string; + ignoreWhitespace?: boolean; +}): string; +//# sourceMappingURL=mddiff.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mddiff.d.ts.map b/packages/core/.tshy-build/browser/mddiff.d.ts.map new file mode 100644 index 0000000000..483b9da927 --- /dev/null +++ b/packages/core/.tshy-build/browser/mddiff.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mddiff.d.ts","sourceRoot":"","sources":["../../src/mddiff.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,UASF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mddiff.js b/packages/core/.tshy-build/browser/mddiff.js new file mode 100644 index 0000000000..0547aa9a3f --- /dev/null +++ b/packages/core/.tshy-build/browser/mddiff.js @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { diffLines } from "diff"; +import { fenceMD } from "./mkmd.js"; +/** + * Generates a markdown-styled diff between two strings. + * + * @param oldStr - The original string to compare from. If undefined, the new string will be fenced as is. + * @param newStr - The updated string to compare against the original. + * @param options - Optional configuration object. + * @param options.lang - Specifies the language for the fenced code block. + * @param options.ignoreWhitespace - If true, ignores whitespace differences during the diff computation. + * @returns A fenced markdown string representing the diff or the new string if oldStr is undefined. + */ +export function markdownDiff(oldStr, newStr, options) { + const { lang, ...rest } = options || {}; + if (oldStr === undefined) + return fenceMD(newStr, lang); + const changes = diffLines(oldStr || "", newStr || "", rest); + const source = changes.map((c) => `${c.added ? "+" : c.removed ? "-" : " "}${c.value}`).join(""); + return fenceMD(source, "diff"); +} +//# sourceMappingURL=mddiff.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mddiff.js.map b/packages/core/.tshy-build/browser/mddiff.js.map new file mode 100644 index 0000000000..fe1f06652b --- /dev/null +++ b/packages/core/.tshy-build/browser/mddiff.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mddiff.js","sourceRoot":"","sources":["../../src/mddiff.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,MAAc,EACd,OAGC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAExC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdstringify.d.ts b/packages/core/.tshy-build/browser/mdstringify.d.ts new file mode 100644 index 0000000000..f953546a58 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdstringify.d.ts @@ -0,0 +1,14 @@ +/** + * Converts an object to a markdown string with options for quoting values, limiting heading levels, and customizing indentation. + * Handles circular references by replacing them with ellipses. + * Supports rendering arrays, objects, and strings with optional quoting. + * @param obj - The object to convert. + * @param options - Optional settings for quoting string values, maximum heading depth, and base heading level. + * @returns The markdown representation of the object. + */ +export declare function markdownStringify(obj: any, options?: { + quoteValues?: boolean; + headings?: number; + headingLevel?: number; +}): string; +//# sourceMappingURL=mdstringify.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdstringify.d.ts.map b/packages/core/.tshy-build/browser/mdstringify.d.ts.map new file mode 100644 index 0000000000..aa9aca15e5 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdstringify.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mdstringify.d.ts","sourceRoot":"","sources":["../../src/mdstringify.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,MAAM,CA2CR"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdstringify.js b/packages/core/.tshy-build/browser/mdstringify.js new file mode 100644 index 0000000000..e8e91d34a0 --- /dev/null +++ b/packages/core/.tshy-build/browser/mdstringify.js @@ -0,0 +1,63 @@ +import { titleize } from "./inflection.js"; +import { fenceMD } from "./mkmd.js"; +/** + * Converts an object to a markdown string with options for quoting values, limiting heading levels, and customizing indentation. + * Handles circular references by replacing them with ellipses. + * Supports rendering arrays, objects, and strings with optional quoting. + * @param obj - The object to convert. + * @param options - Optional settings for quoting string values, maximum heading depth, and base heading level. + * @returns The markdown representation of the object. + */ +export function markdownStringify(obj, options) { + const seen = new Set(); + const { quoteValues, headings = -1, headingLevel = 2 } = options || {}; + const render = (obj, depth) => { + if (obj === undefined || obj === null) + return obj; + const indent = depth; + if (Array.isArray(obj)) { + if (seen.has(obj)) + return "..."; + seen.add(obj); + const items = obj.map((o) => render(o, depth + 1)).filter((i) => i !== undefined && i !== ""); + if (items.some((i) => i.includes("\n"))) + return `\n
    \n${items.map((item) => `
  • \n${item}\n
  • \n`).join("\n")}\n
\n`; + else { + const indentText = " ".repeat(indent); + return "\n" + items.map((item) => `${indentText}- ${item}`).join("\n"); + } + } + else if (typeof obj === "object") { + if (seen.has(obj)) + return "..."; + seen.add(obj); + const entries = Object.entries(obj) + .map((kv) => [kv[0], render(kv[1], depth + 1)]) + .filter((kv) => kv[1] !== undefined); + if (depth <= headings) { + return entries + .map((kv) => `\n${"#".repeat(headingLevel + depth)} ${titleize(kv[0])}\n${kv[1]}`) + .join("\n"); + } + else if (entries.some((kv) => kv[1].includes("\n"))) + return `\n
    \n${entries.map((kv) => `
  • \n${kv[0]}: ${kv[1]}\n
  • \n`).join("\n")}\n
\n`; + else { + const indentText = " ".repeat(indent); + return "\n" + entries.map((kv) => `${indentText}- ${kv[0]}: ${kv[1]}`).join("\n"); + } + } + else if (typeof obj === "string") { + if (quoteValues) { + if (obj.includes("\n")) + return fenceMD(obj); + return `\`${obj.replace(/`/g, "\\`")}\``; + } + else + return obj; + } + else + return quoteValues ? `\`${String(obj).replace(/`/g, "\\`")}\`` : String(obj); + }; + return render(obj, 0) + "\n"; +} +//# sourceMappingURL=mdstringify.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mdstringify.js.map b/packages/core/.tshy-build/browser/mdstringify.js.map new file mode 100644 index 0000000000..d80993197b --- /dev/null +++ b/packages/core/.tshy-build/browser/mdstringify.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mdstringify.js","sourceRoot":"","sources":["../../src/mdstringify.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/memcache.d.ts b/packages/core/.tshy-build/browser/memcache.d.ts new file mode 100644 index 0000000000..4ebad83f49 --- /dev/null +++ b/packages/core/.tshy-build/browser/memcache.d.ts @@ -0,0 +1,49 @@ +import type { CacheEntry } from "./cache.js"; +import type { Debugger } from "debug"; +import type { WorkspaceFileCache } from "./types.js"; +/** + * A cache class that manages entries stored in JSONL format. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export declare class MemoryCache extends EventTarget implements WorkspaceFileCache { + readonly name: string; + protected _entries: Record>; + private _pending; + private readonly hashOptions; + protected dbg: Debugger; + constructor(name: string); + protected initialize(): Promise; + /** + * Retrieve all values from the cache. + * @returns + */ + values(): Promise; + /** + * Get the value associated with a specific key. + * @param key - The key of the entry + * @returns A promise resolving to the value + */ + get(key: K): Promise; + getOrUpdate(key: K, updater: () => Promise, validator?: (val: V) => boolean): Promise<{ + key: string; + value: V; + cached?: boolean; + }>; + protected appendEntry(entry: CacheEntry): Promise; + /** + * Set a key-value pair in the cache, triggering a change event. + * @param key - The key to set + * @param val - The value to set + * @param options - Optional trace options + */ + set(key: K, val: V): Promise; + /** + * Compute SHA for a given key. + * @param key - The key to compute SHA for + * @returns A promise resolving to the SHA string + */ + getSha(key: K): Promise; +} +//# sourceMappingURL=memcache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/memcache.d.ts.map b/packages/core/.tshy-build/browser/memcache.d.ts.map new file mode 100644 index 0000000000..cb8c6afc65 --- /dev/null +++ b/packages/core/.tshy-build/browser/memcache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"memcache.d.ts","sourceRoot":"","sources":["../../src/memcache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAY,YAAW,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;aAO5D,IAAI,EAAE,MAAM;IANxC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;gBAGI,IAAI,EAAE,MAAM;cASxB,UAAU;IAM1B;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAK5B;;;;OAIG;IACG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASvB,WAAW,CACf,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAC9B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;cA0BvC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhD;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;IAaxB;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,CAAC;CAIpB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/memcache.js b/packages/core/.tshy-build/browser/memcache.js new file mode 100644 index 0000000000..4e06648370 --- /dev/null +++ b/packages/core/.tshy-build/browser/memcache.js @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CACHE_FORMAT_VERSION, CACHE_SHA_LENGTH, CHANGE } from "./constants.js"; +import { hash } from "./crypto.js"; +import debug from "debug"; +/** + * A cache class that manages entries stored in JSONL format. + * It allows storage and retrieval of cache entries with unique SHA identifiers. + * @template K - Type of the key + * @template V - Type of the value + */ +export class MemoryCache extends EventTarget { + name; + _entries; + _pending; + hashOptions; + dbg; + // Constructor is private to enforce the use of byName factory method + constructor(name) { + super(); // Initialize EventTarget + this.name = name; + this.dbg = debug(`genaiscript:cache:${name}`); // Initialize debugger + this.hashOptions = { + salt: CACHE_FORMAT_VERSION, + length: CACHE_SHA_LENGTH, + }; + } + async initialize() { + if (this._entries) + return; + this._entries = {}; + this._pending = {}; + } + /** + * Retrieve all values from the cache. + * @returns + */ + async values() { + await this.initialize(); + return Object.values(this._entries).map((kv) => kv.val); + } + /** + * Get the value associated with a specific key. + * @param key - The key of the entry + * @returns A promise resolving to the value + */ + async get(key) { + if (key === undefined) + return undefined; // Handle undefined key + await this.initialize(); + const sha = await this.getSha(key); + const res = this._entries[sha]?.val; + this.dbg(`get ${sha}: ${res !== undefined ? "hit" : "miss"}`); + return res; + } + async getOrUpdate(key, updater, validator) { + await this.initialize(); + const sha = await this.getSha(key); + if (this._entries[sha]) { + this.dbg(`getup ${sha}: hit`); + return { key: sha, value: this._entries[sha].val, cached: true }; + } + if (this._pending[sha]) { + this.dbg(`getup ${sha}: hit (pending)`); + return { key: sha, value: await this._pending[sha], cached: true }; + } + try { + const p = updater(); + this._pending[sha] = p; + const value = await p; + if (!validator || validator(value)) { + await this.set(key, value); + this.dbg(`set ${sha}: updated`); + } + return { key: sha, value, cached: false }; + } + finally { + delete this._pending[sha]; + } + } + async appendEntry(entry) { } + /** + * Set a key-value pair in the cache, triggering a change event. + * @param key - The key to set + * @param val - The value to set + * @param options - Optional trace options + */ + async set(key, val) { + await this.initialize(); + const sha = await this.getSha(key); + const ent = { sha, val }; + const ex = this._entries[sha]; + if (ex !== undefined && JSON.stringify(ex) == JSON.stringify(ent)) + return; // No change + this._entries[sha] = ent; + await this.appendEntry(ent); + this.dispatchEvent(new Event(CHANGE)); // Notify listeners + this.dbg(`set ${sha}: updated`); + } + /** + * Compute SHA for a given key. + * @param key - The key to compute SHA for + * @returns A promise resolving to the SHA string + */ + async getSha(key) { + const sha = await hash(key, this.hashOptions); + return sha; + } +} +//# sourceMappingURL=memcache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/memcache.js.map b/packages/core/.tshy-build/browser/memcache.js.map new file mode 100644 index 0000000000..d9e0023e1e --- /dev/null +++ b/packages/core/.tshy-build/browser/memcache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"memcache.js","sourceRoot":"","sources":["../../src/memcache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,OAAO,WAAkB,SAAQ,WAAW;IAOpB;IANlB,QAAQ,CAAgC;IAC1C,QAAQ,CAA6B;IAC5B,WAAW,CAAc;IAChC,GAAG,CAAW;IAExB,qEAAqE;IACrE,YAA4B,IAAY;QACtC,KAAK,EAAE,CAAC,CAAC,yBAAyB;QADR,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB;QACrE,IAAI,CAAC,WAAW,GAAG;YACjB,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,gBAAgB;SACH,CAAC;IAC1B,CAAC;IAES,KAAK,CAAC,UAAU;QACxB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,GAAM;QACd,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,CAAC,uBAAuB;QAChE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CACf,GAAM,EACN,OAAyB,EACzB,SAA+B;QAE/B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC;YAC9B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;YACxC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,KAAoB,IAAG,CAAC;IAEpD;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,GAAM,EAAE,GAAM;QACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAA0B,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,YAAY;QAEvF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB;QAC1D,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAM;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC;IACb,CAAC;CACF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/merge.d.ts b/packages/core/.tshy-build/browser/merge.d.ts new file mode 100644 index 0000000000..d0a3aa5fdb --- /dev/null +++ b/packages/core/.tshy-build/browser/merge.d.ts @@ -0,0 +1,3 @@ +import mergeDescriptors from "merge-descriptors"; +export declare const structuralMerge: typeof mergeDescriptors; +//# sourceMappingURL=merge.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/merge.d.ts.map b/packages/core/.tshy-build/browser/merge.d.ts.map new file mode 100644 index 0000000000..27e850b33d --- /dev/null +++ b/packages/core/.tshy-build/browser/merge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/merge.ts"],"names":[],"mappings":"AAGA,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,eAAe,yBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/merge.js b/packages/core/.tshy-build/browser/merge.js new file mode 100644 index 0000000000..3aca20fd62 --- /dev/null +++ b/packages/core/.tshy-build/browser/merge.js @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import mergeDescriptors from "merge-descriptors"; +export const structuralMerge = mergeDescriptors; +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/merge.js.map b/packages/core/.tshy-build/browser/merge.js.map new file mode 100644 index 0000000000..b7abd0fab9 --- /dev/null +++ b/packages/core/.tshy-build/browser/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/merge.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/metadata.d.ts b/packages/core/.tshy-build/browser/metadata.d.ts new file mode 100644 index 0000000000..7c3a0f809a --- /dev/null +++ b/packages/core/.tshy-build/browser/metadata.d.ts @@ -0,0 +1,4 @@ +import type { PromptScript } from "./types.js"; +export declare function metadataValidate(metadata: Record): Record | undefined; +export declare function metadataMerge(script: PromptScript, options: Record): Record | undefined; +//# sourceMappingURL=metadata.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/metadata.d.ts.map b/packages/core/.tshy-build/browser/metadata.d.ts.map new file mode 100644 index 0000000000..1c99f30e4d --- /dev/null +++ b/packages/core/.tshy-build/browser/metadata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAapC;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAqBpC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/metadata.js b/packages/core/.tshy-build/browser/metadata.js new file mode 100644 index 0000000000..edf5fa5ed4 --- /dev/null +++ b/packages/core/.tshy-build/browser/metadata.js @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { deleteUndefinedValues } from "./cleaners.js"; +import { genaiscriptDebug } from "./debug.js"; +import { ellipse } from "./util.js"; +const dbg = genaiscriptDebug("metadata"); +export function metadataValidate(metadata) { + if (!metadata) + return undefined; + const entries = Object.entries(metadata); + if (entries.length > 16) + throw new Error("Metadata can only have 16 entries"); + // keep the first 16 entries + for (let [key, value] of entries) { + if (key.length > 64) + throw new Error("Invalid metadata key, key too long"); + if (value === undefined) + delete metadata[key]; + if (typeof value !== "string") + value = String(value); + if (value.length > 512) + value = ellipse(value, 512); + } + dbg(`%O`, metadata); + return metadata; +} +export function metadataMerge(script, options) { + const update = script.metadata; + const source = options; + if (!source && !update) + return undefined; + const res = { + ...(source || {}), + ...(update || {}), + }; + deleteUndefinedValues(res); + const extras = deleteUndefinedValues({ + script: script.id, + group: script.group, + title: script.title, + description: script.description, + }); + for (const [key, value] of Object.entries(extras)) { + if (Object.keys(res).length >= 16) + break; + if (res[key] === undefined) + res[key] = ellipse(value, 512); + } + return metadataValidate(res); +} +//# sourceMappingURL=metadata.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/metadata.js.map b/packages/core/.tshy-build/browser/metadata.js.map new file mode 100644 index 0000000000..b56ec0e6bc --- /dev/null +++ b/packages/core/.tshy-build/browser/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,UAAU,gBAAgB,CAC9B,QAAgC;IAEhC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9E,4BAA4B;IAC5B,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAAoB,EACpB,OAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEzC,MAAM,GAAG,GAAG;QACV,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KAClB,CAAC;IACF,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;QACzC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mime.d.ts b/packages/core/.tshy-build/browser/mime.d.ts new file mode 100644 index 0000000000..753b28ee28 --- /dev/null +++ b/packages/core/.tshy-build/browser/mime.d.ts @@ -0,0 +1,17 @@ +export declare const FSTAR_MIME_TYPE = "text/x-fstar"; +export declare const TYPESCRIPT_MIME_TYPE = "text/x-typescript"; +export declare const CSHARP_MIME_TYPE = "text/x-csharp"; +export declare const PYTHON_MIME_TYPE = "text/x-python"; +export declare const MARKDOWN_MIME_TYPE = "text/markdown"; +export declare const ASTRO_MIME_TYPE = "text/x-astro"; +/** + * Looks up the MIME type for a given filename. + * + * @param filename - The name of the file whose MIME type is to be determined. + * @returns The corresponding MIME type string, or an empty string if not found. + * + * The function first checks for known file extensions for TypeScript, C#, Python, and Astro files. + * If none match, it uses 'mimeTypesLookup' from the 'mime-types' library to find the MIME type. + */ +export declare function lookupMime(filename: string): string; +//# sourceMappingURL=mime.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mime.d.ts.map b/packages/core/.tshy-build/browser/mime.d.ts.map new file mode 100644 index 0000000000..eef0226164 --- /dev/null +++ b/packages/core/.tshy-build/browser/mime.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../src/mime.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAG9C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,UAU1C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mime.js b/packages/core/.tshy-build/browser/mime.js new file mode 100644 index 0000000000..9075ab52cc --- /dev/null +++ b/packages/core/.tshy-build/browser/mime.js @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import the 'lookup' function from the 'mime-types' library and rename it to 'mimeTypesLookup' +import mime from "mime"; +import { JAVASCRIPT_MIME_TYPE } from "./constants.js"; +// Define constant MIME types for specific programming languages +export const FSTAR_MIME_TYPE = "text/x-fstar"; +export const TYPESCRIPT_MIME_TYPE = "text/x-typescript"; +export const CSHARP_MIME_TYPE = "text/x-csharp"; +export const PYTHON_MIME_TYPE = "text/x-python"; +export const MARKDOWN_MIME_TYPE = "text/markdown"; +export const ASTRO_MIME_TYPE = "text/x-astro"; +// Define a function to look up the MIME type for a given filename +/** + * Looks up the MIME type for a given filename. + * + * @param filename - The name of the file whose MIME type is to be determined. + * @returns The corresponding MIME type string, or an empty string if not found. + * + * The function first checks for known file extensions for TypeScript, C#, Python, and Astro files. + * If none match, it uses 'mimeTypesLookup' from the 'mime-types' library to find the MIME type. + */ +export function lookupMime(filename) { + if (!filename) + return ""; // Return an empty string if the filename is falsy + if (/\.m?ts$/i.test(filename)) + return TYPESCRIPT_MIME_TYPE; + if (/\.(c|m)?js$/i.test(filename)) + return JAVASCRIPT_MIME_TYPE; + if (/\.cs$/i.test(filename)) + return CSHARP_MIME_TYPE; + if (/\.py$/i.test(filename)) + return PYTHON_MIME_TYPE; + if (/\.astro$/i.test(filename)) + return ASTRO_MIME_TYPE; + if (/\.(md|prompty)$/i.test(filename)) + return MARKDOWN_MIME_TYPE; + if (/\.(fst|fsti)$/i.test(filename)) + return FSTAR_MIME_TYPE; + return mime.getType(filename) || ""; +} +//# sourceMappingURL=mime.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mime.js.map b/packages/core/.tshy-build/browser/mime.js.map new file mode 100644 index 0000000000..b2c661dc6e --- /dev/null +++ b/packages/core/.tshy-build/browser/mime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mime.js","sourceRoot":"","sources":["../../src/mime.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,gGAAgG;AAChG,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C,kEAAkE;AAClE;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC,CAAC,kDAAkD;IAC5E,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC3D,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC/D,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACrD,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IACvD,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACjE,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mkmd.d.ts b/packages/core/.tshy-build/browser/mkmd.d.ts new file mode 100644 index 0000000000..6858cabc0b --- /dev/null +++ b/packages/core/.tshy-build/browser/mkmd.d.ts @@ -0,0 +1,23 @@ +/** + * Wraps text in a markdown code fence, extending the fence if the text contains existing fences. + * @param t - The text to wrap in a code fence. Returns undefined if not provided. + * @param contentType - The content type to specify after the code fence. Defaults to "markdown". + * @returns The text wrapped in a code fence. + */ +export declare function fenceMD(t: string, contentType?: string): string; +/** + * Creates a markdown link if href is provided, otherwise returns plain text. + * @param text - The link text. + * @param href - The URL, if any. + * @returns A markdown link or plain text. + */ +export declare function link(text: string, href: string): string; +/** + * Generates a markdown details block with an optional open state. + * @param summary - The summary text for the details block. + * @param body - The content inside the details block. + * @param open - Whether the details block should be open by default. + * @returns A string representing a markdown details block. + */ +export declare function details(summary: string, body: string, open?: boolean): string; +//# sourceMappingURL=mkmd.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mkmd.d.ts.map b/packages/core/.tshy-build/browser/mkmd.d.ts.map new file mode 100644 index 0000000000..9894f12676 --- /dev/null +++ b/packages/core/.tshy-build/browser/mkmd.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mkmd.d.ts","sourceRoot":"","sources":["../../src/mkmd.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,UAMtD;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,UAOpE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mkmd.js b/packages/core/.tshy-build/browser/mkmd.js new file mode 100644 index 0000000000..70560daeae --- /dev/null +++ b/packages/core/.tshy-build/browser/mkmd.js @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { trimNewlines } from "./unwrappers.js"; +const contentTypes = { + markdown: "md", + prompty: "md", + javascript: "js", + typescript: "ts", + yml: "yaml", +}; +/** + * Wraps text in a markdown code fence, extending the fence if the text contains existing fences. + * @param t - The text to wrap in a code fence. Returns undefined if not provided. + * @param contentType - The content type to specify after the code fence. Defaults to "markdown". + * @returns The text wrapped in a code fence. + */ +export function fenceMD(t, contentType) { + if (t === undefined) + return undefined; + contentType = contentTypes[contentType] || contentType || ""; + let f = "```"; + while (t.includes(f) && f.length < 8) + f += "`"; // Extend fence if necessary + return `\n${f}${contentType}\n${trimNewlines(t)}\n${f}\n`; +} +/** + * Creates a markdown link if href is provided, otherwise returns plain text. + * @param text - The link text. + * @param href - The URL, if any. + * @returns A markdown link or plain text. + */ +export function link(text, href) { + return href ? `[${text}](${href})` : text; +} +/** + * Generates a markdown details block with an optional open state. + * @param summary - The summary text for the details block. + * @param body - The content inside the details block. + * @param open - Whether the details block should be open by default. + * @returns A string representing a markdown details block. + */ +export function details(summary, body, open) { + return `\n +${summary} + +${body} + +\n`; +} +//# sourceMappingURL=mkmd.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mkmd.js.map b/packages/core/.tshy-build/browser/mkmd.js.map new file mode 100644 index 0000000000..a4cacc6f1c --- /dev/null +++ b/packages/core/.tshy-build/browser/mkmd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mkmd.js","sourceRoot":"","sources":["../../src/mkmd.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,YAAY,GAA2B;IAC3C,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,WAAoB;IACrD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,EAAE,CAAC;IAC7D,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,IAAI,GAAG,CAAC,CAAC,4BAA4B;IAC5E,OAAO,KAAK,CAAC,GAAG,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,IAAY;IAC7C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,IAAY,EAAE,IAAc;IACnE,OAAO,aAAa,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;WAC9B,OAAO;;EAEhB,IAAI;;aAEO,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/modelalias.d.ts b/packages/core/.tshy-build/browser/modelalias.d.ts new file mode 100644 index 0000000000..a8f892a8cf --- /dev/null +++ b/packages/core/.tshy-build/browser/modelalias.d.ts @@ -0,0 +1,50 @@ +import type { PromptScriptRunOptions } from "./server/messages.js"; +import type { PromptScript } from "./types.js"; +/** + * Configures model provider aliases based on the given provider ID and source type. + * + * @param id Identifier of the model provider to look up. + * @param source The origin of the configuration, such as "cli", "env", "config", or "script". + * @throws Error if the model provider with the specified ID is not found. + * + * Sets model aliases for the detected provider using the runtime host. If + * the provider contains alias definitions, they are mapped and stored. + */ +export declare function applyModelProviderAliases(id: string, source: "cli" | "env" | "config" | "script"): void; +/** + * Applies model options to the runtime host by setting model aliases and linking them + * to the specified source. Handles provider-specific aliases, primary model identifiers, + * small model, vision model, and additional key-value pair aliases. + * + * @param options - Configuration object with potential model-related keys: + * - `model`: Identifier for the primary model. + * - `smallModel`: Identifier for the smaller model variant. + * - `visionModel`: Identifier for a vision-specific model. + * - `modelAlias`: Array of key-value pairs for additional model aliases. + * - `provider`: Identifier for the model provider to apply aliases for. + * @param source - The origin of the configuration (e.g., `cli`, `env`, `config`, or `script`). + */ +export declare function applyModelOptions(options: Partial>, source: "cli" | "env" | "config" | "script"): void; +/** + * Applies model aliases defined within a provided script to the runtime environment. + * + * @param script - The script object containing model configurations and aliases. + * The script may include options for models and specific aliases + * to be applied to the runtime. + * + * Description: + * - Uses `applyModelOptions` to process model configurations specified in the script. + * - If the script defines additional `modelAliases`, each is added to the runtime + * environment using `runtimeHost.setModelAlias`, where the alias name and value are registered. + */ +export declare function applyScriptModelAliases(script: PromptScript): void; +/** + * Logs the registered model aliases to the console. + * + * @param options - Optional parameters for logging behavior. + * @param options.all - If true, logs all aliases, including those with the "default" source. + */ +export declare function logModelAliases(options?: { + all?: boolean; +}): void; +//# sourceMappingURL=modelalias.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/modelalias.d.ts.map b/packages/core/.tshy-build/browser/modelalias.d.ts.map new file mode 100644 index 0000000000..df021b6892 --- /dev/null +++ b/packages/core/.tshy-build/browser/modelalias.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modelalias.d.ts","sourceRoot":"","sources":["../../src/modelalias.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,QAQhG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,CACd,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC,CACjG,EACD,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,QAa5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,QAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,QAM1D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/modelalias.js b/packages/core/.tshy-build/browser/modelalias.js new file mode 100644 index 0000000000..f4f39bb75e --- /dev/null +++ b/packages/core/.tshy-build/browser/modelalias.js @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:modelalias"); +import { parseKeyValuePair } from "./fence.js"; +import { resolveRuntimeHost } from "./host.js"; +import { providerFeatures } from "./features.js"; +import { LARGE_MODEL_ID, SMALL_MODEL_ID, VISION_MODEL_ID } from "./constants.js"; +/** + * Configures model provider aliases based on the given provider ID and source type. + * + * @param id Identifier of the model provider to look up. + * @param source The origin of the configuration, such as "cli", "env", "config", or "script". + * @throws Error if the model provider with the specified ID is not found. + * + * Sets model aliases for the detected provider using the runtime host. If + * the provider contains alias definitions, they are mapped and stored. + */ +export function applyModelProviderAliases(id, source) { + const runtimeHost = resolveRuntimeHost(); + dbg(`apply provider ${id} from ${source}`); + if (!id) + return; + const provider = providerFeatures(id); + if (!provider) + throw new Error(`Model provider not found: ${id}`); + for (const [key, value] of Object.entries(provider.aliases || {})) + runtimeHost.setModelAlias(source, key, provider.id + ":" + value); +} +/** + * Applies model options to the runtime host by setting model aliases and linking them + * to the specified source. Handles provider-specific aliases, primary model identifiers, + * small model, vision model, and additional key-value pair aliases. + * + * @param options - Configuration object with potential model-related keys: + * - `model`: Identifier for the primary model. + * - `smallModel`: Identifier for the smaller model variant. + * - `visionModel`: Identifier for a vision-specific model. + * - `modelAlias`: Array of key-value pairs for additional model aliases. + * - `provider`: Identifier for the model provider to apply aliases for. + * @param source - The origin of the configuration (e.g., `cli`, `env`, `config`, or `script`). + */ +export function applyModelOptions(options, source) { + const runtimeHost = resolveRuntimeHost(); + dbg(`apply model options from ${source}`, options); + if (options.provider) + applyModelProviderAliases(options.provider, source); + if (options.model) + runtimeHost.setModelAlias(source, LARGE_MODEL_ID, options.model); + if (options.smallModel) + runtimeHost.setModelAlias(source, SMALL_MODEL_ID, options.smallModel); + if (options.visionModel) + runtimeHost.setModelAlias(source, VISION_MODEL_ID, options.visionModel); + for (const kv of options.modelAlias || []) { + const aliases = parseKeyValuePair(kv); + for (const [key, value] of Object.entries(aliases)) + runtimeHost.setModelAlias(source, key, value); + } +} +/** + * Applies model aliases defined within a provided script to the runtime environment. + * + * @param script - The script object containing model configurations and aliases. + * The script may include options for models and specific aliases + * to be applied to the runtime. + * + * Description: + * - Uses `applyModelOptions` to process model configurations specified in the script. + * - If the script defines additional `modelAliases`, each is added to the runtime + * environment using `runtimeHost.setModelAlias`, where the alias name and value are registered. + */ +export function applyScriptModelAliases(script) { + const runtimeHost = resolveRuntimeHost(); + applyModelOptions(script, "script"); + if (script.modelAliases) + Object.entries(script.modelAliases).forEach(([name, alias]) => { + runtimeHost.setModelAlias("script", name, alias); + }); +} +/** + * Logs the registered model aliases to the console. + * + * @param options - Optional parameters for logging behavior. + * @param options.all - If true, logs all aliases, including those with the "default" source. + */ +export function logModelAliases(options) { + const runtimeHost = resolveRuntimeHost(); + const { all } = options || {}; + let aliases = Object.entries(runtimeHost.modelAliases); + if (!all) + aliases = aliases.filter(([, value]) => value.source !== "default"); + aliases.forEach(([key, value]) => dbg(`${key}: ${value.model} (${value.source})`)); +} +//# sourceMappingURL=modelalias.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/modelalias.js.map b/packages/core/.tshy-build/browser/modelalias.js.map new file mode 100644 index 0000000000..d3cb4b8f54 --- /dev/null +++ b/packages/core/.tshy-build/browser/modelalias.js.map @@ -0,0 +1 @@ +{"version":3,"file":"modelalias.js","sourceRoot":"","sources":["../../src/modelalias.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/models.d.ts b/packages/core/.tshy-build/browser/models.d.ts new file mode 100644 index 0000000000..52709e9fd2 --- /dev/null +++ b/packages/core/.tshy-build/browser/models.d.ts @@ -0,0 +1,121 @@ +import type { ModelConfiguration } from "./host.js"; +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { LanguageModelConfiguration } from "./server/messages.js"; +import type { ChatCompletionReasoningEffort } from "./chattypes.js"; +import type { ModelConnectionOptions, ModelOptions } from "./types.js"; +export interface ParsedModelType { + provider: string; + family: string; + model: string; + tag?: string; + reasoningEffort?: ChatCompletionReasoningEffort; +} +/** + * Parses a model identifier string in the format: + * - `provider:model` + * - `provider:model:tag` + * - Optionally, `model:tag` can include `:reasoningEffort` (e.g., high, medium, low). + * + * Parameters: + * - id: The model identifier string to parse. Must not be empty. + * + * Returns: + * - An object containing provider, family, model, optional tag, and optional reasoningEffort. + * + * Throws: + * - Error if the model identifier is not specified. + */ +export declare function parseModelIdentifier(id: string): { + provider: string; + family: string; + model: string; + tag?: string; + reasoningEffort?: ChatCompletionReasoningEffort; +}; +export declare function normalizeModelIdentifier(id: string): string; +export declare function areModelsSame(l: string, r: string): boolean; +export interface ModelConnectionInfo extends ModelConnectionOptions, Partial { + error?: string; + model: string; +} +/** + * Creates a detailed trace log for a language model connection. + * + * @param trace - The MarkdownTrace instance used for documenting details. + * @param options - Configuration options for the model connection: + * - `model`: The model identifier. + * - `temperature`: Sampling temperature for the model. + * - `reasoningEffort`: Effort level for reasoning tasks (e.g., high, medium, low). + * - `fallbackTools`: Tools used for fallback handling. + * - `topP`: Probability mass for nucleus sampling. + * - `maxTokens`: Maximum token limit for the response. + * - `seed`: Seed value for deterministic outputs. + * - `cache`: Whether to use cache during this connection. + * - `logprobs`: Number of log probabilities to include. + * - `topLogprobs`: Statistics on the top probabilities. + * - `responseType`: Type of response expected (e.g., text, JSON schema). + * - `responseSchema`: JSON schema for structuring the response. + * - `fenceFormat`: Syntax for formatting fenced responses. + * - `choices`: Potential candidate options for sampling from the model. + * @param connectionToken - Metadata related to the model provider: + * - `base`: Base configuration identifier. + * - `type`: Type specification of the model. + * - `version`: Version of the model. + * - `source`: Origin of the model configuration. + * - `provider`: The associated service provider. + * + * Documents data about the model configuration and its behavior, including choices, aliases, + * and configuration metadata from the runtime environment. Ensures detailed logs for better traceability. + */ +export declare function traceLanguageModelConnection(trace: MarkdownTrace, options: ModelOptions, connectionToken: LanguageModelConfiguration): void; +/** + * Determines if the provided model identifier is an alias. + * + * @param model - The model identifier to check. + * + * @returns True if the given model identifier is an alias, otherwise false. + */ +export declare function isModelAlias(model: string): boolean; +/** + * Resolves the final model configuration by following a chain of model aliases. + * + * Parameters: + * - model: The model identifier or alias to resolve. Must not be empty. + * + * Throws: + * - Error if the model parameter is not specified. + * - Error if a circular alias reference is detected. + * + * Returns: + * - The fully resolved ModelConfiguration object, containing the final model identifier and its source. + */ +export declare function resolveModelAlias(model: string): ModelConfiguration; +/** + * Resolves model connection information, including configuration and token. + * + * @param conn - The connection options for the model. + * @param options - An optional object containing: + * - model: A specific model identifier to resolve. + * - defaultModel: A default model identifier if none is provided. + * - token: A boolean indicating whether to include the token in the resolved settings. + * - trace: An optional trace object for logging details. + * - cancellationToken: An optional token to cancel the operation. + * + * @returns An object containing: + * - info: Connection information for the resolved model. + * - configuration: Optional configuration details for the resolved model. + * + * Resolves the model identifier against aliases and retrieves configuration from the host. + * If candidates are supported, it tries to resolve each candidate until successful. + * Includes fallback handling for missing or invalid model configurations. + */ +export declare function resolveModelConnectionInfo(conn: ModelConnectionOptions, options?: { + model?: string; + defaultModel?: string; + token?: boolean; +} & TraceOptions & CancellationOptions): Promise<{ + info: ModelConnectionInfo; + configuration?: LanguageModelConfiguration; +}>; +//# sourceMappingURL=models.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/models.d.ts.map b/packages/core/.tshy-build/browser/models.d.ts.map new file mode 100644 index 0000000000..253c8cd241 --- /dev/null +++ b/packages/core/.tshy-build/browser/models.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,6BAA6B,CAAC;CACjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,6BAA6B,CAAC;CACjD,CAmBA;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,MAAM,WAAW,mBACf,SAAQ,sBAAsB,EAC5B,OAAO,CAAC,0BAA0B,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,0BAA0B,QAkE5C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAInD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAkBnE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,sBAAsB,EAC5B,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,YAAY,GACd,mBAAmB,GACpB,OAAO,CAAC;IACT,IAAI,EAAE,mBAAmB,CAAC;IAC1B,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C,CAAC,CAuFD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/models.js b/packages/core/.tshy-build/browser/models.js new file mode 100644 index 0000000000..c69f9bddca --- /dev/null +++ b/packages/core/.tshy-build/browser/models.js @@ -0,0 +1,286 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:models"); +import { uniq } from "es-toolkit"; +import { errorMessage } from "./error.js"; +import { resolveRuntimeHost } from "./host.js"; +import { arrayify } from "./cleaners.js"; +import { toStringList } from "./util.js"; +import { roundWithPrecision } from "./precision.js"; +import { MODEL_PROVIDERS } from "./constants.js"; +/** + * Parses a model identifier string in the format: + * - `provider:model` + * - `provider:model:tag` + * - Optionally, `model:tag` can include `:reasoningEffort` (e.g., high, medium, low). + * + * Parameters: + * - id: The model identifier string to parse. Must not be empty. + * + * Returns: + * - An object containing provider, family, model, optional tag, and optional reasoningEffort. + * + * Throws: + * - Error if the model identifier is not specified. + */ +export function parseModelIdentifier(id) { + if (!id) + throw new Error("Model identifier not specified"); + let reasoningEffort; + const parts = id.split(":"); + if (/^(high|medium|low)$/.test(parts.at(-1))) + reasoningEffort = parts.pop(); + let res; + if (parts.length >= 3) + res = { + provider: parts[0], + family: parts[1], + tag: parts.slice(2).join(":"), + model: parts.slice(1).join(":"), + }; + else if (parts.length === 2) + res = { provider: parts[0], family: parts[1], model: parts[1] }; + else + res = { provider: id, family: "*", model: "*" }; + if (reasoningEffort) + res.reasoningEffort = reasoningEffort; + return res; +} +export function normalizeModelIdentifier(id) { + if (!id) + return ""; + // eslint-disable-next-line prefer-const + let { provider, model, tag } = parseModelIdentifier(id); + const info = MODEL_PROVIDERS.find((p) => p.id === provider); + if (!tag && info?.latestTag) + tag = "latest"; + return `${provider}:${model}${tag ? `:${tag}` : ""}`; +} +export function areModelsSame(l, r) { + if (!l && !r) + return true; + if (!l || !r) + return false; + if (l === r) + return true; + return normalizeModelIdentifier(l) === normalizeModelIdentifier(r); +} +/** + * Creates a detailed trace log for a language model connection. + * + * @param trace - The MarkdownTrace instance used for documenting details. + * @param options - Configuration options for the model connection: + * - `model`: The model identifier. + * - `temperature`: Sampling temperature for the model. + * - `reasoningEffort`: Effort level for reasoning tasks (e.g., high, medium, low). + * - `fallbackTools`: Tools used for fallback handling. + * - `topP`: Probability mass for nucleus sampling. + * - `maxTokens`: Maximum token limit for the response. + * - `seed`: Seed value for deterministic outputs. + * - `cache`: Whether to use cache during this connection. + * - `logprobs`: Number of log probabilities to include. + * - `topLogprobs`: Statistics on the top probabilities. + * - `responseType`: Type of response expected (e.g., text, JSON schema). + * - `responseSchema`: JSON schema for structuring the response. + * - `fenceFormat`: Syntax for formatting fenced responses. + * - `choices`: Potential candidate options for sampling from the model. + * @param connectionToken - Metadata related to the model provider: + * - `base`: Base configuration identifier. + * - `type`: Type specification of the model. + * - `version`: Version of the model. + * - `source`: Origin of the model configuration. + * - `provider`: The associated service provider. + * + * Documents data about the model configuration and its behavior, including choices, aliases, + * and configuration metadata from the runtime environment. Ensures detailed logs for better traceability. + */ +export function traceLanguageModelConnection(trace, options, connectionToken) { + if (!trace) + return; + const runtimeHost = resolveRuntimeHost(); + const { model, temperature, reasoningEffort, fallbackTools, topP, maxTokens, seed, cache, logprobs, topLogprobs, responseType, responseSchema, fenceFormat, } = options; + const choices = arrayify(options.choices); + const { base, type, version, source, provider } = connectionToken; + trace.startDetails(`⚙️ configuration`); + try { + trace.itemValue(`model`, model); + trace.itemValue(`version`, version); + trace.itemValue(`source`, source); + trace.itemValue(`provider`, provider); + trace.itemValue(`temperature`, temperature); + trace.itemValue(`reasoningEffort`, reasoningEffort); + trace.itemValue(`fallbackTools`, fallbackTools); + trace.itemValue(`topP`, topP); + trace.itemValue(`maxTokens`, maxTokens); + trace.itemValue(`base`, base); + trace.itemValue(`type`, type); + trace.itemValue(`seed`, seed); + if (choices.length) + trace.itemValue(`choices`, choices + .map((c) => typeof c === "string" ? c : `${c.token} - ${roundWithPrecision(c.weight, 2)}`) + .join(",")); + trace.itemValue(`logprobs`, logprobs); + if (topLogprobs) + trace.itemValue(`topLogprobs`, topLogprobs); + trace.itemValue(`cache`, cache); + trace.itemValue(`fence format`, fenceFormat); + trace.itemValue(`response type`, responseType); + if (responseSchema) + trace.detailsFenced(`📦 response schema`, responseSchema, "json"); + trace.startDetails(`🔗 model aliases`); + Object.entries(runtimeHost.modelAliases).forEach(([key, value]) => trace.itemValue(key, toStringList(`\`${value.model}\``, isNaN(value.temperature) ? undefined : `temperature: \`${value.temperature}\``, `source: \`${value.source}\``))); + trace.endDetails(); + } + finally { + trace.endDetails(); + } +} +/** + * Determines if the provided model identifier is an alias. + * + * @param model - The model identifier to check. + * + * @returns True if the given model identifier is an alias, otherwise false. + */ +export function isModelAlias(model) { + const runtimeHost = resolveRuntimeHost(); + const res = !!runtimeHost.modelAliases[model]; + return res; +} +/** + * Resolves the final model configuration by following a chain of model aliases. + * + * Parameters: + * - model: The model identifier or alias to resolve. Must not be empty. + * + * Throws: + * - Error if the model parameter is not specified. + * - Error if a circular alias reference is detected. + * + * Returns: + * - The fully resolved ModelConfiguration object, containing the final model identifier and its source. + */ +export function resolveModelAlias(model) { + if (!model) + throw new Error("Model not specified"); + const runtimeHost = resolveRuntimeHost(); + const { modelAliases } = runtimeHost; + const seen = []; + let res = { + model, + source: "script", + }; + while (modelAliases[res.model]) { + const next = modelAliases[res.model]; + dbg(`alias ${res.model} -> ${next.model}`); + if (seen.includes(next.model)) + throw new Error(`Circular model alias: ${next.model}, seen ${[...seen].join(",")}`); + seen.push(next.model); + res = next; + } + return res; +} +/** + * Resolves model connection information, including configuration and token. + * + * @param conn - The connection options for the model. + * @param options - An optional object containing: + * - model: A specific model identifier to resolve. + * - defaultModel: A default model identifier if none is provided. + * - token: A boolean indicating whether to include the token in the resolved settings. + * - trace: An optional trace object for logging details. + * - cancellationToken: An optional token to cancel the operation. + * + * @returns An object containing: + * - info: Connection information for the resolved model. + * - configuration: Optional configuration details for the resolved model. + * + * Resolves the model identifier against aliases and retrieves configuration from the host. + * If candidates are supported, it tries to resolve each candidate until successful. + * Includes fallback handling for missing or invalid model configurations. + */ +export async function resolveModelConnectionInfo(conn, options) { + const { trace, token: askToken, defaultModel, cancellationToken } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const hint = options?.model || conn.model; + dbg(`resolving model for '${hint || ""}'`); + // supports candidate if no model hint or hint is a model alias + const resolved = resolveModelAlias(hint || defaultModel); + if (!resolved) + return { + info: { error: "missing error information", model: undefined }, + }; + const supportsCandidates = !hint || isModelAlias(hint); + const modelId = resolved.model; + let candidates = supportsCandidates ? resolved.candidates : undefined; + const resolveModel = async (model, resolveOptions) => { + try { + dbg(`resolving ${model}`); + const configuration = await runtimeHost.getLanguageModelConfiguration(model, { + token: resolveOptions.withToken, + cancellationToken, + trace, + }); + if (!configuration) { + dbg(`configuration not found`); + return { info: { ...conn, model } }; + } + else { + const { token: theToken, ...rest } = configuration; + return { + info: { + ...conn, + ...rest, + model, + token: theToken ? (resolveOptions.withToken ? theToken : "***") : "", + }, + configuration, + }; + } + } + catch (e) { + dbg(`error resolving ${model}: ${e}`); + if (resolveOptions.reportError) + trace?.error(undefined, e); + return { + info: { + ...conn, + model, + error: errorMessage(e), + }, + }; + } + }; + if (!supportsCandidates) { + dbg(`candidate ${modelId}`); + return await resolveModel(modelId, { + withToken: askToken, + reportError: true, + }); + } + else { + candidates = uniq([modelId, ...(candidates || [])].filter((c) => !!c)); + dbg(`candidates: ${candidates?.join(", ")}`); + for (const candidate of candidates) { + const res = await resolveModel(candidate, { + withToken: askToken, + reportError: false, + }); + if (!res.info.error && res.info.token) { + dbg(`resolved ${candidate}`); + return res; + } + } + debug(`no candidates resolved`); + return { + info: { + model: "?", + error: hint + ? `LLM provider not configured or refresh token expired for '${hint}'` + : "LLM provider not configured or refresh token expired", + }, + }; + } +} +//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/models.js.map b/packages/core/.tshy-build/browser/models.js.map new file mode 100644 index 0000000000..7505645099 --- /dev/null +++ b/packages/core/.tshy-build/browser/models.js.map @@ -0,0 +1 @@ +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mustache.d.ts b/packages/core/.tshy-build/browser/mustache.d.ts new file mode 100644 index 0000000000..5077a1ca43 --- /dev/null +++ b/packages/core/.tshy-build/browser/mustache.d.ts @@ -0,0 +1,13 @@ +import Mustache from "mustache"; +import type { ImportTemplateOptions } from "./types.js"; +/** + * Processes a markdown string by applying Mustache or Jinja templating. + * Removes frontmatter, prompty roles, and XML tags before interpolation. + * @param md The markdown string to process. + * @param data The data for variable interpolation. + * @param options Configuration for templating format, e.g., Mustache or Jinja. + * @returns The processed markdown string with interpolated variables. + */ +export declare function interpolateVariables(md: string, data: Record, options?: ImportTemplateOptions): Promise; +export declare const mustacheRender: typeof Mustache.render; +//# sourceMappingURL=mustache.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mustache.d.ts.map b/packages/core/.tshy-build/browser/mustache.d.ts.map new file mode 100644 index 0000000000..459985c3d9 --- /dev/null +++ b/packages/core/.tshy-build/browser/mustache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mustache.d.ts","sourceRoot":"","sources":["../../src/mustache.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,eAAO,MAAM,cAAc,wBAAkB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mustache.js b/packages/core/.tshy-build/browser/mustache.js new file mode 100644 index 0000000000..3c37b78691 --- /dev/null +++ b/packages/core/.tshy-build/browser/mustache.js @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { splitMarkdown } from "./frontmatter.js"; +import Mustache from "mustache"; +import { jinjaRender } from "./jinja.js"; +/** + * Processes a markdown string by applying Mustache or Jinja templating. + * Removes frontmatter, prompty roles, and XML tags before interpolation. + * @param md The markdown string to process. + * @param data The data for variable interpolation. + * @param options Configuration for templating format, e.g., Mustache or Jinja. + * @returns The processed markdown string with interpolated variables. + */ +export async function interpolateVariables(md, data, options) { + if (!md || !data) + return md; + const { format } = options || {}; + // remove frontmatter + let { content } = splitMarkdown(md); + // remove prompty roles + // https://github.com/microsoft/prompty/blob/main/runtime/prompty/prompty/parsers.py#L113C21-L113C77 + content = content.replace(/^\s*(system|user|assistant)\s*:\s*$/gim, "\n"); + if (content) { + // remove xml tags + // https://humanloop.com/docs/prompt-file-format + if (format === "jinja") + content = jinjaRender(content, data ?? {}); + else + content = Mustache.render(content, data ?? {}); + } + return content; +} +export const mustacheRender = Mustache.render; +//# sourceMappingURL=mustache.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/mustache.js.map b/packages/core/.tshy-build/browser/mustache.js.map new file mode 100644 index 0000000000..63935f093c --- /dev/null +++ b/packages/core/.tshy-build/browser/mustache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mustache.js","sourceRoot":"","sources":["../../src/mustache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAU,EACV,IAAyB,EACzB,OAA+B;IAE/B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACjC,qBAAqB;IACrB,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAEpC,uBAAuB;IACvB,oGAAoG;IACpG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;IAE1E,IAAI,OAAO,EAAE,CAAC;QACZ,kBAAkB;QAClB,gDAAgD;QAChD,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;;YAC9D,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/net.d.ts b/packages/core/.tshy-build/browser/net.d.ts new file mode 100644 index 0000000000..bc1620b25e --- /dev/null +++ b/packages/core/.tshy-build/browser/net.d.ts @@ -0,0 +1,14 @@ +/** + * Finds a random open port on the system. + * + * @returns A promise that resolves to an available port number. + */ +export declare function findRandomOpenPort(): Promise; +/** + * Checks if a specific port is in use. + * + * @param port The port number to check. + * @returns A promise that resolves to true if the port is in use, or false otherwise. + */ +export declare function isPortInUse(port: number): Promise; +//# sourceMappingURL=net.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/net.d.ts.map b/packages/core/.tshy-build/browser/net.d.ts.map new file mode 100644 index 0000000000..6713aea27f --- /dev/null +++ b/packages/core/.tshy-build/browser/net.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../../src/net.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAW1D;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBhE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/net.js b/packages/core/.tshy-build/browser/net.js new file mode 100644 index 0000000000..c1345f0c08 --- /dev/null +++ b/packages/core/.tshy-build/browser/net.js @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Finds a random open port on the system. + * + * @returns A promise that resolves to an available port number. + */ +export async function findRandomOpenPort() { + const net = await import("net"); + return new Promise((resolve, reject) => { + const server = net.createServer(); + server.unref(); + server.on("error", reject); + server.listen(0, () => { + const port = server.address()?.port; + server.close(() => resolve(port)); + }); + }); +} +/** + * Checks if a specific port is in use. + * + * @param port The port number to check. + * @returns A promise that resolves to true if the port is in use, or false otherwise. + */ +export async function isPortInUse(port) { + const net = await import("net"); + return new Promise((resolve, reject) => { + const server = net.createServer(); + server.once("error", (err) => { + if (err.code === "EADDRINUSE") { + resolve(true); + } + else { + reject(err); + } + }); + server.once("listening", () => { + server.close(() => resolve(false)); + }); + server.listen(port); + }); +} +//# sourceMappingURL=net.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/net.js.map b/packages/core/.tshy-build/browser/net.js.map new file mode 100644 index 0000000000..8b0fb6d847 --- /dev/null +++ b/packages/core/.tshy-build/browser/net.js.map @@ -0,0 +1 @@ +{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/net.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;YACpB,MAAM,IAAI,GAAI,MAAM,CAAC,OAAO,EAAkB,EAAE,IAAI,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAsB,EAAE,EAAE;YAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nodepackage.d.ts b/packages/core/.tshy-build/browser/nodepackage.d.ts new file mode 100644 index 0000000000..104fafb0e0 --- /dev/null +++ b/packages/core/.tshy-build/browser/nodepackage.d.ts @@ -0,0 +1,39 @@ +export interface NodePackage { + type?: string; + name?: string; + version?: string; + description?: string; + main?: string; + scripts?: Record; + dependencies?: Record; + devDependencies?: Record; + peerDependencies?: Record; + optionalDependencies?: Record; + bundledDependencies?: string[]; + engines?: Record; + os?: string[]; + cpu?: string[]; + private?: boolean; + publishConfig?: Record; + repository?: Record; + author?: string; + license?: string; + bugs?: Record; + homepage?: string; + keywords?: string[]; + displayName?: string; +} +/** + * Reads and parses the `package.json` file located in the current directory. + * + * @returns A promise that resolves with the parsed contents of the `package.json` file as a NodePackage object. + * If the file cannot be read or parsed, the promise may reject with an error. + */ +export declare function nodeTryReadPackage(): Promise; +/** + * Determines if the package is of type "module" by reading the package.json file. + * + * @returns A promise that resolves to a boolean indicating if the package type is "module". + */ +export declare function nodeIsPackageTypeModule(): Promise; +//# sourceMappingURL=nodepackage.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nodepackage.d.ts.map b/packages/core/.tshy-build/browser/nodepackage.d.ts.map new file mode 100644 index 0000000000..2292ed22da --- /dev/null +++ b/packages/core/.tshy-build/browser/nodepackage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nodepackage.d.ts","sourceRoot":"","sources":["../../src/nodepackage.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAE/D;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,qBAK5C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nodepackage.js b/packages/core/.tshy-build/browser/nodepackage.js new file mode 100644 index 0000000000..9e9d6c6e24 --- /dev/null +++ b/packages/core/.tshy-build/browser/nodepackage.js @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import debug from "debug"; +const dbg = debug("genaiscript:node:package"); +import { tryReadJSON } from "./fs.js"; +/** + * Reads and parses the `package.json` file located in the current directory. + * + * @returns A promise that resolves with the parsed contents of the `package.json` file as a NodePackage object. + * If the file cannot be read or parsed, the promise may reject with an error. + */ +export async function nodeTryReadPackage() { + return await tryReadJSON("package.json"); +} +/** + * Determines if the package is of type "module" by reading the package.json file. + * + * @returns A promise that resolves to a boolean indicating if the package type is "module". + */ +export async function nodeIsPackageTypeModule() { + const pkg = await nodeTryReadPackage(); + dbg(`type: ${pkg?.type || ""}`); + const isModule = pkg?.type === "module"; + return isModule; +} +//# sourceMappingURL=nodepackage.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nodepackage.js.map b/packages/core/.tshy-build/browser/nodepackage.js.map new file mode 100644 index 0000000000..1653167e0c --- /dev/null +++ b/packages/core/.tshy-build/browser/nodepackage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nodepackage.js","sourceRoot":"","sources":["../../src/nodepackage.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4BtC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,GAAG,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACvC,GAAG,CAAC,SAAS,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nonemodel.d.ts b/packages/core/.tshy-build/browser/nonemodel.d.ts new file mode 100644 index 0000000000..c2543b8327 --- /dev/null +++ b/packages/core/.tshy-build/browser/nonemodel.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const NoneModel: Readonly; +//# sourceMappingURL=nonemodel.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nonemodel.d.ts.map b/packages/core/.tshy-build/browser/nonemodel.d.ts.map new file mode 100644 index 0000000000..64ea1bdd56 --- /dev/null +++ b/packages/core/.tshy-build/browser/nonemodel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nonemodel.d.ts","sourceRoot":"","sources":["../../src/nonemodel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI/C,eAAO,MAAM,SAAS,yBAQpB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nonemodel.js b/packages/core/.tshy-build/browser/nonemodel.js new file mode 100644 index 0000000000..f38bb9c1ef --- /dev/null +++ b/packages/core/.tshy-build/browser/nonemodel.js @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDER_NONE } from "./constants.js"; +import { serializeError } from "./error.js"; +export const NoneModel = Object.freeze({ + id: MODEL_PROVIDER_NONE, + completer: async (_req, _connection, _options) => { + return { + finishReason: "fail", + error: serializeError("No LLM execution allowed in this context."), + }; + }, +}); +//# sourceMappingURL=nonemodel.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/nonemodel.js.map b/packages/core/.tshy-build/browser/nonemodel.js.map new file mode 100644 index 0000000000..cd5ea77776 --- /dev/null +++ b/packages/core/.tshy-build/browser/nonemodel.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nonemodel.js","sourceRoot":"","sources":["../../src/nonemodel.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAgB;IACpD,EAAE,EAAE,mBAAmB;IACvB,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC/C,OAAO;YACL,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,cAAc,CAAC,2CAA2C,CAAC;SACnE,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ollama.d.ts b/packages/core/.tshy-build/browser/ollama.d.ts new file mode 100644 index 0000000000..89dca7bc96 --- /dev/null +++ b/packages/core/.tshy-build/browser/ollama.d.ts @@ -0,0 +1,3 @@ +import type { LanguageModel } from "./chat.js"; +export declare const OllamaModel: Readonly; +//# sourceMappingURL=ollama.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ollama.d.ts.map b/packages/core/.tshy-build/browser/ollama.d.ts.map new file mode 100644 index 0000000000..c4992ee02c --- /dev/null +++ b/packages/core/.tshy-build/browser/ollama.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/ollama.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,WAAW,CAAC;AAwGtF,eAAO,MAAM,WAAW,yBAMtB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ollama.js b/packages/core/.tshy-build/browser/ollama.js new file mode 100644 index 0000000000..bd3b7ef0a4 --- /dev/null +++ b/packages/core/.tshy-build/browser/ollama.js @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { MODEL_PROVIDER_OLLAMA, TOOL_ID } from "./constants.js"; +import { serializeError } from "./error.js"; +import { createFetch, iterateBody } from "./fetch.js"; +import { OpenAIChatCompletion, OpenAIEmbedder } from "./openai.js"; +import { logError, logVerbose } from "./util.js"; +import { JSONLTryParse } from "./jsonl.js"; +import { stderr } from "./stdio.js"; +/** + * Lists available models for the Ollama language model configuration. + * Fetches model data from a remote endpoint and formats it into a LanguageModelInfo array. + * + * @param cfg - The configuration for the language model. + * @returns A promise that resolves to an array of LanguageModelInfo objects. + */ +const listModels = async (cfg, options) => { + try { + // Create a fetch instance to make HTTP requests + const fetch = await createFetch({ retries: 0, ...options }); + // Fetch the list of models from the remote API + const res = await fetch(cfg.base.replace("/v1", "/api/tags"), { + method: "GET", + }); + if (res.status !== 200) + return { + ok: false, + status: res.status, + error: serializeError(res.statusText), + }; + // Parse and format the response into LanguageModelInfo objects + const { models } = (await res.json()); + return { + ok: true, + models: models.map((m) => ({ + id: m.name, + details: `${m.name}, ${m.details.parameter_size}`, + url: `https://ollama.com/library/${m.name}`, + })), + }; + } + catch (e) { + return { ok: false, error: serializeError(e) }; + } +}; +const pullModel = async (cfg, options) => { + const { cancellationToken } = options || {}; + const { provider, model } = cfg; + const fetch = await createFetch({ retries: 0, ...options }); + const base = cfg.base.replace(/\/v1$/i, ""); + try { + // pull + logVerbose(`${provider}: pull ${model}`); + const resPull = await fetch(`${base}/api/pull`, { + method: "POST", + headers: { + "Content-Type": "application/json", + "User-Agent": TOOL_ID, + }, + body: JSON.stringify({ model }), + }); + if (!resPull.ok) { + logError(`${provider}: failed to pull model ${model}`); + logVerbose(resPull.statusText); + return { ok: false, status: resPull.status }; + } + for await (const chunk of iterateBody(resPull, { cancellationToken })) { + const cs = JSONLTryParse(chunk); + for (const c of cs) { + if (c?.error) { + return { + ok: false, + error: serializeError(c.error), + }; + } + } + stderr.write("."); + } + stderr.write("\n"); + logVerbose(`${provider}: pulled ${model}`); + return { ok: true }; + } + catch (e) { + logError(e); + return { ok: false, error: serializeError(e) }; + } +}; +// Define the Ollama model with its completion handler and model listing function +export const OllamaModel = Object.freeze({ + id: MODEL_PROVIDER_OLLAMA, + completer: OpenAIChatCompletion, + listModels, + pullModel, + embedder: OpenAIEmbedder, +}); +//# sourceMappingURL=ollama.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/ollama.js.map b/packages/core/.tshy-build/browser/ollama.js.map new file mode 100644 index 0000000000..de745adfcb --- /dev/null +++ b/packages/core/.tshy-build/browser/ollama.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/ollama.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts b/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts new file mode 100644 index 0000000000..98c864ff32 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts @@ -0,0 +1,18 @@ +import type { ChatCompletionHandler } from "./chat.js"; +import type { LanguageModelConfiguration } from "./server/messages.js"; +/** + * Generates configuration headers for API requests based on the provided configuration object. + * + * @param cfg - The configuration object containing details for API access. + * - token: Authentication token for the API. + * - type: The type of model (e.g., azure_serverless_models, openai, etc.). + * - base: Base URL of the API. + * - provider: Identifier for the model provider. + * @returns A record of key-value pairs representing the headers, including: + * - Authorization: The formatted authorization header if applicable. + * - api-key: API key if Bearer authentication is not used. + * - User-Agent: A constant user agent identifier for the tool. + */ +export declare function getConfigHeaders(cfg: LanguageModelConfiguration): Record; +export declare const OpenAIv1ChatCompletion: ChatCompletionHandler; +//# sourceMappingURL=openai-chatcompletion.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts.map b/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts.map new file mode 100644 index 0000000000..8ad61d960e --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-chatcompletion.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"openai-chatcompletion.d.ts","sourceRoot":"","sources":["../../src/openai-chatcompletion.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAmBvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAiBvE;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,0BAA0B,0BAqB/D;AAED,eAAO,MAAM,sBAAsB,EAAE,qBAiapC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-chatcompletion.js b/packages/core/.tshy-build/browser/openai-chatcompletion.js new file mode 100644 index 0000000000..33ca523e7b --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-chatcompletion.js @@ -0,0 +1,444 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { AZURE_AI_INFERENCE_VERSION, AZURE_OPENAI_API_VERSION, MODEL_PROVIDER_ALIBABA, MODEL_PROVIDER_AZURE_AI_INFERENCE, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_AZURE_SERVERLESS_MODELS, MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI, MODEL_PROVIDER_GITHUB, MODEL_PROVIDER_HUGGINGFACE, MODEL_PROVIDER_OPENAI, MODEL_PROVIDER_OPENAI_HOSTS, OPENROUTER_API_CHAT_URL, OPENROUTER_SITE_NAME_HEADER, OPENROUTER_SITE_URL_HEADER, THINK_END_TOKEN_REGEX, THINK_START_TOKEN_REGEX, TOOL_ID, TOOL_NAME, TOOL_URL, } from "./constants.js"; +import { approximateTokens } from "./tokens.js"; +import { RequestError, errorMessage, serializeError } from "./error.js"; +import { createFetch } from "./fetch.js"; +import { parseModelIdentifier } from "./models.js"; +import { JSON5TryParse } from "./json5.js"; +import { resolveTokenEncoder } from "./encoders.js"; +import { INITryParse } from "./ini.js"; +import { serializeChunkChoiceToLogProbs } from "./logprob.js"; +import { deleteUndefinedValues, isEmptyString, normalizeInt, trimTrailingSlash, } from "./cleaners.js"; +import { traceFetchPost } from "./fetchtext.js"; +import { providerFeatures } from "./features.js"; +import { genaiscriptDebug } from "./debug.js"; +import { createUTF8Decoder } from "./utf8.js"; +const dbg = genaiscriptDebug("openai"); +const dbgMessages = dbg.extend("msg"); +dbgMessages.enabled = false; +/** + * Generates configuration headers for API requests based on the provided configuration object. + * + * @param cfg - The configuration object containing details for API access. + * - token: Authentication token for the API. + * - type: The type of model (e.g., azure_serverless_models, openai, etc.). + * - base: Base URL of the API. + * - provider: Identifier for the model provider. + * @returns A record of key-value pairs representing the headers, including: + * - Authorization: The formatted authorization header if applicable. + * - api-key: API key if Bearer authentication is not used. + * - User-Agent: A constant user agent identifier for the tool. + */ +export function getConfigHeaders(cfg) { + let { token, type, base, provider } = cfg; + if (type === "azure_serverless_models") { + const keys = INITryParse(token); + if (keys && Object.keys(keys).length > 1) + token = keys[cfg.model]; + } + const features = providerFeatures(provider); + const useBearer = features?.bearerToken !== false; + const isBearer = /^Bearer /i.test(cfg.token); + const Authorization = isBearer + ? token + : token && (useBearer || base === OPENROUTER_API_CHAT_URL) + ? `Bearer ${token}` + : undefined; + const apiKey = Authorization ? undefined : token; + const res = deleteUndefinedValues({ + Authorization, + "api-key": apiKey, + "User-Agent": TOOL_ID, + }); + return res; +} +export const OpenAIv1ChatCompletion = async (req, cfg, options, trace) => { + const { requestOptions, partialCb, retries, retryDelay, maxDelay, maxRetryAfter, cancellationToken, inner, } = options; + const { headers = {}, ...rest } = requestOptions || {}; + const { provider, model, family, reasoningEffort } = parseModelIdentifier(req.model); + const features = providerFeatures(provider); + const { encode: encoder } = await resolveTokenEncoder(family); + const postReq = structuredClone({ + ...req, + stream: true, + stream_options: { include_usage: true }, + model, + messages: req.messages.map(({ cacheControl, ...rest }) => ({ + ...rest, + })), + }); + // stream_options fails in some cases + if (family === "gpt-4-turbo-v" || /mistral/i.test(family)) { + dbg(`removing stream_options`); + delete postReq.stream_options; + } + if (MODEL_PROVIDER_OPENAI_HOSTS.includes(provider)) { + if (/^(openai\/)?o\d|gpt-4\.1/.test(family)) { + dbg(`changing max_tokens to max_completion_tokens`); + if (postReq.max_tokens) { + postReq.max_completion_tokens = postReq.max_tokens; + delete postReq.max_tokens; + } + } + if (/^(openai\/)?o\d/.test(family)) { + dbg(`removing options to support o1/o3/o4`); + delete postReq.temperature; + delete postReq.top_p; + delete postReq.presence_penalty; + delete postReq.frequency_penalty; + delete postReq.logprobs; + delete postReq.top_logprobs; + delete postReq.logit_bias; + if (!postReq.reasoning_effort && reasoningEffort) { + postReq.model = family; + postReq.reasoning_effort = reasoningEffort; + } + } + if (/^(openai\/)?o1/.test(family)) { + dbg(`removing options to support o1`); + const preview = /^o1-(preview|mini)/i.test(family); + delete postReq.stream; + delete postReq.stream_options; + for (const msg of postReq.messages) { + if (msg.role === "system") { + msg.role = preview ? "user" : "developer"; + } + } + } + else if (/^(openai\/)?o3/i.test(family)) { + for (const msg of postReq.messages) { + if (msg.role === "system") { + msg.role = "developer"; + } + } + } + } + const singleModel = !!features?.singleModel; + if (singleModel) + delete postReq.model; + let url = ""; + const toolCalls = []; + if (cfg.type === MODEL_PROVIDER_OPENAI || + cfg.type === "localai" || + cfg.type === MODEL_PROVIDER_ALIBABA || + cfg.type === MODEL_PROVIDER_HUGGINGFACE) { + url = trimTrailingSlash(cfg.base) + "/chat/completions"; + if (url === OPENROUTER_API_CHAT_URL) { + headers[OPENROUTER_SITE_URL_HEADER] = process.env.OPENROUTER_SITE_URL || TOOL_URL; + headers[OPENROUTER_SITE_NAME_HEADER] = process.env.OPENROUTER_SITE_NAME || TOOL_NAME; + } + } + else if (cfg.type === MODEL_PROVIDER_AZURE_OPENAI) { + delete postReq.model; + const version = cfg.version || AZURE_OPENAI_API_VERSION; + trace?.itemValue(`version`, version); + url = trimTrailingSlash(cfg.base) + "/" + family + `/chat/completions?api-version=${version}`; + } + else if (cfg.type === MODEL_PROVIDER_AZURE_AI_INFERENCE) { + const version = cfg.version; + trace?.itemValue(`version`, version); + url = trimTrailingSlash(cfg.base) + `/chat/completions`; + if (version) + url += `?api-version=${version}`; + headers["extra-parameters"] = "pass-through"; + } + else if (cfg.type === MODEL_PROVIDER_AZURE_SERVERLESS_MODELS) { + const version = cfg.version || AZURE_AI_INFERENCE_VERSION; + trace?.itemValue(`version`, version); + url = + trimTrailingSlash(cfg.base).replace(/^https?:\/\/(?[^\.]+)\.(?[^\.]+)\.models\.ai\.azure\.com/i, (m, deployment, region) => `https://${postReq.model}.${region}.models.ai.azure.com`) + `/chat/completions?api-version=${version}`; + headers["extra-parameters"] = "pass-through"; + delete postReq.model; + delete postReq.stream_options; + } + else if (cfg.type === MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI) { + const version = cfg.version || AZURE_AI_INFERENCE_VERSION; + trace?.itemValue(`version`, version); + url = trimTrailingSlash(cfg.base) + "/" + family + `/chat/completions?api-version=${version}`; + // https://learn.microsoft.com/en-us/azure/machine-learning/reference-model-inference-api?view=azureml-api-2&tabs=javascript#extensibility + headers["extra-parameters"] = "pass-through"; + delete postReq.model; + } + else if (cfg.type === MODEL_PROVIDER_GITHUB) { + url = trimTrailingSlash(cfg.base) + "/chat/completions"; + const { prefix } = /^(?[^-]+)-([^\/]+)$/.exec(postReq.model)?.groups || {}; + const patch = { + gpt: "openai", + o: "openai", + "text-embedding": "openai", + phi: "microsoft", + meta: "meta", + llama: "meta", + mistral: "mistral-ai", + deepseek: "deepseek", + }[prefix?.toLowerCase() || ""]; + if (patch) { + postReq.model = `${patch}/${postReq.model}`; + dbg(`updated model to ${postReq.model}`); + } + } + else + throw new Error(`api type ${cfg.type} not supported`); + trace?.itemValue(`url`, `[${url}](${url})`); + dbg(`url: ${url}`); + let numTokens = 0; + let numReasoningTokens = 0; + const fetchRetry = await createFetch({ + trace, + retries, + retryDelay, + maxDelay, + maxRetryAfter, + cancellationToken, + }); + trace?.dispatchChange(); + const fetchHeaders = { + "Content-Type": "application/json", + ...getConfigHeaders(cfg), + ...(headers || {}), + }; + traceFetchPost(trace, url, fetchHeaders, postReq); + const body = JSON.stringify(postReq); + let r; + try { + r = await fetchRetry(url, { + headers: fetchHeaders, + body, + method: "POST", + ...(rest || {}), + }); + } + catch (e) { + trace?.error(errorMessage(e), e); + throw e; + } + trace?.itemValue(`status`, `${r.status} ${r.statusText}`); + dbg(`response: ${r.status} ${r.statusText}`); + if (r.status !== 200) { + let responseBody; + try { + responseBody = await r.text(); + } + catch (e) { } + if (!responseBody) + responseBody; + trace?.fence(responseBody, "json"); + const errors = JSON5TryParse(responseBody, {}); + const error = Array.isArray(errors) ? errors[0]?.error : errors; + throw new RequestError(r.status, errorMessage(error) || r.statusText, errors, responseBody, normalizeInt(r.headers.get("retry-after"))); + } + let done = false; + let finishReason = undefined; + let chatResp = ""; + let reasoningChatResp = ""; + let pref = ""; + let usage; + let error; + let responseModel; + const lbs = []; + let reasoning = false; + const doChoices = (json, tokens, reasoningTokens) => { + const obj = JSON.parse(json); + if (!postReq.stream) + trace?.detailsFenced(`📬 response`, obj, "json"); + dbgMessages(`%O`, obj); + if (obj.usage) + usage = obj.usage; + if (!responseModel && obj.model) { + responseModel = obj.model; + dbg(`model: ${responseModel}`); + } + if (!obj.choices?.length) + return; + else if (obj.choices?.length != 1) + throw new Error("too many choices in response"); + const choice = obj.choices[0]; + const { finish_reason } = choice; + if (finish_reason) { + dbg(`finish reason: ${finish_reason}`); + finishReason = finish_reason; + } + if (choice.delta) { + const { delta, logprobs } = choice; + if (logprobs?.content) + lbs.push(...logprobs.content); + if (typeof delta?.content === "string" && delta.content !== "") { + let content = delta.content; + if (!reasoning && THINK_START_TOKEN_REGEX.test(content)) { + dbg(`entering `); + reasoning = true; + content = content.replace(THINK_START_TOKEN_REGEX, ""); + } + else if (reasoning && THINK_END_TOKEN_REGEX.test(content)) { + dbg(`leaving `); + reasoning = false; + content = content.replace(THINK_END_TOKEN_REGEX, ""); + } + if (!isEmptyString(content)) { + if (reasoning) { + numReasoningTokens += approximateTokens(content, { + encoder, + }); + reasoningChatResp += content; + reasoningTokens.push(...serializeChunkChoiceToLogProbs(choice)); + } + else { + numTokens += approximateTokens(content, { encoder }); + chatResp += content; + tokens.push(...serializeChunkChoiceToLogProbs(choice)); + } + trace?.appendToken(content); + } + } + if (typeof delta?.reasoning_content === "string" && delta.reasoning_content !== "") { + numTokens += approximateTokens(delta.reasoning_content, { + encoder, + }); + reasoningChatResp += delta.reasoning_content; + reasoningTokens.push(...serializeChunkChoiceToLogProbs(choice)); + trace?.appendToken(delta.reasoning_content); + } + if (Array.isArray(delta?.tool_calls)) { + const { tool_calls } = delta; + for (const call of tool_calls) { + const index = call.index ?? toolCalls.length; + const tc = toolCalls[index] || + (toolCalls[index] = { + id: call.id, + name: call.function.name, + arguments: "", + }); + if (call.function.arguments) + tc.arguments += call.function.arguments; + } + } + } + else if (choice.message) { + const { message } = choice; + chatResp = message.content; + reasoningChatResp = message.reasoning_content; + numTokens = usage?.total_tokens ?? approximateTokens(chatResp, { encoder }); + if (Array.isArray(message?.tool_calls)) { + const { tool_calls } = message; + for (let calli = 0; calli < tool_calls.length; calli++) { + const call = tool_calls[calli]; + const tc = toolCalls[calli] || + (toolCalls[calli] = { + id: call.id, + name: call.function.name, + arguments: "", + }); + if (call.function.arguments) + tc.arguments += call.function.arguments; + } + } + partialCb?.(deleteUndefinedValues({ + responseSoFar: chatResp, + reasoningSoFar: reasoningChatResp, + tokensSoFar: numTokens, + responseChunk: chatResp, + reasoningChunk: reasoningChatResp, + inner, + })); + } + if (finish_reason === "function_call" || toolCalls.length > 0) { + finishReason = "tool_calls"; + } + else { + finishReason = finish_reason; + } + }; + trace?.appendContent("\n\n"); + if (!postReq.stream) { + const responseBody = await r.text(); + doChoices(responseBody, [], []); + } + else { + const decoder = createUTF8Decoder(); + const doChunk = (value) => { + // Massage and parse the chunk of data + const tokens = []; + const reasoningTokens = []; + let chunk = decoder.decode(value, { stream: true }); + chunk = pref + chunk; + const ch0 = chatResp; + const rch0 = reasoningChatResp; + chunk = chunk.replace(/^data:\s*(.*)[\r\n]+/gm, (_, json) => { + if (json === "[DONE]") { + done = true; + return ""; + } + try { + doChoices(json, tokens, reasoningTokens); + } + catch (e) { + trace?.error(`error processing chunk`, e); + } + return ""; + }); + // end replace + const reasoningProgress = reasoningChatResp.slice(rch0.length); + const chatProgress = chatResp.slice(ch0.length); + if (!isEmptyString(chatProgress) || !isEmptyString(reasoningProgress)) { + // logVerbose(`... ${progress.length} chars`); + partialCb?.(deleteUndefinedValues({ + responseSoFar: chatResp, + reasoningSoFar: reasoningChatResp, + reasoningChunk: reasoningProgress, + tokensSoFar: numTokens, + responseChunk: chatProgress, + responseTokens: tokens, + reasoningTokens, + inner, + })); + } + pref = chunk; + }; + try { + if (r.body.getReader) { + const reader = r.body.getReader(); + while (!cancellationToken?.isCancellationRequested && !done) { + const { done: readerDone, value } = await reader.read(); + if (readerDone) + break; + doChunk(value); + } + } + else { + for await (const value of r.body) { + if (cancellationToken?.isCancellationRequested || done) + break; + doChunk(value); + } + } + if (cancellationToken?.isCancellationRequested) + finishReason = "cancel"; + else if (toolCalls?.length) + finishReason = "tool_calls"; + finishReason = finishReason || "stop"; // some provider do not implement this final mesage + } + catch (e) { + finishReason = "fail"; + error = serializeError(e); + } + } + trace?.appendContent("\n\n"); + if (responseModel) + trace?.itemValue(`model`, responseModel); + trace?.itemValue(`🏁 finish reason`, finishReason); + if (usage?.total_tokens) { + trace?.itemValue(`🪙 tokens`, `${usage.total_tokens} total, ${usage.prompt_tokens} prompt, ${usage.completion_tokens} completion`); + } + return deleteUndefinedValues({ + text: chatResp, + reasoning: reasoningChatResp, + toolCalls, + finishReason, + usage, + error, + model: responseModel, + logprobs: lbs, + }); +}; +//# sourceMappingURL=openai-chatcompletion.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-chatcompletion.js.map b/packages/core/.tshy-build/browser/openai-chatcompletion.js.map new file mode 100644 index 0000000000..3dccaa5516 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-chatcompletion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"openai-chatcompletion.js","sourceRoot":"","sources":["../../src/openai-chatcompletion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-responses.d.ts b/packages/core/.tshy-build/browser/openai-responses.d.ts new file mode 100644 index 0000000000..e3ec622b86 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-responses.d.ts @@ -0,0 +1,7 @@ +import type { ChatCompletionHandler } from "./chat.js"; +/** + * Chat completion handler that uses the official OpenAI package + * to support the Responses API properly. + */ +export declare const OpenAIv2ResponsesChatCompletion: ChatCompletionHandler; +//# sourceMappingURL=openai-responses.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-responses.d.ts.map b/packages/core/.tshy-build/browser/openai-responses.d.ts.map new file mode 100644 index 0000000000..2054724e43 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-responses.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/openai-responses.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AA6FvD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,qBAuD7C,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-responses.js b/packages/core/.tshy-build/browser/openai-responses.js new file mode 100644 index 0000000000..fefe9398d4 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-responses.js @@ -0,0 +1,206 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * OpenAI Responses API implementation using the official OpenAI package + * This is a separate implementation from the existing OpenAI handler that uses + * the official OpenAI npm package to support the Responses API properly. + */ +import OpenAI from "openai"; +import { genaiscriptDebug } from "./debug.js"; +import { errorMessage, isCancelError } from "./error.js"; +import { createFetch } from "./fetch.js"; +import { logError } from "./util.js"; +import { checkCancelled } from "./cancellation.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +const dbg = genaiscriptDebug("openai:responses"); +function statusToReason(status) { + switch (status) { + case "completed": + return "stop"; + case "failed": + return "fail"; + case "cancelled": + return "cancel"; + case "incomplete": + return "length"; + default: + return undefined; + } +} +function responseToCompletion(response) { + if (!response) + return {}; + return deleteUndefinedValues({ + text: response.output_text, + toolCalls: response.output + .filter((o) => o.type === "function_call") + .map((o) => ({ + id: o.call_id, + name: o.name, + arguments: o.arguments, + })), + usage: response.usage + ? { + prompt_tokens: response.usage.input_tokens, + completion_tokens: response.usage.output_tokens, + total_tokens: response.usage.total_tokens, + } + : undefined, + model: response.model, + error: response.error, + finishReason: statusToReason(response.status), + }); +} +function chatMessageContentToResponseInputItem(content) { + // TODO + return undefined; +} +function chatCompletionMessageToResponseInput(messages) { + // TODO + return undefined; + /* + return messages.map((msg) => { + switch (msg.role) { + case "assistant": + // TODO + return { + type: "message", + status: "completed", + role: "assistant", + content: chatMessageContentToResponseInputItem(msg.content), + } satisfies OpenAI.Responses.ResponseOutputMessage; + case "system": + return { + role: "developer", + content: chatMessageContentToResponseInputItem(msg.content), + } satisfies OpenAI.Responses.ResponseInputItem.Message; + case "user": + return { + role: "user", + content: chatMessageContentToResponseInputItem(msg.content), + } satisfies OpenAI.Responses.ResponseInputItem.Message; + case "function": + case "tool": + return { + type: "function_call_output", + } satisfies OpenAI.Responses.ResponseFunctionToolCallOutputItem; + } + }); + */ +} +/** + * Chat completion handler that uses the official OpenAI package + * to support the Responses API properly. + */ +export const OpenAIv2ResponsesChatCompletion = async (req, cfg, options, trace) => { + dbg(`start %s at %s`, req.model, cfg.base); + const { requestOptions, cancellationToken } = options; + try { + // Create fetch instance + const fetchInstance = await createFetch(options); + checkCancelled(cancellationToken); + // Create OpenAI client instance + const openai = new OpenAI({ + apiKey: cfg.token, + baseURL: cfg.base, + fetch: fetchInstance, + }); + // Convert our request format to OpenAI Responses format + const openaiRequest = deleteUndefinedValues({ + model: req.model, + input: chatCompletionMessageToResponseInput(req.messages), + temperature: req.temperature, + max_output_tokens: req.max_completion_tokens, + top_p: req.top_p, + stream: req.stream, + ...requestOptions, + }); + if (openaiRequest.stream) { + dbg(`streaming request`); + return await handleStreamingResponse(openai, openaiRequest, options, trace); + } + else { + dbg(`non-streaming request`); + return await handleNonStreamingResponse(openai, openaiRequest, options, trace); + } + } + catch (error) { + if (isCancelError(error)) { + dbg(`request cancelled`); + return { finishReason: "cancel" }; + } + const errorMsg = errorMessage(error); + logError(`OpenAI Responses API error: ${errorMsg}`); + trace?.error(error); + return { + finishReason: "fail", + error: { message: errorMsg, name: "OpenAIError" }, + }; + } +}; +/** + * Handle non-streaming OpenAI Responses API response + */ +async function handleNonStreamingResponse(openai, request, options, trace) { + const { cancellationToken } = options; + const response = await openai.responses.create({ + ...request, + stream: false, + }); + checkCancelled(cancellationToken); + trace?.detailsFenced(`📬 response`, response, "json"); + const res = responseToCompletion(response); + return res; +} +/** + * Handle streaming OpenAI Responses API response + */ +async function handleStreamingResponse(openai, request, options, trace) { + const { cancellationToken, partialCb } = options; + checkCancelled(cancellationToken); + const res = {}; + try { + const stream = await openai.responses.create({ + ...request, + stream: true, + }); + for await (const chunk of stream) { + checkCancelled(cancellationToken); + dbg(`%s %O`, chunk.type, chunk.response); + switch (chunk.type) { + case "error": + res.error = { code: chunk.code, message: chunk.message }; + break; + case "response.completed": + Object.assign(res, responseToCompletion(chunk.response)); + res.finishReason = "stop"; + break; + case "response.failed": + Object.assign(res, responseToCompletion(chunk.response)); + res.finishReason = "fail"; + break; + case "response.created": + Object.assign(res, responseToCompletion(chunk.response)); + break; + case "response.output_text.delta": + if (partialCb) + partialCb({ text: chunk.delta }); + trace?.appendContent(chunk.delta); + break; + case "response.refusal.done": + res.finishReason = "content_filter"; + break; + } + } + } + catch (error) { + if (isCancelError(error)) { + res.finishReason = "cancel"; + } + else { + throw error; + } + } + return res; +} +//# sourceMappingURL=openai-responses.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai-responses.js.map b/packages/core/.tshy-build/browser/openai-responses.js.map new file mode 100644 index 0000000000..0f16bea6ac --- /dev/null +++ b/packages/core/.tshy-build/browser/openai-responses.js.map @@ -0,0 +1 @@ +{"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../src/openai-responses.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai.d.ts b/packages/core/.tshy-build/browser/openai.d.ts new file mode 100644 index 0000000000..64f3944a84 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai.d.ts @@ -0,0 +1,103 @@ +import type { ChatCompletionHandler, CreateImageRequest, CreateImageResult, CreateSpeechRequest, CreateSpeechResult, CreateTranscriptionRequest, LanguageModel, ListModelsFunction } from "./chat.js"; +import type { EmbeddingResult } from "./chattypes.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import type { LanguageModelConfiguration } from "./server/messages.js"; +import type { RetryOptions, TranscriptionResult } from "./types.js"; +export declare const OpenAIChatCompletion: ChatCompletionHandler; +export declare const OpenAIListModels: ListModelsFunction; +/** + * Transcribes an audio file using the specified language model configuration. + * Can also perform translation if requested. + * + * @param req - Contains the transcription or translation details including: + * - `file`: The audio file to be transcribed. + * - `model`: The model to be used for transcription or translation. + * - `translate`: Optional, specifies if the operation is a translation. + * - `temperature`: Optional, adjusts the creativity of the transcription (if supported). + * - `language`: Optional, specifies the language of the audio. + * @param cfg - Language model configuration, includes: + * - `base`: The base API URL for the model. + * - `provider`: The identifier of the model provider. + * - `model`: The specific model to use for transcription. + * @param options - Options affecting the behavior of the function, including: + * - `trace`: Trace logging object for debugging and monitoring. + * - `cancellationToken`: Optional, allows cancellation of the operation. + * @returns A promise that resolves to a transcription result, including: + * - `text`: The transcribed text, or undefined if an error occurs. + * - `error`: Details of any error encountered. + */ +export declare function OpenAITranscribe(req: CreateTranscriptionRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions): Promise; +/** + * Generates speech audio from provided text input using the specified configuration and options. + * + * @param req - The request payload containing details for generating speech, including: + * - model: The model to use for generating speech. + * - input: The text input to convert to speech. + * - voice: The voice profile to use for speech synthesis (default is "alloy"). + * - Additional optional parameters for speech customization. + * @param cfg - The configuration for the language model, including: + * - base: Base URL of the API. + * - model: Model identifier. + * - provider: The provider of the model. + * @param options - Supplementary options for the request, such as: + * - trace: Trace object for logging and debugging. + * - cancellationToken: Token to handle cancellation of the operation. + * @returns A promise that resolves to an object containing: + * - audio: The generated speech audio as a Uint8Array, or undefined if an error occurred. + * - error: Information about any error that occurred, or undefined if successful. + */ +export declare function OpenAISpeech(req: CreateSpeechRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions): Promise; +/** + * Generates an image using the specified model and prompt. + * + * @param req - An object containing the image generation request, including: + * - model: The name of the model to use for image generation. + * - prompt: The text prompt to generate the image. + * - size: Optional; dimensions of the image in "widthxheight" format or keywords like "portrait", "landscape", "square", or "auto". Defaults to "1024x1024". + * - quality: Optional; image quality setting ("auto", "high", "hd"). + * - style: Optional; style attributes for image generation. + * - Additional parameters required for the request. + * @param cfg - The configuration for the language model, including: + * - base: Base URL of the API endpoint. + * - provider: The provider of the model (e.g., Azure, OpenAI). + * - type: The API type being used (e.g., azure, openai). + * - model: The model identifier, if required by the provider. + * - version: Optional; API version for Azure OpenAI. + * @param options - Additional options including: + * - trace: Optional; tracing information for debugging/logging. + * - cancellationToken: Optional; token to handle request cancellation. + * @returns - A result containing either the generated image as a Uint8Array, the revised prompt, usage information, or an error message. + */ +export declare function OpenAIImageGeneration(req: CreateImageRequest, cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions): Promise; +/** + * Executes an embedding request using the specified language model configuration. + * + * @param input - The text input to generate embeddings for. + * @param cfg - Configuration for the language model, including base URL, provider, type, and model details. + * @param options - Optional parameters including trace for debugging and cancellationToken for request cancellation. + * @returns An EmbeddingResult object containing the embeddings or error details if the operation fails. + * + * This function determines the proper API route based on the model provider type. It constructs a POST request to retrieve embeddings + * for the given input. Handles response parsing, error checking, and supports cancellation. + */ +export declare function OpenAIEmbedder(input: string | string[], cfg: LanguageModelConfiguration, options: TraceOptions & CancellationOptions & RetryOptions): Promise; +/** + * Creates a language model configuration compatible with OpenAI-like APIs. + * + * @param providerId - Identifier of the model provider. + * @param options - Optional configuration object. + * @param options.listModels - Enables listing of available models if true. + * @param options.transcribe - Enables transcription capabilities if true. + * @param options.speech - Enables speech synthesis capabilities if true. + * @param options.imageGeneration - Enables image generation capabilities if true. + * + * @returns A frozen object defining the language model with specified capabilities. + */ +export declare function LocalOpenAICompatibleModel(providerId: string, options: { + listModels?: boolean; + transcribe?: boolean; + speech?: boolean; + imageGeneration?: boolean; +}): Readonly; +//# sourceMappingURL=openai.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai.d.ts.map b/packages/core/.tshy-build/browser/openai.d.ts.map new file mode 100644 index 0000000000..edbd024eab --- /dev/null +++ b/packages/core/.tshy-build/browser/openai.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAOvE,OAAO,KAAK,EAAqB,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQvF,eAAO,MAAM,oBAAoB,EAAE,qBAMlC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,kBA0C9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,0BAA0B,EAC/B,GAAG,EAAE,0BAA0B,EAC/B,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAAG,YAAY,GACzD,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,0BAA0B,EAC/B,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAAG,YAAY,GACzD,OAAO,CAAC,kBAAkB,CAAC,CAqC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,0BAA0B,EAC/B,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAAG,YAAY,GACzD,OAAO,CAAC,iBAAiB,CAAC,CAmO5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,GAAG,EAAE,0BAA0B,EAC/B,OAAO,EAAE,YAAY,GAAG,mBAAmB,GAAG,YAAY,GACzD,OAAO,CAAC,eAAe,CAAC,CA6D1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,2BAaF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai.js b/packages/core/.tshy-build/browser/openai.js new file mode 100644 index 0000000000..42fdf166aa --- /dev/null +++ b/packages/core/.tshy-build/browser/openai.js @@ -0,0 +1,495 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { ellipse, logError, logInfo, logVerbose } from "./util.js"; +import { AZURE_OPENAI_API_VERSION, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_AZURE_SERVERLESS_MODELS, MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI, } from "./constants.js"; +import { errorMessage, isCancelError, serializeError } from "./error.js"; +import { createFetch } from "./fetch.js"; +import { checkCancelled } from "./cancellation.js"; +import prettyBytes from "pretty-bytes"; +import { deleteUndefinedValues, trimTrailingSlash } from "./cleaners.js"; +import { fromBase64 } from "./base64.js"; +import { traceFetchPost } from "./fetchtext.js"; +import { genaiscriptDebug } from "./debug.js"; +import { OpenAIv2ResponsesChatCompletion } from "./openai-responses.js"; +import { resolveBufferLike } from "./bufferlike.js"; +import { getConfigHeaders, OpenAIv1ChatCompletion } from "./openai-chatcompletion.js"; +const dbg = genaiscriptDebug("openai"); +const dbgMessages = dbg.extend("msg"); +dbgMessages.enabled = false; +export const OpenAIChatCompletion = async (req, cfg, options, trace) => { + //const { provider } = parseModelIdentifier(req.model); + // const features = providerFeatures(provider); + const useResponsesApi = !!process.env.OPENAI_RESPONSES; // features?.responsesApi; + if (useResponsesApi) + return OpenAIv2ResponsesChatCompletion(req, cfg, options, trace); + else + return OpenAIv1ChatCompletion(req, cfg, options, trace); +}; +export const OpenAIListModels = async (cfg, options) => { + try { + const fetch = await createFetch({ retries: 0, ...(options || {}) }); + let url = trimTrailingSlash(cfg.base) + "/models"; + if (cfg.provider === MODEL_PROVIDER_AZURE_OPENAI) { + url = trimTrailingSlash(cfg.base).replace(/deployments$/, "") + "/models"; + } + const res = await fetch(url, { + method: "GET", + headers: { + ...getConfigHeaders(cfg), + Accept: "application/json", + }, + }); + if (res.status !== 200) + return { + ok: false, + status: res.status, + error: serializeError(await res.json()), + }; + const { data } = (await res.json()); + return { + ok: true, + models: data.map((m) => ({ + id: m.id, + details: `${m.id}, ${m.owned_by}`, + })), + }; + } + catch (e) { + return { ok: false, error: serializeError(e) }; + } +}; +/** + * Transcribes an audio file using the specified language model configuration. + * Can also perform translation if requested. + * + * @param req - Contains the transcription or translation details including: + * - `file`: The audio file to be transcribed. + * - `model`: The model to be used for transcription or translation. + * - `translate`: Optional, specifies if the operation is a translation. + * - `temperature`: Optional, adjusts the creativity of the transcription (if supported). + * - `language`: Optional, specifies the language of the audio. + * @param cfg - Language model configuration, includes: + * - `base`: The base API URL for the model. + * - `provider`: The identifier of the model provider. + * - `model`: The specific model to use for transcription. + * @param options - Options affecting the behavior of the function, including: + * - `trace`: Trace logging object for debugging and monitoring. + * - `cancellationToken`: Optional, allows cancellation of the operation. + * @returns A promise that resolves to a transcription result, including: + * - `text`: The transcribed text, or undefined if an error occurs. + * - `error`: Details of any error encountered. + */ +export async function OpenAITranscribe(req, cfg, options) { + const { trace } = options || {}; + try { + logVerbose(`${cfg.provider}: transcribe ${req.file.type} ${prettyBytes(req.file.size)} with ${cfg.model}`); + const route = req.translate ? "translations" : "transcriptions"; + const url = `${cfg.base}/audio/${route}`; + trace?.itemValue(`url`, `[${url}](${url})`); + trace?.itemValue(`size`, req.file.size); + trace?.itemValue(`mime`, req.file.type); + const body = new FormData(); + body.append("model", req.model); + body.append("response_format", /whisper/.test(req.model) ? "verbose_json" : "json"); + if (req.temperature) + body.append("temperature", req.temperature.toString()); + if (req.language) + body.append("language", req.language); + body.append("file", req.file); + const freq = { + method: "POST", + headers: { + ...getConfigHeaders(cfg), + Accept: "application/json", + }, + body: body, + }; + traceFetchPost(trace, url, freq.headers, freq.body); + // TODO: switch back to cross-fetch in the future + const res = await global.fetch(url, freq); + trace?.itemValue(`status`, `${res.status} ${res.statusText}`); + const j = await res.json(); + if (!res.ok) + return { text: undefined, error: j?.error }; + else + return j; + } + catch (e) { + logError(e); + trace?.error(e); + return { text: undefined, error: serializeError(e) }; + } +} +/** + * Generates speech audio from provided text input using the specified configuration and options. + * + * @param req - The request payload containing details for generating speech, including: + * - model: The model to use for generating speech. + * - input: The text input to convert to speech. + * - voice: The voice profile to use for speech synthesis (default is "alloy"). + * - Additional optional parameters for speech customization. + * @param cfg - The configuration for the language model, including: + * - base: Base URL of the API. + * - model: Model identifier. + * - provider: The provider of the model. + * @param options - Supplementary options for the request, such as: + * - trace: Trace object for logging and debugging. + * - cancellationToken: Token to handle cancellation of the operation. + * @returns A promise that resolves to an object containing: + * - audio: The generated speech audio as a Uint8Array, or undefined if an error occurred. + * - error: Information about any error that occurred, or undefined if successful. + */ +export async function OpenAISpeech(req, cfg, options) { + const { model, input, voice = "alloy", ...rest } = req; + const { trace } = options || {}; + const fetch = await createFetch(options); + try { + logVerbose(`${cfg.provider}: speak with ${cfg.model}`); + const url = `${cfg.base}/audio/speech`; + trace?.itemValue(`url`, `[${url}](${url})`); + const body = { + model, + input, + voice, + ...rest, + }; + const freq = { + method: "POST", + headers: { + ...getConfigHeaders(cfg), + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }; + traceFetchPost(trace, url, freq.headers, body); + // TODO: switch back to cross-fetch in the future + const res = await fetch(url, freq); + trace?.itemValue(`status`, `${res.status} ${res.statusText}`); + if (!res.ok) + return { audio: undefined, error: (await res.json())?.error }; + const j = await res.arrayBuffer(); + return { audio: new Uint8Array(j) }; + } + catch (e) { + logError(e); + trace?.error(e); + return { + audio: undefined, + error: serializeError(e), + }; + } +} +/** + * Generates an image using the specified model and prompt. + * + * @param req - An object containing the image generation request, including: + * - model: The name of the model to use for image generation. + * - prompt: The text prompt to generate the image. + * - size: Optional; dimensions of the image in "widthxheight" format or keywords like "portrait", "landscape", "square", or "auto". Defaults to "1024x1024". + * - quality: Optional; image quality setting ("auto", "high", "hd"). + * - style: Optional; style attributes for image generation. + * - Additional parameters required for the request. + * @param cfg - The configuration for the language model, including: + * - base: Base URL of the API endpoint. + * - provider: The provider of the model (e.g., Azure, OpenAI). + * - type: The API type being used (e.g., azure, openai). + * - model: The model identifier, if required by the provider. + * - version: Optional; API version for Azure OpenAI. + * @param options - Additional options including: + * - trace: Optional; tracing information for debugging/logging. + * - cancellationToken: Optional; token to handle request cancellation. + * @returns - A result containing either the generated image as a Uint8Array, the revised prompt, usage information, or an error message. + */ +export async function OpenAIImageGeneration(req, cfg, options) { + const { model, prompt, size = "1024x1024", quality, style, outputFormat, mode = "generate", image, mask, ...rest } = req; + const { trace } = options || {}; + // Determine the API endpoint based on mode + let endpoint = "generations"; + if (mode === "edit") { + endpoint = "edits"; + if (!image) { + return { + image: undefined, + error: serializeError(new Error("Image is required for edit mode")), + }; + } + } + let url = `${cfg.base}/images/${endpoint}`; + const isDallE = /^dall-e/i.test(model); + const isDallE2 = /^dall-e-2/i.test(model); + const isDallE3 = /^dall-e-3/i.test(model); + const isGpt = /^gpt-image/i.test(model); + // For edit mode, we need to use multipart form data + const isMultipart = mode === "edit"; + // Process parameters common to all modes + const processedParams = { + size: size, + quality: quality, + style: style, + outputFormat: outputFormat, + }; + // Transform size parameter based on model + if (processedParams.size && processedParams.size !== "auto") { + if (isDallE3) { + if (processedParams.size === "portrait") + processedParams.size = "1024x1792"; + else if (processedParams.size === "landscape") + processedParams.size = "1792x1024"; + else if (processedParams.size === "square") + processedParams.size = "1024x1024"; + } + else if (isDallE2) { + if (processedParams.size === "portrait" || + processedParams.size === "landscape" || + processedParams.size === "square") + processedParams.size = "1024x1024"; + } + else if (isGpt) { + if (processedParams.size === "portrait") + processedParams.size = "1024x1536"; + else if (processedParams.size === "landscape") + processedParams.size = "1536x1024"; + else if (processedParams.size === "square") + processedParams.size = "1024x1024"; + } + } + // Transform quality parameter based on model + if (processedParams.quality && processedParams.quality !== "auto") { + if (isDallE3 && processedParams.quality === "high") { + processedParams.quality = "hd"; + } + else if (isGpt && processedParams.quality === "hd") { + processedParams.quality = "high"; + } + } + // Filter out parameters that shouldn't be included for certain models + const shouldIncludeQuality = processedParams.quality && processedParams.quality !== "auto" && !isDallE2; + const shouldIncludeStyle = processedParams.style && isDallE3; + const shouldIncludeOutputFormat = processedParams.outputFormat && isGpt; + const shouldIncludeSize = processedParams.size && processedParams.size !== "auto"; + let body; + let headers = { + ...getConfigHeaders(cfg), + }; + if (isMultipart) { + // Use FormData for image uploads + body = new FormData(); + // Add the image file + const imageBuffer = await resolveBufferLike(image); + if (!imageBuffer) { + return { + image: undefined, + error: serializeError(new Error("Failed to resolve image buffer")), + }; + } + body.append("image", new Blob([imageBuffer], { type: "image/png" }), "image.png"); + // Add mask if provided (only for edit mode) + if (mode === "edit" && mask) { + const maskBuffer = await resolveBufferLike(mask); + if (maskBuffer) { + body.append("mask", new Blob([maskBuffer], { type: "image/png" }), "mask.png"); + } + } + // Add model + body.append("model", model); + // Add prompt (required for edit mode) + if (mode === "edit") { + body.append("prompt", prompt); + } + // Add processed parameters + if (shouldIncludeSize) { + body.append("size", processedParams.size); + } + if (shouldIncludeQuality) { + body.append("quality", processedParams.quality); + } + if (shouldIncludeStyle) { + body.append("style", processedParams.style); + } + if (shouldIncludeOutputFormat) { + body.append("output_format", processedParams.outputFormat); + } + // Always request b64_json for response format + body.append("response_format", "b64_json"); + // Don't set Content-Type header for FormData, let the browser set it with boundary + delete headers["Content-Type"]; + } + else { + // JSON body for generation mode + body = { + model, + prompt, + ...rest, + }; + // Add processed parameters + if (shouldIncludeSize) { + body.size = processedParams.size; + } + if (shouldIncludeQuality) { + body.quality = processedParams.quality; + } + if (shouldIncludeStyle) { + body.style = processedParams.style; + } + if (shouldIncludeOutputFormat) { + body.output_format = processedParams.outputFormat; + } + if (isDallE) { + body.response_format = "b64_json"; + } + headers["Content-Type"] = "application/json"; + body = JSON.stringify(body); + } + dbg("%o", { + mode, + endpoint, + quality: isMultipart ? "multipart" : body.quality, + style: isMultipart ? "multipart" : body.style, + response_format: isMultipart ? "b64_json" : body.response_format, + size: isMultipart ? "multipart" : body.size, + }); + if (cfg.type === "azure") { + const version = cfg.version || AZURE_OPENAI_API_VERSION; + trace?.itemValue(`version`, version); + url = trimTrailingSlash(cfg.base) + "/" + model + `/images/${endpoint}?api-version=${version}`; + } + const fetch = await createFetch(options); + try { + logInfo(`${mode} image with ${cfg.provider}:${cfg.model} (this may take a while)`); + const freq = { + method: "POST", + headers, + body, + }; + trace?.itemValue(`url`, `[${url}](${url})`); + if (!isMultipart) { + traceFetchPost(trace, url, freq.headers, JSON.parse(body)); + } + const res = await fetch(url, freq); + dbg(`response: %d %s`, res.status, res.statusText); + trace?.itemValue(`status`, `${res.status} ${res.statusText}`); + if (!res.ok) + return { + image: undefined, + error: (await res.json())?.error || res.statusText, + }; + const j = await res.json(); + dbg(`%O`, j); + const revisedPrompt = j.data[0]?.revised_prompt; + if (revisedPrompt) + trace?.details(`📷 revised prompt`, j.data[0].revised_prompt); + const usage = j.usage; + const buffer = fromBase64(j.data[0].b64_json); + return { + image: new Uint8Array(buffer), + revisedPrompt, + usage, + }; + } + catch (e) { + logError(e); + trace?.error(e); + return { + image: undefined, + error: serializeError(e), + }; + } +} +/** + * Executes an embedding request using the specified language model configuration. + * + * @param input - The text input to generate embeddings for. + * @param cfg - Configuration for the language model, including base URL, provider, type, and model details. + * @param options - Optional parameters including trace for debugging and cancellationToken for request cancellation. + * @returns An EmbeddingResult object containing the embeddings or error details if the operation fails. + * + * This function determines the proper API route based on the model provider type. It constructs a POST request to retrieve embeddings + * for the given input. Handles response parsing, error checking, and supports cancellation. + */ +export async function OpenAIEmbedder(input, cfg, options) { + const { trace, cancellationToken } = options || {}; + const { base, provider, type, model } = cfg; + if (input === undefined) + throw new Error("input is required for embedding"); + try { + const route = "embeddings"; + let url; + const body = { input, model: cfg.model }; + // Determine the URL based on provider type + if (provider === MODEL_PROVIDER_AZURE_OPENAI || + provider === MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI || + type === "azure" || + type === "azure_serverless") { + url = `${trimTrailingSlash(base)}/${model}/embeddings?api-version=${AZURE_OPENAI_API_VERSION}`; + delete body.model; + } + else if (provider === MODEL_PROVIDER_AZURE_SERVERLESS_MODELS) { + url = base.replace(/^https?:\/\/([^/]+)\/?/, body.model); + delete body.model; + } + else { + url = `${base}/${route}`; + } + trace?.itemValue(`url`, `[${url}](${url})`); + const freq = { + method: "POST", + headers: { + ...getConfigHeaders(cfg), + "Content-Type": "application/json", + Accept: "application/json", + }, + body: JSON.stringify(body), + }; + // traceFetchPost(trace, url, freq.headers, body) + const first = typeof input === "string" ? input : input[0]; + logVerbose(`${provider}: embedding ${ellipse(first, 44)} with ${model}`); + const fetch = await createFetch(options); + checkCancelled(cancellationToken); + const res = await fetch(url, freq); + trace?.itemValue(`response`, `${res.status} ${res.statusText}`); + if (res.status === 429) + return { error: "rate limited", status: "rate_limited" }; + else if (res.status < 300) { + const data = (await res.json()); + return { + status: "success", + data: data.data.sort((a, b) => a.index - b.index).map((d) => d.embedding), + model: data.model, + }; + } + else { + return { error: res.statusText, status: "error" }; + } + } + catch (e) { + if (isCancelError(e)) + return { status: "cancelled" }; + logError(e); + trace?.error(e); + return { status: "error", error: errorMessage(e) }; + } +} +/** + * Creates a language model configuration compatible with OpenAI-like APIs. + * + * @param providerId - Identifier of the model provider. + * @param options - Optional configuration object. + * @param options.listModels - Enables listing of available models if true. + * @param options.transcribe - Enables transcription capabilities if true. + * @param options.speech - Enables speech synthesis capabilities if true. + * @param options.imageGeneration - Enables image generation capabilities if true. + * + * @returns A frozen object defining the language model with specified capabilities. + */ +export function LocalOpenAICompatibleModel(providerId, options) { + return Object.freeze(deleteUndefinedValues({ + completer: OpenAIChatCompletion, + id: providerId, + listModels: options?.listModels ? OpenAIListModels : undefined, + transcriber: options?.transcribe ? OpenAITranscribe : undefined, + speaker: options?.speech ? OpenAISpeech : undefined, + imageGenerator: options?.imageGeneration ? OpenAIImageGeneration : undefined, + embedder: OpenAIEmbedder, + })); +} +//# sourceMappingURL=openai.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/openai.js.map b/packages/core/.tshy-build/browser/openai.js.map new file mode 100644 index 0000000000..44f23654b4 --- /dev/null +++ b/packages/core/.tshy-build/browser/openai.js.map @@ -0,0 +1 @@ +{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/packagemanagers.d.ts b/packages/core/.tshy-build/browser/packagemanagers.d.ts new file mode 100644 index 0000000000..99cbb9fd57 --- /dev/null +++ b/packages/core/.tshy-build/browser/packagemanagers.d.ts @@ -0,0 +1,17 @@ +/** + * Resolves the install command for the detected package manager in a given directory. + * + * @param cwd - The current working directory where the package manager should be detected. + * @returns The resolved command and arguments for a "frozen" install mode, or undefined if no package manager is detected. + */ +export declare function packageResolveInstall(cwd: string): Promise<{ + command: string; + args: string[]; +}>; +export declare function packageResolveExecute(cwd: string, args: string[], options?: { + agent?: "npm" | "yarn" | "pnpm" | "auto"; +}): Promise<{ + command: string; + args: string[]; +}>; +//# sourceMappingURL=packagemanagers.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/packagemanagers.d.ts.map b/packages/core/.tshy-build/browser/packagemanagers.d.ts.map new file mode 100644 index 0000000000..82a138bd35 --- /dev/null +++ b/packages/core/.tshy-build/browser/packagemanagers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"packagemanagers.d.ts","sourceRoot":"","sources":["../../src/packagemanagers.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM;;;GAMtD;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1C,GACA,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC,CA0BD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/packagemanagers.js b/packages/core/.tshy-build/browser/packagemanagers.js new file mode 100644 index 0000000000..1bd355c594 --- /dev/null +++ b/packages/core/.tshy-build/browser/packagemanagers.js @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveCommand, detect } from "package-manager-detector"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("pkg"); +/** + * Resolves the install command for the detected package manager in a given directory. + * + * @param cwd - The current working directory where the package manager should be detected. + * @returns The resolved command and arguments for a "frozen" install mode, or undefined if no package manager is detected. + */ +export async function packageResolveInstall(cwd) { + const pm = await detect({ cwd }); + if (!pm) + return undefined; + const { command, args } = resolveCommand(pm.agent, "frozen", []); + return { command, args }; +} +export async function packageResolveExecute(cwd, args, options) { + dbg(`resolving`); + args = args.filter((a) => a !== undefined); + let agent = options?.agent === "auto" ? undefined : options?.agent; + if (!agent) { + const pm = await detect({ cwd }); + if (pm && + (pm.agent === "npm" || + pm.agent === "pnpm" || + pm.agent === "pnpm@6" || + pm.agent === "yarn" || + pm.agent === "yarn@berry")) + agent = pm.agent; + } + agent = agent || "npm"; + dbg(`agent: %s`, agent); + if (agent === "npm") + args.unshift("--yes"); + const resolved = resolveCommand(agent, "execute", args.filter((a) => a !== undefined)); + dbg(`resolved: %o`, resolved); + return resolved; +} +//# sourceMappingURL=packagemanagers.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/packagemanagers.js.map b/packages/core/.tshy-build/browser/packagemanagers.js.map new file mode 100644 index 0000000000..627017c79d --- /dev/null +++ b/packages/core/.tshy-build/browser/packagemanagers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"packagemanagers.js","sourceRoot":"","sources":["../../src/packagemanagers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,IAAc,EACd,OAEC;IAKD,GAAG,CAAC,WAAW,CAAC,CAAC;IACjB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAU,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjC,IACE,EAAE;YACF,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK;gBACjB,EAAE,CAAC,KAAK,KAAK,MAAM;gBACnB,EAAE,CAAC,KAAK,KAAK,QAAQ;gBACrB,EAAE,CAAC,KAAK,KAAK,MAAM;gBACnB,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC;YAE5B,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;IACvB,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,cAAc,CAC7B,KAAK,EACL,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACpC,CAAC;IACF,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parameters.d.ts b/packages/core/.tshy-build/browser/parameters.d.ts new file mode 100644 index 0000000000..90e431a62e --- /dev/null +++ b/packages/core/.tshy-build/browser/parameters.d.ts @@ -0,0 +1,22 @@ +import type { JSONSchema, JSONSchemaArray, JSONSchemaBoolean, JSONSchemaNumber, JSONSchemaObject, JSONSchemaString, PromptParametersSchema, PromptParameterType } from "./types.js"; +export interface PromptParametersSchemaConversionOptions { + noDefaults?: boolean; +} +/** + * Converts a given prompt parameter type into its corresponding JSON Schema representation. + * + * @param t - The prompt parameter type or an array containing a single prompt parameter type. + * @param options - Optional conversion options. Contains a flag to skip default values in schema generation. + * @returns A JSON Schema representation of the provided prompt parameter type. Supports string, number, boolean, object, and array types. + * @throws Will throw an error if the input type is not supported. + */ +export declare function promptParameterTypeToJSONSchema(t: PromptParameterType | [PromptParameterType], options?: PromptParametersSchemaConversionOptions): JSONSchemaNumber | JSONSchemaString | JSONSchemaBoolean | JSONSchemaObject | JSONSchemaArray; +/** + * Converts a PromptParametersSchema or JSONSchema into JSONSchema format. + * + * @param parameters - The parameters schema to be converted. Can be a PromptParametersSchema, a JSONSchema, or undefined. If undefined, returns undefined. + * @param options - Optional conversion options which may include whether to exclude default values. + * @returns A JSONSchema object or undefined if the input parameters are undefined. + */ +export declare function promptParametersSchemaToJSONSchema(parameters: PromptParametersSchema | JSONSchema | undefined, options?: PromptParametersSchemaConversionOptions): JSONSchema | undefined; +//# sourceMappingURL=parameters.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parameters.d.ts.map b/packages/core/.tshy-build/browser/parameters.d.ts.map new file mode 100644 index 0000000000..8b3474a037 --- /dev/null +++ b/packages/core/.tshy-build/browser/parameters.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/parameters.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAepB,MAAM,WAAW,uCAAuC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,mBAAmB,GAAG,CAAC,mBAAmB,CAAC,EAC9C,OAAO,CAAC,EAAE,uCAAuC,GAChD,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,CAwC9F;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,sBAAsB,GAAG,UAAU,GAAG,SAAS,EAC3D,OAAO,CAAC,EAAE,uCAAuC,GAChD,UAAU,GAAG,SAAS,CAiBxB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parameters.js b/packages/core/.tshy-build/browser/parameters.js new file mode 100644 index 0000000000..13c736514a --- /dev/null +++ b/packages/core/.tshy-build/browser/parameters.js @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { deleteUndefinedValues } from "./cleaners.js"; +function isJSONSchema(obj) { + if (typeof obj === "object" && obj.type === "object") + return true; + if (typeof obj === "object" && obj.type === "array") + return true; + return false; +} +function isPromptParameterTypeRequired(t) { + const ta = t; + if (typeof t === "string" && t === "") + return true; + if (typeof t === "number" && isNaN(t)) + return true; + return !!ta?.required; +} +/** + * Converts a given prompt parameter type into its corresponding JSON Schema representation. + * + * @param t - The prompt parameter type or an array containing a single prompt parameter type. + * @param options - Optional conversion options. Contains a flag to skip default values in schema generation. + * @returns A JSON Schema representation of the provided prompt parameter type. Supports string, number, boolean, object, and array types. + * @throws Will throw an error if the input type is not supported. + */ +export function promptParameterTypeToJSONSchema(t, options) { + const { noDefaults } = options || {}; + if (typeof t === "string") + return deleteUndefinedValues({ + type: "string", + default: noDefaults || t === "" ? undefined : t, + }); + else if (typeof t === "number") + return deleteUndefinedValues({ + type: Number.isInteger(t) ? "integer" : "number", + default: noDefaults || isNaN(t) ? undefined : t, + }); + else if (typeof t === "boolean") + return deleteUndefinedValues({ + type: "boolean", + default: noDefaults ? undefined : t, + }); + else if (Array.isArray(t)) + return { + type: "array", + items: promptParameterTypeToJSONSchema(t[0], options), + }; + else if (typeof t === "object" && + ["number", "integer", "string", "boolean", "object"].includes(t.type)) { + const { required, ...rest } = t; + return { ...rest }; + } + else if (typeof t === "object") { + const o = { + type: "object", + properties: Object.fromEntries(Object.entries(t).map(([k, v]) => [k, promptParameterTypeToJSONSchema(v, options)])), + required: Object.entries(t) + .filter(([, v]) => isPromptParameterTypeRequired(v)) + .map(([k]) => k), + }; + return o; + } + else + throw new Error(`prompt type ${typeof t} not supported`); +} +/** + * Converts a PromptParametersSchema or JSONSchema into JSONSchema format. + * + * @param parameters - The parameters schema to be converted. Can be a PromptParametersSchema, a JSONSchema, or undefined. If undefined, returns undefined. + * @param options - Optional conversion options which may include whether to exclude default values. + * @returns A JSONSchema object or undefined if the input parameters are undefined. + */ +export function promptParametersSchemaToJSONSchema(parameters, options) { + if (!parameters) + return undefined; + if (isJSONSchema(parameters)) + return parameters; + const res = { + type: "object", + properties: {}, + required: [], + }; + for (const [k, v] of Object.entries(parameters)) { + const t = promptParameterTypeToJSONSchema(v, options); + const required = isPromptParameterTypeRequired(v); + res.properties[k] = t; + if (t.type !== "object" && t.type !== "array" && required) + res.required.push(k); + } + return res; +} +//# sourceMappingURL=parameters.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parameters.js.map b/packages/core/.tshy-build/browser/parameters.js.map new file mode 100644 index 0000000000..8c80a9f6b7 --- /dev/null +++ b/packages/core/.tshy-build/browser/parameters.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/parameters.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parser.d.ts b/packages/core/.tshy-build/browser/parser.d.ts new file mode 100644 index 0000000000..d5e53ee424 --- /dev/null +++ b/packages/core/.tshy-build/browser/parser.d.ts @@ -0,0 +1,23 @@ +import type { Project } from "./server/messages.js"; +import type { CharPosition } from "./types.js"; +/** + * Converts a string to a character position represented as [row, column]. + * Uses newline characters to calculate the row (number of newlines) and column (characters after the last newline). + * If the string is empty, returns [0, 0]. + * @param str - The input string to convert. + * @returns The position as [row, column]. + */ +export declare function stringToPos(str: string): CharPosition; +/** + * Parses a project based on the provided script files. + * Initializes a project, reads system and user scripts, and updates with parsed templates. + * Filters invalid or duplicate scripts and sorts templates. + * Computes resolved systems and input schemas for non-system scripts. + * @param options - Contains an array of script file paths to process. + * @returns Project - The project with processed templates and diagnostics. + */ +export declare function parseProject(options: { + installDir: string; + scriptFiles: string[]; +}): Promise; +//# sourceMappingURL=parser.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parser.d.ts.map b/packages/core/.tshy-build/browser/parser.d.ts.map new file mode 100644 index 0000000000..5a104a2f15 --- /dev/null +++ b/packages/core/.tshy-build/browser/parser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOpD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAI7D;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAGrD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,oBA+DxF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parser.js b/packages/core/.tshy-build/browser/parser.js new file mode 100644 index 0000000000..926107d1ed --- /dev/null +++ b/packages/core/.tshy-build/browser/parser.js @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { logVerbose, logWarn, strcmp } from "./util.js"; // String comparison function +import { parsePromptScript } from "./template.js"; // Function to parse scripts +import { readText } from "./fs.js"; // Function to read text from a file +import { GENAI_ANYTS_REGEX } from "./constants.js"; // Constants for MIME types and prefixes +import { resolveSystems } from "./systems.js"; +import { resolveScriptParametersSchema } from "./vars.js"; +import { dirname, join, resolve } from "node:path"; +import { readdir } from "node:fs/promises"; +import { uniq } from "es-toolkit"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("parser"); +/** + * Converts a string to a character position represented as [row, column]. + * Uses newline characters to calculate the row (number of newlines) and column (characters after the last newline). + * If the string is empty, returns [0, 0]. + * @param str - The input string to convert. + * @returns The position as [row, column]. + */ +export function stringToPos(str) { + if (!str) + return [0, 0]; // Return default position if string is empty + return [str.replace(/[^\n]/g, "").length, str.replace(/[^]*\n/, "").length]; +} +/** + * Parses a project based on the provided script files. + * Initializes a project, reads system and user scripts, and updates with parsed templates. + * Filters invalid or duplicate scripts and sorts templates. + * Computes resolved systems and input schemas for non-system scripts. + * @param options - Contains an array of script file paths to process. + * @returns Project - The project with processed templates and diagnostics. + */ +export async function parseProject(options) { + const { installDir, scriptFiles } = options; + const genaisrcDir = resolve(installDir, "genaisrc"); // ignore esbuild warning + dbg(`genaisrc: %s`, genaisrcDir); + const prj = { + systemDir: genaisrcDir, + scripts: [], + diagnostics: [], + }; + const systemPrompts = await (await readdir(genaisrcDir)).filter((f) => GENAI_ANYTS_REGEX.test(f)); + dbg(`system prompts: %d`, systemPrompts.length); + // Process each script file, parsing its content and updating the project + const scripts = {}; + for (const fn of systemPrompts) { + const f = join(genaisrcDir, fn); + const tmpl = await parsePromptScript(f, await readText(f)); + if (!tmpl) { + logWarn(`skipping invalid system script: ${fn}`); + continue; + } // Skip if no template is parsed + prj.scripts.push(tmpl); // Add to project templates + scripts[tmpl.id] = tmpl; + } + dbg(`user scripts: %d`, scriptFiles.length); + for (const f of uniq(scriptFiles).filter((f) => resolve(dirname(f)) !== genaisrcDir)) { + const tmpl = await parsePromptScript(f, await readText(f)); + if (!tmpl) { + logWarn(`skipping invalid script ${f}`); + continue; + } // Skip if no template is parsed + if (scripts[tmpl.id]) { + logWarn(`duplicate script '${tmpl.id}' (${f})`); + logVerbose(` already defined in ${scripts[tmpl.id].filename}`); + continue; + } + prj.scripts.push(tmpl); // Add t + scripts[tmpl.id] = tmpl; + } + /** + * Generates a sorting key for a PromptScript + * Determines priority based on whether a script is unlisted or has a filename. + * @param t - The PromptScript to generate the key for. + * @returns string - The sorting key. + */ + function templKey(t) { + const pref = t.unlisted ? "Z" : t.filename ? "A" : "B"; // Determine prefix for sorting + return pref + t.title + t.id; // Concatenate for final sorting key + } + // Sort templates by the generated key + prj.scripts.sort((a, b) => strcmp(templKey(a), templKey(b))); + // compute systems + prj.scripts + .filter((s) => !s.isSystem) + .forEach((s) => { + s.resolvedSystem = resolveSystems(prj, s); + s.inputSchema = resolveScriptParametersSchema(prj, s); + }); + return prj; // Return the fully parsed project +} +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parser.js.map b/packages/core/.tshy-build/browser/parser.js.map new file mode 100644 index 0000000000..0433621608 --- /dev/null +++ b/packages/core/.tshy-build/browser/parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parsers.d.ts b/packages/core/.tshy-build/browser/parsers.d.ts new file mode 100644 index 0000000000..4fe2cc9256 --- /dev/null +++ b/packages/core/.tshy-build/browser/parsers.d.ts @@ -0,0 +1,46 @@ +import type { Parsers } from "./types.js"; +/** + * Asynchronously creates a set of parsers for handling various file formats, data operations, + * and transformations. + * + * @param options - Configuration options for parser creation. + * - model: Specifies the language model to use for token encoding. + * - trace: Optional tracing options for logging or debugging. + * - cancellationToken: Optional cancellation token to abort operations. + * + * @returns An object containing various parser methods: + * - JSON5: Parses JSON5 content with an optional default value. + * - JSONLLM: Parses JSON extracted for LLM-specific workflows. + * - JSONL: Parses JSONL (JSON Lines) content. + * - YAML: Parses YAML content with an optional default value. + * - XML: Parses XML content with an optional default value and additional options. + * - TOML: Parses TOML content. + * - frontmatter: Extracts frontmatter content from text. + * - CSV: Parses CSV content with optional parsing options. + * - XLSX: Parses Excel files asynchronously with optional parsing options. + * - dotEnv: Parses .env files. + * - INI: Parses INI configuration content with an optional default value. + * - transcription: Parses VTT/SRT transcription files. + * - unzip: Extracts contents of a ZIP file asynchronously. + * - tokens: Estimates token usage for provided content using specified encoders. + * - fences: Extracts fenced code blocks from content. + * - annotations: Parses annotated text data. + * - HTMLToText: Converts HTML content to plain text with optional configurations. + * - HTMLToMarkdown: Converts HTML content to Markdown with optional configurations. + * - DOCX: Parses DOCX files asynchronously. + * - PDF: Parses PDF files asynchronously, extracting pages, images, and file content. + * - math: Evaluates mathematical expressions with a given scope. + * - validateJSON: Validates JSON content against a schema. + * - mustache: Renders Mustache templates with provided arguments. + * - jinja: Renders Jinja templates with provided data. + * - diff: Computes a diff between two inputs and formats it. + * - tidyData: Cleans and processes data rows with optional configurations. + * - hash: Computes cryptographic hashes for the given input. + * - unfence: Removes fencing around content. + * - GROQ: Evaluates GROQ (Graph-Relational Object Queries). + * - unthink: Performs a reverse-thinking operation on data. + * - dedent: Dedents indented text content. + * - encodeIDs: Encodes identifiers for use in various operations. + */ +export declare function createParsers(): Parsers; +//# sourceMappingURL=parsers.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parsers.d.ts.map b/packages/core/.tshy-build/browser/parsers.d.ts.map new file mode 100644 index 0000000000..817bf26971 --- /dev/null +++ b/packages/core/.tshy-build/browser/parsers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA0FvC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parsers.js b/packages/core/.tshy-build/browser/parsers.js new file mode 100644 index 0000000000..fe364894fb --- /dev/null +++ b/packages/core/.tshy-build/browser/parsers.js @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CSVTryParse } from "./csv.js"; +import { filenameOrFileToContent, filenameOrFileToFilename, unfence } from "./unwrappers.js"; +import { JSON5TryParse, JSONLLMTryParse } from "./json5.js"; +import { TOMLTryParse } from "./toml.js"; +import { YAMLTryParse } from "./yaml.js"; +import { DOCXTryParse } from "./docx.js"; +import { frontmatterTryParse } from "./frontmatter.js"; +import { extractFenced } from "./fence.js"; +import { parseAnnotations } from "./annotations.js"; +import { dotEnvTryParse } from "./dotenv.js"; +import { INITryParse } from "./ini.js"; +import { XMLTryParse } from "./xml.js"; +import { parsePdf } from "./pdf.js"; +import { HTMLToMarkdown, HTMLToText } from "./html.js"; +import { MathTryEvaluate } from "./math.js"; +import { tryValidateJSONWithSchema, validateJSONWithSchema } from "./schema.js"; +import { XLSXTryParse } from "./xlsx.js"; +import { resolveRuntimeHost } from "./host.js"; +import { unzip } from "./zip.js"; +import { JSONLTryParse } from "./jsonl.js"; +import { resolveFileContent } from "./file.js"; +import { mustacheRender } from "./mustache.js"; +import { jinjaRender } from "./jinja.js"; +import { llmifyDiff } from "./llmdiff.js"; +import { tidyData } from "./tidy.js"; +import { hash } from "./crypto.js"; +import { GROQEvaluate } from "./groq.js"; +import { unthink } from "./think.js"; +import { dedent } from "./indent.js"; +import { vttSrtParse } from "./transcription.js"; +import { encodeIDs } from "./cleaners.js"; +import { diffCreatePatch } from "./diff.js"; +import { promptyParse } from "./prompty.js"; +import { levenshteinDistance } from "./levenshtein.js"; +import { createIgnorer } from "./gitignore.js"; +/** + * Asynchronously creates a set of parsers for handling various file formats, data operations, + * and transformations. + * + * @param options - Configuration options for parser creation. + * - model: Specifies the language model to use for token encoding. + * - trace: Optional tracing options for logging or debugging. + * - cancellationToken: Optional cancellation token to abort operations. + * + * @returns An object containing various parser methods: + * - JSON5: Parses JSON5 content with an optional default value. + * - JSONLLM: Parses JSON extracted for LLM-specific workflows. + * - JSONL: Parses JSONL (JSON Lines) content. + * - YAML: Parses YAML content with an optional default value. + * - XML: Parses XML content with an optional default value and additional options. + * - TOML: Parses TOML content. + * - frontmatter: Extracts frontmatter content from text. + * - CSV: Parses CSV content with optional parsing options. + * - XLSX: Parses Excel files asynchronously with optional parsing options. + * - dotEnv: Parses .env files. + * - INI: Parses INI configuration content with an optional default value. + * - transcription: Parses VTT/SRT transcription files. + * - unzip: Extracts contents of a ZIP file asynchronously. + * - tokens: Estimates token usage for provided content using specified encoders. + * - fences: Extracts fenced code blocks from content. + * - annotations: Parses annotated text data. + * - HTMLToText: Converts HTML content to plain text with optional configurations. + * - HTMLToMarkdown: Converts HTML content to Markdown with optional configurations. + * - DOCX: Parses DOCX files asynchronously. + * - PDF: Parses PDF files asynchronously, extracting pages, images, and file content. + * - math: Evaluates mathematical expressions with a given scope. + * - validateJSON: Validates JSON content against a schema. + * - mustache: Renders Mustache templates with provided arguments. + * - jinja: Renders Jinja templates with provided data. + * - diff: Computes a diff between two inputs and formats it. + * - tidyData: Cleans and processes data rows with optional configurations. + * - hash: Computes cryptographic hashes for the given input. + * - unfence: Removes fencing around content. + * - GROQ: Evaluates GROQ (Graph-Relational Object Queries). + * - unthink: Performs a reverse-thinking operation on data. + * - dedent: Dedents indented text content. + * - encodeIDs: Encodes identifiers for use in various operations. + */ +export function createParsers() { + return Object.freeze({ + JSON5: (text, options) => tryValidateJSONWithSchema(JSON5TryParse(filenameOrFileToContent(text), options?.defaultValue), options), + JSONLLM: (text) => JSONLLMTryParse(text), + JSONL: (text) => JSONLTryParse(filenameOrFileToContent(text)), + YAML: (text, options) => tryValidateJSONWithSchema(YAMLTryParse(filenameOrFileToContent(text), options?.defaultValue), options), + XML: async (text, options) => { + const { defaultValue, ...rest } = options || {}; + return tryValidateJSONWithSchema(await XMLTryParse(filenameOrFileToContent(text), defaultValue, rest), options); + }, + TOML: (text, options) => tryValidateJSONWithSchema(TOMLTryParse(filenameOrFileToContent(text), options), options), + frontmatter: (text, options) => tryValidateJSONWithSchema(frontmatterTryParse(filenameOrFileToContent(text), options)?.value, options), + CSV: (text, options) => tryValidateJSONWithSchema(CSVTryParse(filenameOrFileToContent(text), options), options), + XLSX: async (file, options) => { + const runtimeHost = resolveRuntimeHost(); + return XLSXTryParse(await runtimeHost.readFile(filenameOrFileToFilename(file)), options); + }, + dotEnv: (text) => dotEnvTryParse(filenameOrFileToContent(text)), + INI: (text, options) => tryValidateJSONWithSchema(INITryParse(filenameOrFileToContent(text), options?.defaultValue), options), + transcription: (text) => vttSrtParse(filenameOrFileToContent(text)), + unzip: async (file, options) => { + const runtimeHost = resolveRuntimeHost(); + return unzip(await runtimeHost.readFile(file.filename), options); + }, + fences: (text) => extractFenced(filenameOrFileToContent(text)), + annotations: (text) => parseAnnotations(filenameOrFileToContent(text)), + HTMLToText: (text, options) => HTMLToText(filenameOrFileToContent(text), options), + HTMLToMarkdown: (text, options) => HTMLToMarkdown(filenameOrFileToContent(text), options), + DOCX: async (file, options) => await DOCXTryParse(file, options), + PDF: async (file, options) => { + if (!file) + return { file: undefined, pages: [], data: [] }; + const filename = typeof file === "string" ? file : file.filename; + const { pages, content } = (await parsePdf(filename, options)) || {}; + return { + file: { + filename, + content, + }, + pages: pages?.map((p) => p.content), + images: pages?.map((p) => p.image), + data: pages, + }; + }, + math: async (expression, scope) => await MathTryEvaluate(expression, { scope }), + validateJSON: (schema, content) => validateJSONWithSchema(content, schema), + mustache: (file, args) => { + const f = filenameOrFileToContent(file); + return mustacheRender(f, args); + }, + jinja: (file, data) => { + const f = filenameOrFileToContent(file); + return jinjaRender(f, data); + }, + diff: (f1, f2) => llmifyDiff(diffCreatePatch(f1, f2)), + tidyData: (rows, options) => tidyData(rows, options), + hash: async (text, options) => await hash(text, options), + unfence: unfence, + GROQ: GROQEvaluate, + unthink: unthink, + dedent: dedent, + encodeIDs: encodeIDs, + prompty: async (file) => { + await resolveFileContent(file); + return promptyParse(file.filename, file.content); + }, + levenshtein: (a, b) => levenshteinDistance(filenameOrFileToContent(a), filenameOrFileToContent(b)), + ignore: async (...files) => createIgnorer(files), + }); +} +//# sourceMappingURL=parsers.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/parsers.js.map b/packages/core/.tshy-build/browser/parsers.js.map new file mode 100644 index 0000000000..ed1656ca7f --- /dev/null +++ b/packages/core/.tshy-build/browser/parsers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/path.d.ts b/packages/core/.tshy-build/browser/path.d.ts new file mode 100644 index 0000000000..a1633fca39 --- /dev/null +++ b/packages/core/.tshy-build/browser/path.d.ts @@ -0,0 +1,8 @@ +import type { Path } from "./types.js"; +/** + * Creates a frozen object that provides various path manipulation functions. + * Includes methods for operations such as getting directory names, extensions, basename, joining paths, normalizing paths, resolving paths, checking if a path is absolute, and changing file extensions. + * @returns A frozen object with methods for path handling. + */ +export declare function createNodePath(): Path; +//# sourceMappingURL=path.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/path.d.ts.map b/packages/core/.tshy-build/browser/path.d.ts.map new file mode 100644 index 0000000000..4ebbb8a0aa --- /dev/null +++ b/packages/core/.tshy-build/browser/path.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAmBrC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/path.js b/packages/core/.tshy-build/browser/path.js new file mode 100644 index 0000000000..f59279fd4e --- /dev/null +++ b/packages/core/.tshy-build/browser/path.js @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { dirname, extname, basename, join, normalize, relative, resolve, isAbsolute, parse, } from "node:path"; +import { changeext } from "./fs.js"; +import { fileURLToPath } from "node:url"; +import { sanitizeFilename } from "./sanitize.js"; +/** + * Creates a frozen object that provides various path manipulation functions. + * Includes methods for operations such as getting directory names, extensions, basename, joining paths, normalizing paths, resolving paths, checking if a path is absolute, and changing file extensions. + * @returns A frozen object with methods for path handling. + */ +export function createNodePath() { + // Return a frozen object containing path manipulation functions. + // These functions are imported from node:path and facilitate + // various operations on file paths. + return Object.freeze({ + parse, + dirname, // Get the directory name of a path + extname, // Get the extension of a path + basename, // Get the basename of a path + join, // Join multiple path segments + normalize, // Normalize a path to remove redundant separators + relative, // Get the relative path between two paths + resolve, // Resolve a sequence of paths to an absolute path + isAbsolute, // Check if a path is absolute + changeext, + resolveFileURL: fileURLToPath, + sanitize: sanitizeFilename, + }); +} +//# sourceMappingURL=path.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/path.js.map b/packages/core/.tshy-build/browser/path.js.map new file mode 100644 index 0000000000..2353a7becc --- /dev/null +++ b/packages/core/.tshy-build/browser/path.js.map @@ -0,0 +1 @@ +{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,iEAAiE;IACjE,6DAA6D;IAC7D,oCAAoC;IAEpC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK;QACL,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,6BAA6B;QACvC,IAAI,EAAE,8BAA8B;QACpC,SAAS,EAAE,kDAAkD;QAC7D,QAAQ,EAAE,0CAA0C;QACpD,OAAO,EAAE,kDAAkD;QAC3D,UAAU,EAAE,8BAA8B;QAC1C,SAAS;QACT,cAAc,EAAE,aAAa;QAC7B,QAAQ,EAAE,gBAAgB;KACZ,CAAC,CAAC;AACpB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pathUtils.d.ts b/packages/core/.tshy-build/browser/pathUtils.d.ts new file mode 100644 index 0000000000..47564774f8 --- /dev/null +++ b/packages/core/.tshy-build/browser/pathUtils.d.ts @@ -0,0 +1,14 @@ +export declare function getModulePaths(metaOrModule: { + url?: string; + filename?: string; +}): { + __filename: string; + __dirname: string; +}; +/** + * Resolves modules in CommonJS and ESM environments. + * @param moduleName + * @returns + */ +export declare function moduleResolve(moduleName: string): string; +//# sourceMappingURL=pathUtils.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pathUtils.d.ts.map b/packages/core/.tshy-build/browser/pathUtils.d.ts.map new file mode 100644 index 0000000000..2b6030ac76 --- /dev/null +++ b/packages/core/.tshy-build/browser/pathUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pathUtils.d.ts","sourceRoot":"","sources":["../../src/pathUtils.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,YAAY,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;EAa/E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQxD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pathUtils.js b/packages/core/.tshy-build/browser/pathUtils.js new file mode 100644 index 0000000000..e07fc41fc3 --- /dev/null +++ b/packages/core/.tshy-build/browser/pathUtils.js @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { createRequire } from "node:module"; +import { fileURLToPath } from "node:url"; +import { dirname } from "node:path"; +export function getModulePaths(metaOrModule) { + if (metaOrModule && "url" in metaOrModule && metaOrModule.url) { + // ESM: pass import.meta + const __filename = fileURLToPath(metaOrModule.url); + const __dirname = dirname(__filename); + return { __filename, __dirname }; + } + else if (metaOrModule && "filename" in metaOrModule && metaOrModule.filename) { + // CJS: pass module + const __filename = metaOrModule.filename; + const __dirname = dirname(__filename); + return { __filename, __dirname }; + } + throw new Error("Invalid module context: pass import.meta (ESM) or module (CJS)"); +} +/** + * Resolves modules in CommonJS and ESM environments. + * @param moduleName + * @returns + */ +export function moduleResolve(moduleName) { + const isoRequire = typeof require !== "undefined" + ? require + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + createRequire(import.meta.url); + return isoRequire.resolve(moduleName); +} +//# sourceMappingURL=pathUtils.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pathUtils.js.map b/packages/core/.tshy-build/browser/pathUtils.js.map new file mode 100644 index 0000000000..892bf58ddf --- /dev/null +++ b/packages/core/.tshy-build/browser/pathUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pathUtils.js","sourceRoot":"","sources":["../../src/pathUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,YAAiD;IAC9E,IAAI,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;QAC9D,wBAAwB;QACxB,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACnC,CAAC;SAAM,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC/E,mBAAmB;QACnB,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,UAAU,GACd,OAAO,OAAO,KAAK,WAAW;QAC5B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,6DAA6D;YAC7D,aAAa;YACb,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pdf.d.ts b/packages/core/.tshy-build/browser/pdf.d.ts new file mode 100644 index 0000000000..a384ca4b7f --- /dev/null +++ b/packages/core/.tshy-build/browser/pdf.d.ts @@ -0,0 +1,15 @@ +import type { TraceOptions } from "./trace.js"; +import { type CancellationOptions } from "./cancellation.js"; +import type { ParsePDFOptions, PDFPage } from "./types.js"; +/** + * Parses a PDF file or buffer and extracts its pages, content, and metadata. + * @param filenameOrBuffer - Path to the PDF file or a buffer containing PDF data. + * @param options - Optional settings for filtering, tracing, caching, rendering, and cancellation. + * @returns A promise resolving to an object with parsed pages, concatenated content, and metadata. Returns empty pages and content if an error occurs. Metadata may be undefined if not present. + */ +export declare function parsePdf(filenameOrBuffer: string | Uint8Array, options?: ParsePDFOptions & TraceOptions & CancellationOptions): Promise<{ + pages: PDFPage[]; + content: string; + metadata?: Record; +}>; +//# sourceMappingURL=pdf.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pdf.d.ts.map b/packages/core/.tshy-build/browser/pdf.d.ts.map new file mode 100644 index 0000000000..6f66c5c383 --- /dev/null +++ b/packages/core/.tshy-build/browser/pdf.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/pdf.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAa/C,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,mBAAmB,CAAC;AAM7E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAA+B,MAAM,YAAY,CAAC;AAoZxF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,gBAAgB,EAAE,MAAM,GAAG,UAAU,EACrC,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAC7D,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,CAAC,CASD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pdf.js b/packages/core/.tshy-build/browser/pdf.js new file mode 100644 index 0000000000..56e8f608e5 --- /dev/null +++ b/packages/core/.tshy-build/browser/pdf.js @@ -0,0 +1,458 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { resolveRuntimeHost } from "./host.js"; +import os from "node:os"; +import { serializeError } from "./error.js"; +import { logVerbose, logWarn } from "./util.js"; +import { INVALID_FILENAME_REGEX, PDF_HASH_LENGTH, PDF_SCALE } from "./constants.js"; +import { resolveGlobal } from "./global.js"; +import { isUint8Array, isUint8ClampedArray } from "util/types"; +import { hash } from "./crypto.js"; +import { join } from "node:path"; +import { readFile, writeFile } from "node:fs/promises"; +import { ensureDir } from "./fs.js"; +import { YAMLStringify } from "./yaml.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { checkCancelled } from "./cancellation.js"; +import { measure } from "./performance.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { genaiscriptDebug } from "./debug.js"; +import { pathToFileURL } from "node:url"; +import { moduleResolve } from "./pathUtils.js"; +const dbg = genaiscriptDebug("pdf"); +let standardFontDataUrl; +/** + * Attempts to import pdfjs and configure worker source + * based on the operating system. + * @param options - Optional tracing options + * @returns A promise resolving to the pdfjs module + */ +async function tryImportPdfjs() { + installPromiseWithResolversShim(); // Ensure Promise.withResolvers is available + const pdfjs = await import("pdfjs-dist/legacy/build/pdf.mjs"); + let workerSrc = moduleResolve("pdfjs-dist/build/pdf.worker.min.mjs"); + dbg(`workerSrc: %s`, workerSrc); + // Adjust worker source path for Windows platform + if (os.platform() === "win32") { + workerSrc = "file://" + workerSrc.replace(/\\/g, "/"); + dbg("detected Windows platform, worker: %s", workerSrc); + } + standardFontDataUrl = pathToFileURL(workerSrc.replace("build/pdf.worker.min.mjs", "standard_fonts/")).toString(); + dbg(`standardFontDataUrl: %s`, standardFontDataUrl); + pdfjs.GlobalWorkerOptions.workerSrc = workerSrc; + return pdfjs; +} +class CanvasFactory { + static createCanvas; + constructor() { } + create(width, height) { + if (width <= 0 || height <= 0) { + dbg("invalid canvas dimensions: width=%d, height=%d", width, height); + throw new Error("Invalid canvas size"); + } + const canvas = this._createCanvas(width, height); + return { + canvas, + context: canvas.getContext("2d"), + }; + } + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + dbg("reset called with missing canvas"); + throw new Error("Canvas is not specified"); + } + if (width <= 0 || height <= 0) { + dbg("reset called with invalid canvas size: width=%d, height=%d", width, height); + throw new Error("Invalid canvas size"); + } + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + dbg("destroy called with missing canvas"); + throw new Error("Canvas is not specified"); + } + // Zeroing the width and height cause Firefox to release graphics + // resources immediately, which can greatly reduce memory consumption. + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + /** + * @ignore + */ + _createCanvas(width, height) { + return CanvasFactory.createCanvas(width, height); + } +} +async function tryImportCanvas() { + if (CanvasFactory.createCanvas) { + return CanvasFactory.createCanvas; + } + try { + dbg(`initializing pdf canvas`); + const canvas = await import("@napi-rs/canvas"); + const createCanvas = (w, h) => canvas.createCanvas(w, h); + const glob = resolveGlobal(); + glob.ImageData ??= canvas.ImageData; + glob.Path2D ??= canvas.Path2D; + glob.Canvas ??= canvas.Canvas; + glob.DOMMatrix ??= canvas.DOMMatrix; + CanvasFactory.createCanvas = createCanvas; + dbg(`pdf canvas initialized`); + return createCanvas; + } + catch (error) { + logWarn("Failed to import canvas"); + logVerbose(error); + return undefined; + } +} +/** + * Installs a shim for Promise.withResolvers if not available. + */ +function installPromiseWithResolversShim() { + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + Promise.withResolvers || + (Promise.withResolvers = function () { + let rs, rj; + const pm = new this((resolve, reject) => { + rs = resolve; + rj = reject; + }); + return { + resolve: rs, + reject: rj, + promise: pm, + }; + }); +} +var ImageKind; +(function (ImageKind) { + ImageKind[ImageKind["GRAYSCALE_1BPP"] = 1] = "GRAYSCALE_1BPP"; + ImageKind[ImageKind["RGB_24BPP"] = 2] = "RGB_24BPP"; + ImageKind[ImageKind["RGBA_32BPP"] = 3] = "RGBA_32BPP"; +})(ImageKind || (ImageKind = {})); +async function computeHashFolder(filename, options) { + const { content, ...rest } = options; + const h = await hash([typeof filename === "string" ? { filename } : filename, content, rest], { + readWorkspaceFiles: true, + version: true, + length: PDF_HASH_LENGTH, + }); + return dotGenaiscriptPath("cache", "pdf", h); +} +/** + * Parses PDF files using pdfjs-dist. + * @param fileOrUrl - The file path or URL of the PDF + * @param content - Optional PDF content as a Uint8Array + * @param options - Options including disableCleanup and tracing + * @returns An object indicating success or failure and the parsed pages + */ +async function PDFTryParse(fileOrUrl, content, options) { + const { cancellationToken, disableCleanup, trace, renderAsImage, scale = PDF_SCALE, cache, useSystemFonts, } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const folder = await computeHashFolder(fileOrUrl, { + content, + ...(options || {}), + }); + const resFilename = join(folder, "res.json"); + const readCache = async () => { + if (cache === false) { + dbg("cache is disabled, skipping cache read"); + return undefined; + } + try { + const res = JSON.parse(await readFile(resFilename, { + encoding: "utf-8", + })); + dbg(`cache hit at ${folder}`); + return res; + } + catch { + return undefined; + } + }; + { + // try cache hit + const cached = await readCache(); + if (cached) { + dbg("cache hit for pdf parsing, returning cached result"); + return cached; + } + } + logVerbose(`pdf: decoding ${fileOrUrl || ""} in ${folder}`); + trace?.itemValue(`pdf: decoding ${fileOrUrl || ""}`, folder); + await ensureDir(folder); + const m = measure("parsers.pdf"); + try { + const createCanvas = await tryImportCanvas(); + const pdfjs = await tryImportPdfjs(); + checkCancelled(cancellationToken); + const { getDocument } = pdfjs; + const data = content || (await runtimeHost.readFile(fileOrUrl)); + // Check if we're running on Windows + const isWindows = os.platform() === "win32"; + const loader = await getDocument({ + data, + useSystemFonts: useSystemFonts ?? !isWindows, + disableFontFace: true, + standardFontDataUrl, + CanvasFactory: createCanvas ? CanvasFactory : undefined, + }); + const doc = await loader.promise; + const pdfMetadata = await doc.getMetadata(); + const metadata = pdfMetadata + ? deleteUndefinedValues({ + info: deleteUndefinedValues({ + ...(pdfMetadata.info || {}), + }), + }) + : undefined; + const numPages = doc.numPages; + const pages = []; + // Iterate through each page and extract text content + for (let i = 0; i < numPages; i++) { + checkCancelled(cancellationToken); + const page = await doc.getPage(1 + i); // 1-indexed + const content = await page.getTextContent(); + const items = content.items.filter((item) => "str" in item); + let { lines } = parsePageItems(items); + // Optionally clean up trailing spaces + if (!disableCleanup) { + dbg("trailing whitespace cleanup enabled for page lines"); + lines = lines.map((line) => line.replace(/[\t ]+$/g, "")); + } + // Collapse trailing spaces + const p = { + index: i + 1, + content: lines.join("\n"), + }; + await writeFile(join(folder, `page_${p.index}.txt`), p.content); + pages.push(p); + if (createCanvas && renderAsImage) { + dbg("rendering page %d as PNG image", i + 1); + const viewport = page.getViewport({ scale }); + const canvas = await createCanvas(viewport.width, viewport.height); + const canvasContext = canvas.getContext("2d"); + const render = page.render({ + canvasContext: canvasContext, + viewport, + }); + await render.promise; + const buffer = canvas.toBuffer("image/png"); + p.image = join(folder, `page_${i + 1}.png`); + dbg(`writing page image %d to %s`, i + 1, p.image); + await writeFile(p.image, buffer); + } + const opList = await page.getOperatorList(); + const figures = []; + for (let j = 0; j < opList.fnArray.length; j++) { + const fn = opList.fnArray[j]; + const args = opList.argsArray[j]; + if (fn === pdfjs.OPS.paintImageXObject && args) { + dbg("found image XObject in operator list at index %d", j); + const imageObj = args[0]; + if (imageObj) { + checkCancelled(cancellationToken); + const img = await new Promise((resolve) => { + if (page.commonObjs.has(imageObj)) { + resolve(page.commonObjs.get(imageObj)); + } + else if (page.objs.has(imageObj)) { + page.objs.get(imageObj, (r) => { + resolve(r); + }); + } + else { + resolve(undefined); + } + }); + if (!img) { + continue; + } + const fig = await decodeImage(p.index, img, createCanvas, imageObj, folder); + if (fig) { + figures.push(fig); + } + } + } + } + p.figures = figures; + logVerbose(`pdf: extracted ${fileOrUrl || ""} page ${i + 1} / ${numPages}, ${p.figures.length ? `${p.figures.length} figures` : ""}`); + } + const res = deleteUndefinedValues({ + metadata, + pages, + content: PDFPagesToString(pages), + }); + await writeFile(join(folder, "content.txt"), res.content); + await writeFile(resFilename, JSON.stringify(res)); + return res; + } + catch (error) { + logVerbose(error); + { + // try cache hit + const cached = await readCache(); + if (cached) { + return cached; + } + } + trace?.error(`reading pdf`, error); // Log error if tracing is enabled + await ensureDir(folder); + await writeFile(join(folder, "error.txt"), YAMLStringify(serializeError(error))); + return { error: serializeError(error) }; + } + finally { + m(); + } + async function decodeImage(pageIndex, img, createCanvas, imageObj, folder) { + if (!isUint8ClampedArray(img?.data) && !isUint8Array(img?.data)) { + dbg("cannot decode—image data is not of type Uint8Array or Uint8ClampedArray"); + return undefined; + } + const { width, height, data: _data, kind } = img; + const imageData = new ImageData(width, height); + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const dstIdx = (y * width + x) * 4; + imageData.data[dstIdx + 3] = 255; // A + if (kind === ImageKind.GRAYSCALE_1BPP) { + const srcIdx = y * width + x; + imageData.data[dstIdx + 0] = _data[srcIdx]; // B + imageData.data[dstIdx + 1] = _data[srcIdx]; // G + imageData.data[dstIdx + 2] = _data[srcIdx]; // R + } + else { + const srcIdx = (y * width + x) * (kind === ImageKind.RGBA_32BPP ? 4 : 3); + imageData.data[dstIdx + 0] = _data[srcIdx]; // B + imageData.data[dstIdx + 1] = _data[srcIdx + 1]; // G + imageData.data[dstIdx + 2] = _data[srcIdx + 2]; // R + } + } + } + const canvas = await createCanvas(width, height); + const ctx = canvas.getContext("2d"); + ctx.putImageData(imageData, 0, 0); + const buffer = canvas.toBuffer("image/png"); + const fn = join(folder, `page-${pageIndex}-${imageObj.replace(INVALID_FILENAME_REGEX, "")}.png`); + dbg(`writing image to %s`, fn); + await writeFile(fn, buffer); + return { + id: imageObj, + width, + height, + type: "image/png", + size: buffer.length, + filename: fn, + }; + } +} +/** + * Joins pages into a single string with page breaks. + * @param pages - Array of page content strings + * @returns A single string representing the entire document + */ +function PDFPagesToString(pages) { + return pages?.map((p) => `-------- Page ${p.index} --------\n\n${p.content}`).join("\n\n"); +} +/** + * Parses a PDF file or buffer and extracts its pages, content, and metadata. + * @param filenameOrBuffer - Path to the PDF file or a buffer containing PDF data. + * @param options - Optional settings for filtering, tracing, caching, rendering, and cancellation. + * @returns A promise resolving to an object with parsed pages, concatenated content, and metadata. Returns empty pages and content if an error occurs. Metadata may be undefined if not present. + */ +export async function parsePdf(filenameOrBuffer, options) { + const filename = typeof filenameOrBuffer === "string" ? filenameOrBuffer : undefined; + const bytes = typeof filenameOrBuffer === "string" ? undefined : filenameOrBuffer; + const { pages, metadata, content, error } = await PDFTryParse(filename, bytes, options); + if (error) { + dbg("pdf parsing returned error: %O", error); + return { pages: [], content: "" }; + } + return { pages, content, metadata }; +} +/** + * Parses text items from a PDF page into lines. + * @param pdfItems - Array of text items + * @returns An object containing parsed lines + */ +function parsePageItems(pdfItems) { + const lineData = {}; + // Group text items by their vertical position (y-coordinate) + for (let i = 0; i < pdfItems.length; i++) { + const item = pdfItems[i]; + const y = item?.transform[5]; + if (!lineData.hasOwnProperty(y)) { + // dbg("grouping text item at y=%d into new line", y) + lineData[y] = []; + } + // Ensure the item is valid before adding + /* istanbul ignore next */ + if (item) { + // dbg("adding item to lineData at y=%d: %o", y, item) + lineData[y]?.push(item); + } + } + const yCoords = Object.keys(lineData) + .map((key) => Number(key)) + // Sort by descending y-coordinate + .sort((a, b) => b - a) + // Insert empty lines based on line height differences + .reduce((accum, currentY, index, array) => { + const nextY = array[index + 1]; + if (nextY != undefined) { + const currentLine = lineData[currentY]; + const currentLineHeight = currentLine.reduce((finalValue, current) => (finalValue > current.height ? finalValue : current.height), -1); + // Check if a new line is needed based on height + if (Math.floor((currentY - nextY) / currentLineHeight) > 1) { + const newY = currentY - currentLineHeight; + lineData[newY] = []; + return accum.concat(currentY, newY); + } + } + return accum.concat(currentY); + }, []); + const lines = []; + for (let i = 0; i < yCoords.length; i++) { + const y = yCoords[i]; + // Ensure y-coordinate is defined + /* istanbul ignore next */ + if (y == undefined) { + continue; + } + // Sort by x position within each line + const lineItems = lineData[y].sort((a, b) => a.transform[4] - b.transform[4]).filter((item) => !!item.str); + const firstLineItem = lineItems[0]; + let line = lineItems.length ? firstLineItem.str : ""; + // Concatenate text items into a single line + for (let j = 1; j < lineItems.length; j++) { + const item = lineItems[j]; + const lastItem = lineItems[j - 1]; + const xDiff = item.transform[4] - (lastItem.transform[4] + lastItem.width); + // Insert spaces for horizontally distant items + /* istanbul ignore next */ + if (item.height !== 0 && + lastItem.height !== 0 && + (xDiff > item.height || xDiff > lastItem.height)) { + const spaceCountA = Math.ceil(xDiff / item.height); + let spaceCount = spaceCountA; + if (lastItem.height !== item.height) { + const spaceCountB = Math.ceil(xDiff / lastItem.height); + spaceCount = spaceCountA > spaceCountB ? spaceCountA : spaceCountB; + } + line += Array(spaceCount).fill("").join(" "); + } + line += item.str; + } + lines.push(line); + } + return { + lines, + }; +} +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pdf.js.map b/packages/core/.tshy-build/browser/pdf.js.map new file mode 100644 index 0000000000..41ab0f45ca --- /dev/null +++ b/packages/core/.tshy-build/browser/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/pdf.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAA4B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAEpC,IAAI,mBAA2B,CAAC;AAEhC;;;;;GAKG;AACH,KAAK,UAAU,cAAc;IAC3B,+BAA+B,EAAE,CAAC,CAAC,4CAA4C;IAE/E,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC9D,IAAI,SAAS,GAAG,aAAa,CAAC,qCAAqC,CAAC,CAAC;IACrE,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAEhC,iDAAiD;IACjD,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC9B,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,GAAG,CAAC,uCAAuC,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,mBAAmB,GAAG,aAAa,CACjC,SAAS,CAAC,OAAO,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CACjE,CAAC,QAAQ,EAAE,CAAC;IACb,GAAG,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;IACpD,KAAK,CAAC,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa;IACjB,MAAM,CAAC,YAAY,CAAmC;IAEtD,gBAAe,CAAC;IAEhB,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,gDAAgD,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO;YACL,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAqB,EAAE,KAAa,EAAE,MAAc;QACxD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,GAAG,CAAC,kCAAkC,CAAC,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,4DAA4D,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACtC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,gBAAqB;QAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,iEAAiE;QACjE,sEAAsE;QACtE,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAClC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACF;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;QACpC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;QAC1C,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC9B,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACnC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,+BAA+B;IACtC,oEAAoE;IACnE,OAAe,CAAC,aAAa;QAC5B,CAAE,OAAe,CAAC,aAAa,GAAG;YAChC,IAAI,EAAE,EAAE,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,OAAY,EAAE,MAAW,EAAE,EAAE;gBAChD,EAAE,GAAG,OAAO,CAAC;gBACb,EAAE,GAAG,MAAM,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,IAAK,SAIJ;AAJD,WAAK,SAAS;IACZ,6DAAkB,CAAA;IAClB,mDAAa,CAAA;IACb,qDAAc,CAAA;AAChB,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAAgC,EAChC,OAAkE;IAElE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAC5F,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,WAAW,CACxB,SAAiB,EACjB,OAAoB,EACpB,OAA8D;IAE9D,MAAM,EACJ,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,aAAa,EACb,KAAK,GAAG,SAAS,EACjB,KAAK,EACL,cAAc,GACf,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE;QAChD,OAAO;QACP,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,MAAM,QAAQ,CAAC,WAAW,EAAE;gBAC1B,QAAQ,EAAE,OAAO;aAClB,CAAC,CACH,CAAC;YACF,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,CAAC;QACC,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,iBAAiB,SAAS,IAAI,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,SAAS,CAAC,iBAAiB,SAAS,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAClC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,oCAAoC;QACpC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,CAAC,SAAS;YAC5C,eAAe,EAAE,IAAI;YACrB,mBAAmB;YACnB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACjC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,WAAW;YAC1B,CAAC,CAAC,qBAAqB,CAAC;gBACpB,IAAI,EAAE,qBAAqB,CAAC;oBAC1B,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;iBAC5B,CAAC;aACH,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,KAAK,GAAc,EAAE,CAAC;QAE5B,qDAAqD;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY;YACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAe,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YAC1F,IAAI,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAEtC,sCAAsC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAC1D,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,2BAA2B;YAC3B,MAAM,CAAC,GAAY;gBACjB,KAAK,EAAE,CAAC,GAAG,CAAC;gBACZ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1B,CAAC;YAEF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEd,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;gBAClC,GAAG,CAAC,gCAAgC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBACzB,aAAa,EAAE,aAAoB;oBACnC,QAAQ;iBACT,CAAC,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC5C,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC5C,GAAG,CAAC,6BAA6B,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;oBAC/C,GAAG,CAAC,kDAAkD,EAAE,CAAC,CAAC,CAAC;oBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,QAAQ,EAAE,CAAC;wBACb,cAAc,CAAC,iBAAiB,CAAC,CAAC;wBAClC,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,EAAE;4BAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAClC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACzC,CAAC;iCAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAM,EAAE,EAAE;oCACjC,OAAO,CAAC,CAAC,CAAC,CAAC;gCACb,CAAC,CAAC,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,SAAS,CAAC,CAAC;4BACrB,CAAC;wBACH,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,GAAG,EAAE,CAAC;4BACT,SAAS;wBACX,CAAC;wBACD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC5E,IAAI,GAAG,EAAE,CAAC;4BACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;YAEpB,UAAU,CACR,kBAAkB,SAAS,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1H,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,qBAAqB,CAAC;YAChC,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;YACC,gBAAgB;YAChB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,kCAAkC;QACtE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,CAAC,EAAE,CAAC;IACN,CAAC;IAED,KAAK,UAAU,WAAW,CACxB,SAAiB,EACjB,GAKC,EACD,YAA2C,EAC3C,QAAa,EACb,MAAc;QAEd,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,yEAAyE,CAAC,CAAC;YAC/E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI;gBACtC,IAAI,IAAI,KAAK,SAAS,CAAC,cAAc,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;oBAC7B,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;oBAChD,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;oBAChD,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;gBAClD,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;oBAChD,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,CACb,MAAM,EACN,QAAQ,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,MAAM,CACxE,CAAC;QACF,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE5B,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,KAAK;YACL,MAAM;YACN,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,QAAQ,EAAE,EAAE;SACU,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAgB;IACxC,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,gBAAqC,EACrC,OAA8D;IAM9D,MAAM,QAAQ,GAAG,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,KAAK,GAAG,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,gBAA+B,CAAC;IAClG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxF,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAoB;IAC1C,MAAM,QAAQ,GAAgC,EAAE,CAAC;IAEjD,6DAA6D;IAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,qDAAqD;YACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,yCAAyC;QACzC,0BAA0B;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,sDAAsD;YACtD,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,kCAAkC;SACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,sDAAsD;SACrD,MAAM,CAAC,CAAC,KAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAE,CAAC;YACxC,MAAM,iBAAiB,GAAW,WAAW,CAAC,MAAM,CAClD,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACpF,CAAC,CAAC,CACH,CAAC;YAEF,gDAAgD;YAChD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,QAAQ,GAAG,iBAAiB,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAET,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,iCAAiC;QACjC,0BAA0B;QAC1B,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,sCAAsC;QACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACnF,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CACrB,CAAC;QACF,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QACpC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAErD,4CAA4C;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE3E,+CAA+C;YAC/C,0BAA0B;YAC1B,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACrB,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAChD,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,UAAU,GAAG,WAAW,CAAC;gBAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvD,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;gBACrE,CAAC;gBACD,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACL,KAAK;KACN,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/perf.d.ts b/packages/core/.tshy-build/browser/perf.d.ts new file mode 100644 index 0000000000..0fd68a9147 --- /dev/null +++ b/packages/core/.tshy-build/browser/perf.d.ts @@ -0,0 +1,9 @@ +/** + * Logs the duration of a performance measurement between two marks. + * + * @param name - The name of the measurement. + * @param start - The name of the starting performance mark. + * @param end - The name of the ending performance mark. + */ +export declare function logMeasure(name: string, start: string, end: string): void; +//# sourceMappingURL=perf.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/perf.d.ts.map b/packages/core/.tshy-build/browser/perf.d.ts.map new file mode 100644 index 0000000000..ae5b518d42 --- /dev/null +++ b/packages/core/.tshy-build/browser/perf.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../../src/perf.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIzE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/perf.js b/packages/core/.tshy-build/browser/perf.js new file mode 100644 index 0000000000..62347e58e6 --- /dev/null +++ b/packages/core/.tshy-build/browser/perf.js @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Logs the duration of a performance measurement between two marks. + * + * @param name - The name of the measurement. + * @param start - The name of the starting performance mark. + * @param end - The name of the ending performance mark. + */ +export function logMeasure(name, start, end) { + performance.mark(end); + const m = performance.measure(name, start, end); + console.debug(`⏲️ ${m.name}: ${m.duration | 0}ms`); +} +//# sourceMappingURL=perf.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/perf.js.map b/packages/core/.tshy-build/browser/perf.js.map new file mode 100644 index 0000000000..802051e22c --- /dev/null +++ b/packages/core/.tshy-build/browser/perf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"perf.js","sourceRoot":"","sources":["../../src/perf.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACjE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/performance.d.ts b/packages/core/.tshy-build/browser/performance.d.ts new file mode 100644 index 0000000000..2bac07be6f --- /dev/null +++ b/packages/core/.tshy-build/browser/performance.d.ts @@ -0,0 +1,32 @@ +/** + * Marks a specific point in the application's performance timeline. + * + * @param id - The unique identifier for the performance mark. + */ +export declare function mark(id: string): void; +/** + * Measures the duration between two performance marks. + * + * @param id - A unique identifier for the performance measurement. + * @param detail - Optional string providing additional details for the measurement. + * @returns A function to mark the end of the measurement and calculate the duration. + * + * The returned function accepts: + * @param endDetail - Optional string with additional details for the end mark. + * @returns The duration between the start and end marks in milliseconds. + */ +export declare function measure(id: string, detail?: string): (endDetail?: string) => number; +/** + * Observes and logs performance measurements for the application. + * Aggregates and outputs the total time and incremental durations + * for each performance entry as they are recorded. + * + * Parameters: + * None. + * + * Behavior: + * - Initializes an observer to listen for "measure" performance events. + * - Logs the duration of each measurement and its cumulative total using `logVerbose`. + */ +export declare function logPerformance(): void; +//# sourceMappingURL=performance.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/performance.d.ts.map b/packages/core/.tshy-build/browser/performance.d.ts.map new file mode 100644 index 0000000000..e5c39606ce --- /dev/null +++ b/packages/core/.tshy-build/browser/performance.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,QAE9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,IAIzC,YAAY,MAAM,YAK3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,SAY7B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/performance.js b/packages/core/.tshy-build/browser/performance.js new file mode 100644 index 0000000000..5218e87ce5 --- /dev/null +++ b/packages/core/.tshy-build/browser/performance.js @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { performance, PerformanceObserver } from "node:perf_hooks"; +import { logVerbose, toStringList } from "./util.js"; +import prettyMilliseconds from "pretty-ms"; +/** + * Marks a specific point in the application's performance timeline. + * + * @param id - The unique identifier for the performance mark. + */ +export function mark(id) { + performance.mark(id); +} +/** + * Measures the duration between two performance marks. + * + * @param id - A unique identifier for the performance measurement. + * @param detail - Optional string providing additional details for the measurement. + * @returns A function to mark the end of the measurement and calculate the duration. + * + * The returned function accepts: + * @param endDetail - Optional string with additional details for the end mark. + * @returns The duration between the start and end marks in milliseconds. + */ +export function measure(id, detail) { + const start = id + ".start"; + const end = id + ".end"; + const startm = performance.mark(start); + return (endDetail) => { + const endm = performance.mark(end); + performance.measure(`${id} ${toStringList(detail, endDetail)}`, start, end); + return endm.startTime - startm.startTime; + }; +} +/** + * Observes and logs performance measurements for the application. + * Aggregates and outputs the total time and incremental durations + * for each performance entry as they are recorded. + * + * Parameters: + * None. + * + * Behavior: + * - Initializes an observer to listen for "measure" performance events. + * - Logs the duration of each measurement and its cumulative total using `logVerbose`. + */ +export function logPerformance() { + const measures = {}; + const perfObserver = new PerformanceObserver((items) => { + items.getEntries().forEach((entry) => { + const total = (measures[entry.name] || 0) + entry.duration; + measures[entry.name] = total; + logVerbose(`perf> ${entry.name} ${prettyMilliseconds(entry.duration)}/${prettyMilliseconds(total)}`); + }); + }); + perfObserver.observe({ entryTypes: ["measure"], buffered: true }); +} +//# sourceMappingURL=performance.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/performance.js.map b/packages/core/.tshy-build/browser/performance.js.map new file mode 100644 index 0000000000..e9680b5ca0 --- /dev/null +++ b/packages/core/.tshy-build/browser/performance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,kBAAkB,MAAM,WAAW,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,EAAU;IAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,MAAe;IACjD,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC5B,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IACxB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,SAAkB,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE;QACrD,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC3D,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7B,UAAU,CACR,SAAS,KAAK,CAAC,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CACzF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/plugin.d.ts b/packages/core/.tshy-build/browser/plugin.d.ts new file mode 100644 index 0000000000..6ecf6e135e --- /dev/null +++ b/packages/core/.tshy-build/browser/plugin.d.ts @@ -0,0 +1,3 @@ +import type { ChatGenerationContext, ChatGenerationContextOptions } from "./types.js"; +export declare function resolveChatGenerationContext(options?: ChatGenerationContextOptions): ChatGenerationContext; +//# sourceMappingURL=plugin.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/plugin.d.ts.map b/packages/core/.tshy-build/browser/plugin.d.ts.map new file mode 100644 index 0000000000..5cc1043996 --- /dev/null +++ b/packages/core/.tshy-build/browser/plugin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAE7B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,4BAA4B,CAC1C,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAQvB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/plugin.js b/packages/core/.tshy-build/browser/plugin.js new file mode 100644 index 0000000000..bc5b2a849c --- /dev/null +++ b/packages/core/.tshy-build/browser/plugin.js @@ -0,0 +1,11 @@ +export function resolveChatGenerationContext(options) { + const { generator: ctx } = options || {}; + if (ctx) + return ctx; + const globalPromptContext = globalThis; + const generator = globalPromptContext.env?.generator; + if (!generator) + throw new Error("You must pass a chat generation context when using the runtime."); + return generator; +} +//# sourceMappingURL=plugin.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/plugin.js.map b/packages/core/.tshy-build/browser/plugin.js.map new file mode 100644 index 0000000000..b05acd6caf --- /dev/null +++ b/packages/core/.tshy-build/browser/plugin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,4BAA4B,CAC1C,OAAsC;IAEtC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzC,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,mBAAmB,GAAyB,UAA6C,CAAC;IAChG,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC;IACrD,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,OAAO,SAAS,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/precision.d.ts b/packages/core/.tshy-build/browser/precision.d.ts new file mode 100644 index 0000000000..9441352658 --- /dev/null +++ b/packages/core/.tshy-build/browser/precision.d.ts @@ -0,0 +1,19 @@ +/** + * Rounds a number to the specified number of decimal places with precision. + * + * @param x - The number to be rounded. Returns NaN if undefined. + * @param digits - The number of decimal places to round to. Defaults to 0 if invalid. + * @param round - The rounding function to use (e.g., Math.round). Defaults to Math.round. + * @returns The rounded number, or NaN if the input is undefined. + */ +export declare function roundWithPrecision(x: number | undefined, digits: number, round?: (x: number) => number): number; +/** + * Formats a number with the specified number of decimal places, using rounding logic. + * + * @param x - The number to format. Returns "?" if undefined. + * @param digits - The number of decimal places to include in the formatted output. + * @param round - A custom rounding function. Defaults to Math.round. + * @returns A string representing the number formatted with the specified precision. + */ +export declare function renderWithPrecision(x: number | undefined, digits: number, round?: (x: number) => number): string; +//# sourceMappingURL=precision.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/precision.d.ts.map b/packages/core/.tshy-build/browser/precision.d.ts.map new file mode 100644 index 0000000000..010795ebcd --- /dev/null +++ b/packages/core/.tshy-build/browser/precision.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"precision.d.ts","sourceRoot":"","sources":["../../src/precision.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,GAAG,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,wBAAa,GACjB,MAAM,CAYR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,GAAG,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,wBAAa,GACjB,MAAM,CAaR"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/precision.js b/packages/core/.tshy-build/browser/precision.js new file mode 100644 index 0000000000..43b9790f5e --- /dev/null +++ b/packages/core/.tshy-build/browser/precision.js @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Rounds a number to the specified number of decimal places with precision. + * + * @param x - The number to be rounded. Returns NaN if undefined. + * @param digits - The number of decimal places to round to. Defaults to 0 if invalid. + * @param round - The rounding function to use (e.g., Math.round). Defaults to Math.round. + * @returns The rounded number, or NaN if the input is undefined. + */ +export function roundWithPrecision(x, digits, round = Math.round) { + if (x === undefined) + return NaN; + digits = digits | 0; + // invalid digits input + if (digits <= 0) + return round(x); + if (x === 0) + return 0; + let r = 0; + while (r == 0 && digits < 21) { + const d = Math.pow(10, digits++); + r = round(x * d + Number.EPSILON) / d; + } + return r; +} +/** + * Formats a number with the specified number of decimal places, using rounding logic. + * + * @param x - The number to format. Returns "?" if undefined. + * @param digits - The number of decimal places to include in the formatted output. + * @param round - A custom rounding function. Defaults to Math.round. + * @returns A string representing the number formatted with the specified precision. + */ +export function renderWithPrecision(x, digits, round = Math.round) { + if (x === undefined) + return "?"; + const r = roundWithPrecision(x, digits, round); + let rs = r.toLocaleString(); + if (digits > 0) { + let doti = rs.indexOf("."); + if (doti < 0) { + rs += "."; + doti = rs.length - 1; + } + while (rs.length - 1 - doti < digits) + rs += "0"; + } + return rs; +} +//# sourceMappingURL=precision.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/precision.js.map b/packages/core/.tshy-build/browser/precision.js.map new file mode 100644 index 0000000000..06998eb5f1 --- /dev/null +++ b/packages/core/.tshy-build/browser/precision.js.map @@ -0,0 +1 @@ +{"version":3,"file":"precision.js","sourceRoot":"","sources":["../../src/precision.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,CAAqB,EACrB,MAAc,EACd,KAAK,GAAG,IAAI,CAAC,KAAK;IAElB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAChC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IACpB,uBAAuB;IACvB,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,CAAqB,EACrB,MAAc,EACd,KAAK,GAAG,IAAI,CAAC,KAAK;IAElB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAChC,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,EAAE,IAAI,GAAG,CAAC;YACV,IAAI,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM;YAAE,EAAE,IAAI,GAAG,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pretty.d.ts b/packages/core/.tshy-build/browser/pretty.d.ts new file mode 100644 index 0000000000..8760e9d9c4 --- /dev/null +++ b/packages/core/.tshy-build/browser/pretty.d.ts @@ -0,0 +1,69 @@ +import type { ChatCompletionUsage } from "./chattypes.js"; +/** + * Prettifies markdown content by converting annotations to markdown, processing "think" blocks, and collapsing excessive newlines. + * @param md - The markdown string to prettify. + * @returns The cleaned and formatted markdown string. + */ +export declare function prettifyMarkdown(md: string): string; +/** + * Formats token usage into a human-readable string indicating tokens per second. + * + * @param usage - Object containing usage data. Must include: + * - `total_tokens`: The total number of tokens used. + * - `duration`: The duration of usage in milliseconds. + * @returns A string representing tokens per second, formatted as "X.XXt/s", or an empty string if input is invalid. + */ +export declare function prettyTokensPerSecond(usage: ChatCompletionUsage): string; +/** + * Converts a numeric token count into a human-readable string with units. + * + * @param n - The number of tokens to format. If not a valid number, returns an empty string. + * @param direction - Optional indicator for token type: + * "prompt" for input tokens (adds "↑" as prefix) or + * "completion" for output tokens (adds "↓" as prefix). Defaults to no prefix. + * @returns A formatted string with units "t" for tokens, "kt" for kilo-tokens, or "Mt" for mega-tokens. + */ +export declare function prettyTokens(n: number, direction?: "prompt" | "completion" | "both"): string; +export declare function prettyParenthesized(value: unknown): string; +/** + * Formats a duration in milliseconds into a human-readable string. + * + * @param ms - The duration in milliseconds to format. + * - Below 10,000ms: Returns as milliseconds with ceiling applied. + * - Between 10,000ms and 60,000ms: Converts to seconds with one decimal. + * - Between 60,000ms and 3,600,000ms: Converts to minutes with one decimal. + * - Above 3,600,000ms: Converts to hours with one decimal. + * @returns A formatted string representing the duration. + */ +export declare function prettyDuration(ms: number): string; +/** + * Formats a numeric cost as a string for display. + * + * @param value - The numeric cost to format. Must be a non-negative number. + * @returns The formatted cost as a string, using cents or dollars. + */ +export declare function prettyCost(value: number): string; +/** + * Converts a value representing bytes into a human-readable string. + * Utilizes the `pretty-bytes` library for formatting. + * + * @param bytes - The numeric value to be converted, representing bytes. + * If not a valid number, an empty string is returned. + * @returns A human-readable string representing the byte value, + * e.g., "1.2 kB", "3 MB". Returns an empty string for invalid input. + */ +export declare function prettyBytes(bytes: number): string; +/** + * Converts a list of strings into a single comma-separated string. + * + * @param token - An array of strings to be processed. Empty, null, or undefined strings are ignored. + * @returns A single string with valid input strings concatenated and separated by commas. + */ +export declare function prettyStrings(...token: string[]): string; +export declare function prettyValue(value: number | undefined, options?: { + emoji?: string; + afterEmoji?: string; + precision?: number; +}): string; +export declare function prettyTemperature(value: number): string; +//# sourceMappingURL=pretty.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pretty.d.ts.map b/packages/core/.tshy-build/browser/pretty.d.ts.map new file mode 100644 index 0000000000..b9e39c3518 --- /dev/null +++ b/packages/core/.tshy-build/browser/pretty.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/pretty.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAc1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,UAM1C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,UAG/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,UAanF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,UAEjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,UAOxC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAOvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAGxC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAG/C;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,UAOtE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,UAE9C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pretty.js b/packages/core/.tshy-build/browser/pretty.js new file mode 100644 index 0000000000..9a1426a7b3 --- /dev/null +++ b/packages/core/.tshy-build/browser/pretty.js @@ -0,0 +1,135 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import _prettyBytes from "pretty-bytes"; +import { CHAR_DOWN_ARROW, CHAR_TEMPERATURE, CHAR_UP_ARROW, CHAR_UP_DOWN_ARROWS, } from "./constants.js"; +import { roundWithPrecision } from "./precision.js"; +import { unfence } from "./unwrappers.js"; +import { convertAnnotationsToMarkdown } from "./annotations.js"; +import { convertThinkToMarkdown } from "./think.js"; +import { collapseNewlines } from "./cleaners.js"; +/** + * Prettifies markdown content by converting annotations to markdown, processing "think" blocks, and collapsing excessive newlines. + * @param md - The markdown string to prettify. + * @returns The cleaned and formatted markdown string. + */ +export function prettifyMarkdown(md) { + let res = unfence(md, ["markdown", "md", "text"]); + res = convertAnnotationsToMarkdown(res); // Convert annotations to markdown format + res = convertThinkToMarkdown(res); + res = collapseNewlines(res); // Clean up excessive newlines + return res; +} +/** + * Formats token usage into a human-readable string indicating tokens per second. + * + * @param usage - Object containing usage data. Must include: + * - `total_tokens`: The total number of tokens used. + * - `duration`: The duration of usage in milliseconds. + * @returns A string representing tokens per second, formatted as "X.XXt/s", or an empty string if input is invalid. + */ +export function prettyTokensPerSecond(usage) { + if (!usage || !usage.duration || !usage.total_tokens) + return ""; + return `${(usage.total_tokens / (usage.duration / 1000)).toFixed(2)}t/s`; +} +/** + * Converts a numeric token count into a human-readable string with units. + * + * @param n - The number of tokens to format. If not a valid number, returns an empty string. + * @param direction - Optional indicator for token type: + * "prompt" for input tokens (adds "↑" as prefix) or + * "completion" for output tokens (adds "↓" as prefix). Defaults to no prefix. + * @returns A formatted string with units "t" for tokens, "kt" for kilo-tokens, or "Mt" for mega-tokens. + */ +export function prettyTokens(n, direction) { + if (isNaN(n)) + return ""; + const prefix = direction === "both" + ? CHAR_UP_DOWN_ARROWS + : direction === "prompt" + ? CHAR_UP_ARROW + : direction === "completion" + ? CHAR_DOWN_ARROW + : ""; + if (n < 1000) + return `${prefix}${n.toString()}t`; + if (n < 1e6) + return `${prefix}${(n / 1e3).toFixed(1)}kt`; + return `${prefix}${(n / 1e6).toFixed(1)}Mt`; +} +export function prettyParenthesized(value) { + return value !== undefined ? `(${value})` : ""; +} +/** + * Formats a duration in milliseconds into a human-readable string. + * + * @param ms - The duration in milliseconds to format. + * - Below 10,000ms: Returns as milliseconds with ceiling applied. + * - Between 10,000ms and 60,000ms: Converts to seconds with one decimal. + * - Between 60,000ms and 3,600,000ms: Converts to minutes with one decimal. + * - Above 3,600,000ms: Converts to hours with one decimal. + * @returns A formatted string representing the duration. + */ +export function prettyDuration(ms) { + if (isNaN(ms)) + return ""; + const prefix = ""; + if (ms < 10000) + return `${prefix}${Math.ceil(ms)}ms`; + if (ms < 60 * 1000) + return `${prefix}${(ms / 1000).toFixed(1)}s`; + if (ms < 60 * 60 * 1000) + return `${prefix}${(ms / 60 / 1000).toFixed(1)}m`; + return `${prefix}${(ms / 60 / 60 / 1000).toFixed(1)}h`; +} +/** + * Formats a numeric cost as a string for display. + * + * @param value - The numeric cost to format. Must be a non-negative number. + * @returns The formatted cost as a string, using cents or dollars. + */ +export function prettyCost(value) { + if (!value || isNaN(value)) + return ""; + return value <= 0.01 + ? `${(value * 100).toFixed(3)}¢` + : value <= 0.1 + ? `${(value * 100).toFixed(2)}¢` + : `${value.toFixed(2)}$`; +} +/** + * Converts a value representing bytes into a human-readable string. + * Utilizes the `pretty-bytes` library for formatting. + * + * @param bytes - The numeric value to be converted, representing bytes. + * If not a valid number, an empty string is returned. + * @returns A human-readable string representing the byte value, + * e.g., "1.2 kB", "3 MB". Returns an empty string for invalid input. + */ +export function prettyBytes(bytes) { + if (isNaN(bytes)) + return ""; + return _prettyBytes(bytes); +} +/** + * Converts a list of strings into a single comma-separated string. + * + * @param token - An array of strings to be processed. Empty, null, or undefined strings are ignored. + * @returns A single string with valid input strings concatenated and separated by commas. + */ +export function prettyStrings(...token) { + const md = token.filter((l) => l !== undefined && l !== null && l !== "").join(", "); + return md; +} +export function prettyValue(value, options) { + if (isNaN(value)) + return ""; + const { emoji = "", afterEmoji = "", precision = 2 } = options || {}; + const v = roundWithPrecision(value, precision); + const s = `${emoji}${v}${afterEmoji}`; + return s; +} +export function prettyTemperature(value) { + return prettyValue(value, { afterEmoji: CHAR_TEMPERATURE, precision: 1 }); +} +//# sourceMappingURL=pretty.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/pretty.js.map b/packages/core/.tshy-build/browser/pretty.js.map new file mode 100644 index 0000000000..bd32667753 --- /dev/null +++ b/packages/core/.tshy-build/browser/pretty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pretty.js","sourceRoot":"","sources":["../../src/pretty.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/progress.d.ts b/packages/core/.tshy-build/browser/progress.d.ts new file mode 100644 index 0000000000..c90a82c64d --- /dev/null +++ b/packages/core/.tshy-build/browser/progress.d.ts @@ -0,0 +1,15 @@ +/** + * Defines a generalized way of reporting progress updates. + */ +export declare abstract class Progress { + abstract report(value: { + message?: string; + count?: number; + succeeded?: boolean | undefined; + }): void; + start(message: string, count?: number): void; + succeed(message?: string): void; + fail(message?: string): void; + stop(): void; +} +//# sourceMappingURL=progress.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/progress.d.ts.map b/packages/core/.tshy-build/browser/progress.d.ts.map new file mode 100644 index 0000000000..2db245de11 --- /dev/null +++ b/packages/core/.tshy-build/browser/progress.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/progress.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,8BAAsB,QAAQ;IAC5B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACjC,GAAG,IAAI;IAER,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAIrC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM;IAIxB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM;IAIrB,IAAI;CACL"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/progress.js b/packages/core/.tshy-build/browser/progress.js new file mode 100644 index 0000000000..bae388a5e3 --- /dev/null +++ b/packages/core/.tshy-build/browser/progress.js @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Defines a generalized way of reporting progress updates. + */ +export class Progress { + start(message, count) { + this.report({ message, count }); + } + succeed(message) { + this.report({ message: message || "", succeeded: true }); + } + fail(message) { + this.report({ message: message || "", succeeded: false }); + } + stop() { } +} +//# sourceMappingURL=progress.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/progress.js.map b/packages/core/.tshy-build/browser/progress.js.map new file mode 100644 index 0000000000..f877172de8 --- /dev/null +++ b/packages/core/.tshy-build/browser/progress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/progress.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,OAAgB,QAAQ;IAO5B,KAAK,CAAC,OAAe,EAAE,KAAc;QACnC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,OAAgB;QACtB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,OAAgB;QACnB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAI,CAAC;CACV"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptcontext.d.ts b/packages/core/.tshy-build/browser/promptcontext.d.ts new file mode 100644 index 0000000000..5324a94624 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptcontext.d.ts @@ -0,0 +1,16 @@ +import { type RunPromptContextNode } from "./runpromptcontext.js"; +import type { GenerationOptions } from "./generation.js"; +import type { Project } from "./server/messages.js"; +import type { ExpansionVariables, PromptContext } from "./types.js"; +/** + * Creates a prompt context for the specified project, variables, trace, options, and model. + * + * @param prj The project for which the context is created. + * @param ev Expansion variables including generator, output, debugging, run directory, and other configurations. + * @param trace Markdown trace for logging and debugging. + * @param options Generation options such as cancellation tokens, embeddings models, and content safety. + * @param model The model identifier used for context creation. + * @returns A context object providing methods for file operations, web retrieval, searches, execution, container operations, caching, and other utilities. Includes workspace file system operations (read/write files, grep, find files), retrieval methods (web search, fuzzy search, vector search, index creation), and host operations (command execution, browsing, container management, resource publishing, server management, etc.). + */ +export declare function createPromptContext(prj: Project, ev: ExpansionVariables, options: GenerationOptions, model: string): Promise; +//# sourceMappingURL=promptcontext.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptcontext.d.ts.map b/packages/core/.tshy-build/browser/promptcontext.d.ts.map new file mode 100644 index 0000000000..12acab62eb --- /dev/null +++ b/packages/core/.tshy-build/browser/promptcontext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"promptcontext.d.ts","sourceRoot":"","sources":["../../src/promptcontext.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,oBAAoB,EAA+B,MAAM,uBAAuB,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAkBpD,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EAOd,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,OAAO,EACZ,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,iDAiTd"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptcontext.js b/packages/core/.tshy-build/browser/promptcontext.js new file mode 100644 index 0000000000..f6c1ba2d62 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptcontext.js @@ -0,0 +1,339 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This file defines the creation of a prompt context, which includes various services +// like file operations, web search, fuzzy search, vector search, and more. +// The context is essential for executing prompts within a project environment. +import debug from "debug"; +import { assert } from "./assert.js"; +import { arrayify } from "./cleaners.js"; +import { resolveRuntimeHost } from "./host.js"; +import { tavilySearch } from "./websearch.js"; +import { createChatGenerationContext } from "./runpromptcontext.js"; +import { fuzzSearch } from "./fuzzsearch.js"; +import { grepSearch } from "./grep.js"; +import { resolveFileContents, toWorkspaceFile } from "./file.js"; +import { vectorCreateIndex, vectorSearch } from "./vectorsearch.js"; +import { shellParse } from "./shell.js"; +import { PLimitPromiseQueue } from "./concurrency.js"; +import { proxifyEnvVars } from "./vars.js"; +import { HTMLEscape } from "./htmlescape.js"; +import { hash } from "./crypto.js"; +import { resolveModelConnectionInfo } from "./models.js"; +import { DOCS_WEB_SEARCH_URL, VECTOR_INDEX_HASH_LENGTH } from "./constants.js"; +import { fetch } from "./fetch.js"; +import { fetchText } from "./fetchtext.js"; +import { fileWriteCached } from "./filecache.js"; +import { basename, dirname, join } from "node:path"; +import { createMicrosoftTeamsChannelClient } from "./teams.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { createCache } from "./cache.js"; +import { genaiscriptDebug } from "./debug.js"; +import { resolveLanguageModelConfigurations } from "./config.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +const dbgc = genaiscriptDebug("ctx"); +/** + * Creates a prompt context for the specified project, variables, trace, options, and model. + * + * @param prj The project for which the context is created. + * @param ev Expansion variables including generator, output, debugging, run directory, and other configurations. + * @param trace Markdown trace for logging and debugging. + * @param options Generation options such as cancellation tokens, embeddings models, and content safety. + * @param model The model identifier used for context creation. + * @returns A context object providing methods for file operations, web retrieval, searches, execution, container operations, caching, and other utilities. Includes workspace file system operations (read/write files, grep, find files), retrieval methods (web search, fuzzy search, vector search, index creation), and host operations (command execution, browsing, container management, resource publishing, server management, etc.). + */ +export async function createPromptContext(prj, ev, options, model) { + const { trace, cancellationToken } = options; + const { generator, vars, dbg, output, ...varsNoGenerator } = ev; + const runtimeHost = resolveRuntimeHost(); + dbgc(`create`); + // Clone variables to prevent modification of the original object + const env = { + generator, + vars, + output, + dbg, + ...structuredClone(varsNoGenerator), + }; + assert(!!output, "missing output"); + // Create parsers for the given trace and model + const path = runtimeHost.path; + const runDir = ev.runDir; + assert(!!runDir, "missing run directory"); + // Define the workspace file system operations + const workspace = { + readText: (f) => runtimeHost.workspace.readText(f), + readJSON: (f, o) => runtimeHost.workspace.readJSON(f, o), + readYAML: (f, o) => runtimeHost.workspace.readYAML(f, o), + readXML: (f, o) => runtimeHost.workspace.readXML(f, o), + readCSV: (f, o) => runtimeHost.workspace.readCSV(f, o), + readINI: (f, o) => runtimeHost.workspace.readINI(f, o), + readData: (f, o) => runtimeHost.workspace.readData(f, o), + writeText: (f, c) => runtimeHost.workspace.writeText(f, c), + appendText: (f, c) => runtimeHost.workspace.appendText(f, c), + writeCached: async (f, options) => { + const { scope } = options || {}; + const dir = scope === "run" ? join(runDir, "files") : dotGenaiscriptPath("cache", "files"); + return await fileWriteCached(dir, f, { + ...(options || {}), + cancellationToken, + trace, + }); + }, + copyFile: (src, dest) => runtimeHost.workspace.copyFile(src, dest), + cache: (n) => runtimeHost.workspace.cache(n), + findFiles: async (pattern, options) => { + const res = await runtimeHost.workspace.findFiles(pattern, options); + return res; + }, + stat: (filename) => runtimeHost.workspace.stat(filename), + writeFiles: (file) => runtimeHost.workspace.writeFiles(file), + grep: async (query, grepOptions, grepOptions2) => { + if (typeof grepOptions === "string") { + const p = dirname(grepOptions).replace(/(^|\/)\*\*$/, ""); + const g = basename(grepOptions); + grepOptions = { + path: p || undefined, + glob: g || undefined, + ...(grepOptions2 || {}), + }; + } + const { path, glob, ...rest } = grepOptions || {}; + const grepTrace = trace?.startTraceDetails(`🌐 grep ${HTMLEscape(typeof query === "string" ? query : query.source)} ${glob ? `--glob ${glob}` : ""} ${path || ""}`); + try { + const { files, matches } = await grepSearch(query, { + path, + glob, + ...rest, + trace: grepTrace, + cancellationToken, + }); + grepTrace?.files(matches, { + model, + secrets: env.secrets, + maxLength: 0, + }); + return { files, matches }; + } + finally { + grepTrace?.endDetails(); + } + }, + }; + // Define retrieval operations + const retrieval = { + webSearch: async (q, options) => { + const { provider, count, ignoreMissingProvider } = options || {}; + // Conduct a web search and return the results + const webTrace = trace?.startTraceDetails(`🌐 web search ${HTMLEscape(q)}`); + try { + let files; + if (provider === "bing") + throw new Error("Bing search is deprecated."); + else if (provider === "tavily") + files = await tavilySearch(q, { trace: webTrace, count }); + else { + for (const f of [tavilySearch]) { + files = await f(q, { + ignoreMissingApiKey: true, + trace: webTrace, + count, + }); + if (files) + break; + } + } + if (!files) { + if (ignoreMissingProvider) { + webTrace?.log(`no search provider configured`); + return undefined; + } + throw new Error(`No search provider configured. See ${DOCS_WEB_SEARCH_URL}.`); + } + webTrace?.files(files, { + model, + secrets: env.secrets, + maxLength: 0, + }); + return files; + } + finally { + webTrace?.endDetails(); + } + }, + fuzzSearch: async (q, files_, searchOptions) => { + // Perform a fuzzy search on the provided files + const files = arrayify(files_); + searchOptions = searchOptions || {}; + const fuzzTrace = trace?.startTraceDetails(`🧐 fuzz search ${HTMLEscape(q)}`); + try { + if (!files?.length) { + fuzzTrace?.error("no files provided"); + return []; + } + else { + const res = await fuzzSearch(q, files, { + ...searchOptions, + trace: fuzzTrace, + }); + fuzzTrace?.files(res, { + model, + secrets: env.secrets, + skipIfEmpty: true, + maxLength: 0, + }); + return res; + } + } + finally { + fuzzTrace?.endDetails(); + } + }, + index: async (indexId, indexOptions) => { + const opts = { + ...(indexOptions || {}), + embeddingsModel: indexOptions?.embeddingsModel || options?.embeddingsModel, + }; + const res = await vectorCreateIndex(indexId, { + ...opts, + trace, + cancellationToken, + }); + return res; + }, + vectorSearch: async (q, files_, searchOptions) => { + // Perform a vector-based search on the provided files + const files = arrayify(files_).map(toWorkspaceFile); + searchOptions = { ...(searchOptions || {}) }; + const vecTrace = trace?.startTraceDetails(`🔍 vector search ${HTMLEscape(q)}`); + try { + if (!files?.length) { + vecTrace?.error("no files provided"); + return []; + } + await resolveFileContents(files); + searchOptions.embeddingsModel = searchOptions?.embeddingsModel ?? options?.embeddingsModel; + const key = searchOptions?.indexName || + (await hash({ files, searchOptions }, { length: VECTOR_INDEX_HASH_LENGTH })); + const res = await vectorSearch(key, q, files, { + ...searchOptions, + trace: vecTrace, + cancellationToken, + }); + return res; + } + finally { + vecTrace?.endDetails(); + } + }, + }; + // Define the host for executing commands, browsing, and other operations + const promptHost = Object.freeze({ + logger: (category) => debug(category), + mcpServer: async (options) => await runtimeHost.mcp.startMcpServer(options, { + trace, + cancellationToken, + }), + publishResource: async (name, content, options) => await runtimeHost.resources.publishResource(name, content, options), + resources: async () => await runtimeHost.resources.resources(), + fetch: (url, options) => fetch(url, { ...(options || {}), trace }), + fetchText: (url, options) => fetchText(url, { ...(options || {}), trace }), + resolveLanguageModel: async (modelId) => { + const { configuration } = await resolveModelConnectionInfo({ model: modelId }, { + token: false, + trace, + }); + const res = { + provider: configuration?.provider, + model: configuration?.model, + modelId: modelId, + }; + dbgc(`model: %O`, res); + return res; + }, + resolveLanguageModelProvider: async (id, options) => { + if (!id) + throw new Error("provider id is required"); + const [provider] = await resolveLanguageModelConfigurations(id, { + ...(options || {}), + models: !!options?.listModels, + error: false, + hide: false, + token: true, + }); + if (provider.error) { + dbgc(`Error resolving provider %s: %s`, id, provider.error); + return undefined; + } + return deleteUndefinedValues({ + id: provider.provider, + error: provider.error, + base: provider.base, + version: provider.version, + token: options?.token ? provider.token : undefined, + models: options?.listModels ? provider.models || [] : undefined, + }); + }, + cache: async (name) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const res = createCache(name, { type: "memory" }); + return res; + }, + exec: async (command, args, options) => { + // Parse the command and arguments if necessary + if (!Array.isArray(args) && typeof args === "object") { + // exec("cmd arg arg", {...}) + if (options !== undefined) + throw new Error("Options must be the second argument"); + options = args; + const parsed = shellParse(command); + command = parsed[0]; + args = parsed.slice(1); + } + else if (args === undefined) { + // exec("cmd arg arg") + const parsed = shellParse(command); + command = parsed[0]; + args = parsed.slice(1); + } + // Execute the command using the runtime host + const res = await runtimeHost.exec(undefined, command, args, { + ...(options || {}), + trace, + }); + return res; + }, + container: async (options) => { + // Execute operations within a container and return the result + const res = await runtimeHost.container({ + ...(options || {}), + trace, + }); + return res; + }, + select: async (message, choices, options) => await runtimeHost.select(message, choices, options), + input: async (message) => await runtimeHost.input(message), + confirm: async (message) => await runtimeHost.confirm(message), + promiseQueue: (concurrency) => new PLimitPromiseQueue(concurrency), + contentSafety: async (id) => await runtimeHost.contentSafety(id || options?.contentSafety, { + trace, + }), + teamsChannel: async (url) => createMicrosoftTeamsChannelClient(url), + }); + // Freeze project options to prevent modification + const projectOptions = Object.freeze({ prj, env }); + const ctx = { + ...createChatGenerationContext(options, trace, projectOptions), + script: () => { }, + system: () => { }, + env: undefined, // set later + path, + workspace, + retrieval, + host: promptHost, + }; + env.generator = ctx; + env.vars = proxifyEnvVars(env.vars); + ctx.env = Object.freeze(env); + return ctx; +} +//# sourceMappingURL=promptcontext.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptcontext.js.map b/packages/core/.tshy-build/browser/promptcontext.js.map new file mode 100644 index 0000000000..ecc0e6cdbc --- /dev/null +++ b/packages/core/.tshy-build/browser/promptcontext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promptcontext.js","sourceRoot":"","sources":["../../src/promptcontext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptdom.d.ts b/packages/core/.tshy-build/browser/promptdom.d.ts new file mode 100644 index 0000000000..da23f74d31 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptdom.d.ts @@ -0,0 +1,300 @@ +import type { TraceOptions } from "./trace.js"; +import type { ChatCompletionMessageParam } from "./chattypes.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { Awaitable, ChatFunctionHandler, ChatGenerationContext, ChatMessageRole, ChatParticipant, ChatParticipantOptions, ContextExpansionOptions, ContentSafetyOptions, DefDataOptions, DefDiffOptions, DefImagesOptions, DefOptions, DefSchemaOptions, DefToolOptions, ElementOrArray, FenceFormat, FenceFormatOptions, FileMergeHandler, FileOutput, ImportTemplateArgumentType, ImportTemplateOptions, JSONSchema, JSONSchemaObject, McpServerConfig, ModelOptions, ModelTemplateOptions, PromptOutputProcessorHandler, ToolCallback, SecretDetectionOptions, WorkspaceFile, ZodTypeLike, McpClient } from "./types.js"; +export interface PromptNode extends ContextExpansionOptions { + type?: "text" | "image" | "schema" | "tool" | "fileMerge" | "outputProcessor" | "stringTemplate" | "assistant" | "system" | "def" | "defData" | "chatParticipant" | "fileOutput" | "importTemplate" | "mcpServer" | undefined; + children?: PromptNode[]; + error?: unknown; + tokens?: number; + /** + * Rendered markdown preview of the node + */ + preview?: string; + name?: string; + /** + * Node removed from the tree + */ + deleted?: boolean; +} +export interface PromptTextNode extends PromptNode { + type: "text"; + value: Awaitable; + resolved?: string; +} +export interface PromptDefNode extends PromptNode, DefOptions { + type: "def"; + name: string; + value: Awaitable; + resolved?: WorkspaceFile; +} +export interface PromptDefDataNode extends PromptNode, DefDataOptions { + type: "defData"; + name: string; + value: Awaitable; + resolved?: object | object[]; +} +export interface PromptPrediction { + type: "content"; + content: string; +} +export interface PromptAssistantNode extends PromptNode { + type: "assistant"; + value: Awaitable; + resolved?: string; +} +export interface PromptSystemNode extends PromptNode { + type: "system"; + value: Awaitable; + resolved?: string; +} +export interface PromptStringTemplateNode extends PromptNode { + type: "stringTemplate"; + strings: TemplateStringsArray; + args: any[]; + transforms: ((s: string) => Awaitable)[]; + resolved?: string; + role?: ChatMessageRole; +} +export interface PromptImportTemplate extends PromptNode { + type: "importTemplate"; + files: ElementOrArray; + args?: Record; + options?: ImportTemplateOptions; +} +export interface PromptImage { + url: string; + filename?: string; + detail?: "low" | "high"; + width?: number; + height?: number; + type?: string; +} +export interface PromptImageNode extends PromptNode { + type: "image"; + value: Awaitable; + resolved?: PromptImage; +} +export interface PromptSchemaNode extends PromptNode { + type: "schema"; + name: string; + value: JSONSchema; + options?: DefSchemaOptions; +} +export interface PromptToolNode extends PromptNode { + type: "tool"; + name: string; + description: string; + parameters: JSONSchema; + impl: ChatFunctionHandler; + options?: DefToolOptions; + generator: ChatGenerationContext; +} +export interface PromptMcpServerNode extends PromptNode { + type: "mcpServer"; + config?: McpServerConfig; + client?: McpClient; +} +export interface PromptFileMergeNode extends PromptNode { + type: "fileMerge"; + fn: FileMergeHandler; +} +export interface PromptOutputProcessorNode extends PromptNode { + type: "outputProcessor"; + fn: PromptOutputProcessorHandler; +} +export interface PromptChatParticipantNode extends PromptNode { + type: "chatParticipant"; + participant: ChatParticipant; + options?: ChatParticipantOptions; +} +export interface FileOutputNode extends PromptNode { + type: "fileOutput"; + output: FileOutput; +} +/** + * Creates a text node with the specified value and optional context expansion options. + * + * @param value - The string value for the text node. Must not be undefined. Can be awaitable. + * @param options - Configuration for context expansion. Optional. + * @returns A text node object with the specified value and options. + */ +export declare function createTextNode(value: Awaitable, options?: ContextExpansionOptions): PromptTextNode; +/** + * Converts a definition name to a reference name based on the fence format. + * + * @param name - The name of the definition. If null or empty, no conversion occurs. + * @param options - Configuration options, including the desired fence format. + * If the `fenceFormat` is "xml", the name is wrapped in XML-like tags. + * @returns The converted reference name, wrapped in XML tags if applicable. + */ +export declare function toDefRefName(name: string, options: FenceFormatOptions): string; +export declare function createDef(name: string, file: WorkspaceFile, options: DefOptions & TraceOptions): PromptDefNode; +/** + * Creates a definition node representing a diff between two files or strings. + * + * @param name - The name of the diff node. + * @param left - The left-hand input to compare, can be a string or a file. + * @param right - The right-hand input to compare, can be a string or a file. + * @param options - Additional options for rendering, tracing, and handling the diff node. + * @returns A prompt definition node containing the diff results. + */ +export declare function createDefDiff(name: string, left: string | WorkspaceFile, right: string | WorkspaceFile, options?: DefDiffOptions & TraceOptions): PromptDefNode; +/** + * Creates a node representing an assistant message in a prompt. + * @param value The content of the assistant message. Must be defined and resolvable. + * @param options Optional settings for context expansion. Defaults to an empty object if not provided. + * @returns The created assistant node. + */ +export declare function createAssistantNode(value: Awaitable, options?: ContextExpansionOptions): PromptAssistantNode; +/** + * Creates a system node with the specified content and optional context expansion settings. + * + * @param value - The content of the system node, which can be provided asynchronously. Must be defined. + * @param options - Optional configuration for context expansion, including token limits and priority. + * @returns A system node object containing the specified content and options. + */ +export declare function createSystemNode(value: Awaitable, options?: ContextExpansionOptions): PromptSystemNode; +/** + * Creates a string template node with the given template strings, arguments, and optional settings. + * + * @param strings - The template literal strings to include in the node. + * @param args - The arguments to interpolate into the template. + * @param options - Optional settings for context expansion or additional properties to include in the node. + * @returns The created string template node. + */ +export declare function createStringTemplateNode(strings: TemplateStringsArray, args: any[], options?: ContextExpansionOptions): PromptStringTemplateNode; +/** + * Creates an image node with the specified value and optional context expansion options. + * + * @param value - The image data or prompt used to create the node. Must not be null or undefined. + * @param options - Optional context expansion options to include in the node. + * @returns The created image node. + */ +export declare function createImageNode(value: Awaitable, options?: ContextExpansionOptions): PromptImageNode; +export declare function createFileImageNodes(name: string, file: WorkspaceFile, defOptions?: DefImagesOptions, options?: TraceOptions & CancellationOptions): PromptNode[]; +/** + * Creates a schema node with a specified name, value, and optional configuration. + * + * Parameters: + * - name: The name of the schema node. Must not be empty. Throws if empty. + * - value: The schema definition or a Zod type to be converted to JSON Schema. Automatically converts Zod types if applicable. Must not be undefined. Throws if undefined. + * - options: Optional configuration for the schema node. + */ +export declare function createSchemaNode(name: string, value: JSONSchema | ZodTypeLike, options?: DefSchemaOptions): PromptSchemaNode; +export declare function createToolNode(name: string, description: string, parameters: JSONSchema, impl: ChatFunctionHandler, options: DefToolOptions, generator: ChatGenerationContext): PromptToolNode; +export declare function createFileMerge(fn: FileMergeHandler): PromptFileMergeNode; +/** + * Creates and returns an output processor node with a specified handler function. + * + * @param fn - The handler function to process prompt outputs. Must not be undefined. Throws an error if undefined. + * @returns An output processor node containing the handler function. + */ +export declare function createOutputProcessor(fn: PromptOutputProcessorHandler): PromptOutputProcessorNode; +/** + * Creates a node representing a chat participant. + * @param participant - The chat participant to represent in the node. + * @returns A node object with the participant's details. + */ +export declare function createChatParticipant(participant: ChatParticipant): PromptChatParticipantNode; +/** + * Creates a file output node with the specified output. + * @param output - The file output to include in the node. + * @returns A file output node containing the specified output. + */ +export declare function createFileOutput(output: FileOutput): FileOutputNode; +export declare function createImportTemplate(files: ElementOrArray, args?: Record, options?: ImportTemplateOptions): PromptImportTemplate; +/** + * Creates a node representing an MCP (Multiple Connection Protocol) server with specified configurations. + * + * @param id - Unique identifier for the MCP server. + * @param config - Configuration object containing details necessary for the MCP server setup. + * @param options - Optional additional parameters or settings for server configuration. + * @returns An MCP server node configured with the provided details. + */ +export declare function createMcpServer(id: string, config: McpServerConfig, options: DefToolOptions, generator: ChatGenerationContext): PromptMcpServerNode; +export declare function createMcpClient(client: McpClient): PromptMcpServerNode; +export declare function createDefData(name: string, value: Awaitable, options?: DefDataOptions): PromptDefDataNode; +export declare function appendChild(parent: PromptNode, ...children: PromptNode[]): void; +export interface PromptNodeVisitor { + node?: (node: PromptNode) => Awaitable; + error?: (node: PromptNode) => Awaitable; + afterNode?: (node: PromptNode) => Awaitable; + text?: (node: PromptTextNode) => Awaitable; + def?: (node: PromptDefNode) => Awaitable; + defData?: (node: PromptDefDataNode) => Awaitable; + image?: (node: PromptImageNode) => Awaitable; + schema?: (node: PromptSchemaNode) => Awaitable; + tool?: (node: PromptToolNode) => Awaitable; + fileMerge?: (node: PromptFileMergeNode) => Awaitable; + stringTemplate?: (node: PromptStringTemplateNode) => Awaitable; + outputProcessor?: (node: PromptOutputProcessorNode) => Awaitable; + assistant?: (node: PromptAssistantNode) => Awaitable; + system?: (node: PromptSystemNode) => Awaitable; + chatParticipant?: (node: PromptChatParticipantNode) => Awaitable; + fileOutput?: (node: FileOutputNode) => Awaitable; + importTemplate?: (node: PromptImportTemplate) => Awaitable; + mcpServer?: (node: PromptMcpServerNode) => Awaitable; +} +export declare function visitNode(node: PromptNode, visitor: PromptNodeVisitor): Promise; +interface PromptNodeRender { + images: PromptImage[]; + errors: unknown[]; + schemas: Record; + tools: ToolCallback[]; + fileMerges: FileMergeHandler[]; + outputProcessors: PromptOutputProcessorHandler[]; + chatParticipants: ChatParticipant[]; + messages: ChatCompletionMessageParam[]; + fileOutputs: FileOutput[]; + prediction: PromptPrediction; + disposables: AsyncDisposable[]; +} +/** + * Resolves and returns the default fence format. + * + * @param modelId - The identifier of the model. This parameter is currently unused. + * @returns The default fence format. + */ +export declare function resolveFenceFormat(modelId: string): FenceFormat; +/** + * Main function to render a prompt node. + * + * Resolves, deduplicates, flexes, truncates, and validates the prompt node. + * Handles various node types including text, system, assistant, schemas, tools, images, file merges, outputs, chat participants, MCP servers, and more. + * Supports tracing, safety validation, token management, and MCP server integration. + * + * Parameters: + * - modelId: Identifier for the model. + * - node: The prompt node to render. + * - options: Optional configurations for model templates, tracing, cancellation, token flexibility, and MCP server handling. + * + * Returns: + * - A rendered prompt node with associated metadata, messages, resources, tools, errors, disposables, schemas, images, file outputs, and prediction. + */ +export declare function renderPromptNode(modelId: string, node: PromptNode, options?: ModelTemplateOptions & TraceOptions & CancellationOptions): Promise; +/** + * Finalizes chat messages for processing. + * + * @param messages - The list of chat messages to finalize. + * @param options - Additional configuration options. + * - fileOutputs: Rules for generating file outputs, described as pattern-description pairs. + * - responseType: The type of response expected (e.g., JSON, YAML). + * - responseSchema: Schema for validating or generating response objects. + * - trace: Object for logging trace information during processing. + * - secretScanning: Whether to run secret scanning on the messages to redact sensitive information. + * + * Adds system messages for file generation rules and response schema if specified. + * Validates and adjusts chat messages based on schema requirements. + * Scans and redacts secrets from messages when enabled. + * + * @returns An object containing response type and schema details. + */ +export declare function finalizeMessages(model: string, messages: ChatCompletionMessageParam[], options: { + fileOutputs?: FileOutput[]; +} & ModelOptions & TraceOptions & ContentSafetyOptions & SecretDetectionOptions): { + responseType: import("./types.js").PromptTemplateResponseType; + responseSchema: JSONSchemaObject; +}; +export {}; +//# sourceMappingURL=promptdom.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptdom.d.ts.map b/packages/core/.tshy-build/browser/promptdom.d.ts.map new file mode 100644 index 0000000000..e9d78dce1c --- /dev/null +++ b/packages/core/.tshy-build/browser/promptdom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"promptdom.d.ts","sourceRoot":"","sources":["../../src/promptdom.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptdom.js b/packages/core/.tshy-build/browser/promptdom.js new file mode 100644 index 0000000000..1bc345022e --- /dev/null +++ b/packages/core/.tshy-build/browser/promptdom.js @@ -0,0 +1,1171 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Importing various utility functions and constants from different modules. +import { dataToMarkdownTable, CSVTryParse } from "./csv.js"; +import { renderFileContent, resolveFileContent } from "./file.js"; +import { addLineNumbers, extractRange } from "./liner.js"; +import { JSONSchemaStringifyToTypeScript } from "./schema.js"; +import { approximateTokens, truncateTextToTokens } from "./tokens.js"; +import { assert } from "./assert.js"; +import { arrayify } from "./cleaners.js"; +import { ellipse, logError, toStringList } from "./util.js"; +import { YAMLStringify } from "./yaml.js"; +import { DEFAULT_FENCE_FORMAT, MARKDOWN_PROMPT_FENCE, PROMPT_FENCE, PROMPTDOM_PREVIEW_MAX_LENGTH, PROMPTY_REGEX, SANITIZED_PROMPT_INJECTION, SCHEMA_DEFAULT_FORMAT, TEMPLATE_ARG_DATA_SLICE_SAMPLE, TEMPLATE_ARG_FILE_MAX_TOKENS, } from "./constants.js"; +import { appendAssistantMessage, appendSystemMessage, appendUserMessage } from "./chat.js"; +import { errorMessage } from "./error.js"; +import { sliceData, tidyData } from "./tidy.js"; +import { dedent } from "./indent.js"; +import { resolveTokenEncoder } from "./encoders.js"; +import { expandFileOrWorkspaceFiles } from "./fs.js"; +import { interpolateVariables } from "./mustache.js"; +import { diffCreatePatch } from "./diff.js"; +import { promptyParse } from "./prompty.js"; +import { jinjaRenderChatMessage } from "./jinja.js"; +import { resolveRuntimeHost } from "./host.js"; +import { hash } from "./crypto.js"; +import { tryZodToJsonSchema } from "./zod.js"; +import { GROQEvaluate } from "./groq.js"; +import { trimNewlines } from "./unwrappers.js"; +import { promptParametersSchemaToJSONSchema } from "./parameters.js"; +import { redactSecrets } from "./secretscanner.js"; +import { escapeToolName } from "./tools.js"; +import { measure } from "./performance.js"; +import debug from "debug"; +import { imageEncodeForLLM } from "./image.js"; +import { providerFeatures } from "./features.js"; +import { parseModelIdentifier } from "./models.js"; +const dbg = debug("genaiscript:prompt:dom"); +const dbgMcp = debug("genaiscript:prompt:dom:mcp"); +/** + * Creates a text node with the specified value and optional context expansion options. + * + * @param value - The string value for the text node. Must not be undefined. Can be awaitable. + * @param options - Configuration for context expansion. Optional. + * @returns A text node object with the specified value and options. + */ +export function createTextNode(value, options) { + assert(value !== undefined); // Ensure value is defined + return { type: "text", value, ...(options || {}) }; +} +/** + * Converts a definition name to a reference name based on the fence format. + * + * @param name - The name of the definition. If null or empty, no conversion occurs. + * @param options - Configuration options, including the desired fence format. + * If the `fenceFormat` is "xml", the name is wrapped in XML-like tags. + * @returns The converted reference name, wrapped in XML tags if applicable. + */ +export function toDefRefName(name, options) { + return name && options?.fenceFormat === "xml" ? `<${name}>` : name; +} +// Function to create a definition node. +export function createDef(name, file, options) { + name = name ?? ""; + const render = async () => { + await resolveFileContent(file, options); + const res = await renderFileContent(file, options); + return res; + }; + const value = render(); + return { type: "def", name, value, ...(options || {}) }; +} +function cloneContextFields(n) { + const r = {}; + r.maxTokens = n.maxTokens; + r.priority = n.priority; + r.flex = n.flex; + r.cacheControl = n.cacheControl; + return r; +} +/** + * Creates a definition node representing a diff between two files or strings. + * + * @param name - The name of the diff node. + * @param left - The left-hand input to compare, can be a string or a file. + * @param right - The right-hand input to compare, can be a string or a file. + * @param options - Additional options for rendering, tracing, and handling the diff node. + * @returns A prompt definition node containing the diff results. + */ +export function createDefDiff(name, left, right, options) { + name = name ?? ""; + if (typeof left === "string") + left = { filename: "", content: left }; + if (typeof right === "string") + right = { filename: "", content: right }; + if (left?.content === undefined) + left = { filename: "", content: YAMLStringify(left) }; + if (right?.content === undefined) + right = { filename: "", content: YAMLStringify(right) }; + const render = async () => { + await resolveFileContent(left, options); + const l = await renderFileContent(left, options); + await resolveFileContent(right, options); + const r = await renderFileContent(right, options); + return { filename: "", content: diffCreatePatch(l, r) }; + }; + const value = render(); + return { type: "def", name, value, ...(options || {}) }; +} +// Function to render a definition node to a string. +function renderDefNode(def) { + const { name, resolved, language, lineNumbers, lineNumbersStart, schema, prediction } = def; + const { filename, content = "" } = resolved; + let fenceFormat = def.fenceFormat; + const norm = (s, lang) => { + let r = (s || "").replace(/\n*$/, ""); + if (r && lineNumbers && !prediction) + r = addLineNumbers(r, { language: lang, startLine: lineNumbersStart }); + if (r) + r += "\n"; + return r; + }; + const dtype = language || /\.([^.]+)$/i.exec(filename)?.[1] || ""; + let body = content; + if (/^(c|t)sv$/i.test(dtype)) { + const parsed = !/^\s*|/.test(content) && CSVTryParse(content); + if (parsed) { + body = dataToMarkdownTable(parsed); + fenceFormat = "none"; + } + } + body = norm(body, dtype); + const diffFormat = ""; + // body.length > 500 && !prediction + // ? " preferred_output_format=CHANGELOG" + // : "" + let res; + if (name && fenceFormat === "xml") { + res = `\n<${name}${dtype ? ` lang="${dtype}"` : ""}${filename ? ` file="${filename}"` : ""}${schema ? ` schema=${schema}` : ""}${diffFormat}>\n${body}\n`; + } + else if (fenceFormat === "none") { + res = `\n${name ? name + ":\n" : ""}${body}\n`; + } + else { + const fence = language === "markdown" || language === "mdx" ? MARKDOWN_PROMPT_FENCE : PROMPT_FENCE; + let dfence = /\.mdx?$/i.test(filename) || content?.includes(fence) ? MARKDOWN_PROMPT_FENCE : fence; + while (dfence && body.includes(dfence)) { + dfence += "`"; + } + res = + "\n" + + (name ? name + ":\n" : "") + + dfence + + dtype + + (filename ? ` file="${filename}"` : "") + + (schema ? ` schema=${schema}` : "") + + diffFormat + + "\n" + + body + + dfence + + "\n"; + } + return res; +} +async function renderDefDataNode(n) { + const { name, headers, priority, cacheControl, query } = n; + let data = n.resolved; + let format = n.format; + if (!format && + Array.isArray(data) && + data.length && + (headers?.length || haveSameKeysAndSimpleValues(data))) + format = "csv"; + else if (!format) + format = "yaml"; + if (Array.isArray(data)) + data = tidyData(data, n); + else if (typeof data === "object" && (n.sliceHead || n.sliceTail || n.sliceSample)) { + const entries = Object.entries(data); + const sliced = sliceData(entries, n); + data = Object.fromEntries(sliced); + } + if (query) + data = await GROQEvaluate(query, data); + let text; + let lang; + if (Array.isArray(data) && format === "csv") { + text = dataToMarkdownTable(data); + } + else if (format === "json") { + text = JSON.stringify(data); + lang = "json"; + } + else { + text = YAMLStringify(data); + lang = "yaml"; + } + const value = lang + ? `<${name} lang="${lang}"> +${trimNewlines(text)} +<${name}> +` + : `${name}: +${trimNewlines(text)} +`; + // TODO maxTokens does not work well with data + return value; +} +/** + * Creates a node representing an assistant message in a prompt. + * @param value The content of the assistant message. Must be defined and resolvable. + * @param options Optional settings for context expansion. Defaults to an empty object if not provided. + * @returns The created assistant node. + */ +export function createAssistantNode(value, options) { + assert(value !== undefined); + return { type: "assistant", value, ...(options || {}) }; +} +/** + * Creates a system node with the specified content and optional context expansion settings. + * + * @param value - The content of the system node, which can be provided asynchronously. Must be defined. + * @param options - Optional configuration for context expansion, including token limits and priority. + * @returns A system node object containing the specified content and options. + */ +export function createSystemNode(value, options) { + assert(value !== undefined); + return { type: "system", value, ...(options || {}) }; +} +/** + * Creates a string template node with the given template strings, arguments, and optional settings. + * + * @param strings - The template literal strings to include in the node. + * @param args - The arguments to interpolate into the template. + * @param options - Optional settings for context expansion or additional properties to include in the node. + * @returns The created string template node. + */ +export function createStringTemplateNode(strings, args, options) { + assert(strings !== undefined); + return { + type: "stringTemplate", + strings, + args, + transforms: [], + ...(options || {}), + }; +} +/** + * Creates an image node with the specified value and optional context expansion options. + * + * @param value - The image data or prompt used to create the node. Must not be null or undefined. + * @param options - Optional context expansion options to include in the node. + * @returns The created image node. + */ +export function createImageNode(value, options) { + assert(value !== undefined); + return { type: "image", value, ...(options || {}) }; +} +export function createFileImageNodes(name, file, defOptions, options) { + const { trace, cancellationToken } = options || {}; + const filename = file.filename && !/^data:\/\//.test(file.filename) ? file.filename : undefined; + return [ + name ? createTextNode(`<${name}${filename ? ` filename="${filename}"` : ``}>`) : undefined, + createImageNode((async () => { + const encoded = await imageEncodeForLLM(file, { + ...(defOptions || {}), + cancellationToken, + trace, + }); + return { + filename: file.filename, + ...encoded, + }; + })()), + name ? createTextNode(``) : undefined, + ].filter((n) => !!n); +} +/** + * Creates a schema node with a specified name, value, and optional configuration. + * + * Parameters: + * - name: The name of the schema node. Must not be empty. Throws if empty. + * - value: The schema definition or a Zod type to be converted to JSON Schema. Automatically converts Zod types if applicable. Must not be undefined. Throws if undefined. + * - options: Optional configuration for the schema node. + */ +export function createSchemaNode(name, value, options) { + assert(!!name); + assert(value !== undefined); + // auto zod conversion + value = tryZodToJsonSchema(value) ?? value; + return { type: "schema", name, value, options }; +} +// Function to create a function node. +export function createToolNode(name, description, parameters, impl, options, generator) { + assert(!!name); + assert(!!description); + assert(parameters !== undefined); + assert(impl !== undefined); + return { + type: "tool", + name, + description: dedent(description), + parameters, + impl, + options, + generator, + }; +} +// Function to create a file merge node. +export function createFileMerge(fn) { + assert(fn !== undefined); + return { type: "fileMerge", fn }; +} +/** + * Creates and returns an output processor node with a specified handler function. + * + * @param fn - The handler function to process prompt outputs. Must not be undefined. Throws an error if undefined. + * @returns An output processor node containing the handler function. + */ +export function createOutputProcessor(fn) { + assert(fn !== undefined); + return { type: "outputProcessor", fn }; +} +/** + * Creates a node representing a chat participant. + * @param participant - The chat participant to represent in the node. + * @returns A node object with the participant's details. + */ +export function createChatParticipant(participant) { + return { type: "chatParticipant", participant }; +} +/** + * Creates a file output node with the specified output. + * @param output - The file output to include in the node. + * @returns A file output node containing the specified output. + */ +export function createFileOutput(output) { + return { type: "fileOutput", output }; +} +// Function to create an import template node. +export function createImportTemplate(files, args, options) { + assert(!!files); + return { + type: "importTemplate", + files, + args: args || {}, + options, + }; +} +/** + * Creates a node representing an MCP (Multiple Connection Protocol) server with specified configurations. + * + * @param id - Unique identifier for the MCP server. + * @param config - Configuration object containing details necessary for the MCP server setup. + * @param options - Optional additional parameters or settings for server configuration. + * @returns An MCP server node configured with the provided details. + */ +export function createMcpServer(id, config, options, generator) { + return { + type: "mcpServer", + config: { ...config, generator, id, options }, + }; +} +export function createMcpClient(client) { + return { + type: "mcpServer", + client, + }; +} +// Function to check if data objects have the same keys and simple values. +function haveSameKeysAndSimpleValues(data) { + if (data.length === 0) + return true; + const headers = Object.entries(data[0]); + return data.slice(1).every((obj) => { + const keys = Object.entries(obj); + return (headers.length === keys.length && + headers.every((h, i) => keys[i][0] === h[0] && /^(string|number|boolean|null|undefined)$/.test(typeof keys[i][1]))); + }); +} +// Function to create a text node with data. +export function createDefData(name, value, options) { + if (value === undefined) + return undefined; + return { + type: "defData", + name, + value, + ...(options || {}), + }; +} +// Function to append a child node to a parent node. +export function appendChild(parent, ...children) { + if (!parent.children) { + parent.children = []; + } + parent.children.push(...children); +} +// Function to visit nodes in the prompt tree. +export async function visitNode(node, visitor) { + await visitor.node?.(node); + switch (node.type) { + case "text": + await visitor.text?.(node); + break; + case "def": + await visitor.def?.(node); + break; + case "defData": + await visitor.defData?.(node); + break; + case "image": + await visitor.image?.(node); + break; + case "schema": + await visitor.schema?.(node); + break; + case "tool": + await visitor.tool?.(node); + break; + case "fileMerge": + await visitor.fileMerge?.(node); + break; + case "outputProcessor": + await visitor.outputProcessor?.(node); + break; + case "stringTemplate": + await visitor.stringTemplate?.(node); + break; + case "assistant": + await visitor.assistant?.(node); + break; + case "system": + await visitor.system?.(node); + break; + case "chatParticipant": + await visitor.chatParticipant?.(node); + break; + case "fileOutput": + await visitor.fileOutput?.(node); + break; + case "importTemplate": + await visitor.importTemplate?.(node); + break; + case "mcpServer": + await visitor.mcpServer?.(node); + break; + } + if (node.error) + visitor.error?.(node); + if (!node.error && !node.deleted && node.children) { + for (const child of node.children) { + await visitNode(child, visitor); + } + node.children = node.children?.filter((c) => !c.deleted); + } + await visitor.afterNode?.(node); +} +/** + * Resolves and returns the default fence format. + * + * @param modelId - The identifier of the model. This parameter is currently unused. + * @returns The default fence format. + */ +export function resolveFenceFormat(modelId) { + return DEFAULT_FENCE_FORMAT; +} +// Function to resolve a prompt node. +async function resolvePromptNode(encoder, root, options) { + const { trace } = options || {}; + let err = 0; + const names = new Set(); + const uniqueName = (n_) => { + let i = 1; + let n = n_; + while (names.has(n)) { + n = `${n_}${i++}`; + } + names.add(n); + return n; + }; + await visitNode(root, { + error: (node) => { + logError(node.error); + err++; + }, + text: async (n) => { + try { + const value = await n.value; + n.resolved = n.preview = value; + n.tokens = approximateTokens(value); + } + catch (e) { + n.error = e; + } + }, + def: async (n) => { + try { + names.add(n.name); + const value = await n.value; + n.resolved = value; + n.resolved.content = extractRange(n.resolved.content, n); + const rendered = renderDefNode(n); + n.preview = rendered; + n.tokens = approximateTokens(rendered); + n.children = [createTextNode(rendered, cloneContextFields(n))]; + } + catch (e) { + n.error = e; + } + }, + defData: async (n) => { + try { + names.add(n.name); + const value = await n.value; + n.resolved = value; + const rendered = await renderDefDataNode(n); + n.preview = rendered; + n.tokens = approximateTokens(rendered); + n.children = [createTextNode(rendered, cloneContextFields(n))]; + } + catch (e) { + n.error = e; + } + }, + system: async (n) => { + try { + const value = await n.value; + n.resolved = n.preview = value; + n.tokens = approximateTokens(value); + } + catch (e) { + n.error = e; + } + }, + assistant: async (n) => { + try { + const value = await n.value; + n.resolved = n.preview = value; + n.tokens = approximateTokens(value); + } + catch (e) { + n.error = e; + } + }, + stringTemplate: async (n) => { + const { strings, args } = n; + try { + const resolvedStrings = await strings; + const resolvedArgs = []; + for (const arg of args) { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let ra = await arg; + if (typeof ra === "function") + ra = ra(); + ra = await ra; + // Render files + if (typeof ra === "object") { + if (ra.filename) { + n.children = [ + ...(n.children ?? []), + createDef(ra.filename, ra, { + ignoreEmpty: true, + maxTokens: TEMPLATE_ARG_FILE_MAX_TOKENS, + }), + ]; + ra = ra.filename; + } + else if ( + // env.files + Array.isArray(ra) && + ra.every((r) => typeof r === "object" && r.filename)) { + // env.files + const fname = uniqueName("FILES"); + n.children = n.children ?? []; + for (const r of ra) { + n.children.push(createDef(fname, r, { + ignoreEmpty: true, + maxTokens: TEMPLATE_ARG_FILE_MAX_TOKENS, + })); + } + ra = fname; + } + else { + const dname = uniqueName("DATA"); + n.children = [ + ...(n.children ?? []), + createDefData(dname, ra, { + sliceSample: TEMPLATE_ARG_DATA_SLICE_SAMPLE, + }), + ]; + ra = dname; + } + } + resolvedArgs.push(ra ?? ""); + } + catch (e) { + n.error = e; + resolvedArgs.push(errorMessage(e)); + } + } + let value = dedent(resolvedStrings, ...resolvedArgs); + if (n.transforms?.length) + for (const transform of n.transforms) + value = await transform(value); + n.resolved = n.preview = value; + n.tokens = approximateTokens(value); + } + catch (e) { + n.error = e; + } + }, + importTemplate: async (n) => { + try { + const { files, args, options } = n; + n.children = []; + n.preview = ""; + const fs = await expandFileOrWorkspaceFiles(arrayify(files)); + if (fs.length === 0) + throw new Error(`No files found for import: ${files}`); + const resolvedArgs = {}; + for (const argkv of Object.entries(args || {})) { + // eslint-disable-next-line prefer-const + let [argk, argv] = argkv; + if (typeof argv === "function") + argv = argv(); + resolvedArgs[argk] = await argv; + } + for (const f of fs) { + await resolveFileContent(f, { + ...(options || {}), + trace, + }); + if (PROMPTY_REGEX.test(f.filename)) + await resolveImportPrompty(n, f, resolvedArgs, options); + else { + const rendered = await interpolateVariables(f.content, resolvedArgs, n.options); + n.children.push(createTextNode(rendered)); + n.preview += rendered + "\n"; + } + } + n.tokens = approximateTokens(n.preview); + } + catch (e) { + n.error = e; + } + }, + image: async (n) => { + try { + const v = await n.value; + n.resolved = v; + n.preview = "image"; // TODO + } + catch (e) { + n.error = e; + } + }, + }); + return { errors: err }; +} +async function resolveImportPrompty(n, f, args, options) { + const { allowExtraArguments } = options || {}; + const { messages, meta } = promptyParse(f.filename, f.content); + const { parameters } = meta; + args = args || {}; + const extra = Object.keys(args).find((arg) => !parameters?.[arg]); + if (extra) { + dbg(`extra argument ${extra} in ${f.filename}`); + if (!allowExtraArguments) { + const msg = `Extra input argument '${extra}'.`; + throw new Error(msg); + } + } + if (parameters) { + const missings = Object.keys(parameters).filter((p) => args[p] === undefined); + if (missings.length > 0) + throw new Error(`Missing input argument for '${missings.join(", ")}' in ${f.filename}`); + } + for (const message of messages) { + const txt = jinjaRenderChatMessage(message, args); + if (message.role === "assistant") + n.children.push(createAssistantNode(txt)); + else if (message.role === "system") + n.children.push(createSystemNode(txt)); + else + n.children.push(createTextNode(txt)); + n.preview += txt + "\n"; + } +} +// Function to handle truncation of prompt nodes based on token limits. +async function truncatePromptNode(encoder, node, options) { + const { trace } = options || {}; + let truncated = false; + const cap = (n) => { + if (!n.error && + n.resolved !== undefined && + n.maxTokens !== undefined && + n.tokens > n.maxTokens) { + n.resolved = n.preview = truncateTextToTokens(n.resolved, n.maxTokens, encoder, { + tokens: n.tokens, + }); + n.tokens = approximateTokens(n.resolved); + truncated = true; + trace?.log(`truncated text to ${n.tokens} tokens (max ${n.maxTokens})`); + } + }; + const capDef = (n) => { + if (!n.error && + n.resolved !== undefined && + n.maxTokens !== undefined && + n.tokens > n.maxTokens) { + n.resolved.content = truncateTextToTokens(n.resolved.content, n.maxTokens, encoder, { + tokens: n.tokens, + }); + n.tokens = approximateTokens(n.resolved.content); + const rendered = renderDefNode(n); + n.preview = rendered; + n.children = [createTextNode(rendered, cloneContextFields(n))]; + truncated = true; + trace?.log(`truncated def ${n.name} to ${n.tokens} tokens (max ${n.maxTokens})`); + } + }; + await visitNode(node, { + text: cap, + assistant: cap, + stringTemplate: cap, + def: capDef, + }); + return truncated; +} +// Function to adjust token limits for nodes with flexibility. +async function flexPromptNode(root, options) { + const PRIORITY_DEFAULT = 0; + const { trace, flexTokens } = options || {}; + let log = ""; + // Collect all nodes + const nodes = []; + await visitNode(root, { + node: (n) => { + nodes.push(n); + }, + }); + const totalTokens = nodes.reduce((total, node) => total + (node.tokens ?? 0), 0); + if (totalTokens <= flexTokens) { + // No need to flex + return; + } + // Inspired from priompt, prompt-tsx, gpt-4 + // Sort by priority + nodes.sort((a, b) => (a.priority ?? PRIORITY_DEFAULT) - (b.priority ?? PRIORITY_DEFAULT)); + const flexNodes = nodes.filter((n) => n.flex !== undefined); + const totalFlexTokens = flexNodes.reduce((total, node) => total + (node.tokens ?? 0), 0); + // checking flexNodes sizes + if (totalFlexTokens <= flexTokens) { + return; + } + const totalFlex = flexNodes.reduce((total, node) => total + node.flex, 0); + const totalReserve = 0; + const totalRemaining = Math.max(0, flexTokens - totalReserve); + for (const node of flexNodes) { + const proportion = node.flex / totalFlex; + const tokenBudget = Math.min(node.maxTokens ?? Infinity, Math.floor(totalRemaining * proportion)); + node.maxTokens = tokenBudget; + log += `- flexed ${node.type} ${node.name || ""} to ${tokenBudget} tokens\n`; + } + if (log) + trace?.details(`flexing`, log); +} +// Function to trace the prompt node structure for debugging. +async function tracePromptNode(trace, root, options) { + if (!trace || !root.children?.length) + return; + await visitNode(root, { + node: (n) => { + const error = errorMessage(n.error); + let title = toStringList(n.type || `🌳 promptdom ${options?.label || ""}`, n.priority ? `#${n.priority}` : undefined); + const value = toStringList(n.tokens ? `${n.tokens}${n.maxTokens ? `/${n.maxTokens}` : ""}t` : undefined, error); + if (value.length > 0) + title += `: ${value}`; + if (n.children?.length || n.preview) { + trace?.startDetails(title, { + success: n.error ? false : undefined, + }); + if (n.preview) + trace?.fence(ellipse(n.preview, PROMPTDOM_PREVIEW_MAX_LENGTH), "markdown"); + } + else + trace?.resultItem(!n.error, title); + if (n.error) + trace?.error(undefined, n.error); + }, + afterNode: (n) => { + if (n.children?.length || n.preview) + trace?.endDetails(); + }, + }); +} +async function validateSafetyPromptNode(trace, root) { + const runtimeHost = resolveRuntimeHost(); + let mod = false; + let _contentSafety; + const resolveContentSafety = async () => { + if (!_contentSafety) + _contentSafety = (await runtimeHost.contentSafety(undefined, { + trace, + })) || { id: undefined }; + return _contentSafety.detectPromptInjection; + }; + await visitNode(root, { + def: async (n) => { + if (!n.detectPromptInjection || !n.resolved?.content) + return; + const detectPromptInjectionFn = await resolveContentSafety(); + if ((!detectPromptInjectionFn && n.detectPromptInjection === true) || + n.detectPromptInjection === "always") + throw new Error("content safety service not available"); + const { attackDetected } = (await detectPromptInjectionFn?.(n.resolved)) || {}; + if (attackDetected) { + mod = true; + n.resolved = { + filename: n.resolved.filename, + content: SANITIZED_PROMPT_INJECTION, + }; + n.preview = SANITIZED_PROMPT_INJECTION; + n.children = []; + n.error = `safety: prompt injection detected`; + trace?.error(`safety: prompt injection detected in ${n.resolved.filename}`); + } + }, + defData: async (n) => { + if (!n.detectPromptInjection || !n.preview) + return; + const detectPromptInjectionFn = await resolveContentSafety(); + if ((!detectPromptInjectionFn && n.detectPromptInjection === true) || + n.detectPromptInjection === "always") + throw new Error("content safety service not available"); + const { attackDetected } = (await detectPromptInjectionFn?.(n.preview)) || {}; + if (attackDetected) { + mod = true; + n.children = []; + n.preview = SANITIZED_PROMPT_INJECTION; + n.error = `safety: prompt injection detected`; + trace?.error(`safety: prompt injection detected in data`); + } + }, + }); + return mod; +} +async function deduplicatePromptNode(trace, root) { + let mod = false; + const defs = new Set(); + await visitNode(root, { + def: async (n) => { + const key = await hash(n); + if (defs.has(key)) { + trace?.log(`duplicate definition and content: ${n.name}`); + n.deleted = true; + mod = true; + } + else { + defs.add(key); + } + }, + defData: async (n) => { + const key = await hash(n); + if (defs.has(key)) { + trace?.log(`duplicate definition and content: ${n.name}`); + n.deleted = true; + mod = true; + } + else { + defs.add(key); + } + }, + }); + return mod; +} +/** + * Main function to render a prompt node. + * + * Resolves, deduplicates, flexes, truncates, and validates the prompt node. + * Handles various node types including text, system, assistant, schemas, tools, images, file merges, outputs, chat participants, MCP servers, and more. + * Supports tracing, safety validation, token management, and MCP server integration. + * + * Parameters: + * - modelId: Identifier for the model. + * - node: The prompt node to render. + * - options: Optional configurations for model templates, tracing, cancellation, token flexibility, and MCP server handling. + * + * Returns: + * - A rendered prompt node with associated metadata, messages, resources, tools, errors, disposables, schemas, images, file outputs, and prediction. + */ +export async function renderPromptNode(modelId, node, options) { + const { trace, flexTokens } = options || {}; + const runtimeHost = resolveRuntimeHost(); + const { encode: encoder } = await resolveTokenEncoder(modelId); + let m = measure("prompt.dom.resolve"); + await resolvePromptNode(encoder, node, options); + await tracePromptNode(trace, node); + m(); + m = measure("prompt.dom.deduplicate"); + if (await deduplicatePromptNode(trace, node)) + await tracePromptNode(trace, node, { label: "deduplicate" }); + m(); + m = measure("prompt.dom.flex"); + if (flexTokens) + await flexPromptNode(node, { + ...options, + flexTokens, + }); + m(); + m = measure("prompt.dom.truncate"); + const truncated = await truncatePromptNode(encoder, node, options); + if (truncated) + await tracePromptNode(trace, node, { label: "truncated" }); + m(); + m = measure("prompt.dom.validate"); + const safety = await validateSafetyPromptNode(trace, node); + if (safety) + await tracePromptNode(trace, node, { label: "safety" }); + m(); + const messages = []; + const appendSystem = (content, options) => appendSystemMessage(messages, content, options); + const appendUser = (content, options) => appendUserMessage(messages, content, options); + const appendAssistant = (content, options) => appendAssistantMessage(messages, content, options); + const images = []; + const errors = []; + const schemas = {}; + const tools = []; + const fileMerges = []; + const outputProcessors = []; + const chatParticipants = []; + const fileOutputs = []; + const mcpServerConfigs = []; + const mcpClients = []; + const disposables = []; + let prediction; + m = measure("prompt.dom.render"); + await visitNode(node, { + error: (n) => { + errors.push(n.error); + }, + text: async (n) => { + if (n.resolved !== undefined) + appendUser(n.resolved, n); + else if (typeof n.value === "string") + appendUser(n.value, n); + }, + def: async (n) => { + const value = n.resolved; + if (value !== undefined) { + if (n.prediction) { + if (prediction) + n.error = "duplicate prediction"; + else + prediction = { + type: "content", + content: extractRange(value.content, n), + }; + } + } + }, + assistant: async (n) => { + const value = await n.resolved; + if (value != undefined) + appendAssistant(value, n); + }, + system: async (n) => { + const value = await n.resolved; + if (value != undefined) + appendSystem(value, n); + }, + stringTemplate: async (n) => { + const value = n.resolved; + const role = n.role || "user"; + if (value != undefined) { + if (role === "system") + appendSystem(value, n); + else if (role === "assistant") + appendAssistant(value, n); + else + appendUser(value, n); + } + }, + image: async (n) => { + const value = n.resolved; + if (value?.url) { + images.push(value); + appendUser(value, n); + } + }, + schema: (n) => { + const { name: schemaName, value: schema, options } = n; + if (schemas[schemaName]) + trace?.error("duplicate schema name: " + schemaName); + schemas[schemaName] = schema; + const { format = SCHEMA_DEFAULT_FORMAT } = options || {}; + let schemaText; + switch (format) { + case "json": + schemaText = JSON.stringify(schema, null, 2); + break; + case "yaml": + schemaText = YAMLStringify(schema); + break; + default: + schemaText = JSONSchemaStringifyToTypeScript(schema, { + typeName: schemaName, + }); + break; + } + const text = `<${schemaName} lang="${format}-schema"> +${trimNewlines(schemaText)} +`; + appendUser(text, n); + n.tokens = approximateTokens(text); + if (trace && format !== "json") + trace?.detailsFenced(`🧬 schema ${schemaName} as ${format}`, schemaText, format); + }, + tool: (n) => { + const { description, parameters, impl: fn, options, generator } = n; + const { variant, variantDescription } = options || {}; + const name = escapeToolName(variant ? `${n.name}_${variant}` : n.name); + tools.push({ + spec: { + name, + description: variantDescription || description, + parameters, + }, + generator, + impl: fn, + options, + }); + trace?.detailsFenced(`🛠️ tool ${name}`, { description, parameters }, "yaml"); + }, + fileMerge: (n) => { + fileMerges.push(n.fn); + trace?.itemValue(`file merge`, n.fn); + }, + outputProcessor: (n) => { + outputProcessors.push(n.fn); + trace?.itemValue(`output processor`, n.fn.name); + }, + chatParticipant: (n) => { + chatParticipants.push(n.participant); + trace?.itemValue(`chat participant`, n.participant.options?.label || n.participant.generator.name); + }, + fileOutput: (n) => { + fileOutputs.push(n.output); + trace?.itemValue(`file output`, n.output.pattern); + }, + mcpServer: (n) => { + if (n.config) { + mcpServerConfigs.push(n.config); + trace?.itemValue(`mcp server`, n.config.id); + } + if (n.client) { + mcpClients.push(n.client); + trace?.itemValue(`mcp client`, n.client.config.id); + } + }, + }); + if (mcpServerConfigs.length) { + for (const mcpServer of mcpServerConfigs) { + dbgMcp(`starting server ${mcpServer.id}`); + const res = await runtimeHost.mcp.startMcpServer(mcpServer, { + trace, + }); + disposables.push(res); + const mcpTools = await res.listToolCallbacks(); + dbgMcp(`tools %O`, mcpTools?.map((t) => t.spec.name)); + tools.push(...mcpTools); + } + } + if (mcpClients.length) { + for (const mcpClient of mcpClients) { + dbgMcp(`using client ${mcpClient.config.id}`); + const mcpTools = await mcpClient.listToolCallbacks(); + dbgMcp(`tools %O`, mcpTools?.map((t) => t.spec.name)); + tools.push(...mcpTools); + } + } + m(); + const res = Object.freeze({ + images, + schemas, + tools, + fileMerges, + outputProcessors, + chatParticipants, + errors, + messages, + fileOutputs, + prediction, + disposables, + }); + dbg(`${res.messages.length} messages, tools: %o`, res.tools.map((t) => t.spec.name)); + return res; +} +/** + * Finalizes chat messages for processing. + * + * @param messages - The list of chat messages to finalize. + * @param options - Additional configuration options. + * - fileOutputs: Rules for generating file outputs, described as pattern-description pairs. + * - responseType: The type of response expected (e.g., JSON, YAML). + * - responseSchema: Schema for validating or generating response objects. + * - trace: Object for logging trace information during processing. + * - secretScanning: Whether to run secret scanning on the messages to redact sensitive information. + * + * Adds system messages for file generation rules and response schema if specified. + * Validates and adjusts chat messages based on schema requirements. + * Scans and redacts secrets from messages when enabled. + * + * @returns An object containing response type and schema details. + */ +export function finalizeMessages(model, messages, options) { + dbg(`finalize messages for ${model}`); + const m = measure("prompt.dom.finalize"); + const { fileOutputs, trace, secretScanning } = options || {}; + if (fileOutputs?.length > 0) { + appendSystemMessage(messages, ` +## File generation rules + +When generating files, use the following rules which are formatted as "file glob: description": + +${fileOutputs.map((fo) => ` ${fo.pattern}: ${fo.description || "generated file"}`)} +`); + } + const responseSchema = promptParametersSchemaToJSONSchema(options.responseSchema); + let responseType = options.responseType; + if (responseSchema && !responseType && responseType !== "json_schema") { + const { provider } = parseModelIdentifier(model); + const features = providerFeatures(provider); + responseType = features?.responseType || "json"; + dbg(`response type: %s (auto)`, responseType); + } + if (responseType) + trace?.itemValue(`response type`, responseType); + if (responseSchema) { + trace?.detailsFenced("📜 response schema", responseSchema); + if (responseType !== "json_schema") { + const typeName = "Output"; + const schemaTs = JSONSchemaStringifyToTypeScript(responseSchema, { + typeName, + }); + appendSystemMessage(messages, `## Output Schema +You are a service that translates user requests +into ${responseType === "yaml" ? "YAML" : "JSON"} objects of type "${typeName}" +according to the following TypeScript definitions: +<${typeName}> +${schemaTs} +`); + } + } + if (secretScanning !== false) { + // this is a bit brutal, but we don't want to miss secrets + // hidden in fields + const secrets = redactSecrets(JSON.stringify(messages), { trace }); + if (Object.keys(secrets.found).length) { + const newMessage = JSON.parse(secrets.text); + messages.splice(0, messages.length, ...newMessage); + } + } + m(); + return { + responseType, + responseSchema, + }; +} +//# sourceMappingURL=promptdom.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptdom.js.map b/packages/core/.tshy-build/browser/promptdom.js.map new file mode 100644 index 0000000000..fea076b27a --- /dev/null +++ b/packages/core/.tshy-build/browser/promptdom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promptdom.js","sourceRoot":"","sources":["../../src/promptdom.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,4EAA4E;AAC5E,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,4BAA4B,EAC5B,aAAa,EACb,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAsCnD,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAmKnD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAwB,EACxB,OAAiC;IAEjC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B;IACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAA2B;IACpE,OAAO,IAAI,IAAI,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAAmB,EACnB,OAAkC;IAElC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAa;IACvC,MAAM,CAAC,GAAG,EAAyB,CAAC;IACpC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IAC1B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACxB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAChC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,IAA4B,EAC5B,KAA6B,EAC7B,OAAuC;IAEvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAElB,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxE,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS;QAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACvF,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS;QAAE,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IAE1F,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,oDAAoD;AACpD,SAAS,aAAa,CAAC,GAAkB;IACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC5F,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC;IAC5C,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAElC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,UAAU;YACjC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC;YAAE,CAAC,IAAI,IAAI,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACnC,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,mCAAmC;IACnC,0CAA0C;IAC1C,UAAU;IAEV,IAAI,GAAW,CAAC;IAChB,IAAI,IAAI,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAClC,GAAG,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC;IACtK,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAClC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GACT,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC;QACvF,IAAI,MAAM,GACR,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;QACxF,OAAO,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,GAAG;YACD,IAAI;gBACJ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,MAAM;gBACN,KAAK;gBACL,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,UAAU;gBACV,IAAI;gBACJ,IAAI;gBACJ,MAAM;gBACN,IAAI,CAAC;IACT,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,CAAoB;IACnD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC;IACtB,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IACE,CAAC,MAAM;QACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM;QACX,CAAC,OAAO,EAAE,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,GAAG,KAAK,CAAC;SACZ,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,MAAM,CAAC;IAElC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,QAAQ,CAAC,IAAgB,EAAE,CAAC,CAAC,CAAC;SACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QACnF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK;QAAE,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAElD,IAAI,IAAY,CAAC;IACjB,IAAI,IAAY,CAAC;IACjB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5C,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI;QAChB,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI;EAC1B,YAAY,CAAC,IAAI,CAAC;GACjB,IAAI;CACN;QACG,CAAC,CAAC,GAAG,IAAI;EACX,YAAY,CAAC,IAAI,CAAC;CACnB,CAAC;IACA,8CAA8C;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,OAAiC;IAEjC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAwB,EACxB,OAAiC;IAEjC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA6B,EAC7B,IAAW,EACX,OAAiC;IAEjC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO;QACP,IAAI;QACJ,UAAU,EAAE,EAAE;QACd,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAA6B,EAC7B,OAAiC;IAEjC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,IAAmB,EACnB,UAA6B,EAC7B,OAA4C;IAE5C,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,OAAO;QACL,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1F,eAAe,CACb,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;gBAC5C,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;gBACrB,iBAAiB;gBACjB,KAAK;aACN,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,OAAO;aACX,CAAC;QACJ,CAAC,CAAC,EAAE,CACL;QACD,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,KAA+B,EAC/B,OAA0B;IAE1B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5B,sBAAsB;IACtB,KAAK,GAAG,kBAAkB,CAAC,KAAoB,CAAC,IAAK,KAAoB,CAAC;IAC1E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,WAAmB,EACnB,UAAsB,EACtB,IAAyB,EACzB,OAAuB,EACvB,SAAgC;IAEhC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtB,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC3B,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,UAAU;QACV,IAAI;QACJ,OAAO;QACP,SAAS;KACe,CAAC;AAC7B,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,eAAe,CAAC,EAAoB;IAClD,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACzB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAgC;IACpE,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACzB,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAA4B;IAChE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAA2B,CAAC;AACjE,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB,CAClC,KAA6C,EAC7C,IAAiD,EACjD,OAA+B;IAE/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK;QACL,IAAI,EAAE,IAAI,IAAI,EAAE;QAChB,OAAO;KACuB,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,MAAuB,EACvB,OAAuB,EACvB,SAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE;KAChB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,2BAA2B,CAAC,IAAc;IACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CACL,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAC9B,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5F,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,KAAmC,EACnC,OAAwB;IAExB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,GAAG,QAAsB;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AACpC,CAAC;AAwBD,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAgB,EAAE,OAA0B;IAC1E,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,IAAsB,CAAC,CAAC;YAC7C,MAAM;QACR,KAAK,KAAK;YACR,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAqB,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAyB,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,OAAO;YACV,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,IAAuB,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,IAAwB,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,IAAsB,CAAC,CAAC;YAC7C,MAAM;QACR,KAAK,WAAW;YACd,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAA2B,CAAC,CAAC;YACvD,MAAM;QACR,KAAK,iBAAiB;YACpB,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,IAAiC,CAAC,CAAC;YACnE,MAAM;QACR,KAAK,gBAAgB;YACnB,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,IAAgC,CAAC,CAAC;YACjE,MAAM;QACR,KAAK,WAAW;YACd,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAA2B,CAAC,CAAC;YACvD,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,IAAwB,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,iBAAiB;YACpB,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,IAAiC,CAAC,CAAC;YACnE,MAAM;QACR,KAAK,YAAY;YACf,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,IAAsB,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,gBAAgB;YACnB,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,IAA4B,CAAC,CAAC;YAC7D,MAAM;QACR,KAAK,WAAW;YACd,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAA2B,CAAC,CAAC;YACvD,MAAM;IACV,CAAC;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,qCAAqC;AACrC,KAAK,UAAU,iBAAiB,CAC9B,OAAqB,EACrB,IAAgB,EAChB,OAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAChC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAE;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC;QACR,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACf,IAAI,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACrB,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACnB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACrB,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBAC5B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC;gBACtC,MAAM,YAAY,GAAG,EAAE,CAAC;gBAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,8DAA8D;wBAC9D,IAAI,EAAE,GAAQ,MAAM,GAAG,CAAC;wBACxB,IAAI,OAAO,EAAE,KAAK,UAAU;4BAAE,EAAE,GAAG,EAAE,EAAE,CAAC;wBACxC,EAAE,GAAG,MAAM,EAAE,CAAC;wBAEd,eAAe;wBACf,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;4BAC3B,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gCAChB,CAAC,CAAC,QAAQ,GAAG;oCACX,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;oCACrB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE;wCACzB,WAAW,EAAE,IAAI;wCACjB,SAAS,EAAE,4BAA4B;qCACxC,CAAC;iCACH,CAAC;gCACF,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;4BACnB,CAAC;iCAAM;4BACL,YAAY;4BACZ,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gCACjB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EACpD,CAAC;gCACD,YAAY;gCACZ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gCAClC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oCACnB,CAAC,CAAC,QAAQ,CAAC,IAAI,CACb,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE;wCAClB,WAAW,EAAE,IAAI;wCACjB,SAAS,EAAE,4BAA4B;qCACxC,CAAC,CACH,CAAC;gCACJ,CAAC;gCACD,EAAE,GAAG,KAAK,CAAC;4BACb,CAAC;iCAAM,CAAC;gCACN,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gCACjC,CAAC,CAAC,QAAQ,GAAG;oCACX,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;oCACrB,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE;wCACvB,WAAW,EAAE,8BAA8B;qCAC5C,CAAC;iCACH,CAAC;gCACF,EAAE,GAAG,KAAK,CAAC;4BACb,CAAC;wBACH,CAAC;wBACD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;wBACZ,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBACD,IAAI,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,GAAG,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM;oBACtB,KAAK,MAAM,SAAS,IAAI,CAAC,CAAC,UAAU;wBAAE,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBACnC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAChB,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;gBACf,MAAM,EAAE,GAAoB,MAAM,0BAA0B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9E,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBAE5E,MAAM,YAAY,GAA8C,EAAE,CAAC;gBACnE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC/C,wCAAwC;oBACxC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;oBACzB,IAAI,OAAO,IAAI,KAAK,UAAU;wBAAE,IAAI,GAAG,IAAI,EAAE,CAAC;oBAC9C,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;gBAClC,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,MAAM,kBAAkB,CAAC,CAAC,EAAE;wBAC1B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;wBAClB,KAAK;qBACN,CAAC,CAAC;oBACH,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAChC,MAAM,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;yBACrD,CAAC;wBACJ,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;wBAChF,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC1C,CAAC,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBACD,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;gBACxB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,CAAuB,EACvB,CAAgB,EAChB,IAA+C,EAC/C,OAA8B;IAE9B,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,kBAAkB,KAAK,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,yBAAyB,KAAK,IAAI,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC9E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;aACvE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;;YACtE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,KAAK,UAAU,kBAAkB,CAC/B,OAAqB,EACrB,IAAgB,EAChB,OAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAChC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,GAAG,GAAG,CAAC,CAMZ,EAAE,EAAE;QACH,IACE,CAAC,CAAC,CAAC,KAAK;YACR,CAAC,CAAC,QAAQ,KAAK,SAAS;YACxB,CAAC,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,EACtB,CAAC;YACD,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC9E,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAE,EAAE;QAClC,IACE,CAAC,CAAC,CAAC,KAAK;YACR,CAAC,CAAC,QAAQ,KAAK,SAAS;YACxB,CAAC,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,EACtB,CAAC;YACD,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE;gBAClF,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,GAAG;QACd,cAAc,EAAE,GAAG;QACnB,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8DAA8D;AAC9D,KAAK,UAAU,cAAc,CAC3B,IAAgB,EAChB,OAA+C;IAE/C,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAE3B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE5C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,oBAAoB;IACpB,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;QAC9B,kBAAkB;QAClB,OAAO;IACT,CAAC;IAED,2CAA2C;IAC3C,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzF,2BAA2B;IAC3B,IAAI,eAAe,IAAI,UAAU,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,IAAI,CAAC,SAAS,IAAI,QAAQ,EAC1B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,GAAG,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,OAAO,WAAW,WAAW,CAAC;IAC/E,CAAC;IACD,IAAI,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,6DAA6D;AAC7D,KAAK,UAAU,eAAe,CAC5B,KAAoB,EACpB,IAAgB,EAChB,OAA2B;IAE3B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO;IAE7C,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK,GAAG,YAAY,CACtB,CAAC,CAAC,IAAI,IAAI,gBAAgB,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,EAChD,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CACxB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,EAC5E,KAAK,CACN,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE;oBACzB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBACrC,CAAC,CAAC;gBACH,IAAI,CAAC,CAAC,OAAO;oBAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,EAAE,UAAU,CAAC,CAAC;YAC5F,CAAC;;gBAAM,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,KAAK;gBAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,OAAO;gBAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC3D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAAoB,EAAE,IAAgB;IAC5E,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,cAA6B,CAAC;IAElC,MAAM,oBAAoB,GAAG,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,cAAc;YACjB,cAAc,GAAG,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE;gBAC3D,KAAK;aACN,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC,qBAAqB,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO;gBAAE,OAAO;YAE7D,MAAM,uBAAuB,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAC7D,IACE,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC,qBAAqB,KAAK,IAAI,CAAC;gBAC9D,CAAC,CAAC,qBAAqB,KAAK,QAAQ;gBAEpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,GAAG,IAAI,CAAC;gBACX,CAAC,CAAC,QAAQ,GAAG;oBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;oBAC7B,OAAO,EAAE,0BAA0B;iBACpC,CAAC;gBACF,CAAC,CAAC,OAAO,GAAG,0BAA0B,CAAC;gBACvC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAChB,CAAC,CAAC,KAAK,GAAG,mCAAmC,CAAC;gBAC9C,KAAK,EAAE,KAAK,CAAC,wCAAwC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO;YAEnD,MAAM,uBAAuB,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAC7D,IACE,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC,qBAAqB,KAAK,IAAI,CAAC;gBAC9D,CAAC,CAAC,qBAAqB,KAAK,QAAQ;gBAEpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,GAAG,IAAI,CAAC;gBACX,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAChB,CAAC,CAAC,OAAO,GAAG,0BAA0B,CAAC;gBACvC,CAAC,CAAC,KAAK,GAAG,mCAAmC,CAAC;gBAC9C,KAAK,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAoB,EAAE,IAAgB;IACzE,IAAI,GAAG,GAAG,KAAK,CAAC;IAEhB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,KAAK,EAAE,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjB,GAAG,GAAG,IAAI,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,KAAK,EAAE,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjB,GAAG,GAAG,IAAI,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,IAAgB,EAChB,OAAmE;IAEnE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/D,IAAI,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC;IAEJ,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtC,IAAI,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;QAC1C,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC;IAEJ,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,IAAI,UAAU;QACZ,MAAM,cAAc,CAAC,IAAI,EAAE;YACzB,GAAG,OAAO;YACV,UAAU;SACX,CAAC,CAAC;IACL,CAAC,EAAE,CAAC;IAEJ,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,SAAS;QAAE,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC,EAAE,CAAC;IAEJ,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,MAAM;QAAE,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC;IAEJ,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,OAAgC,EAAE,EAAE,CACzE,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAE,OAAgC,EAAE,EAAE,CACrF,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,OAAgC,EAAE,EAAE,CAC5E,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,gBAAgB,GAAmC,EAAE,CAAC;IAC5D,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,IAAI,UAA4B,CAAC;IAEjC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,SAAS,CAAC,IAAI,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACnD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAAE,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,IAAI,UAAU;wBAAE,CAAC,CAAC,KAAK,GAAG,sBAAsB,CAAC;;wBAE/C,UAAU,GAAG;4BACX,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;yBACxC,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC;YAC/B,IAAI,KAAK,IAAI,SAAS;gBAAE,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC;YAC/B,IAAI,KAAK,IAAI,SAAS;gBAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;YAC9B,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;gBACvB,IAAI,IAAI,KAAK,QAAQ;oBAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBACzC,IAAI,IAAI,KAAK,WAAW;oBAAE,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;oBACpD,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;YACzB,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,UAAU,CAAC;gBAAE,KAAK,EAAE,KAAK,CAAC,yBAAyB,GAAG,UAAU,CAAC,CAAC;YAC9E,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;YAC7B,MAAM,EAAE,MAAM,GAAG,qBAAqB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YACzD,IAAI,UAAkB,CAAC;YACvB,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,MAAM;oBACT,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;oBACnC,MAAM;gBACR;oBACE,UAAU,GAAG,+BAA+B,CAAC,MAAM,EAAE;wBACnD,QAAQ,EAAE,UAAU;qBACrB,CAAC,CAAC;oBACH,MAAM;YACV,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,UAAU,UAAU,MAAM;EAC/C,YAAY,CAAC,UAAU,CAAC;IACtB,UAAU,GAAG,CAAC;YACZ,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM;gBAC5B,KAAK,EAAE,aAAa,CAAC,aAAa,UAAU,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACpE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,WAAW,EAAE,kBAAkB,IAAI,WAAW;oBAC9C,UAAU;iBACX;gBACD,SAAS;gBACT,IAAI,EAAE,EAAE;gBACR,OAAO;aACR,CAAC,CAAC;YACH,KAAK,EAAE,aAAa,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;QAChF,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACrC,KAAK,EAAE,SAAS,CACd,kBAAkB,EAClB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAC7D,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3B,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1B,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACzC,MAAM,CAAC,mBAAmB,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE;gBAC1D,KAAK;aACN,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC/C,MAAM,CACJ,UAAU,EACV,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,gBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACrD,MAAM,CACJ,UAAU,EACV,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,CAAC,EAAE,CAAC;IAEJ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAmB;QAC1C,MAAM;QACN,OAAO;QACP,KAAK;QACL,UAAU;QACV,gBAAgB;QAChB,gBAAgB;QAChB,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,WAAW;KACZ,CAAC,CAAC;IAEH,GAAG,CACD,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,sBAAsB,EAC5C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,QAAsC,EACtC,OAKwB;IAExB,GAAG,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC7D,IAAI,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,mBAAmB,CACjB,QAAQ,EACR;;;;;EAKJ,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC;CACnF,CACI,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,kCAAkC,CACvD,OAAO,CAAC,cAAc,CACH,CAAC;IACtB,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAExC,IAAI,cAAc,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QACtE,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5C,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,MAAM,CAAC;QAChD,GAAG,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,YAAY;QAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,EAAE,aAAa,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC;YAC1B,MAAM,QAAQ,GAAG,+BAA+B,CAAC,cAAc,EAAE;gBAC/D,QAAQ;aACT,CAAC,CAAC;YACH,mBAAmB,CACjB,QAAQ,EACR;;OAED,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,qBAAqB,QAAQ;;GAE1E,QAAQ;EACT,QAAQ;IACN,QAAQ,GAAG,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,mBAAmB;QACnB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC,EAAE,CAAC;IAEJ,OAAO;QACL,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptfoo.d.ts b/packages/core/.tshy-build/browser/promptfoo.d.ts new file mode 100644 index 0000000000..7675d7e025 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptfoo.d.ts @@ -0,0 +1,106 @@ +import type { ModelConnectionInfo } from "./models.js"; +import type { TraceOptions } from "./trace.js"; +import type { CancellationOptions } from "./cancellation.js"; +import type { ModelAliasesOptions, ModelOptions, PromptScript, WorkspaceFile } from "./types.js"; +/** + * Generates a configuration object for PromptFoo using a given script and options. + * + * @param script - The script containing prompt details, tests, and redteam configurations. + * - title: The title of the script. + * - id: The unique identifier of the script. + * - description: A detailed description of the script. + * - tests: Test cases or file paths for test data. + * - redteam: Optional redteam configurations. + * @param options - Configuration options including: + * - chatInfo: Connection info and model aliases for chat models. + * - embeddingsInfo: Connection info for embedding models. + * - provider: The provider identifier. + * - out: Output directory or file path. + * - cli: CLI-specific settings. + * - redteam: Whether redteam configurations are enabled. + * - models: Array of model options and aliases. + * - trace: Trace options for debugging. + * - cancellation options: Options for handling cancellation. + * @returns A configuration object for PromptFoo based on the provided script and options. + */ +export declare function generatePromptFooConfiguration(script: PromptScript, options: { + chatInfo: ModelConnectionInfo & ModelAliasesOptions; + embeddingsInfo?: ModelConnectionInfo; + provider?: string; + out?: string; + cli?: string; + redteam?: boolean; + models?: (ModelOptions & ModelAliasesOptions)[]; +} & TraceOptions & CancellationOptions): Promise<{ + description: string; + prompts: string[]; + providers: { + id: string; + label: string; + config: { + model: string; + smallModel: string; + visionModel: string; + temperature: number | Readonly & { + source: "cli" | "env" | "script" | "config" | "default"; + candidates?: string[]; + }>; + top_p: number; + cli: string; + }; + }[]; + defaultTest: { + transformVars: string; + options: { + transform: string; + provider: { + text: { + id: string; + config?: { + apiHost: string; + }; + }; + embedding: { + id: string; + config?: { + apiHost: string; + }; + }; + }; + }; + }; + target: { + id: string; + label: string; + }; + redteam: { + purpose: string; + injectVar: string; + numTests: number; + plugins: string[]; + strategies: string[]; + language: string; + }; + tests: { + description: string; + vars: { + files: import("./types.js").ElementOrArray; + workspaceFiles: import("./types.js").ElementOrArray; + vars: Record; + }; + options: { + transform: string; + }; + assert: ({ + type: string; + value: string; + transform: string; + } | { + transform: string; + weight?: number; + type: "contains-all" | "not-contains-all" | "contains-any" | "not-contains-any" | "icontains-all" | "not-icontains-all"; + value: string[]; + })[]; + }[]; +}>; +//# sourceMappingURL=promptfoo.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptfoo.d.ts.map b/packages/core/.tshy-build/browser/promptfoo.d.ts.map new file mode 100644 index 0000000000..afc2c84c5e --- /dev/null +++ b/packages/core/.tshy-build/browser/promptfoo.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"promptfoo.d.ts","sourceRoot":"","sources":["../../src/promptfoo.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAKtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EAEZ,YAAY,EAEZ,aAAa,EACd,MAAM,YAAY,CAAC;AA8DpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE;IACP,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;IACpD,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,YAAY,GAAG,mBAAmB,CAAC,EAAE,CAAC;CACjD,GAAG,YAAY,GACd,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;wBApFjB,MAAM;6BACD;wBAAE,OAAO,EAAE,MAAM,CAAA;qBAAE;;;wBADxB,MAAM;6BACD;wBAAE,OAAO,EAAE,MAAM,CAAA;qBAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuU7B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptfoo.js b/packages/core/.tshy-build/browser/promptfoo.js new file mode 100644 index 0000000000..c2b5e2b89f --- /dev/null +++ b/packages/core/.tshy-build/browser/promptfoo.js @@ -0,0 +1,314 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CSV_REGEX, HTTPS_REGEX, JSON5_REGEX, MJTS_REGEX, MODEL_PROVIDER_AZURE_OPENAI, MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI, MODEL_PROVIDER_GITHUB, MODEL_PROVIDER_OPENAI, OPENAI_API_BASE, PROMPTFOO_REDTEAM_NUM_TESTS, TEST_CSV_ENTRY_SEPARATOR, XML_REGEX, YAML_REGEX, } from "./constants.js"; +import { logWarn } from "./util.js"; +import { arrayify } from "./cleaners.js"; +import { resolveRuntimeHost } from "./host.js"; +import { parseModelIdentifier } from "./models.js"; +import { deleteEmptyValues, deleteUndefinedValues } from "./cleaners.js"; +import testSchema from "./testschema.js"; +import { validateJSONWithSchema } from "./schema.js"; +import { MarkdownTrace } from "./trace.js"; +import { uniq } from "es-toolkit"; +import { dedent } from "./indent.js"; +import { importFile } from "./importprompt.js"; +/** + * Convert GenAIScript connection info into prompt foo configuration + * @param info + */ +function resolveTestProvider(info, modelType) { + if (!info) + return undefined; + const { base } = info; + const { provider, model } = parseModelIdentifier(info.model); + const apiHost = base.replace(HTTPS_REGEX, "").replace(/\/openai\/deployments$/i, ""); + switch (provider) { + case MODEL_PROVIDER_AZURE_OPENAI: + case MODEL_PROVIDER_AZURE_SERVERLESS_OPENAI: + return { + id: "azureopenai:" + modelType + ":" + model, + config: { + apiHost, + }, + }; + case MODEL_PROVIDER_GITHUB: + return { + id: provider + ":" + model, + }; + case MODEL_PROVIDER_OPENAI: + if (base === OPENAI_API_BASE) + return { id: info.model }; + return { id: info.model, config: { apiHost } }; + default: + return { + id: provider + ":" + modelType + ":" + model, + config: { + apiHost, + }, + }; + } +} +function renderPurpose(script) { + const { description, title, redteam, jsSource } = script; + const { purpose } = redteam || {}; + const trace = new MarkdownTrace(); + if (purpose) { + trace?.heading(2, "Purpose"); + trace?.appendContent(purpose); + } + trace?.heading(2, "Prompt details"); + trace?.appendContent(`The prompt is written using GenAIScript (https://microsoft.github.io/genaiscript), a JavaScript-based DSL for creating AI prompts. The generated prompt will be injected in the 'env.files' variable.`); + trace?.itemValue(`title`, title); + trace?.itemValue(`description`, description); + if (jsSource) + trace?.fence(jsSource, "js"); + return trace?.content; +} +/** + * Generates a configuration object for PromptFoo using a given script and options. + * + * @param script - The script containing prompt details, tests, and redteam configurations. + * - title: The title of the script. + * - id: The unique identifier of the script. + * - description: A detailed description of the script. + * - tests: Test cases or file paths for test data. + * - redteam: Optional redteam configurations. + * @param options - Configuration options including: + * - chatInfo: Connection info and model aliases for chat models. + * - embeddingsInfo: Connection info for embedding models. + * - provider: The provider identifier. + * - out: Output directory or file path. + * - cli: CLI-specific settings. + * - redteam: Whether redteam configurations are enabled. + * - models: Array of model options and aliases. + * - trace: Trace options for debugging. + * - cancellation options: Options for handling cancellation. + * @returns A configuration object for PromptFoo based on the provided script and options. + */ +export async function generatePromptFooConfiguration(script, options) { + // Destructure options with default values + const runtimeHost = resolveRuntimeHost(); + const { provider = "provider.mjs", chatInfo, embeddingsInfo, trace } = options || {}; + const { title, id } = script; + const description = dedent(script.description); + const models = options?.models || []; + const redteam = options?.redteam ? script.redteam || {} : undefined; + const purpose = redteam ? renderPurpose(script) : undefined; + const testsAndFiles = arrayify(script.tests); + const tests = []; + for (const testOrFile of testsAndFiles) { + if (Array.isArray(testOrFile)) + tests.push(...testOrFile); + else if (typeof testOrFile === "object") + tests.push(testOrFile); + else if (typeof testOrFile === "string") { + if (CSV_REGEX.test(testOrFile)) { + const data = await runtimeHost.workspace.readCSV(testOrFile, { + repair: false, + }); + if (!data.length) { + logWarn(`no data in ${testOrFile}`); + continue; + } + const headers = Object.keys(data[0]); + if (!headers.length) { + logWarn(`no headers in ${testOrFile}`); + continue; + } + for (const row of data) { + const test = { + files: [], + workspaceFiles: [], + vars: {}, + asserts: [], + }; + for (let i = 0; i < headers.length; ++i) { + const header = headers[i]; + const s = String(row[header]); + if (!s) + continue; + switch (header) { + case "name": + case "description": + test[header] = s?.trim(); + break; + case "keywords": + case "forbidden": + case "rubrics": + case "facts": + test[header] = s.split(TEST_CSV_ENTRY_SEPARATOR); + break; + case "file": + test.files.push(s); + break; + case "fileContent": + test.workspaceFiles.push({ + filename: "", + content: s, + }); + break; + default: + test.vars[header] = row[header]; + break; + } + } + tests.push(test); + } + } + else if (JSON5_REGEX.test(testOrFile) || + YAML_REGEX.test(testOrFile) || + XML_REGEX.test(testOrFile)) { + const data = arrayify(await runtimeHost.workspace.readData(testOrFile)); + for (const row of data) { + if (typeof row === "string") + tests.push({ + workspaceFiles: { filename: "", content: row }, + }); + else if (typeof row === "object") + tests.push(row); + } + } + else if (MJTS_REGEX.test(testOrFile)) { + const res = await importFile(testOrFile, { + onImported: async (module) => { + let res = module.default; + if (typeof res === "function") + res = await res(); + res = arrayify(res); + return res; + }, + }); + tests.push(...res); + } + } + } + for (const test of tests) { + const v = validateJSONWithSchema(test, testSchema, { + trace, + }); + if (v.schemaError) + throw new Error(v.schemaError); + } + // Ensure at least one model exists + if (!models.length) { + models.push({ + ...script, + model: chatInfo.model, + smallModel: chatInfo.smallModel, + visionModel: chatInfo.visionModel, + }); + } + const cli = options?.cli; + const testTransforms = { + text: "output.text", + json: undefined, + }; + const assertTransforms = { + text: undefined, + json: "output.text", + }; + const resolveModel = (m) => runtimeHost.modelAliases[m]?.model ?? m; + const testProvider = deleteUndefinedValues({ + text: resolveTestProvider(chatInfo, "chat"), + embedding: resolveTestProvider(embeddingsInfo, "embedding"), + }); + const defaultTest = deleteUndefinedValues({ + transformVars: "{ ...vars, sessionId: context.uuid }", + options: deleteUndefinedValues({ + transform: testTransforms["text"], + provider: testProvider, + }), + }); + // Create configuration object + const res = deleteUndefinedValues({ + // Description combining title and description + description: [title, description].filter((s) => s).join("\n"), + prompts: [id], + // Map model options to providers + providers: models + .map(({ model, smallModel, visionModel, temperature, topP }) => ({ + model: resolveModel(model) ?? runtimeHost.modelAliases.large.model, + smallModel: resolveModel(smallModel) ?? runtimeHost.modelAliases.small.model, + visionModel: resolveModel(visionModel) ?? runtimeHost.modelAliases.vision.model, + temperature: !isNaN(temperature) ? temperature : runtimeHost.modelAliases.temperature, + top_p: topP, + })) + .map(({ model, smallModel, visionModel, temperature, top_p }) => ({ + id: provider, + label: [ + model, + `small=${smallModel}`, + `vision=${visionModel}`, + `temp=${temperature}`, + top_p !== undefined ? `p=${top_p}` : undefined, + ] + .filter((v) => v !== undefined) + .join(", "), + config: { + model, + smallModel, + visionModel, + temperature, + top_p, + cli, + }, + })), + defaultTest, + target: redteam + ? { + id: provider, + label: redteam.label || title || id, + } + : undefined, + redteam: redteam + ? deleteEmptyValues({ + purpose, + injectVar: "fileContent", + numTests: redteam.numTests || PROMPTFOO_REDTEAM_NUM_TESTS, + plugins: uniq(arrayify(redteam.plugins)), + strategies: uniq(arrayify(redteam.strategies)), + language: redteam.language, + }) + : undefined, + // Map tests to configuration format + tests: arrayify(tests).map(({ description, files, workspaceFiles, vars, rubrics, facts, format = "text", keywords = [], forbidden = [], asserts = [], }) => deleteEmptyValues({ + description, + vars: deleteEmptyValues({ + files, + workspaceFiles, + vars: Object.keys(vars || {}).length ? vars : undefined, + }), + options: { + transform: testTransforms[format], + }, + assert: [ + ...arrayify(keywords).map((kv) => ({ + type: "icontains", // Check if output contains keyword + value: kv, + transform: assertTransforms[format], + })), + ...arrayify(forbidden).map((kv) => ({ + type: "not-icontains", // Check if output does not contain forbidden keyword + value: kv, + transform: assertTransforms[format], + })), + ...arrayify(rubrics).map((value) => ({ + type: "llm-rubric", // Use LLM rubric for evaluation + value, + transform: assertTransforms[format], + })), + ...arrayify(facts).map((value) => ({ + type: "factuality", // Check factuality of output + value, + transform: assertTransforms[format], + })), + ...arrayify(asserts).map((assert) => ({ + ...assert, + transform: assert.transform || assertTransforms[format], // Default transform + })), + ].filter((a) => !!a), // Filter out any undefined assertions + })), + }); + return res; // Return the generated configuration +} +//# sourceMappingURL=promptfoo.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptfoo.js.map b/packages/core/.tshy-build/browser/promptfoo.js.map new file mode 100644 index 0000000000..1262626315 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptfoo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promptfoo.js","sourceRoot":"","sources":["../../src/promptfoo.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptrunner.d.ts b/packages/core/.tshy-build/browser/promptrunner.d.ts new file mode 100644 index 0000000000..091e91cacd --- /dev/null +++ b/packages/core/.tshy-build/browser/promptrunner.d.ts @@ -0,0 +1,15 @@ +import type { Project } from "./server/messages.js"; +import type { Fragment, GenerationOptions } from "./generation.js"; +import type { GenerationResult } from "./server/messages.js"; +import type { PromptScript } from "./types.js"; +/** + * Executes a prompt template with specified options. + * + * @param prj The project context providing runtime and configuration. + * @param template The prompt script template to execute. + * @param fragment Additional context such as files, workspace files, and metadata. + * @param options Configuration for generation, including model, trace, output trace, cancellation token, stats, and other generation parameters. + * @returns A generation result containing execution details, outputs, and potential errors, including status, messages, edits, annotations, file changes, and usage statistics. + */ +export declare function runTemplate(prj: Project, template: PromptScript, fragment: Fragment, options: GenerationOptions): Promise; +//# sourceMappingURL=promptrunner.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptrunner.d.ts.map b/packages/core/.tshy-build/browser/promptrunner.d.ts.map new file mode 100644 index 0000000000..0617f5141e --- /dev/null +++ b/packages/core/.tshy-build/browser/promptrunner.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"promptrunner.d.ts","sourceRoot":"","sources":["../../src/promptrunner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAoB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAQtE,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAa7D,OAAO,KAAK,EAMV,YAAY,EAEb,MAAM,YAAY,CAAC;AAoGpB;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAkN3B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptrunner.js b/packages/core/.tshy-build/browser/promptrunner.js new file mode 100644 index 0000000000..253d3b6470 --- /dev/null +++ b/packages/core/.tshy-build/browser/promptrunner.js @@ -0,0 +1,275 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Import necessary modules and functions for handling chat sessions, templates, file management, etc. +import { executeChatSession, tracePromptResult } from "./chat.js"; +import { arrayify } from "./cleaners.js"; +import { relativePath } from "./util.js"; +import { assert } from "./assert.js"; +import { resolveRuntimeHost } from "./host.js"; +import { CORE_VERSION } from "./version.js"; +import { expandFiles } from "./fs.js"; +import { dataToMarkdownTable } from "./csv.js"; +import { resolveModelConnectionInfo } from "./models.js"; +import { RequestError, errorMessage } from "./error.js"; +import { renderFencedVariables } from "./fence.js"; +import { parsePromptParameters } from "./vars.js"; +import { resolveFileContent } from "./file.js"; +import { expandTemplate } from "./expander.js"; +import { resolveLanguageModel } from "./lm.js"; +import { checkCancelled } from "./cancellation.js"; +import { lastAssistantReasoning } from "./chatrender.js"; +import { unthink } from "./think.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { DEBUG_SCRIPT_CATEGORY } from "./constants.js"; +import { genaiscriptDebug } from "./debug.js"; +import debug from "debug"; +import { dispose } from "./dispose.js"; +const runnerDbg = genaiscriptDebug("promptrunner"); +const dbg = genaiscriptDebug("env"); +// Asynchronously resolve expansion variables needed for a template +/** + * Resolves variables required for the expansion of a template. + * @param project The project context. + * @param trace The markdown trace for logging. + * @param template The prompt script template. + * @param fragment The fragment containing files and metadata. + * @param vars The user-provided variables. + * @returns An object containing resolved variables. + */ +async function resolveExpansionVars(project, template, fragment, output, options) { + const { vars, runDir, runId, trace, applyGitIgnore } = options; + const runtimeHost = resolveRuntimeHost(); + const root = runtimeHost.projectFolder(); + assert(!!vars); + assert(!!runDir); + assert(!!runId); + const files = []; + const templateFiles = arrayify(template.files); + dbg(`template files: %O`, templateFiles); + const referenceFiles = fragment.files.slice(0); + const workspaceFiles = fragment.workspaceFiles?.slice(0) || []; + const filenames = await expandFiles(referenceFiles.length || workspaceFiles.length ? referenceFiles : templateFiles, { + applyGitIgnore, + accept: template.accept, + }); + for (let filename of filenames) { + filename = relativePath(root, filename); + dbg(`filenames: %O`, filenames); + // Skip if file already in the list + if (files.find((lk) => lk.filename === filename)) + continue; + const file = { filename }; + await resolveFileContent(file); + files.push(file); + } + for (const wf of workspaceFiles) { + if (!files.find((f) => f.filename === wf.filename)) { + await resolveFileContent(wf); + files.push(wf); + } + } + // Parse and obtain attributes from prompt parameters + const attrs = parsePromptParameters(project, template, vars); + const secrets = {}; + // Read secrets defined in the template + for (const secret of template.secrets || []) { + const value = await runtimeHost.readSecret(secret); + if (value) { + trace.item(`secret \`${secret}\` used`); + secrets[secret] = value; + } + else + trace.error(`secret \`${secret}\` not found`); + } + // Create and return an object containing resolved variables + const meta = structuredClone({ + id: template.id, + title: template.title, + description: template.description, + group: template.group, + model: template.model, + defTools: template.defTools, + }); // frozen later + const res = { + dir: ".", + files, + meta, + vars: attrs, + secrets, + output, + generator: undefined, + runDir, + runId, + dbg: debug(DEBUG_SCRIPT_CATEGORY), + }; + return res; +} +// Main function to run a template with given options +/** + * Executes a prompt template with specified options. + * + * @param prj The project context providing runtime and configuration. + * @param template The prompt script template to execute. + * @param fragment Additional context such as files, workspace files, and metadata. + * @param options Configuration for generation, including model, trace, output trace, cancellation token, stats, and other generation parameters. + * @returns A generation result containing execution details, outputs, and potential errors, including status, messages, edits, annotations, file changes, and usage statistics. + */ +export async function runTemplate(prj, template, fragment, options) { + assert(fragment !== undefined); + assert(options !== undefined); + assert(options.trace !== undefined); + assert(options.outputTrace !== undefined); + const runtimeHost = resolveRuntimeHost(); + const { label, trace, outputTrace, cancellationToken, model, runId } = options; + const version = CORE_VERSION; + assert(model !== undefined); + runtimeHost.project = prj; + try { + // Resolve expansion variables for the template + const env = await resolveExpansionVars(prj, template, fragment, outputTrace, options); + const { messages, schemas, tools, fileMerges, outputProcessors, chatParticipants, fileOutputs, prediction, status, statusText, temperature, reasoningEffort, topP, maxTokens, fallbackTools, seed, responseType, responseSchema, logprobs, topLogprobs, disposables, cache, metadata, disableChatPreview, } = await expandTemplate(prj, template, options, env); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { output, generator, secrets, dbg: envDbg, ...restEnv } = env; + runnerDbg(`messages ${messages.length}`); + // Handle failed expansion scenario + if (status !== "success" || !messages.length) { + trace.renderErrors(); + return { + status: status, + statusText, + messages, + env: restEnv, + label, + version, + text: unthink(outputTrace?.content), + reasoning: lastAssistantReasoning(messages), + edits: [], + annotations: [], + changelogs: [], + fileEdits: {}, + fences: [], + frames: [], + schemas: {}, + usage: undefined, + runId, + }; + } + // Resolve model connection information + const connection = await resolveModelConnectionInfo({ model }, { trace, token: true }); + if (connection.info.error) + throw new Error(errorMessage(connection.info.error)); + if (!connection.configuration) + throw new RequestError(403, `LLM configuration missing for model ${model}`, connection.info); + checkCancelled(cancellationToken); + const { ok } = await runtimeHost.pullModel(connection.configuration, options); + if (!ok) { + trace.renderErrors(); + return deleteUndefinedValues({ + status: "error", + statusText: "", + messages, + env: restEnv, + label, + version, + text: unthink(outputTrace?.content), + reasoning: lastAssistantReasoning(messages), + edits: [], + annotations: [], + changelogs: [], + fileEdits: {}, + fences: [], + frames: [], + schemas: {}, + usage: undefined, + runId, + }); + } + const { completer } = await resolveLanguageModel(connection.configuration.provider); + // Execute chat session with the resolved configuration + const runStats = options.stats.createChild(connection.info.model); + const genOptions = { + ...options, + cache, + choices: template.choices, + responseType, + responseSchema, + model, + temperature, + reasoningEffort, + maxTokens, + topP, + seed, + logprobs, + topLogprobs, + fallbackTools, + metadata, + stats: runStats, + disableChatPreview, + }; + const chatResult = await executeChatSession(connection.configuration, cancellationToken, messages, tools, schemas, fileOutputs, outputProcessors, fileMerges, prediction, completer, chatParticipants, disposables, genOptions); + tracePromptResult(trace, chatResult); + const { json, fences, frames, error, finishReason, fileEdits, changelogs, edits } = chatResult; + const { annotations } = chatResult; + // Reporting and tracing output + if (fences?.length) + trace.details("📩 code regions", renderFencedVariables(fences)); + if (fileEdits && Object.keys(fileEdits).length) { + trace.startDetails("📝 file edits"); + for (const [f, e] of Object.entries(fileEdits)) + trace.detailsFenced(f, e.after); + trace.endDetails(); + } + if (annotations?.length) + trace.details("⚠️ annotations", dataToMarkdownTable(annotations.map((a) => ({ + ...a, + line: a.range?.[0]?.[0], + endLine: a.range?.[1]?.[0] ?? "", + code: a.code ?? "", + })), { + headers: ["severity", "filename", "line", "endLine", "code", "message"], + })); + trace.renderErrors(); + const res = { + status: finishReason === "cancel" + ? "cancelled" + : error + ? "error" + : finishReason === "stop" + ? "success" + : "error", + finishReason, + error, + messages, + env: restEnv, + edits, + annotations, + changelogs, + fileEdits, + text: unthink(outputTrace?.content), + reasoning: lastAssistantReasoning(messages), + version, + fences, + frames, + schemas, + json, + choices: chatResult.choices, + logprobs: chatResult.logprobs, + perplexity: chatResult.perplexity, + uncertainty: chatResult.uncertainty, + usage: chatResult.usage, + runId, + }; + // If there's an error, provide status text + if (res.status === "error" && !res.statusText && res.finishReason) { + res.statusText = `LLM finish reason: ${res.finishReason}`; + } + return res; + } + finally { + // Cleanup any resources like running containers or browsers + await dispose(Object.values(runtimeHost.userState), options); + runtimeHost.userState = {}; + await runtimeHost.removeContainers(); + } +} +//# sourceMappingURL=promptrunner.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/promptrunner.js.map b/packages/core/.tshy-build/browser/promptrunner.js.map new file mode 100644 index 0000000000..26434466cd --- /dev/null +++ b/packages/core/.tshy-build/browser/promptrunner.js.map @@ -0,0 +1 @@ +{"version":3,"file":"promptrunner.js","sourceRoot":"","sources":["../../src/promptrunner.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,sGAAsG;AACtG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAUvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,MAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAEpC,mEAAmE;AACnE;;;;;;;;GAQG;AACH,KAAK,UAAU,oBAAoB,CACjC,OAAgB,EAChB,QAAsB,EACtB,QAAkB,EAClB,MAAmB,EACnB,OAA0B;IAE1B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;IAEzC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,GAAG,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,EAC/E;QACE,cAAc;QACd,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CACF,CAAC;IACF,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEhC,mCAAmC;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAAE,SAAS;QAC3D,MAAM,IAAI,GAAkB,EAAE,QAAQ,EAAE,CAAC;QACzC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,uCAAuC;IACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,SAAS,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;;YAAM,KAAK,CAAC,KAAK,CAAC,YAAY,MAAM,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,4DAA4D;IAC5D,MAAM,IAAI,GAA8C,eAAe,CAAC;QACtE,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAC,CAAC,eAAe;IACnB,MAAM,GAAG,GAAG;QACV,GAAG,EAAE,GAAG;QACR,KAAK;QACL,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,OAAO;QACP,MAAM;QACN,SAAS,EAAE,SAAkC;QAC7C,MAAM;QACN,KAAK;QACL,GAAG,EAAE,KAAK,CAAC,qBAAqB,CAAC;KACL,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qDAAqD;AACrD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAY,EACZ,QAAsB,EACtB,QAAkB,EAClB,OAA0B;IAE1B,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC/E,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE5B,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC;IAE1B,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACtF,MAAM,EACJ,QAAQ,EACR,OAAO,EACP,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,WAAW,EACX,eAAe,EACf,IAAI,EACJ,SAAS,EACT,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,kBAAkB,GACnB,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC;QAEpE,SAAS,CAAC,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzC,mCAAmC;QACnC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO;gBACL,MAAM,EAAE,MAA0B;gBAClC,UAAU;gBACV,QAAQ;gBACR,GAAG,EAAE,OAAO;gBACZ,KAAK;gBACL,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;gBACnC,SAAS,EAAE,sBAAsB,CAAC,QAAQ,CAAC;gBAC3C,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,SAAS;gBAChB,KAAK;aACqB,CAAC;QAC/B,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,CAAC,aAAa;YAC3B,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,uCAAuC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/F,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAClC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO,qBAAqB,CAAC;gBAC3B,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,EAAE;gBACd,QAAQ;gBACR,GAAG,EAAE,OAAO;gBACZ,KAAK;gBACL,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;gBACnC,SAAS,EAAE,sBAAsB,CAAC,QAAQ,CAAC;gBAC3C,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,SAAS;gBAChB,KAAK;aACqB,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEpF,uDAAuD;QACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,UAAU,GAAsB;YACpC,GAAG,OAAO;YACV,KAAK;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,YAAY;YACZ,cAAc;YACd,KAAK;YACL,WAAW;YACX,eAAe;YACf,SAAS;YACT,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,WAAW;YACX,aAAa;YACb,QAAQ;YACR,KAAK,EAAE,QAAQ;YACf,kBAAkB;SACnB,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CACzC,UAAU,CAAC,aAAa,EACxB,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,CACX,CAAC;QACF,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAErC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QAC/F,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QAEnC,+BAA+B;QAC/B,IAAI,MAAM,EAAE,MAAM;YAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/C,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACpC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAChF,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,WAAW,EAAE,MAAM;YACrB,KAAK,CAAC,OAAO,CACX,gBAAgB,EAChB,mBAAmB,CACjB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,CAAC;gBACJ,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBAChC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;aACnB,CAAC,CAAC,EACH;gBACE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;aACxE,CACF,CACF,CAAC;QAEJ,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,MAAM,GAAG,GAAqB;YAC5B,MAAM,EACJ,YAAY,KAAK,QAAQ;gBACvB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,KAAK;oBACL,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,YAAY,KAAK,MAAM;wBACvB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,OAAO;YACjB,YAAY;YACZ,KAAK;YACL,QAAQ;YACR,GAAG,EAAE,OAAO;YACZ,KAAK;YACL,WAAW;YACX,UAAU;YACV,SAAS;YACT,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;YACnC,SAAS,EAAE,sBAAsB,CAAC,QAAQ,CAAC;YAC3C,OAAO;YACP,MAAM;YACN,MAAM;YACN,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,KAAK;SACN,CAAC;QAEF,2CAA2C;QAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YAClE,GAAG,CAAC,UAAU,GAAG,sBAAsB,GAAG,CAAC,YAAY,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;YAAS,CAAC;QACT,4DAA4D;QAC5D,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAsB,EAAE,OAAO,CAAC,CAAC;QAClF,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/prompty.d.ts b/packages/core/.tshy-build/browser/prompty.d.ts new file mode 100644 index 0000000000..1eab1aad0e --- /dev/null +++ b/packages/core/.tshy-build/browser/prompty.d.ts @@ -0,0 +1,32 @@ +import type { PromptyDocument } from "./types.js"; +/** + * Parses a prompty document from a given filename and text content. + * + * @param filename - The name of the file being processed. This is used to associate metadata with the document. + * @param text - The raw text of the document, including optional frontmatter and content body. + * @returns An object representing the parsed prompty document. It includes metadata, parsed frontmatter, remaining content, and extracted messages. + * + * The parsing process: + * - Splits the document into frontmatter and content using a helper function. + * - Converts frontmatter content into metadata via a transformation function. + * - Processes the content to extract structured message blocks, identified by "system", "user", or "assistant" roles. + * - Each message block is trimmed and stored alongside its role for further use. + * - Throws an error if improper formatting, such as whitespace before frontmatter markers, is detected. + */ +export declare function promptyParse(filename: string, text: string): PromptyDocument; +/** + * Converts a PromptyDocument into a script compatible with GenAI. + * + * @param doc - The PromptyDocument containing metadata, content, and messages. + * - `meta`: Metadata extracted from the document's frontmatter, such as model, parameters, and other configuration values. + * - `messages`: Array of chat messages with roles (system, user, assistant) and respective content. + * + * Generates a script string by mapping chat roles and content into reusable GenAI script components: + * - System messages are represented using `writeText`. + * - Assistant messages are processed using `parsers.jinja`. + * - User message content is rendered as Jinja templates or other compatible parts (e.g., text, image_url, input_audio). + * + * Returns a string containing the final generated AI script. + */ +export declare function promptyToGenAIScript(doc: PromptyDocument): string; +//# sourceMappingURL=prompty.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/prompty.d.ts.map b/packages/core/.tshy-build/browser/prompty.d.ts.map new file mode 100644 index 0000000000..b7fd71215c --- /dev/null +++ b/packages/core/.tshy-build/browser/prompty.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"prompty.d.ts","sourceRoot":"","sources":["../../src/prompty.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,YAAY,CAAC;AA4DpB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAqC5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAkCjE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/prompty.js b/packages/core/.tshy-build/browser/prompty.js new file mode 100644 index 0000000000..e92695e18e --- /dev/null +++ b/packages/core/.tshy-build/browser/prompty.js @@ -0,0 +1,162 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { splitMarkdown } from "./frontmatter.js"; +import { YAMLParse } from "./yaml.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { JSON5Stringify } from "./json5.js"; +function promptyFrontmatterToMeta(frontmatter) { + const { name, description, tags = [], sample, inputs, outputs, model, files, tests, } = frontmatter; + const { api = "chat", configuration, parameters: modelParameters } = model ?? {}; + const parameters = inputs + ? Object.entries(inputs).reduce((acc, [k, v]) => { + if (v.type === "list") + acc[k] = { type: "array" }; + else + acc[k] = v; + return acc; + }, {}) + : undefined; + if (parameters && sample && typeof sample === "object") + for (const p in sample) { + const s = sample[p]; + const pp = parameters[p]; + if (s !== undefined && pp) + pp.default = s; + } + let modelName = undefined; + if (api !== "chat") + throw new Error("completion api not supported"); + if (modelParameters?.n > 1) + throw new Error("multi-turn not supported"); + if (modelParameters?.tools?.length) + throw new Error("tools not supported"); + // resolve model + if (configuration?.type === "azure_openai" || configuration?.type === "azure") { + if (!configuration.azure_deployment) + throw new Error("azure_deployment required"); + modelName = `azure:${configuration.azure_deployment}`; + } + else if (configuration?.type === "azure_serverless") { + modelName = `azure_serverless:${configuration.azure_endpoint}`; + } + else if (configuration?.type === "openai") + modelName = `openai:${configuration.type}`; + const unlisted = tags.includes("unlisted"); + const meta = deleteUndefinedValues({ + model: modelName, + title: name, + description, + files, + tests, + unlisted: unlisted ? true : undefined, + parameters, + responseType: outputs ? "json_object" : modelParameters?.response_format?.type, + responseSchema: outputs, + temperature: modelParameters?.temperature, + maxTokens: modelParameters?.max_tokens, + topP: modelParameters?.top_p, + seed: modelParameters?.seed, + }); + return meta; +} +/** + * Parses a prompty document from a given filename and text content. + * + * @param filename - The name of the file being processed. This is used to associate metadata with the document. + * @param text - The raw text of the document, including optional frontmatter and content body. + * @returns An object representing the parsed prompty document. It includes metadata, parsed frontmatter, remaining content, and extracted messages. + * + * The parsing process: + * - Splits the document into frontmatter and content using a helper function. + * - Converts frontmatter content into metadata via a transformation function. + * - Processes the content to extract structured message blocks, identified by "system", "user", or "assistant" roles. + * - Each message block is trimmed and stored alongside its role for further use. + * - Throws an error if improper formatting, such as whitespace before frontmatter markers, is detected. + */ +export function promptyParse(filename, text) { + const { frontmatter = "", content = "" } = splitMarkdown(text); + if (!frontmatter && /^\s+---/.test(frontmatter)) + throw new Error("Prompty: Frontmatter has invalid whitespace before ---"); + const fm = frontmatter ? YAMLParse(frontmatter) : {}; + const meta = fm ? promptyFrontmatterToMeta(fm) : {}; + if (filename) + meta.filename = filename; + const messages = []; + // split + const rx = /^\s*(system|user|assistant)\s*:\s*$/gim; + const lines = content.split(/\r?\n/g); + let role = "system"; + let chunk = []; + const pushMessage = () => { + if (role && chunk.length && chunk.some((l) => !!l)) { + messages.push({ + role, + content: chunk.join("\n").trim(), + }); + } + }; + for (const line of lines) { + const m = rx.exec(line); + if (m) { + // next role starts + pushMessage(); + role = m[1]; + chunk = []; + } + else { + chunk.push(line); + } + } + pushMessage(); + return { meta, frontmatter: fm, content, messages }; +} +/** + * Converts a PromptyDocument into a script compatible with GenAI. + * + * @param doc - The PromptyDocument containing metadata, content, and messages. + * - `meta`: Metadata extracted from the document's frontmatter, such as model, parameters, and other configuration values. + * - `messages`: Array of chat messages with roles (system, user, assistant) and respective content. + * + * Generates a script string by mapping chat roles and content into reusable GenAI script components: + * - System messages are represented using `writeText`. + * - Assistant messages are processed using `parsers.jinja`. + * - User message content is rendered as Jinja templates or other compatible parts (e.g., text, image_url, input_audio). + * + * Returns a string containing the final generated AI script. + */ +export function promptyToGenAIScript(doc) { + const { messages, meta } = doc; + const renderJinja = (content) => `$\`${content.replace(/`/g, "\\`")}\`${/\{(%|\{)/.test(content) ? `.jinja(env.vars)` : ""}`; + const renderPart = (c) => c.type === "text" + ? renderJinja(c.text) + : c.type === "image_url" + ? `defImages("${c.image_url}")` + : c.type === "input_audio" + ? `defAudio("${c.input_audio}")` + : `unknown message`; + let src = ``; + if (Object.keys(meta).length) { + src += `script(${JSON5Stringify(meta, null, 2)})\n\n`; + } + src += messages + .map((msg) => { + const { role, content } = msg; + if (role === "assistant") { + return `assistant(parsers.jinja(${JSON.stringify(content)}, env.vars))`; + } + else if (role === "system") { + return `writeText(${JSON.stringify(content)}, { role: "system" })`; + } + else { + if (typeof content === "string") + return renderJinja(content); + else if (Array.isArray(content)) + return content.map(renderPart).join("\n"); + else + return renderPart(content); + } + }) + .join("\n"); + return src; +} +//# sourceMappingURL=prompty.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/prompty.js.map b/packages/core/.tshy-build/browser/prompty.js.map new file mode 100644 index 0000000000..71c406de8d --- /dev/null +++ b/packages/core/.tshy-build/browser/prompty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prompty.js","sourceRoot":"","sources":["../../src/prompty.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ5C,SAAS,wBAAwB,CAAC,WAA+B;IAC/D,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,IAAI,GAAG,EAAE,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,EACL,KAAK,EACL,KAAK,GACN,GAAG,WAAW,CAAC;IAChB,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IACjF,MAAM,UAAU,GAAyC,MAAM;QAC7D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAClF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;gBAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC;QACR,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,SAAS,IAAI,EAAE;gBAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5C,CAAC;IAEH,IAAI,SAAS,GAAW,SAAS,CAAC;IAClC,IAAI,GAAG,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpE,IAAI,eAAe,EAAE,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxE,IAAI,eAAe,EAAE,KAAK,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAE3E,gBAAgB;IAChB,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,IAAI,aAAa,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClF,SAAS,GAAG,SAAS,aAAa,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC;SAAM,IAAI,aAAa,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtD,SAAS,GAAG,oBAAoB,aAAa,CAAC,cAAc,EAAE,CAAC;IACjE,CAAC;SAAM,IAAI,aAAa,EAAE,IAAI,KAAK,QAAQ;QAAE,SAAS,GAAG,UAAU,aAAa,CAAC,IAAI,EAAE,CAAC;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,qBAAqB,CAAC;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,WAAW;QACX,KAAK;QACL,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACrC,UAAU;QACV,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI;QAC9E,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,eAAe,EAAE,WAAW;QACzC,SAAS,EAAE,eAAe,EAAE,UAAU;QACtC,IAAI,EAAE,eAAe,EAAE,KAAK;QAC5B,IAAI,EAAE,eAAe,EAAE,IAAI;KACP,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IACzD,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,IAAI,GAAe,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvC,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAElD,QAAQ;IACR,MAAM,EAAE,GAAG,wCAAwC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,GAAgD,QAAQ,CAAC;IACjE,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC;YACN,mBAAmB;YACnB,WAAW,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,CAAC,CAAC,CAAoC,CAAC;YAC/C,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAE/B,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CACtC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9F,MAAM,UAAU,GAAG,CAAC,CAA4B,EAAE,EAAE,CAClD,CAAC,CAAC,IAAI,KAAK,MAAM;QACf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,IAAI;YAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa;gBACxB,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,IAAI;gBAChC,CAAC,CAAC,iBAAiB,CAAC;IAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,GAAG,IAAI,UAAU,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;IACxD,CAAC;IACD,GAAG,IAAI,QAAQ;SACZ,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAC9B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,OAAiB,CAAC,cAAc,CAAC;QACpF,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,aAAa,IAAI,CAAC,SAAS,CAAC,OAAiB,CAAC,uBAAuB,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;iBACxD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBACtE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,GAAG,CAAC;AACb,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/proxy.d.ts b/packages/core/.tshy-build/browser/proxy.d.ts new file mode 100644 index 0000000000..6f2fed8c00 --- /dev/null +++ b/packages/core/.tshy-build/browser/proxy.d.ts @@ -0,0 +1,22 @@ +/** + * Resolves an HTTP proxy agent based on environment variables. + * + * This function checks various environment variables to locate + * a proxy configuration. If a proxy is found, it returns an + * instance of `HttpsProxyAgent` configured with the proxy URL; + * otherwise, it returns null. + * + * Environment variables checked (in order of precedence): + * - `GENAISCRIPT_HTTPS_PROXY` + * - `GENAISCRIPT_HTTP_PROXY` + * - `HTTPS_PROXY` + * - `HTTP_PROXY` + * - `https_proxy` + * - `http_proxy` + * + * @returns An instance of `HttpsProxyAgent` if a proxy is configured, + * or null if no proxy is detected. + */ +export declare function resolveUndiciProxyAgent(): Promise; +export declare function resolveHttpsProxyAgent(): Promise; +//# sourceMappingURL=proxy.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/proxy.d.ts.map b/packages/core/.tshy-build/browser/proxy.d.ts.map new file mode 100644 index 0000000000..aa39ff4a11 --- /dev/null +++ b/packages/core/.tshy-build/browser/proxy.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,yCAY5C;AAED,wBAAsB,sBAAsB,8CAU3C"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/proxy.js b/packages/core/.tshy-build/browser/proxy.js new file mode 100644 index 0000000000..010c1a7fc1 --- /dev/null +++ b/packages/core/.tshy-build/browser/proxy.js @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { genaiscriptDebug } from "./debug.js"; +import { errorMessage } from "./error.js"; +const dbg = genaiscriptDebug("fetch:proxy"); +function resolveProxyUrl() { + const proxy = process.env.HTTPS_PROXY || + process.env.HTTP_PROXY || + process.env.https_proxy || + process.env.http_proxy; + return proxy; +} +/** + * Resolves an HTTP proxy agent based on environment variables. + * + * This function checks various environment variables to locate + * a proxy configuration. If a proxy is found, it returns an + * instance of `HttpsProxyAgent` configured with the proxy URL; + * otherwise, it returns null. + * + * Environment variables checked (in order of precedence): + * - `GENAISCRIPT_HTTPS_PROXY` + * - `GENAISCRIPT_HTTP_PROXY` + * - `HTTPS_PROXY` + * - `HTTP_PROXY` + * - `https_proxy` + * - `http_proxy` + * + * @returns An instance of `HttpsProxyAgent` if a proxy is configured, + * or null if no proxy is detected. + */ +export async function resolveUndiciProxyAgent() { + // We create a proxy based on Node.js environment variables. + const proxy = resolveProxyUrl(); + if (!proxy) + return null; + dbg(`proxy (undici): %s`, proxy); + const { ProxyAgent } = await import("undici"); + const agent = new ProxyAgent(proxy); + agent.on(`connect`, (info) => dbg(`connect: %s`, info.href)); + agent.on(`connectionError`, (err) => dbg(`connection error: %s`, errorMessage(err))); + agent.on(`disconnect`, () => dbg(`disconnect`)); + return agent; +} +export async function resolveHttpsProxyAgent() { + const proxyUrl = resolveProxyUrl(); + if (!proxyUrl) + return null; + dbg(`proxy (proxy-agent): %s`, proxyUrl); + const { ProxyAgent } = await import("proxy-agent"); + const agent = new ProxyAgent(); + agent.on(`connect`, () => dbg(`connect`)); + agent.on(`error`, (err) => dbg(`error: %s`, errorMessage(err))); + return agent; +} +//# sourceMappingURL=proxy.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/proxy.js.map b/packages/core/.tshy-build/browser/proxy.js.map new file mode 100644 index 0000000000..f864323510 --- /dev/null +++ b/packages/core/.tshy-build/browser/proxy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,MAAM,GAAG,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAE5C,SAAS,eAAe;IACtB,MAAM,KAAK,GACT,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,4DAA4D;IAC5D,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/queries/treesitterqueries.json b/packages/core/.tshy-build/browser/queries/treesitterqueries.json new file mode 100644 index 0000000000..820ae6889b --- /dev/null +++ b/packages/core/.tshy-build/browser/queries/treesitterqueries.json @@ -0,0 +1,14 @@ +{ + "javascript/tags": "(\n (comment)* @doc\n .\n (method_definition\n name: (property_identifier) @name) @definition.method\n (#not-eq? @name \"constructor\")\n (#strip! @doc \"^[\\\\s\\\\*/]+|^[\\\\s\\\\*/]$\")\n (#select-adjacent! @doc @definition.method)\n)\n\n(\n (comment)* @doc\n .\n [\n (class\n name: (_) @name)\n (class_declaration\n name: (_) @name)\n ] @definition.class\n (#strip! @doc \"^[\\\\s\\\\*/]+|^[\\\\s\\\\*/]$\")\n (#select-adjacent! @doc @definition.class)\n)\n\n(\n (comment)* @doc\n .\n [\n (function_expression\n name: (identifier) @name)\n (function_declaration\n name: (identifier) @name)\n (generator_function\n name: (identifier) @name)\n (generator_function_declaration\n name: (identifier) @name)\n ] @definition.function\n (#strip! @doc \"^[\\\\s\\\\*/]+|^[\\\\s\\\\*/]$\")\n (#select-adjacent! @doc @definition.function)\n)\n\n(\n (comment)* @doc\n .\n (lexical_declaration\n (variable_declarator\n name: (identifier) @name\n value: [(arrow_function) (function_expression)]) @definition.function)\n (#strip! @doc \"^[\\\\s\\\\*/]+|^[\\\\s\\\\*/]$\")\n (#select-adjacent! @doc @definition.function)\n)\n\n(\n (comment)* @doc\n .\n (variable_declaration\n (variable_declarator\n name: (identifier) @name\n value: [(arrow_function) (function_expression)]) @definition.function)\n (#strip! @doc \"^[\\\\s\\\\*/]+|^[\\\\s\\\\*/]$\")\n (#select-adjacent! @doc @definition.function)\n)\n\n(assignment_expression\n left: [\n (identifier) @name\n (member_expression\n property: (property_identifier) @name)\n ]\n right: [(arrow_function) (function_expression)]\n) @definition.function\n\n(pair\n key: (property_identifier) @name\n value: [(arrow_function) (function_expression)]) @definition.function\n\n(\n (call_expression\n function: (identifier) @name) @reference.call\n (#not-match? @name \"^(require)$\")\n)\n\n(call_expression\n function: (member_expression\n property: (property_identifier) @name)\n arguments: (_) @reference.call)\n\n(new_expression\n constructor: (_) @name) @reference.class\n\n(export_statement value: (assignment_expression left: (identifier) @name right: ([\n (number)\n (string)\n (identifier)\n (undefined)\n (null)\n (new_expression)\n (binary_expression)\n (call_expression)\n]))) @definition.constant\n", + "c/tags": "(struct_specifier name: (type_identifier) @name body:(_)) @definition.class\n\n(declaration type: (union_specifier name: (type_identifier) @name)) @definition.class\n\n(function_declarator declarator: (identifier) @name) @definition.function\n\n(type_definition declarator: (type_identifier) @name) @definition.type\n\n(enum_specifier name: (type_identifier) @name) @definition.type\n", + "cpp/tags": "(struct_specifier name: (type_identifier) @name body:(_)) @definition.class\n\n(declaration type: (union_specifier name: (type_identifier) @name)) @definition.class\n\n(function_declarator declarator: (identifier) @name) @definition.function\n\n(function_declarator declarator: (field_identifier) @name) @definition.function\n\n(function_declarator declarator: (qualified_identifier scope: (namespace_identifier) @local.scope name: (identifier) @name)) @definition.method\n\n(type_definition declarator: (type_identifier) @name) @definition.type\n\n(enum_specifier name: (type_identifier) @name) @definition.type\n\n(class_specifier name: (type_identifier) @name) @definition.class\n", + "ruby/tags": "; Method definitions\n\n(\n (comment)* @doc\n .\n [\n (method\n name: (_) @name) @definition.method\n (singleton_method\n name: (_) @name) @definition.method\n ]\n (#strip! @doc \"^#\\\\s*\")\n (#select-adjacent! @doc @definition.method)\n)\n\n(alias\n name: (_) @name) @definition.method\n\n(setter\n (identifier) @ignore)\n\n; Class definitions\n\n(\n (comment)* @doc\n .\n [\n (class\n name: [\n (constant) @name\n (scope_resolution\n name: (_) @name)\n ]) @definition.class\n (singleton_class\n value: [\n (constant) @name\n (scope_resolution\n name: (_) @name)\n ]) @definition.class\n ]\n (#strip! @doc \"^#\\\\s*\")\n (#select-adjacent! @doc @definition.class)\n)\n\n; Module definitions\n\n(\n (module\n name: [\n (constant) @name\n (scope_resolution\n name: (_) @name)\n ]) @definition.module\n)\n\n; Calls\n\n(call method: (identifier) @name) @reference.call\n\n(\n [(identifier) (constant)] @name @reference.call\n (#is-not? local)\n (#not-match? @name \"^(lambda|load|require|require_relative|__FILE__|__LINE__)$\")\n)\n", + "go/tags": "(\n (comment)* @doc\n .\n (function_declaration\n name: (identifier) @name) @definition.function\n (#strip! @doc \"^//\\\\s*\")\n (#set-adjacent! @doc @definition.function)\n)\n\n(\n (comment)* @doc\n .\n (method_declaration\n name: (field_identifier) @name) @definition.method\n (#strip! @doc \"^//\\\\s*\")\n (#set-adjacent! @doc @definition.method)\n)\n\n(call_expression\n function: [\n (identifier) @name\n (parenthesized_expression (identifier) @name)\n (selector_expression field: (field_identifier) @name)\n (parenthesized_expression (selector_expression field: (field_identifier) @name))\n ]) @reference.call\n\n(type_spec\n name: (type_identifier) @name) @definition.type\n\n(type_identifier) @name @reference.type\n", + "c-sharp/tags": "(class_declaration name: (identifier) @name) @definition.class\n\n(class_declaration (base_list (_) @name)) @reference.class\n\n(interface_declaration name: (identifier) @name) @definition.interface\n\n(interface_declaration (base_list (_) @name)) @reference.interface\n\n(method_declaration name: (identifier) @name) @definition.method\n\n(object_creation_expression type: (identifier) @name) @reference.class\n\n(type_parameter_constraints_clause (identifier) @name) @reference.class\n\n(type_parameter_constraint (type type: (identifier) @name)) @reference.class\n\n(variable_declaration type: (identifier) @name) @reference.class\n\n(invocation_expression function: (member_access_expression name: (identifier) @name)) @reference.send\n\n(namespace_declaration name: (identifier) @name) @definition.module\n\n(namespace_declaration name: (identifier) @name) @module\n", + "python/tags": "(module (expression_statement (assignment left: (identifier) @name) @definition.constant))\n\n(class_definition\n name: (identifier) @name) @definition.class\n\n(function_definition\n name: (identifier) @name) @definition.function\n\n(call\n function: [\n (identifier) @name\n (attribute\n attribute: (identifier) @name)\n ]) @reference.call\n", + "typescript/tags": "(function_signature\n name: (identifier) @name) @definition.function\n\n(method_signature\n name: (property_identifier) @name) @definition.method\n\n(abstract_method_signature\n name: (property_identifier) @name) @definition.method\n\n(abstract_class_declaration\n name: (type_identifier) @name) @definition.class\n\n(module\n name: (identifier) @name) @definition.module\n\n(interface_declaration\n name: (type_identifier) @name) @definition.interface\n\n(type_annotation\n (type_identifier) @name) @reference.type\n\n(new_expression\n constructor: (identifier) @name) @reference.class\n", + "rust/tags": "; ADT definitions\n\n(struct_item\n name: (type_identifier) @name) @definition.class\n\n(enum_item\n name: (type_identifier) @name) @definition.class\n\n(union_item\n name: (type_identifier) @name) @definition.class\n\n; type aliases\n\n(type_item\n name: (type_identifier) @name) @definition.class\n\n; method definitions\n\n(declaration_list\n (function_item\n name: (identifier) @name)) @definition.method\n\n; function definitions\n\n(function_item\n name: (identifier) @name) @definition.function\n\n; trait definitions\n(trait_item\n name: (type_identifier) @name) @definition.interface\n\n; module definitions\n(mod_item\n name: (identifier) @name) @definition.module\n\n; macro definitions\n\n(macro_definition\n name: (identifier) @name) @definition.macro\n\n; references\n\n(call_expression\n function: (identifier) @name) @reference.call\n\n(call_expression\n function: (field_expression\n field: (field_identifier) @name)) @reference.call\n\n(macro_invocation\n macro: (identifier) @name) @reference.call\n\n; implementations\n\n(impl_item\n trait: (type_identifier) @name) @reference.implementation\n\n(impl_item\n type: (type_identifier) @name\n !trait) @reference.implementation\n", + "php/tags": "(namespace_definition\n name: (namespace_name) @name) @module\n\n(interface_declaration\n name: (name) @name) @definition.interface\n\n(trait_declaration\n name: (name) @name) @definition.interface\n\n(class_declaration\n name: (name) @name) @definition.class\n\n(class_interface_clause [(name) (qualified_name)] @name) @impl\n\n(property_declaration\n (property_element (variable_name (name) @name))) @definition.field\n\n(function_definition\n name: (name) @name) @definition.function\n\n(method_declaration\n name: (name) @name) @definition.function\n\n(object_creation_expression\n [\n (qualified_name (name) @name)\n (variable_name (name) @name)\n ]) @reference.class\n\n(function_call_expression\n function: [\n (qualified_name (name) @name)\n (variable_name (name)) @name\n ]) @reference.call\n\n(scoped_call_expression\n name: (name) @name) @reference.call\n\n(member_call_expression\n name: (name) @name) @reference.call\n", + "java/tags": "(class_declaration\n name: (identifier) @name) @definition.class\n\n(method_declaration\n name: (identifier) @name) @definition.method\n\n(method_invocation\n name: (identifier) @name\n arguments: (argument_list) @reference.call)\n\n(interface_declaration\n name: (identifier) @name) @definition.interface\n\n(type_list\n (type_identifier) @name) @reference.implementation\n\n(object_creation_expression\n type: (type_identifier) @name) @reference.class\n\n(superclass (type_identifier) @name) @reference.class\n", + "ocaml/tags": "; Modules\n;--------\n\n(\n (comment)? @doc .\n (module_definition (module_binding (module_name) @name) @definition.module)\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n(module_path (module_name) @name) @reference.module\n\n; Module types\n;--------------\n\n(\n (comment)? @doc .\n (module_type_definition (module_type_name) @name) @definition.interface\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n(module_type_path (module_type_name) @name) @reference.implementation\n\n; Functions\n;----------\n\n(\n (comment)? @doc .\n (value_definition\n [\n (let_binding\n pattern: (value_name) @name\n (parameter))\n (let_binding\n pattern: (value_name) @name\n body: [(fun_expression) (function_expression)])\n ] @definition.function\n )\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n(\n (comment)? @doc .\n (external (value_name) @name) @definition.function\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n(application_expression\n function: (value_path (value_name) @name)) @reference.call\n\n(infix_expression\n left: (value_path (value_name) @name)\n operator: (concat_operator) @reference.call\n (#eq? @reference.call \"@@\"))\n\n(infix_expression\n operator: (rel_operator) @reference.call\n right: (value_path (value_name) @name)\n (#eq? @reference.call \"|>\"))\n\n; Operator\n;---------\n\n(\n (comment)? @doc .\n (value_definition\n (let_binding\n pattern: (parenthesized_operator (_) @name)) @definition.function)\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n[\n (prefix_operator)\n (sign_operator)\n (pow_operator)\n (mult_operator)\n (add_operator)\n (concat_operator)\n (rel_operator)\n (and_operator)\n (or_operator)\n (assign_operator)\n (hash_operator)\n (indexing_operator)\n (let_operator)\n (let_and_operator)\n (match_operator)\n] @name @reference.call\n\n; Classes\n;--------\n\n(\n (comment)? @doc .\n [\n (class_definition (class_binding (class_name) @name) @definition.class)\n (class_type_definition (class_type_binding (class_type_name) @name) @definition.class)\n ]\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n[\n (class_path (class_name) @name)\n (class_type_path (class_type_name) @name)\n] @reference.class\n\n; Methods\n;--------\n\n(\n (comment)? @doc .\n (method_definition (method_name) @name) @definition.method\n (#strip! @doc \"^\\\\(\\\\*\\\\*?\\\\s*|\\\\s\\\\*\\\\)$\")\n)\n\n(method_invocation (method_name) @name) @reference.call\n" +} diff --git a/packages/core/.tshy-build/browser/quiet.d.ts b/packages/core/.tshy-build/browser/quiet.d.ts new file mode 100644 index 0000000000..9d786cf816 --- /dev/null +++ b/packages/core/.tshy-build/browser/quiet.d.ts @@ -0,0 +1,7 @@ +export declare let isQuiet: boolean; +/** + * Sets the quiet mode for suppressing debug messages. + * @param v - Boolean to enable or disable quiet mode + */ +export declare function setQuiet(v: boolean): void; +//# sourceMappingURL=quiet.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/quiet.d.ts.map b/packages/core/.tshy-build/browser/quiet.d.ts.map new file mode 100644 index 0000000000..60ad1786b8 --- /dev/null +++ b/packages/core/.tshy-build/browser/quiet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"quiet.d.ts","sourceRoot":"","sources":["../../src/quiet.ts"],"names":[],"mappings":"AAKA,eAAO,IAAI,OAAO,SAAQ,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,QAElC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/quiet.js b/packages/core/.tshy-build/browser/quiet.js new file mode 100644 index 0000000000..58e4506317 --- /dev/null +++ b/packages/core/.tshy-build/browser/quiet.js @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// Boolean indicating if debug messages should be suppressed +// Controls whether debug messages are outputted +export let isQuiet = false; +/** + * Sets the quiet mode for suppressing debug messages. + * @param v - Boolean to enable or disable quiet mode + */ +export function setQuiet(v) { + isQuiet = !!v; +} +//# sourceMappingURL=quiet.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/quiet.js.map b/packages/core/.tshy-build/browser/quiet.js.map new file mode 100644 index 0000000000..124b12e454 --- /dev/null +++ b/packages/core/.tshy-build/browser/quiet.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quiet.js","sourceRoot":"","sources":["../../src/quiet.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,4DAA4D;AAC5D,gDAAgD;AAChD,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAU;IACjC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/resources.d.ts b/packages/core/.tshy-build/browser/resources.d.ts new file mode 100644 index 0000000000..c5341da60a --- /dev/null +++ b/packages/core/.tshy-build/browser/resources.d.ts @@ -0,0 +1,31 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import { URL } from "node:url"; +import type { WorkspaceFile } from "./types.js"; +/** + * Attempts to resolve a given URL to its associated resources or files. + * + * @param url The input URL to resolve. + * @param options Optional tracing and cancellation options to control the operation. + * - cancellationToken: Allows monitoring and cancellation of the operation. + * + * @returns A promise that resolves to an object containing: + * - uri: The parsed valid URL object. + * - files: An array of resolved files associated with the resource. + * Returns undefined if the URL cannot be resolved or if no associated files are found. + * + * - Uses `applyUrlAdapters` to modify the URL if needed. + * - Validates and parses the URL. + * - Determines the scheme/protocol of the URL and invokes the appropriate resolver from `uriResolvers`. + * - Resolves resources by downloading or fetching content based on the URL scheme. + * - Handles both text and binary content. + * - Reports errors or unsupported protocols. + * - Cancels the process if the cancellation token is triggered. + * - Logs debug information about the resolution process and resolved files. + * - Throws an error if the cancellation token is triggered during the operation. + */ +export declare function tryResolveResource(url: string, options?: TraceOptions & CancellationOptions): Promise<{ + uri: URL; + files: WorkspaceFile[]; +} | undefined>; +//# sourceMappingURL=resources.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/resources.d.ts.map b/packages/core/.tshy-build/browser/resources.d.ts.map new file mode 100644 index 0000000000..9b34bcd7ab --- /dev/null +++ b/packages/core/.tshy-build/browser/resources.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/resources.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAK5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAM/B,OAAO,KAAK,EAA6B,aAAa,EAAE,MAAM,YAAY,CAAC;AA8K3E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAC3C,OAAO,CAAC;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAsC3D"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/resources.js b/packages/core/.tshy-build/browser/resources.js new file mode 100644 index 0000000000..bdf029e2a3 --- /dev/null +++ b/packages/core/.tshy-build/browser/resources.js @@ -0,0 +1,230 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { fileURLToPath } from "node:url"; +import { isBinaryMimeType } from "./binary.js"; +import { checkCancelled } from "./cancellation.js"; +import { genaiscriptDebug } from "./debug.js"; +import { createFetch } from "./fetch.js"; +import { GitHubClient } from "./githubclient.js"; +import { uriRedact, uriScheme, uriTryParse } from "./url.js"; +import { arrayify } from "./cleaners.js"; +import { URL } from "node:url"; +import { GitClient } from "./git.js"; +import { expandFiles } from "./fs.js"; +import { join } from "node:path"; +import { isCancelError } from "./error.js"; +import { GITHUB_ASSET_URL_RX } from "./constants.js"; +const dbg = genaiscriptDebug("res"); +const dbgAdaptors = dbg.extend("adaptors"); +const dbgFiles = dbg.extend("files"); +dbgFiles.enabled = false; +const urlAdapters = [ + { + id: "github blob", + /** + * Matches GitHub blob URLs and converts them to raw content URLs. + * Extracts user, repository, and file path from the blob URL. + * Constructs a raw URL using the extracted components. + * @param url - The GitHub blob URL. + * @returns The corresponding raw URL or undefined if no match is found. + */ + matcher: (url) => { + const m = /^https:\/\/github\.com\/(?[^\/]+)\/(?[^\/]+)\/blob\/(?.+)#?/i.exec(url); + return m + ? `https://raw.githubusercontent.com/${m.groups.owner}/${m.groups.repo}/refs/heads/${m.groups.path}` + : undefined; + }, + }, + { + id: "github assets", + matcher: async (url) => { + if (GITHUB_ASSET_URL_RX.test(url)) { + const client = GitHubClient.default(); + const resolved = await client.resolveAssetUrl(url); + return resolved; + } + return undefined; + }, + }, + { + id: "gist", + matcher: (url) => { + const m = /^https:\/\/(gist\.)?github\.com\/(?[^\/]+)\/(?\w+)(\/(?.*))?$/i.exec(url); + return m ? `gist://${m.groups.id}/${m.groups.filename || ""}` : undefined; + }, + }, +]; +async function applyUrlAdapters(url) { + // Use URL adapters to modify the URL if needed + for (const a of urlAdapters) { + const newUrl = await a.matcher(url); + if (newUrl) { + dbgAdaptors(`%s: %s`, a.id, uriRedact(url)); + return newUrl; + } + } + return url; +} +const uriResolvers = { + file: async (dbg, uri) => { + const filename = fileURLToPath(uri); + const file = { filename }; + return file; + }, + https: async (dbg, url, options) => { + // https://.../.../....git + if (/\.git($|\/)/.test(url.pathname)) + return await uriResolvers.git(dbg, url, options); + // regular fetch + const fetch = await createFetch(options); + dbg(`fetch %s`, uriRedact(url.href)); + const res = await fetch(url, { method: "GET" }); + dbg(`res: %d %s`, res.status, res.statusText); + if (!res.ok) + return undefined; + const contentType = res.headers.get("Content-Type"); + if (isBinaryMimeType(contentType)) { + const buffer = await res.arrayBuffer(); + return { + filename: url.pathname, + content: Buffer.from(buffer).toString("base64"), + encoding: "base64", + type: contentType, + size: buffer.byteLength, + }; + } + else { + const content = await res.text(); + return { + filename: url.pathname, + content, + type: contentType, + size: Buffer.byteLength(content, "utf8"), + }; + } + }, + gist: async (dbg, url) => { + // gist://id/ + // gist://id/filename + const gh = GitHubClient.default(); + const id = url.hostname; + const filename = url.pathname.slice(1) || ""; + if (!id) { + dbg(`missing gist id or filename`); + return undefined; + } + dbg(`gist %s %s`, id, filename); + const gist = await gh.getGist(id); + if (!gist) { + dbg(`missing gist %s`, id); + return undefined; + } + const files = gist.files || []; + if (filename) { + dbg(`moving file %s to top`, filename); + const i = gist.files.findIndex((f) => f.filename === filename); + if (i < 0) { + dbg(`file %s not found in gist`, filename); + return undefined; + } + const file = files[i]; + files.splice(i, 1); + files.unshift(file); + } + return files; + }, + vscode: async (dbg, url) => { + // vscode://vsls-contrib.gistfs/open?gist=8f7db2674f7b0eaaf563eae28253c2b0&file=poem.genai.mts + if (url.host === "vsls-contrib.gistfs" && url.pathname === "/open") { + const params = new URLSearchParams(url.search); + const gist = params.get("gist"); + const file = params.get("file") || ""; + if (!gist) { + dbg(`missing gist id %s`, gist); + return undefined; + } + return await uriResolvers.gist(dbg, new URL(`gist://${gist}/${file}`)); + } + return undefined; + }, + git: async (dbg, url) => { + // (git|https)://github.com/pelikhan/amazing-demo.git(/....) + let [owner, repo, ...filename] = url.pathname.replace(/^\//, "").split("/"); + repo = repo.replace(/\.git$/, ""); + const repository = [url.origin, owner, repo].join("/"); + const branch = url.hash.replace(/^#/, ""); + dbg(`git %s %s %s`, repository, branch, filename); + const client = await GitClient.default(); + const clone = await client.shallowClone(repository, { + branch, + }); + const cwd = clone.cwd; + const glob = filename.length ? join(...filename) : "**/*"; + dbg(`cloned at %s, glob %s`, cwd, glob); + const gitFolder = join(cwd, ".git"); + const files = (await expandFiles([join(cwd, glob)], { + applyGitIgnore: false, + })).filter((f) => !f.startsWith(gitFolder)); + return files.map((filename) => ({ filename })); + }, +}; +/** + * Attempts to resolve a given URL to its associated resources or files. + * + * @param url The input URL to resolve. + * @param options Optional tracing and cancellation options to control the operation. + * - cancellationToken: Allows monitoring and cancellation of the operation. + * + * @returns A promise that resolves to an object containing: + * - uri: The parsed valid URL object. + * - files: An array of resolved files associated with the resource. + * Returns undefined if the URL cannot be resolved or if no associated files are found. + * + * - Uses `applyUrlAdapters` to modify the URL if needed. + * - Validates and parses the URL. + * - Determines the scheme/protocol of the URL and invokes the appropriate resolver from `uriResolvers`. + * - Resolves resources by downloading or fetching content based on the URL scheme. + * - Handles both text and binary content. + * - Reports errors or unsupported protocols. + * - Cancels the process if the cancellation token is triggered. + * - Logs debug information about the resolution process and resolved files. + * - Throws an error if the cancellation token is triggered during the operation. + */ +export async function tryResolveResource(url, options) { + if (!url) + return undefined; + url = await applyUrlAdapters(url); + const uri = uriTryParse(url); + if (!uri) + return undefined; + const { cancellationToken } = options || {}; + dbg(`resolving %s`, uriRedact(url)); + try { + // try to resolve + const scheme = uriScheme(uri); + const resolver = uriResolvers[scheme]; + if (!resolver) { + dbg(`unsupported protocol %s`, scheme); + return undefined; + } + // download + const dbgUri = dbg.extend(uri.protocol.replace(/:$/, "")); + const files = arrayify(await resolver(dbgUri, uri, options)); + checkCancelled(cancellationToken); + dbg(`resolved %d files`, files.length); + dbgFiles("%O", files.map((f) => f.filename)); + if (!files.length) { + dbg(`failed to resolve %s`, uriRedact(uri.href)); + return undefined; + } + // success + return { uri, files }; + } + catch (error) { + if (isCancelError(error)) + throw error; + dbg(`failed to parse uri %s`, uriRedact(uri.href), error); + return undefined; + } +} +//# sourceMappingURL=resources.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/resources.js.map b/packages/core/.tshy-build/browser/resources.js.map new file mode 100644 index 0000000000..a171844b61 --- /dev/null +++ b/packages/core/.tshy-build/browser/resources.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/resources.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/runpromptcontext.d.ts b/packages/core/.tshy-build/browser/runpromptcontext.d.ts new file mode 100644 index 0000000000..4bda24a232 --- /dev/null +++ b/packages/core/.tshy-build/browser/runpromptcontext.d.ts @@ -0,0 +1,40 @@ +import { type PromptNode } from "./promptdom.js"; +import type { MarkdownTrace } from "./trace.js"; +import type { GenerationOptions } from "./generation.js"; +import { type CancellationToken } from "./cancellation.js"; +import type { Project } from "./server/messages.js"; +import type { ChatGenerationContext, ChatTurnGenerationContext, ExpansionVariables } from "./types.js"; +/** + * Creates a chat turn generation context object for building prompt nodes and utilities in a chat session. + * + * @param options - Generation options that configure prompt and model behaviors. + * @param trace - Trace logger for output and debugging; collects logs and tracing information for the turn. + * @param cancellationToken - Token used for supporting cancellation of asynchronous operations within this context. + * + * @returns Chat turn generation context with a prompt node for composition and methods: + * - node: The root prompt node for this chat turn. + * - writeText: Adds a text (or assistant/system) message node, with optional configuration. + * - assistant: Shortcut for adding a message as assistant. + * - $: Tagged template for string templates. Returns a PromptTemplateString for further configuration (setting priority, jinja/mustache transforms, roles, caching, etc.). + * - def: Defines a named prompt artifact (text, file, etc.) in the prompt context. + * - defImages: Defines image input(s) as prompt nodes, supports tiling and various source types. + * - defData: Defines structured data input as a prompt node. + * - defDiff: Defines a diff between two items and appends as a prompt node. + * - fence: Wraps body in a code fence and defines as a prompt artifact. + * - importTemplate: Imports and expands a prompt template. + * - console: Logging interface for messages, warnings, errors, and debugging within the context. + * + * This context is generally used by higher-level orchestration to build structured prompt data, + * images, and system messages suitable for multi-turn chat generations. + */ +export declare function createChatTurnGenerationContext(options: GenerationOptions, trace: MarkdownTrace, cancellationToken: CancellationToken): ChatTurnGenerationContext & { + node: PromptNode; +}; +export interface RunPromptContextNode extends ChatGenerationContext { + node: PromptNode; +} +export declare function createChatGenerationContext(options: GenerationOptions, trace: MarkdownTrace, projectOptions: { + prj: Project; + env: ExpansionVariables; +}): RunPromptContextNode; +//# sourceMappingURL=runpromptcontext.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/runpromptcontext.d.ts.map b/packages/core/.tshy-build/browser/runpromptcontext.d.ts.map new file mode 100644 index 0000000000..cfec2a61ee --- /dev/null +++ b/packages/core/.tshy-build/browser/runpromptcontext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"runpromptcontext.d.ts","sourceRoot":"","sources":["../../src/runpromptcontext.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,UAAU,EAyBhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA0BzD,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,mBAAmB,CAAC;AAwB3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAoBpD,OAAO,KAAK,EAGV,qBAAqB,EAIrB,yBAAyB,EAOzB,kBAAkB,EA4BnB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,aAAa,EACpB,iBAAiB,EAAE,iBAAiB,GACnC,yBAAyB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAkQlD;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE;IACd,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,kBAAkB,CAAC;CACzB,GACA,oBAAoB,CA2rBtB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/runpromptcontext.js b/packages/core/.tshy-build/browser/runpromptcontext.js new file mode 100644 index 0000000000..d6bd0a4d2d --- /dev/null +++ b/packages/core/.tshy-build/browser/runpromptcontext.js @@ -0,0 +1,908 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// cspell: disable +import { appendChild, createAssistantNode, createChatParticipant, createDefData, createDefDiff, createDef, createFileOutput, createToolNode, createImageNode, createImportTemplate, createSchemaNode, createStringTemplateNode, createTextNode, renderPromptNode, createOutputProcessor, createFileMerge, createSystemNode, finalizeMessages, createMcpServer, toDefRefName, resolveFenceFormat, createFileImageNodes, createMcpClient, } from "./promptdom.js"; +import { promptParametersSchemaToJSONSchema } from "./parameters.js"; +import { consoleLogFormat } from "./logging.js"; +import { isGlobMatch } from "./glob.js"; +import { assert } from "./assert.js"; +import { arrayify } from "./cleaners.js"; +import { ellipse, logError, logVerbose, logWarn } from "./util.js"; +import { lastAssistantReasoning, renderShellOutput } from "./chatrender.js"; +import { jinjaRender } from "./jinja.js"; +import { mustacheRender } from "./mustache.js"; +import { imageEncodeForLLM, imageTileEncodeForLLM, imageTransform, renderImageToTerminal, } from "./image.js"; +import { delay, uniq } from "es-toolkit"; +import { addToolDefinitionsMessage, appendSystemMessage, executeChatSession, mergeGenerationOptions, tracePromptResult, } from "./chat.js"; +import { checkCancelled } from "./cancellation.js"; +import { resolveModelConnectionInfo } from "./models.js"; +import { CHAT_REQUEST_PER_MODEL_CONCURRENT_LIMIT, TOKEN_MISSING_INFO, TOKEN_NO_ANSWER, DOCS_DEF_FILES_IS_EMPTY_URL, TRANSCRIPTION_CACHE_NAME, TRANSCRIPTION_MODEL_ID, SPEECH_MODEL_ID, IMAGE_GENERATION_MODEL_ID, LARGE_MODEL_ID, } from "./constants.js"; +import { addFallbackToolSystems, resolveSystems, resolveTools } from "./systems.js"; +import { callExpander } from "./expander.js"; +import { errorMessage, isCancelError, NotSupportedError, serializeError } from "./error.js"; +import { resolveLanguageModel } from "./lm.js"; +import { concurrentLimit } from "./concurrency.js"; +import { resolveScript } from "./ast.js"; +import { dedent } from "./indent.js"; +import { writeFileEdits } from "./fileedits.js"; +import { agentAddMemory, agentCreateCache, agentQueryMemory } from "./agent.js"; +import { YAMLStringify } from "./yaml.js"; +import { mergeEnvVarsWithSystem, parametersToVars } from "./vars.js"; +import { FFmepgClient } from "./ffmpeg.js"; +import { BufferToBlob } from "./bufferlike.js"; +import { resolveRuntimeHost } from "./host.js"; +import { srtVttRender } from "./transcription.js"; +import { hash } from "./crypto.js"; +import { fileTypeFromBuffer } from "./filetype.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { sliceData } from "./tidy.js"; +import { toBase64 } from "./base64.js"; +import { consoleColors } from "./consolecolor.js"; +import { terminalSize } from "./terminal.js"; +import { stderr, stdout } from "./stdio.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { prettyBytes } from "./pretty.js"; +import { createCache } from "./cache.js"; +import { measure } from "./performance.js"; +import { genaiscriptDebug } from "./debug.js"; +import debug from "debug"; +const dbg = genaiscriptDebug("prompt:context"); +/** + * Creates a chat turn generation context object for building prompt nodes and utilities in a chat session. + * + * @param options - Generation options that configure prompt and model behaviors. + * @param trace - Trace logger for output and debugging; collects logs and tracing information for the turn. + * @param cancellationToken - Token used for supporting cancellation of asynchronous operations within this context. + * + * @returns Chat turn generation context with a prompt node for composition and methods: + * - node: The root prompt node for this chat turn. + * - writeText: Adds a text (or assistant/system) message node, with optional configuration. + * - assistant: Shortcut for adding a message as assistant. + * - $: Tagged template for string templates. Returns a PromptTemplateString for further configuration (setting priority, jinja/mustache transforms, roles, caching, etc.). + * - def: Defines a named prompt artifact (text, file, etc.) in the prompt context. + * - defImages: Defines image input(s) as prompt nodes, supports tiling and various source types. + * - defData: Defines structured data input as a prompt node. + * - defDiff: Defines a diff between two items and appends as a prompt node. + * - fence: Wraps body in a code fence and defines as a prompt artifact. + * - importTemplate: Imports and expands a prompt template. + * - console: Logging interface for messages, warnings, errors, and debugging within the context. + * + * This context is generally used by higher-level orchestration to build structured prompt data, + * images, and system messages suitable for multi-turn chat generations. + */ +export function createChatTurnGenerationContext(options, trace, cancellationToken) { + const node = { children: [] }; + const fenceFormat = options.fenceFormat || resolveFenceFormat(options.model); + const lineNumbers = options.lineNumbers; + const console = Object.freeze({ + log: (...args) => { + const line = consoleLogFormat(...args); + if (line) { + trace?.log(line); + stdout.write(line + "\n"); + } + }, + debug: (...args) => { + const line = consoleLogFormat(...args); + if (line) { + trace?.log(line); + logVerbose(line); + } + }, + warn: (...args) => { + const line = consoleLogFormat(...args); + if (line) { + trace?.warn(line); + logWarn(line); + } + }, + error: (...args) => { + const line = consoleLogFormat(...args); + if (line) { + trace?.error(line); + logError(line); + } + }, + }); + const defImages = (files, defOptions) => { + checkCancelled(cancellationToken); + if (files === undefined || files === null) { + if (defOptions?.ignoreEmpty) + return; + throw new Error("no images provided"); + } + if (Array.isArray(files)) { + if (!files.length) { + if (defOptions?.ignoreEmpty) + return; + throw new Error("no images provided"); + } + const sliced = sliceData(files, defOptions); + if (!defOptions?.tiled) + sliced.forEach((file) => defImages(file, defOptions)); + else { + appendChild(node, createImageNode((async () => { + if (!files.length) + return undefined; + const encoded = await imageTileEncodeForLLM(files, { + ...defOptions, + cancellationToken, + trace, + }); + return encoded; + })())); + } + } + else if (typeof files === "string" || files instanceof Blob || files instanceof Buffer) { + const img = files; + appendChild(node, createImageNode((async () => { + const encoded = await imageEncodeForLLM(img, { + ...defOptions, + cancellationToken, + trace, + }); + return encoded; + })())); + } + else { + const file = files; + appendChild(node, ...createFileImageNodes(undefined, file, defOptions, { + trace, + cancellationToken, + })); + } + }; + const ctx = { + node, + writeText: (body, options) => { + if (body !== undefined && body !== null) { + const { priority, maxTokens } = options || {}; + const role = options?.assistant ? "assistant" : options?.role || "user"; + appendChild(node, role === "assistant" + ? createAssistantNode(body, { priority, maxTokens }) + : role === "system" + ? createSystemNode(body, { priority, maxTokens }) + : createTextNode(body, { priority, maxTokens })); + } + }, + assistant: (body, options) => ctx.writeText(body, { + ...options, + role: "assistant", + }), + $: (strings, ...args) => { + const current = createStringTemplateNode(strings, args); + appendChild(node, current); + const res = Object.freeze({ + priority: (priority) => { + current.priority = priority; + return res; + }, + flex: (value) => { + current.flex = value; + return res; + }, + jinja: (data) => { + current.transforms.push((t) => jinjaRender(t, data)); + return res; + }, + mustache: (data) => { + current.transforms.push((t) => mustacheRender(t, data)); + return res; + }, + maxTokens: (tokens) => { + current.maxTokens = tokens; + return res; + }, + role: (r) => { + current.role = r; + return res; + }, + cacheControl: (cc) => { + current.cacheControl = cc; + return res; + }, + }); + return res; + }, + def: (name, body, defOptions) => { + name = name ?? ""; + const doptions = { ...(defOptions || {}), trace }; + doptions.lineNumbers = doptions.lineNumbers ?? lineNumbers; + doptions.fenceFormat = doptions.fenceFormat ?? fenceFormat; + // shortcuts + if (body === undefined || body === null) { + if (!doptions.ignoreEmpty) + throw new Error(`def ${name} is ${body}. See ${DOCS_DEF_FILES_IS_EMPTY_URL}`); + return undefined; + } + else if (Array.isArray(body)) { + if (body.length === 0 && !doptions.ignoreEmpty) + throw new Error(`def ${name} is empty. See ${DOCS_DEF_FILES_IS_EMPTY_URL}`); + body.forEach((f) => ctx.def(name, f, defOptions)); + } + else if (typeof body === "string") { + if (body.trim() === "" && !doptions.ignoreEmpty) + throw new Error(`def ${name} is empty. See ${DOCS_DEF_FILES_IS_EMPTY_URL}`); + appendChild(node, createDef(name, { filename: "", content: body }, doptions)); + } + else if (typeof body === "object" && body.filename) { + const file = body; + const { glob } = defOptions || {}; + const endsWith = arrayify(defOptions?.endsWith); + const { filename } = file; + if (glob && filename) { + if (!isGlobMatch(filename, glob)) + return undefined; + } + if (endsWith.length && !endsWith.some((ext) => filename.endsWith(ext))) + return undefined; + // more robust check + if (/\.(png|jpeg|jpg|gif|webp)$/i.test(filename)) { + appendChild(node, ...createFileImageNodes(name, file, doptions, { + trace, + cancellationToken, + })); + } + else + appendChild(node, createDef(name, file, doptions)); + } + else if (typeof body === "object" && body.exitCode !== undefined) { + appendChild(node, createDef(name, { + filename: "", + content: renderShellOutput(body), + }, { ...doptions, lineNumbers: false })); + } + else if (typeof body === "object" && body.content) { + const fenced = body; + appendChild(node, createDef(name, { filename: "", content: fenced.content }, { language: fenced.language, ...(doptions || {}) })); + } + else if (typeof body === "object" && body.text) { + const res = body; + const fence = res.fences?.length === 1 ? res.fences[0] : undefined; + appendChild(node, createDef(name, { filename: "", content: fence?.content ?? res.text }, { language: fence?.language, ...(doptions || {}) })); + } + return toDefRefName(name, doptions); + }, + defImages, + defData: (name, data, defOptions) => { + name = name ?? ""; + const doptions = { ...(defOptions || {}), trace }; + doptions.fenceFormat = doptions.fenceFormat ?? fenceFormat; + appendChild(node, createDefData(name, data, doptions)); + return toDefRefName(name, doptions); + }, + defDiff: (name, left, right, defDiffOptions) => { + name = name ?? ""; + const doptions = { ...(defDiffOptions || {}), trace }; + doptions.fenceFormat = doptions.fenceFormat ?? fenceFormat; + appendChild(node, createDefDiff(name, left, right, doptions)); + return toDefRefName(name, doptions); + }, + fence(body, options) { + const doptions = { ...(options || {}), trace }; + doptions.fenceFormat = doptions.fenceFormat ?? fenceFormat; + ctx.def("", body, doptions); + return undefined; + }, + importTemplate: (template, data, options) => { + appendChild(node, createImportTemplate(template, data, options)); + return undefined; + }, + console, + }; + return ctx; +} +export function createChatGenerationContext(options, trace, projectOptions) { + const runtimeHost = resolveRuntimeHost(); + const { cancellationToken, infoCb, userState } = options || {}; + const { prj, env } = projectOptions; + assert(!!env.output, "output missing"); + const turnCtx = createChatTurnGenerationContext(options, trace, cancellationToken); + const node = turnCtx.node; + // Default output processor for the prompt + const defOutputProcessor = (fn) => { + checkCancelled(cancellationToken); + if (fn) + appendChild(node, createOutputProcessor(fn)); + }; + const defTool = (name, description, parameters, fn, defOptions) => { + checkCancelled(cancellationToken); + if (name === undefined || name === null) + throw new Error("tool name is missing"); + dbg(`tool %s`, name); + if (typeof name === "string") { + if (typeof description !== "string") + throw new Error("tool description is missing"); + const parameterSchema = promptParametersSchemaToJSONSchema(parameters); + appendChild(node, createToolNode(name, description, parameterSchema, fn, defOptions, ctx)); + } + else if (typeof name === "object" && name.impl) { + const tool = name; + appendChild(node, createToolNode(tool.spec.name, tool.spec.description, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + tool.spec.parameters, tool.impl, defOptions, ctx)); + } + else if (typeof name === "object" && name.config) { + const client = name; + appendChild(node, createMcpClient(client)); + } + else if (typeof name === "object") { + dbg(`mcp: %o`, Object.keys(name)); + for (const kv of Object.entries(name)) { + const [id, def] = kv; + const serverConfig = def; + appendChild(node, createMcpServer(id, serverConfig, defOptions, ctx)); + } + } + }; + const adbgm = debug(`agent:memory`); + const defAgent = (name, description, fn, options) => { + checkCancelled(cancellationToken); + const { variant, tools, system, disableMemory, disableMemoryQuery, ...rest } = options || {}; + const memory = disableMemory ? undefined : agentCreateCache({ userState }); + name = name.replace(/^agent_/i, ""); + const adbg = debug(`agent:${name}`); + adbg(`created ${variant || ""}`); + const agentName = `agent_${name}${variant ? "_" + variant : ""}`; + const agentLabel = `agent ${name}${variant ? " " + variant : ""}`; + const agentSystem = uniq([ + "system.assistant", + "system.tools", + "system.explanations", + "system.safety_jailbreak", + "system.safety_harmful_content", + "system.safety_protected_material", + ...arrayify(system), + ]); + const agentTools = resolveTools(runtimeHost.project, agentSystem, arrayify(tools)); + const agentDescription = ellipse(`Agent that uses an LLM to ${description}.\nAvailable tools:${agentTools.map((t) => `- ${t.description}`).join("\n")}`, 1020); // DO NOT LEAK TOOL ID HERE + dbg(`description: ${agentDescription}`); + defTool(agentName, agentDescription, { + type: "object", + properties: { + query: { + type: "string", + description: "Query to answer by the LLM agent.", + }, + }, + required: ["query"], + }, async (args) => { + // the LLM automatically adds extract arguments to the context + checkCancelled(cancellationToken); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { context, ...argsRest } = args; + const { query, ...argsNoQuery } = argsRest; + infoCb?.({ + text: `${agentLabel}: ${query} ${parametersToVars(argsNoQuery)}`, + }); + adbg(`query: ${query}`); + const hasExtraArgs = Object.keys(argsNoQuery).length > 0; + if (hasExtraArgs) + adbg(`extra args: %O`, argsNoQuery); + let memoryAnswer; + if (memory && query && !disableMemoryQuery) { + memoryAnswer = await agentQueryMemory(memory, ctx, query + (hasExtraArgs ? `\n${YAMLStringify(argsNoQuery)}` : "")); + if (memoryAnswer) + adbgm(`found ${memoryAnswer}`); + } + const res = await ctx.runPrompt(async (_) => { + if (typeof fn === "string") + _.writeText(dedent(fn), { role: "system" }); + else + await fn(_, args); + _.$ `Make a plan and solve the task described in . + + - Assume that your answer will be analyzed by an LLM, not a human. + - If you are missing information, reply "${TOKEN_MISSING_INFO}: ". + - If you cannot answer the query, return "${TOKEN_NO_ANSWER}: ". + - Be concise. Minimize output to the most relevant information to save context tokens. + `.role("system"); + if (memoryAnswer) + _.$ `- The applied to the agent memory is in .`.role("system"); + _.def("QUERY", query); + if (Object.keys(argsNoQuery).length) + _.defData("QUERY_CONTEXT", argsNoQuery, { + format: "yaml", + }); + if (memoryAnswer) + _.def("MEMORY", memoryAnswer); + if (memory) + _.defOutputProcessor(async ({ text }) => { + if (text && + !(text.startsWith(TOKEN_MISSING_INFO) || text.startsWith(TOKEN_NO_ANSWER))) { + adbgm(`add ${text}`); + await agentAddMemory(memory, agentName, query, text, { + trace, + }); + } + }); + }, { + model: "agent", + label: agentLabel, + system: agentSystem, + tools: agentTools.map(({ id }) => id), + ...rest, + }); + if (res.error) { + adbg(`error: ${res.error}`); + throw res.error; + } + const response = res.text; + adbgm(`response: %O`, response); + return response; + }); + }; + const defSchema = (name, schema, defOptions) => { + checkCancelled(cancellationToken); + appendChild(node, createSchemaNode(name, schema, defOptions)); + return name; + }; + const defChatParticipant = (generator, options) => { + checkCancelled(cancellationToken); + if (generator) + appendChild(node, createChatParticipant({ generator, options })); + }; + const defFileOutput = (pattern, description, options) => { + checkCancelled(cancellationToken); + if (pattern) + appendChild(node, createFileOutput({ + pattern: arrayify(pattern).map((p) => (typeof p === "string" ? p : p.filename)), + description, + options, + })); + }; + const prompt = (strings, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...args) => { + checkCancelled(cancellationToken); + const options = {}; + const p = new Promise(async (resolve, reject) => { + try { + await delay(0); + // data race for options + const res = await ctx.runPrompt(async (_) => { + _.$(strings, ...args); + }, options); + resolve(res); + } + catch (e) { + reject(e); + } + }); + p.options = (v) => { + if (v !== undefined) + Object.assign(options, v); + return p; + }; + return p; + }; + const transcribe = async (audio, options) => { + checkCancelled(cancellationToken); + const { cache, ...rest } = options || {}; + const transcriptionTrace = trace?.startTraceDetails("🎤 transcribe"); + try { + const conn = { + model: options?.model, + }; + const { info, configuration } = await resolveModelConnectionInfo(conn, { + trace: transcriptionTrace, + defaultModel: TRANSCRIPTION_MODEL_ID, + cancellationToken, + token: true, + }); + if (info.error) + throw new Error(info.error); + if (!configuration) + throw new Error("model configuration not found"); + checkCancelled(cancellationToken); + const { ok } = await runtimeHost.pullModel(configuration, { + trace: transcriptionTrace, + cancellationToken, + }); + if (!ok) + throw new Error(`failed to pull model ${conn}`); + checkCancelled(cancellationToken); + const { transcriber } = await resolveLanguageModel(configuration.provider); + if (!transcriber) + throw new Error("audio transcribe not found for " + info.model); + const ffmpeg = new FFmepgClient(); + const audioFile = await ffmpeg.extractAudio(audio, { + transcription: true, + cache, + }); + const file = await BufferToBlob(await runtimeHost.readFile(audioFile), "audio/ogg"); + const update = async () => { + transcriptionTrace?.itemValue(`model`, configuration.model); + transcriptionTrace?.itemValue(`file size`, prettyBytes(file.size)); + transcriptionTrace?.itemValue(`file type`, file.type); + const res = await transcriber({ + file, + model: configuration.model, + language: options?.language, + translate: options?.translate, + }, configuration, { + trace: transcriptionTrace, + cancellationToken, + }); + srtVttRender(res); + return res; + }; + let res; + const _cache = createCache(cache === true ? TRANSCRIPTION_CACHE_NAME : typeof cache === "string" ? cache : undefined, { type: "fs" }); + if (cache) { + const hit = await _cache.getOrUpdate({ file, ...rest }, update, (res) => !res.error); + transcriptionTrace?.itemValue(`cache ${hit.cached ? "hit" : "miss"}`, hit.key); + res = hit.value; + } + else + res = await update(); + transcriptionTrace?.fence(res.text, "markdown"); + if (res.error) + transcriptionTrace?.error(errorMessage(res.error)); + if (res.segments) + transcriptionTrace?.fence(res.segments, "yaml"); + return res; + } + catch (e) { + logError(e); + transcriptionTrace?.error(e); + return { + text: undefined, + error: serializeError(e), + }; + } + finally { + transcriptionTrace?.endDetails(); + } + }; + const speak = async (input, options) => { + checkCancelled(cancellationToken); + const { cache, voice, instructions, ...rest } = options || {}; + const speechTrace = trace?.startTraceDetails("🦜 speak"); + try { + const conn = { + model: options?.model || SPEECH_MODEL_ID, + }; + const { info, configuration } = await resolveModelConnectionInfo(conn, { + trace: speechTrace, + defaultModel: SPEECH_MODEL_ID, + cancellationToken, + token: true, + }); + if (info.error) + throw new Error(info.error); + if (!configuration) + throw new Error("model configuration not found"); + checkCancelled(cancellationToken); + const { ok } = await runtimeHost.pullModel(configuration, { + trace: speechTrace, + cancellationToken, + }); + if (!ok) + throw new Error(`failed to pull model ${conn}`); + checkCancelled(cancellationToken); + const { speaker } = await resolveLanguageModel(configuration.provider); + if (!speaker) + throw new Error("speech converter not found for " + info.model); + speechTrace?.itemValue(`model`, configuration.model); + const req = deleteUndefinedValues({ + input, + model: configuration.model, + voice, + instructions: dedent(instructions), + }); + const res = await speaker(req, configuration, { + trace: speechTrace, + cancellationToken, + }); + if (res.error) { + speechTrace?.error(errorMessage(res.error)); + return { error: res.error }; + } + const h = await hash(res.audio, { length: 20 }); + const { ext } = (await fileTypeFromBuffer(res.audio)) || {}; + const filename = dotGenaiscriptPath("speech", h + "." + ext); + await runtimeHost.writeFile(filename, res.audio); + return { + filename, + }; + } + catch (e) { + logError(e); + speechTrace?.error(e); + return { + filename: undefined, + error: serializeError(e), + }; + } + finally { + speechTrace?.endDetails(); + } + }; + const defFileMerge = (fn) => { + checkCancelled(cancellationToken); + appendChild(node, createFileMerge(fn)); + }; + const runPrompt = async (generator, runOptions) => { + checkCancelled(cancellationToken); + Object.freeze(runOptions); + const { label, applyEdits, throwOnError } = runOptions || {}; + const runTrace = trace?.startTraceDetails(`🎁 ${label || "prompt"}`); + const messages = []; + try { + infoCb?.({ text: label || "prompt" }); + const genOptions = mergeGenerationOptions(options, runOptions); + genOptions.inner = true; + genOptions.trace = runTrace; + const { info, configuration } = await resolveModelConnectionInfo(genOptions, { + trace: runTrace, + defaultModel: LARGE_MODEL_ID, + cancellationToken, + token: true, + }); + if (info.error) + throw new Error(info.error); + if (!configuration) + throw new Error("model configuration not found"); + genOptions.model = info.model; + genOptions.stats = genOptions.stats.createChild(genOptions.model, label); + const { ok } = await runtimeHost.pullModel(configuration, { + trace: runTrace, + cancellationToken, + }); + if (!ok) + throw new Error(`failed to pull model ${genOptions.model}`); + const runCtx = createChatGenerationContext(genOptions, runTrace, projectOptions); + if (typeof generator === "string") + runCtx.node.children.push(createTextNode(generator)); + else + await generator(runCtx); + const node = runCtx.node; + checkCancelled(cancellationToken); + let tools = undefined; + let schemas = undefined; + let chatParticipants = undefined; + const images = []; + const fileMerges = []; + const outputProcessors = []; + const fileOutputs = []; + const disposables = []; + // expand template + const { errors, schemas: scs, tools: fns, messages: msgs, chatParticipants: cps, fileMerges: fms, outputProcessors: ops, fileOutputs: fos, images: imgs, prediction, disposables: dps, } = await renderPromptNode(genOptions.model, node, { + flexTokens: genOptions.flexTokens, + fenceFormat: genOptions.fenceFormat, + trace: runTrace, + cancellationToken, + }); + schemas = scs; + tools = fns; + chatParticipants = cps; + messages.push(...msgs); + fileMerges.push(...fms); + outputProcessors.push(...ops); + fileOutputs.push(...fos); + images.push(...imgs); + disposables.push(...dps); + if (errors?.length) { + logError(errors.map((err) => errorMessage(err)).join("\n")); + throw new Error("errors while running prompt"); + } + const systemScripts = resolveSystems(prj, runOptions ?? {}, tools); + if (addFallbackToolSystems(systemScripts, tools, runOptions, genOptions)) { + assert(!Object.isFrozen(genOptions)); + genOptions.fallbackTools = true; + dbg(`fallback tools added ${genOptions.fallbackTools}`); + } + if (systemScripts.length) + try { + runTrace?.startDetails("👾 systems"); + for (const systemId of systemScripts) { + checkCancelled(cancellationToken); + dbg(`system ${systemId.id}`, { + fallbackTools: genOptions.fallbackTools, + }); + const system = resolveScript(prj, systemId); + if (!system) + throw new Error(`system template ${systemId.id} not found`); + runTrace?.startDetails(`👾 ${system.id}`); + if (systemId.parameters) + runTrace?.detailsFenced(`parameters`, YAMLStringify(systemId.parameters)); + const sysr = await callExpander(prj, system, mergeEnvVarsWithSystem(env, systemId), genOptions, false); + if (sysr.images?.length) + throw new NotSupportedError("images"); + if (sysr.schemas) + Object.assign(schemas, sysr.schemas); + if (sysr.functions) + tools.push(...sysr.functions); + if (sysr.fileMerges?.length) + fileMerges.push(...sysr.fileMerges); + if (sysr.outputProcessors?.length) + outputProcessors.push(...sysr.outputProcessors); + if (sysr.chatParticipants) + chatParticipants.push(...sysr.chatParticipants); + if (sysr.fileOutputs?.length) + fileOutputs.push(...sysr.fileOutputs); + if (sysr.disposables?.length) + disposables.push(...sysr.disposables); + if (sysr.logs?.length) + runTrace?.details("📝 console.log", sysr.logs); + for (const smsg of sysr.messages) { + if (smsg.role === "user" && typeof smsg.content === "string") { + appendSystemMessage(messages, smsg.content); + runTrace?.fence(smsg.content, "markdown"); + } + else + throw new NotSupportedError("only string user messages supported in system"); + } + genOptions.logprobs = genOptions.logprobs || system.logprobs; + runTrace?.detailsFenced("💻 script source", system.jsSource, "js"); + runTrace?.endDetails(); + if (sysr.status !== "success") + throw new Error(`system ${system.id} failed ${sysr.status} ${sysr.statusText}`); + } + } + finally { + runTrace?.endDetails(); + } + if (genOptions.fallbackTools) { + dbg(`fallback tools definitions added`); + addToolDefinitionsMessage(messages, tools); + } + finalizeMessages(genOptions.model, messages, { + ...genOptions, + fileOutputs, + trace: runTrace, + }); + const { completer } = await resolveLanguageModel(configuration.provider); + if (!completer) + throw new Error("model driver not found for " + info.model); + checkCancelled(cancellationToken); + const modelConcurrency = options.modelConcurrency?.[genOptions.model] ?? CHAT_REQUEST_PER_MODEL_CONCURRENT_LIMIT; + const modelLimit = concurrentLimit("model:" + genOptions.model, modelConcurrency); + dbg(`run ${genOptions.model}`); + const resp = await modelLimit(() => executeChatSession(configuration, cancellationToken, messages, tools, schemas, fileOutputs, outputProcessors, fileMerges, prediction, completer, chatParticipants, disposables, genOptions)); + tracePromptResult(runTrace, resp); + await writeFileEdits(resp.fileEdits, { + applyEdits, + trace: runTrace, + }); + if (resp.error && throwOnError) + throw new Error(errorMessage(resp.error)); + return resp; + } + catch (e) { + runTrace?.error(e); + if (throwOnError) + throw e; + return { + messages, + text: "", + reasoning: lastAssistantReasoning(messages), + finishReason: isCancelError(e) ? "cancel" : "fail", + error: serializeError(e), + }; + } + finally { + runTrace?.endDetails(); + } + }; + const generateImage = async (prompt, imageOptions) => { + if (!prompt) + throw new Error("prompt is missing"); + const imgTrace = trace?.startTraceDetails("🖼️ generate image"); + try { + const { style, quality, size, outputFormat, mime, mode, image, mask, ...rest } = imageOptions || {}; + const conn = { + model: imageOptions?.model || IMAGE_GENERATION_MODEL_ID, + }; + const { info, configuration } = await resolveModelConnectionInfo(conn, { + trace: imgTrace, + defaultModel: IMAGE_GENERATION_MODEL_ID, + cancellationToken, + token: true, + }); + if (info.error) + throw new Error(info.error); + if (!configuration) + throw new Error(`model configuration not found for ${conn.model}`); + const stats = options.stats.createChild(info.model, "generate image"); + checkCancelled(cancellationToken); + const { ok } = await runtimeHost.pullModel(configuration, { + trace: imgTrace, + cancellationToken, + }); + if (!ok) + throw new Error(`failed to pull model '${conn}'`); + checkCancelled(cancellationToken); + const { imageGenerator } = await resolveLanguageModel(configuration.provider); + if (!imageGenerator) + throw new Error("image generator not found for " + info.model); + imgTrace?.itemValue(`model`, configuration.model); + // Validate mode-specific requirements + if (mode === "edit" && !image) { + throw new Error("Image is required for edit mode"); + } + const req = deleteUndefinedValues({ + model: configuration.model, + prompt: dedent(prompt), + size, + quality, + style, + outputFormat, + mode, + image, + mask, + }); + const m = measure("img.generate", `${req.model} -> image`); + const res = await imageGenerator(req, configuration, { + trace: imgTrace, + cancellationToken, + ...rest, + }); + const duration = m(); + if (res.error) { + imgTrace?.error(errorMessage(res.error)); + throw new Error(errorMessage(res.error)); + } + dbg(`usage: %o`, res.usage); + stats.addImageGenerationUsage(res.usage, duration); + const h = await hash(res.image, { length: 20 }); + const buf = await imageTransform(res.image, { + ...(imageOptions || {}), + mime: mime ?? + (outputFormat === "jpeg" || outputFormat === "webp" + ? `image/jpeg` + : outputFormat === "png" + ? `image/png` + : undefined), + cancellationToken, + trace: imgTrace, + }); + const { ext } = (await fileTypeFromBuffer(buf)) || {}; + const filename = dotGenaiscriptPath("image", h + "." + ext); + await runtimeHost.writeFile(filename, buf); + if (consoleColors) { + const size = terminalSize(); + stderr.write(await renderImageToTerminal(buf, { + ...size, + label: filename, + usage: res.usage, + modelId: info.model, + })); + } + else + logVerbose(`image: ${filename}`); + imgTrace?.image(filename, `generated image`); + imgTrace?.detailsFenced(`🔀 revised prompt`, res.revisedPrompt); + return { + image: { + filename, + encoding: "base64", + content: toBase64(res.image), + }, + revisedPrompt: res.revisedPrompt, + }; + } + finally { + imgTrace?.endDetails(); + } + }; + const ctx = Object.freeze({ + ...turnCtx, + defAgent, + defTool, + defSchema, + defChatParticipant, + defFileOutput, + defOutputProcessor, + defFileMerge, + prompt, + runPrompt, + transcribe, + speak, + generateImage, + env, + }); + return ctx; +} +//# sourceMappingURL=runpromptcontext.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/runpromptcontext.js.map b/packages/core/.tshy-build/browser/runpromptcontext.js.map new file mode 100644 index 0000000000..f2bd7d3bb5 --- /dev/null +++ b/packages/core/.tshy-build/browser/runpromptcontext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"runpromptcontext.js","sourceRoot":"","sources":["../../src/runpromptcontext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sanitize.d.ts b/packages/core/.tshy-build/browser/sanitize.d.ts new file mode 100644 index 0000000000..71808c9285 --- /dev/null +++ b/packages/core/.tshy-build/browser/sanitize.d.ts @@ -0,0 +1,3 @@ +import _sanitize from "sanitize-filename"; +export declare const sanitizeFilename: typeof _sanitize; +//# sourceMappingURL=sanitize.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sanitize.d.ts.map b/packages/core/.tshy-build/browser/sanitize.d.ts.map new file mode 100644 index 0000000000..b17870db05 --- /dev/null +++ b/packages/core/.tshy-build/browser/sanitize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/sanitize.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,eAAO,MAAM,gBAAgB,kBAAY,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sanitize.js b/packages/core/.tshy-build/browser/sanitize.js new file mode 100644 index 0000000000..6cce51ddd8 --- /dev/null +++ b/packages/core/.tshy-build/browser/sanitize.js @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import _sanitize from "sanitize-filename"; +export const sanitizeFilename = _sanitize; +//# sourceMappingURL=sanitize.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sanitize.js.map b/packages/core/.tshy-build/browser/sanitize.js.map new file mode 100644 index 0000000000..3869cb974d --- /dev/null +++ b/packages/core/.tshy-build/browser/sanitize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/sanitize.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sarif.d.ts b/packages/core/.tshy-build/browser/sarif.d.ts new file mode 100644 index 0000000000..54d513bc58 --- /dev/null +++ b/packages/core/.tshy-build/browser/sarif.d.ts @@ -0,0 +1,23 @@ +import type { PromptScript, Diagnostic } from "./types.js"; +/** + * This module contains utility functions for working with SARIF (Static Analysis Results Interchange Format) + * including checking file extensions and converting diagnostic issues to SARIF format. + */ +/** + * Checks if the filename has a SARIF extension. + * @param f - The filename to check. + * @returns True if the filename ends with .sarif, false otherwise. + */ +export declare function isSARIFFilename(f: string): boolean; +/** + * Converts diagnostic issues to a SARIF format. + * + * This function is intended to be used with the MS-SarifVSCode.sarif-viewer. + * + * @param template - The template containing script metadata, including id, title, and description. + * @param issues - Array of diagnostic issues to convert. Each issue should include severity, message, filename, and range. + * Each range is a tuple where the first element is the start position and the second element is the end position. + * @returns A stringified SARIF JSON object representing the diagnostic issues, formatted with indentation for readability. + */ +export declare function convertDiagnosticsToSARIF(template: PromptScript, issues: Diagnostic[]): Promise; +//# sourceMappingURL=sarif.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sarif.d.ts.map b/packages/core/.tshy-build/browser/sarif.d.ts.map new file mode 100644 index 0000000000..c8393f03e1 --- /dev/null +++ b/packages/core/.tshy-build/browser/sarif.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../src/sarif.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,WAExC;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,mBAuC3F"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sarif.js b/packages/core/.tshy-build/browser/sarif.js new file mode 100644 index 0000000000..2ec97bb69a --- /dev/null +++ b/packages/core/.tshy-build/browser/sarif.js @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { relative } from "node:path"; +import { SARIFF_BUILDER_TOOL_DRIVER_NAME, SARIFF_BUILDER_URL, SARIFF_RULEID_PREFIX, } from "./constants.js"; +import { CORE_VERSION } from "./version.js"; +/** + * This module contains utility functions for working with SARIF (Static Analysis Results Interchange Format) + * including checking file extensions and converting diagnostic issues to SARIF format. + */ +/** + * Checks if the filename has a SARIF extension. + * @param f - The filename to check. + * @returns True if the filename ends with .sarif, false otherwise. + */ +export function isSARIFFilename(f) { + return /\.sarif$/i.test(f); +} +/** + * Converts diagnostic issues to a SARIF format. + * + * This function is intended to be used with the MS-SarifVSCode.sarif-viewer. + * + * @param template - The template containing script metadata, including id, title, and description. + * @param issues - Array of diagnostic issues to convert. Each issue should include severity, message, filename, and range. + * Each range is a tuple where the first element is the start position and the second element is the end position. + * @returns A stringified SARIF JSON object representing the diagnostic issues, formatted with indentation for readability. + */ +export async function convertDiagnosticsToSARIF(template, issues) { + const { SarifBuilder, SarifRunBuilder, SarifResultBuilder, SarifRuleBuilder } = await import("node-sarif-builder"); + // Initialize a SARIF run with tool driver information + const sarifRunBuilder = new SarifRunBuilder().initSimple({ + toolDriverName: SARIFF_BUILDER_TOOL_DRIVER_NAME, + toolDriverVersion: CORE_VERSION, + url: SARIFF_BUILDER_URL, + }); + // Initialize a SARIF rule based on the provided template + const sarifRuleBuiler = new SarifRuleBuilder().initSimple({ + ruleId: SARIFF_RULEID_PREFIX + template.id, // Unique rule identifier + shortDescriptionText: template.title, // Short description for the rule + fullDescriptionText: template.description, // Full description for the rule + }); + sarifRunBuilder.addRule(sarifRuleBuiler); + // Convert each diagnostic issue to a SARIF result + for (const issue of issues) { + const sarifResultBuilder = new SarifResultBuilder(); + sarifResultBuilder.initSimple({ + level: issue.severity === "info" ? "note" : issue.severity, // Map severity to SARIF level + messageText: issue.message, // The message associated with the issue + ruleId: template.id, // The rule ID associated with the issue + fileUri: relative(process.cwd(), issue.filename).replace(/\\/g, "/"), // Convert file path to a relative URI + startLine: issue.range[0][0] + 1 || undefined, // Start line of the issue + endLine: issue.range[1][0] + 1 || undefined, // End line of the issue + }); + sarifRunBuilder.addResult(sarifResultBuilder); + } + // Build the final SARIF JSON string with indentation + const sarifBuilder = new SarifBuilder(); + sarifBuilder.addRun(sarifRunBuilder); + const sarifJsonString = sarifBuilder.buildSarifJsonString({ indent: true }); // indent:true for readability + return sarifJsonString; +} +//# sourceMappingURL=sarif.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/sarif.js.map b/packages/core/.tshy-build/browser/sarif.js.map new file mode 100644 index 0000000000..7243af0265 --- /dev/null +++ b/packages/core/.tshy-build/browser/sarif.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sarif.js","sourceRoot":"","sources":["../../src/sarif.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAsB,EAAE,MAAoB;IAC1F,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAC1F,oBAAoB,CACrB,CAAC;IAEF,sDAAsD;IACtD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC,UAAU,CAAC;QACvD,cAAc,EAAE,+BAA+B;QAC/C,iBAAiB,EAAE,YAAY;QAC/B,GAAG,EAAE,kBAAkB;KACxB,CAAC,CAAC;IAEH,yDAAyD;IACzD,MAAM,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC,UAAU,CAAC;QACxD,MAAM,EAAE,oBAAoB,GAAG,QAAQ,CAAC,EAAE,EAAE,yBAAyB;QACrE,oBAAoB,EAAE,QAAQ,CAAC,KAAK,EAAE,iCAAiC;QACvE,mBAAmB,EAAE,QAAQ,CAAC,WAAW,EAAE,gCAAgC;KAC5E,CAAC,CAAC;IACH,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEzC,kDAAkD;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACpD,kBAAkB,CAAC,UAAU,CAAC;YAC5B,KAAK,EAAE,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,8BAA8B;YAC1F,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,wCAAwC;YACpE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,wCAAwC;YAC7D,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,sCAAsC;YAC5G,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,0BAA0B;YACzE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,wBAAwB;SACtE,CAAC,CAAC;QACH,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,8BAA8B;IAC3G,OAAO,eAAe,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/schema.d.ts b/packages/core/.tshy-build/browser/schema.d.ts new file mode 100644 index 0000000000..5c3a2c6320 --- /dev/null +++ b/packages/core/.tshy-build/browser/schema.d.ts @@ -0,0 +1,80 @@ +import type { MarkdownTrace, TraceOptions } from "./trace.js"; +import type { DataFrame, Fenced, FileEditValidation, JSONSchema, JSONSchemaType, JSONSchemaTypeName, JSONSchemaValidationOptions, PromptParametersSchema } from "./types.js"; +/** + * Checks if the given object is a valid JSON Schema. + * @param obj - The object to validate as a JSON Schema. + * @returns True if the object is a valid JSON Schema, false otherwise. + */ +export declare function isJSONSchema(obj: any): boolean; +/** + * Converts a JSON Schema into a TypeScript function parameters string. + * + * @param schema - The JSON Schema to convert. Supports objects, arrays, and primitive types. + * @returns A string representation of function parameters, compatible with the provided schema. + */ +export declare function JSONSchemaToFunctionParameters(schema: JSONSchemaType | JSONSchemaTypeName): string; +/** + * Converts a JSON Schema into a TypeScript type definition string. + * @param schema - The JSON Schema to convert. Supports objects, arrays, and primitive types. + * @param options - Optional settings, including the type name and whether to export the type. + * The typeName specifies the name of the generated type. + * @returns The TypeScript type definition as a string, including JSDoc comments for schema descriptions. + */ +export declare function JSONSchemaStringifyToTypeScript(schema: JSONSchema | JSONSchemaType, options?: { + typeName?: string; + export?: boolean; +}): string; +/** + * Validates a JSON Schema using Ajv. + * @param schema - The JSON Schema to validate. + * @returns A Promise resolving with the validation result, indicating whether the schema is valid or not. + */ +export declare function validateSchema(schema: JSONSchema): Promise; +export declare function tryValidateJSONWithSchema(object: T, options?: JSONSchemaValidationOptions & TraceOptions): T; +/** + * Validates a JSON object against a specified JSON schema. + * @param object - The JSON object to validate. + * @param schema - The JSON schema to validate against. + * @param options - Optional debugging options, including trace for logging validation details. + * @returns Validation result indicating success status and error details if validation fails. + */ +export declare function validateJSONWithSchema(object: any, schema: JSONSchema, options?: TraceOptions): FileEditValidation; +/** + * Validates multiple JSON or YAML code blocks against specified schemas. + * + * @param fences - Array of code blocks with metadata, language, and content to validate. + * @param schemas - Mapping of schema names to JSON Schemas used for validation. + * @param options - Optional debugging settings, including trace for logging validation details. + * @returns Array of data frames containing validation results, parsed data, and associated schemas. + */ +export declare function validateFencesWithSchema(fences: Fenced[], schemas: Record, options?: { + trace: MarkdownTrace; +}): DataFrame[]; +/** + * Converts a JSON Schema into its JSON string representation. + * @param schema - The JSON Schema to be converted, including optional $schema property. + * @returns The formatted JSON string representation of the schema. + */ +export declare function JSONSchemaStringify(schema: JSONSchema): string; +/** + * Converts a schema to a strict JSON Schema by enforcing stricter validation rules. + * Ensures all fields are required and disallows additional properties. + * Recursively processes nested schemas to apply strict constraints. + * Deletes unsupported properties like uiType and uiSuggestions. + * Throws an error if the top-level schema is not an object or if additionalProperties is true. + * @param schema - The schema to convert, either a PromptParametersSchema or JSONSchema. + * @returns A strict JSON Schema with enforced constraints. + */ +export declare function toStrictJSONSchema(schema: PromptParametersSchema | JSONSchema, options?: { + noDefaults?: boolean; + defaultOptional?: boolean; +}): any; +/** + * Infers a JSON Schema from the given object. + * + * @param obj - The input object for which to infer a JSON Schema. + * This can include nested objects, arrays, and primitives. + * @returns A Promise resolving to the inferred JSON Schema. + */ +export declare function JSONSchemaInfer(obj: any): Promise; +//# sourceMappingURL=schema.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/schema.d.ts.map b/packages/core/.tshy-build/browser/schema.d.ts.map new file mode 100644 index 0000000000..e09dce6acf --- /dev/null +++ b/packages/core/.tshy-build/browser/schema.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM9D,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,kBAAkB,EAMlB,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAIpB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,WAIpC;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,cAAc,GAAG,kBAAkB,GAC1C,MAAM,CAER;AA4CD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,UA8GlD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,oBAGtD;AAED,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,2BAA2B,GAAG,YAAY,KAYrD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAEpC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,kBAAkB,CA+BpB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACnC,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,GACjC,SAAS,EAAE,CAuCb;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,UASrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,GAAG,UAAU,EAC3C,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,GAAG,CAgDL;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAGnE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/schema.js b/packages/core/.tshy-build/browser/schema.js new file mode 100644 index 0000000000..ee110826c2 --- /dev/null +++ b/packages/core/.tshy-build/browser/schema.js @@ -0,0 +1,397 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { JSON5parse } from "./json5.js"; +import { Ajv } from "ajv"; +import { YAMLParse } from "./yaml.js"; +import { errorMessage } from "./error.js"; +import { promptParametersSchemaToJSONSchema } from "./parameters.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("schema"); +/** + * Checks if the given object is a valid JSON Schema. + * @param obj - The object to validate as a JSON Schema. + * @returns True if the object is a valid JSON Schema, false otherwise. + */ +export function isJSONSchema(obj) { + if (typeof obj === "object" && obj.type === "object") + return true; + if (typeof obj === "object" && obj.type === "array") + return true; + return false; +} +/** + * Converts a JSON Schema into a TypeScript function parameters string. + * + * @param schema - The JSON Schema to convert. Supports objects, arrays, and primitive types. + * @returns A string representation of function parameters, compatible with the provided schema. + */ +export function JSONSchemaToFunctionParameters(schema) { + return renderJSONSchemaToFunctionParameters(schema, 0); +} +function renderJSONSchemaToFunctionParameters(schema, depth) { + depth = depth + 1; + if (!schema) + return ""; + else if (schema === "string") + return "string"; + else if (schema === "number") + return "number"; + else if (schema === "integer") + return "number"; + else if (schema === "boolean") + return "boolean"; + else if (schema === "null") + return "null"; + else if (schema.anyOf) { + const anyof = schema; + delete anyof.uiGroup; + return (anyof.anyOf || []) + .map((x) => renderJSONSchemaToFunctionParameters(x, depth)) + .join(" | "); + } + else if (Array.isArray(schema)) { + return schema + .filter((t) => t !== "null") + .map((x) => renderJSONSchemaToFunctionParameters(x, depth)) + .join(" | "); + } + else { + const single = schema; + if (single.type === "array") { + return `{ ${renderJSONSchemaToFunctionParameters(single.items, depth)} }[]`; + } + else if (single.type === "object") { + const required = single.required || []; + return `${depth > 1 ? `{ ` : ""}${Object.entries(single.properties) + .sort((l, r) => (required.includes(l[0]) ? -1 : 1) - (required.includes(r[0]) ? -1 : 1)) + .map(([name, prop]) => `${name}${required.includes(name) ? "" : "?"}: ${renderJSONSchemaToFunctionParameters(prop, depth)}`) + .join(", ")}${depth > 1 ? " }" : ""}`; + } + else if (single.type === "string") + return "string"; + else if (single.type === "boolean") + return "boolean"; + else if (single.type === "number" || single.type === "integer") + return "number"; + } + return "?"; +} +/** + * Converts a JSON Schema into a TypeScript type definition string. + * @param schema - The JSON Schema to convert. Supports objects, arrays, and primitive types. + * @param options - Optional settings, including the type name and whether to export the type. + * The typeName specifies the name of the generated type. + * @returns The TypeScript type definition as a string, including JSDoc comments for schema descriptions. + */ +export function JSONSchemaStringifyToTypeScript(schema, options) { + const { typeName = "Response" } = options || {}; + const lines = []; // Array to accumulate lines of TypeScript code + let indent = 0; // Manage indentation level + const described = schema; + appendJsDoc(described.title, described.description); // Add JSDoc for schema description + append(`${options?.export ? "export " : ""}type ${typeName.replace(/\s+/g, "_")} =`); + stringifyNode(schema); // Convert schema to TypeScript + const res = lines.join("\n"); // Join lines into a single TypeScript definition + dbg(res); + return res; + // Append a line to the TypeScript definition + function append(line) { + if (/=$/.test(lines[lines.length - 1])) + lines[lines.length - 1] = lines[lines.length - 1] + " " + line; + else if (/[<}]$/.test(lines[lines.length - 1])) + lines[lines.length - 1] = lines[lines.length - 1] + line; + else + lines.push(" ".repeat(indent) + line); + } + // Append JSDoc comments + function appendJsDoc(...parts) { + const text = parts?.filter((d) => d).join("\n"); + if (!text) + return; + if (text.indexOf("\n") > -1) + append(`/* ${text.split(/\n/g).join("\n" + " ".repeat(indent))} */`); + else + append(`// ${text}`); + } + // Convert a JSON Schema node to TypeScript + function stringifyNode(node) { + if (node === undefined) + return "any"; + else if (node.anyOf) { + const n = node; + return n.anyOf + .map((x) => { + const v = stringifyNode(x); + return /\s/.test(v) ? `(${v})` : v; + }) + .filter((x) => x) + .join(" | "); + } + else { + const n = node; + if (n.type === "array") { + stringifyArray(n); + return undefined; + } + else if (n.type === "object") { + stringifyObject(n); + return undefined; + } + else if (n.type === "string") + return "string"; + else if (n.type === "boolean") + return "boolean"; + else if (n.type === "number" || n.type === "integer") + return "number"; + } + return "unknown"; + } + // Extract documentation for a node + function stringifyNodeDoc(node) { + const n = node; + const doc = [n?.title, n?.description]; + switch (n.type) { + case "number": + case "integer": { + if (n.minimum !== undefined) + doc.push(`minimum: ${n.minimum}`); + if (n.exclusiveMinimum !== undefined) + doc.push(`exclusiveMinimum: ${n.exclusiveMinimum}`); + if (n.exclusiveMaximum !== undefined) + doc.push(`exclusiveMaximum : ${n.exclusiveMaximum}`); + if (n.maximum !== undefined) + doc.push(`maximum: ${n.maximum}`); + break; + } + case "string": { + if (n.pattern) + doc.push(`pattern: ${n.pattern}`); + break; + } + } + return doc.filter((d) => d).join("\n"); + } + // Convert a JSON Schema object to TypeScript + function stringifyObject(object) { + const { required, properties, additionalProperties } = object; + append(`{`); + indent++; + if (additionalProperties) + append(`[key: string]: any,`); + if (properties) + Object.keys(properties).forEach((key) => { + const prop = properties[key]; + const field = `${key}${required?.includes(key) ? "" : "?"}`; + const doc = stringifyNodeDoc(prop); + appendJsDoc(doc); + append(`${field}:`); + const v = stringifyNode(prop); + if (v) + lines[lines.length - 1] = lines[lines.length - 1] + " " + v; + lines[lines.length - 1] = lines[lines.length - 1] + ","; + }); + indent--; + append(`}`); + } + // Convert a JSON Schema array to TypeScript + function stringifyArray(array) { + indent++; + append(`Array<`); + const v = stringifyNode(array.items); + indent--; + if (v) + lines[lines.length - 1] = lines[lines.length - 1] + v + ">"; + else + append(`>`); + } +} +/** + * Validates a JSON Schema using Ajv. + * @param schema - The JSON Schema to validate. + * @returns A Promise resolving with the validation result, indicating whether the schema is valid or not. + */ +export async function validateSchema(schema) { + const ajv = new Ajv(); + return await ajv.validateSchema(schema, false); +} +export function tryValidateJSONWithSchema(object, options) { + const { schema, throwOnValidationError, trace } = options || {}; + if (object !== undefined && schema) { + const validation = validateJSONWithSchema(object, schema, { trace }); + if (validation.schemaError) { + dbg("%O", validation); + if (throwOnValidationError) + throw new Error(validation.schemaError); + return undefined; + } + } + return object; +} +/** + * Validates a JSON object against a specified JSON schema. + * @param object - The JSON object to validate. + * @param schema - The JSON schema to validate against. + * @param options - Optional debugging options, including trace for logging validation details. + * @returns Validation result indicating success status and error details if validation fails. + */ +export function validateJSONWithSchema( +// eslint-disable-next-line @typescript-eslint/no-explicit-any +object, schema, options) { + const { trace } = options || {}; + if (!schema) + return { + pathValid: false, + schemaError: "no schema provided", + }; + try { + const ajv = new Ajv({ + allowUnionTypes: true, + }); + const validate = ajv.compile(schema); + const valid = validate(object); + if (!valid) { + dbg(`validation failed: ${ajv.errorsText(validate.errors)}`); + trace?.warn(`schema validation failed`); + trace?.fence(validate.errors); + trace?.fence(schema, "json"); + return { + schema, + pathValid: false, + schemaError: ajv.errorsText(validate.errors), + }; + } + return { schema, pathValid: true }; + } + catch (e) { + dbg(`runtime error: ${errorMessage(e)}`); + trace?.warn("schema validation failed"); + return { schema, pathValid: false, schemaError: errorMessage(e) }; + } +} +/** + * Validates multiple JSON or YAML code blocks against specified schemas. + * + * @param fences - Array of code blocks with metadata, language, and content to validate. + * @param schemas - Mapping of schema names to JSON Schemas used for validation. + * @param options - Optional debugging settings, including trace for logging validation details. + * @returns Array of data frames containing validation results, parsed data, and associated schemas. + */ +export function validateFencesWithSchema(fences, schemas, options) { + const frames = []; + // Validate schemas in fences + for (const fence of fences?.filter(({ language, args }) => args?.schema && (language === "json" || language === "yaml"))) { + const { language, content: val, args } = fence; + const schema = args?.schema; + // Validate well-formed JSON/YAML + let data; + try { + if (language === "json") + data = JSON5parse(val, { repair: true }); + else if (language === "yaml") + data = YAMLParse(val); + } + catch (e) { + fence.validation = { + pathValid: false, + schemaError: errorMessage(e), + }; + } + if (!fence.validation) { + // Check if schema specified + const schemaObj = schemas[schema]; + if (!schemaObj) { + fence.validation = { + pathValid: false, + schemaError: `schema ${schema} not found`, + }; + } + else + fence.validation = validateJSONWithSchema(data, schemaObj, options); + } + // Add to frames + frames.push({ + schema, + data, + validation: fence.validation, + }); + } + return frames; +} +/** + * Converts a JSON Schema into its JSON string representation. + * @param schema - The JSON Schema to be converted, including optional $schema property. + * @returns The formatted JSON string representation of the schema. + */ +export function JSONSchemaStringify(schema) { + return JSON.stringify({ + $schema: schema.$schema ?? "http://json-schema.org/draft-07/schema#", + ...schema, + }, null, 2); +} +/** + * Converts a schema to a strict JSON Schema by enforcing stricter validation rules. + * Ensures all fields are required and disallows additional properties. + * Recursively processes nested schemas to apply strict constraints. + * Deletes unsupported properties like uiType and uiSuggestions. + * Throws an error if the top-level schema is not an object or if additionalProperties is true. + * @param schema - The schema to convert, either a PromptParametersSchema or JSONSchema. + * @returns A strict JSON Schema with enforced constraints. + */ +export function toStrictJSONSchema(schema, options) { + const { noDefaults, defaultOptional } = options || {}; + const clone = structuredClone(promptParametersSchemaToJSONSchema(schema, { noDefaults })); + visit(clone); + // if (clone.type !== "object") + // throw new Error("top level schema must be object") + // Recursive function to make the schema strict + function visit(node) { + const n = node; + delete n.uiGroup; + switch (n.type) { + case "boolean": { + delete n.uiType; + break; + } + case "string": { + delete n.uiType; + delete n.uiSuggestions; + break; + } + case "object": { + if (n.additionalProperties) + throw new Error("additionalProperties: true not supported"); + n.additionalProperties = false; + n.required = n.required || []; + for (const key in n.properties) { + // https://platform.openai.com/docs/guides/structured-outputs/all-fields-must-be-required + const child = n.properties[key]; + visit(child); + if (!defaultOptional && !n.required.includes(key)) { + n.required.push(key); + if (["string", "number", "boolean", "integer"].includes(child.type)) { + child.type = [child.type, "null"]; + } + } + } + break; + } + case "array": { + visit(n.items); + break; + } + } + } + return clone; +} +/** + * Infers a JSON Schema from the given object. + * + * @param obj - The input object for which to infer a JSON Schema. + * This can include nested objects, arrays, and primitives. + * @returns A Promise resolving to the inferred JSON Schema. + */ +export async function JSONSchemaInfer(obj) { + const res = promptParametersSchemaToJSONSchema(obj, { noDefaults: true }); + return res; +} +//# sourceMappingURL=schema.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/schema.js.map b/packages/core/.tshy-build/browser/schema.js.map new file mode 100644 index 0000000000..c60c7c0c68 --- /dev/null +++ b/packages/core/.tshy-build/browser/schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/schemas/hostconfiguration.schema.json b/packages/core/.tshy-build/browser/schemas/hostconfiguration.schema.json new file mode 100644 index 0000000000..e7a6bee13a --- /dev/null +++ b/packages/core/.tshy-build/browser/schemas/hostconfiguration.schema.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "title": "GenAIScript Configuration", + "type": "object", + "properties": { + "envFile": { + "type": "string", + "description": "Path to the .env file" + }, + "include": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of glob paths to scan for genai scripts" + } + } +} diff --git a/packages/core/.tshy-build/browser/scriptresolver.d.ts b/packages/core/.tshy-build/browser/scriptresolver.d.ts new file mode 100644 index 0000000000..8bb51b6543 --- /dev/null +++ b/packages/core/.tshy-build/browser/scriptresolver.d.ts @@ -0,0 +1,17 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +/** + * Attempts to resolve a script from the provided URL and manages caching. + * + * @param url - The URL of the resource to resolve. + * @param options - Optional tracing and cancellation options. + * - TraceOptions: Includes trace-level details for debugging purposes. + * - CancellationOptions: Optionally permits cancellation during the process. + * @returns The filename of the resolved script or undefined if resolution fails. + * + * If the resource is found, it checks for cached content. If cached, it computes a hash + * and resolves the resource file within a managed `.genaiscript/resources` directory. + * If no cached content is found, it returns the filename of the first file in the resource. + */ +export declare function tryResolveScript(url: string, options?: TraceOptions & CancellationOptions): Promise; +//# sourceMappingURL=scriptresolver.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scriptresolver.d.ts.map b/packages/core/.tshy-build/browser/scriptresolver.d.ts.map new file mode 100644 index 0000000000..7bb2df89f1 --- /dev/null +++ b/packages/core/.tshy-build/browser/scriptresolver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"scriptresolver.d.ts","sourceRoot":"","sources":["../../src/scriptresolver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,GAC3C,OAAO,CAAC,MAAM,CAAC,CAwBjB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scriptresolver.js b/packages/core/.tshy-build/browser/scriptresolver.js new file mode 100644 index 0000000000..34d3530307 --- /dev/null +++ b/packages/core/.tshy-build/browser/scriptresolver.js @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { RESOURCE_HASH_LENGTH } from "./constants.js"; +import { resolveRuntimeHost } from "./host.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { join } from "node:path"; +import { tryResolveResource } from "./resources.js"; +import { genaiscriptDebug } from "./debug.js"; +import { hash } from "./crypto.js"; +const dbg = genaiscriptDebug("scripts:resolve"); +/** + * Attempts to resolve a script from the provided URL and manages caching. + * + * @param url - The URL of the resource to resolve. + * @param options - Optional tracing and cancellation options. + * - TraceOptions: Includes trace-level details for debugging purposes. + * - CancellationOptions: Optionally permits cancellation during the process. + * @returns The filename of the resolved script or undefined if resolution fails. + * + * If the resource is found, it checks for cached content. If cached, it computes a hash + * and resolves the resource file within a managed `.genaiscript/resources` directory. + * If no cached content is found, it returns the filename of the first file in the resource. + */ +export async function tryResolveScript(url, options) { + const runtimeHost = resolveRuntimeHost(); + const resource = await tryResolveResource(url, options); + if (!resource) + return undefined; + const { uri, files } = resource; + dbg(`resolved resource %s %d`, uri, files?.length); + if (!files?.length) + return undefined; + const cache = files.some((f) => f.content); + if (!cache) + return files[0].filename; + else { + const sha = await hash([files], { + length: RESOURCE_HASH_LENGTH, + }); + const fn = dotGenaiscriptPath("resources", uri.protocol, uri.hostname, sha); + dbg(`resolved cache: %s`, fn); + const cached = files.map((f) => ({ + ...f, + filename: join(fn, f.filename), + })); + await runtimeHost.workspace.writeFiles(cached); + return cached[0].filename; + } +} +//# sourceMappingURL=scriptresolver.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scriptresolver.js.map b/packages/core/.tshy-build/browser/scriptresolver.js.map new file mode 100644 index 0000000000..e55da5f9e8 --- /dev/null +++ b/packages/core/.tshy-build/browser/scriptresolver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scriptresolver.js","sourceRoot":"","sources":["../../src/scriptresolver.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,OAA4C;IAE5C,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAChC,GAAG,CAAC,yBAAyB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;SAChC,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;YAC9B,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5E,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC;YACJ,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;SAC/B,CAAC,CAAC,CAAC;QACJ,MAAM,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5B,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scripts.d.ts b/packages/core/.tshy-build/browser/scripts.d.ts new file mode 100644 index 0000000000..d5f6323ff8 --- /dev/null +++ b/packages/core/.tshy-build/browser/scripts.d.ts @@ -0,0 +1,48 @@ +import type { Project } from "./server/messages.js"; +import type { PromptScript } from "./types.js"; +/** + * Creates a new script object based on the provided name and optional template. + * + * @param name - The name of the script. + * @param options - Optional parameters for creating the script. + * @param options.template - A template object to initialize the script content. Defaults to a basic empty template. + * @param options.title - A custom title for the script. Defaults to the provided name. + * @returns A new script object with the specified or default attributes. + */ +export declare function createScript(name: string, options?: { + template: PromptScript; + title?: string; +}): PromptScript; +/** + * Updates prompt definition files based on the project configuration. + * + * Iterates through the project's collected folders and updates the corresponding + * configuration and definition files (e.g., `genaiscript.d.ts`, `tsconfig.json`, `jsconfig.json`). + * System and tool identifiers within the `genaiscript` TypeScript definition file + * are dynamically updated with the systems and tools from the project scripts. + * + * @param project - The project configuration containing scripts and folder structure. + * - `project.scripts`: An array of scripts from the project, where system scripts determine tool usage. + * - `project.folders`: A set of folder data collected with relevant directory and file details. + */ +export declare function fixPromptDefinitions(project: Project, options?: { + force?: boolean; +}): Promise; +/** + * Updates custom prompts and related files with new definitions and data. + * + * @param options - Options for customizing prompt behavior. + * @param options.githubCopilotPrompt - If true, writes the GitHub Copilot custom prompt file. + * @param options.docs - If true, fetches and writes updated documentation files. + * + * Writes the TypeScript definition file (`genaiscript.d.ts`) and manages files within the + * `.genaiscript` directory. Optionally, creates GitHub Copilot prompt and documentation files + * based on the provided options. Fetches external content for documentation updates if applicable. + * Ensures `.gitignore` is updated to ignore all files in the `.genaiscript` directory. + * Fetches and processes external documentation content if required. + */ +export declare function fixGitHubCopilotInstructions(options?: { + githubCopilotInstructions?: boolean; + docs?: boolean; +}): Promise; +//# sourceMappingURL=scripts.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scripts.d.ts.map b/packages/core/.tshy-build/browser/scripts.d.ts.map new file mode 100644 index 0000000000..3686527866 --- /dev/null +++ b/packages/core/.tshy-build/browser/scripts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../src/scripts.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,gBAY9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,iBA6DzF;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,CAAC,EAAE;IAC3D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBAmCA"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scripts.js b/packages/core/.tshy-build/browser/scripts.js new file mode 100644 index 0000000000..02c0fba501 --- /dev/null +++ b/packages/core/.tshy-build/browser/scripts.js @@ -0,0 +1,142 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { collectFolders } from "./ast.js"; +import { DOCS_URL, NEW_SCRIPT_TEMPLATE, TYPE_DEFINITION_BASENAME } from "./constants.js"; +import { githubCopilotInstructions as ghInstructions, promptDefinitions, } from "./default_prompts.js"; +import { tryReadText, writeText } from "./fs.js"; +import { resolveRuntimeHost } from "./host.js"; +import { logVerbose } from "./util.js"; +import { collapseNewlines } from "./cleaners.js"; +import { gitIgnoreEnsure } from "./gitignore.js"; +import { dotGenaiscriptPath } from "./workdir.js"; +import { genaiscriptDebug } from "./debug.js"; +import { join } from "node:path"; +const dbg = genaiscriptDebug("scripts"); +/** + * Creates a new script object based on the provided name and optional template. + * + * @param name - The name of the script. + * @param options - Optional parameters for creating the script. + * @param options.template - A template object to initialize the script content. Defaults to a basic empty template. + * @param options.title - A custom title for the script. Defaults to the provided name. + * @returns A new script object with the specified or default attributes. + */ +export function createScript(name, options) { + const { template, title } = options || {}; + const t = structuredClone(template || { + id: "", + title: title || name, + text: "New script empty template", + jsSource: NEW_SCRIPT_TEMPLATE, + }); + t.id = ""; + return t; +} +/** + * Updates prompt definition files based on the project configuration. + * + * Iterates through the project's collected folders and updates the corresponding + * configuration and definition files (e.g., `genaiscript.d.ts`, `tsconfig.json`, `jsconfig.json`). + * System and tool identifiers within the `genaiscript` TypeScript definition file + * are dynamically updated with the systems and tools from the project scripts. + * + * @param project - The project configuration containing scripts and folder structure. + * - `project.scripts`: An array of scripts from the project, where system scripts determine tool usage. + * - `project.folders`: A set of folder data collected with relevant directory and file details. + */ +export async function fixPromptDefinitions(project, options) { + const folders = collectFolders(project, options); + const systems = project.scripts.filter((t) => t.isSystem); + const tools = systems.map(({ defTools }) => defTools || []).flat(); + logVerbose(`fixing type definitions`); + for (const folder of folders) { + const { dirname, ts, js } = folder; + logVerbose(` ${dirname}`); + await gitIgnoreEnsure(dirname, ["genaiscript.d.ts", "tsconfig.json", "jsconfig.json"]); + for (let [defName, defContent] of Object.entries(promptDefinitions)) { + // patch genaiscript + if (defName === "genaiscript.d.ts") { + // update the system prompt identifiers + defContent = String(defContent) + .replace("type SystemPromptId = OptionsOrString", `type SystemPromptId = OptionsOrString<\n | ${systems + .sort((a, b) => a.id.localeCompare(b.id)) + .map((s) => JSON.stringify(s.id)) + .join("\n | ")}\n>`) + .replace(" system?: SystemPromptId[]", ` /** + * System prompt identifiers ([reference](https://microsoft.github.io/genaiscript/reference/scripts/system/)) +${systems.map((s) => ` * - \`${s.id}\`: ${s.title || s.description}`).join("\n")} + **/ + system?: SystemPromptId[]`); + // update the tool prompt identifiers + defContent = String(defContent) + .replace("type SystemToolId = OptionsOrString", `type SystemToolId = OptionsOrString<\n | ${tools + .sort((a, b) => a.id.localeCompare(b.id)) + .map((s) => JSON.stringify(s.id)) + .join("\n | ")}\n>`) + .replace(" tools?: SystemToolId[]", `/** +* System tool identifiers ([reference](https://microsoft.github.io/genaiscript/reference/scripts/tools/)) +${tools.map((s) => `* - \`${s.id}\`: ${s.description}`).join("\n")} +**/ + tools?: SystemToolId[]`); + } + if (defName === "tsconfig.json" && !ts) + continue; + if (defName === "jsconfig.json" && !js) + continue; + const fn = join(dirname, defName); + const current = await tryReadText(fn); + if (current !== defContent) { + logVerbose(`updating ${fn}`); + await writeText(fn, String(defContent)); + } + } + } +} +let _fullDocsText; +/** + * Updates custom prompts and related files with new definitions and data. + * + * @param options - Options for customizing prompt behavior. + * @param options.githubCopilotPrompt - If true, writes the GitHub Copilot custom prompt file. + * @param options.docs - If true, fetches and writes updated documentation files. + * + * Writes the TypeScript definition file (`genaiscript.d.ts`) and manages files within the + * `.genaiscript` directory. Optionally, creates GitHub Copilot prompt and documentation files + * based on the provided options. Fetches external content for documentation updates if applicable. + * Ensures `.gitignore` is updated to ignore all files in the `.genaiscript` directory. + * Fetches and processes external documentation content if required. + */ +export async function fixGitHubCopilotInstructions(options) { + const { githubCopilotInstructions, docs } = options || {}; + // write genaiscript.d.ts + const gdir = dotGenaiscriptPath(); + await writeText(join(gdir, ".gitignore"), "*"); + await writeText(join(gdir, TYPE_DEFINITION_BASENAME), promptDefinitions[TYPE_DEFINITION_BASENAME]); // Write the TypeScript definition file + if (githubCopilotInstructions) { + const runtimeHost = resolveRuntimeHost(); + const pdir = join(runtimeHost.projectFolder(), ".github/instructions"); + const pn = join(pdir, "genaiscript.instructions.md"); + try { + await writeText(pn, ghInstructions); // Write the GitHub Copilot instructions file + } + catch (e) { + dbg(`failed to write instructions`); + } + } + if (githubCopilotInstructions || docs) { + const ddir = dotGenaiscriptPath("instructions"); + const route = "llms-full.txt"; + const url = `${DOCS_URL}/${route}`; + const dn = join(ddir, route); + let text = _fullDocsText; + if (!text) { + const content = await fetch(url); + if (!content.ok) + logVerbose(`failed to fetch ${url}`); + text = await content.text(); + text = _fullDocsText = collapseNewlines(text.replace(/^!\[\]\(")); + } + await writeText(dn, text); // Write the GitHub Copilot prompt file + } +} +//# sourceMappingURL=scripts.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/scripts.js.map b/packages/core/.tshy-build/browser/scripts.js.map new file mode 100644 index 0000000000..b0f1e70ad8 --- /dev/null +++ b/packages/core/.tshy-build/browser/scripts.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/scripts.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/secretscanner.d.ts b/packages/core/.tshy-build/browser/secretscanner.d.ts new file mode 100644 index 0000000000..84bdcdeed8 --- /dev/null +++ b/packages/core/.tshy-build/browser/secretscanner.d.ts @@ -0,0 +1,17 @@ +import type { TraceOptions } from "./trace.js"; +/** + * Redacts secrets from the provided text by replacing matches of configured secret patterns with ``. + * + * @param text - The input text to be scanned for secrets. + * @param options - Additional options for tracing and configuration: + * - trace: An optional trace object to log detected secrets and warnings. + * + * @returns An object containing: + * - text: The redacted text with secrets replaced by ``. + * - found: A record where keys are secret names and values are counts of occurrences detected. + */ +export declare function redactSecrets(text: string, options?: TraceOptions): { + text: string; + found: Record; +}; +//# sourceMappingURL=secretscanner.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/secretscanner.d.ts.map b/packages/core/.tshy-build/browser/secretscanner.d.ts.map new file mode 100644 index 0000000000..1f7ad379e2 --- /dev/null +++ b/packages/core/.tshy-build/browser/secretscanner.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"secretscanner.d.ts","sourceRoot":"","sources":["../../src/secretscanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;;;EA4BjE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/secretscanner.js b/packages/core/.tshy-build/browser/secretscanner.js new file mode 100644 index 0000000000..333bc0cb11 --- /dev/null +++ b/packages/core/.tshy-build/browser/secretscanner.js @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { genaiscriptDebug } from "./debug.js"; +import { resolveRuntimeHost } from "./host.js"; +import { logWarn } from "./util.js"; +const dbg = genaiscriptDebug("secrets"); +const cachedSecretScanners = {}; +/** + * Redacts secrets from the provided text by replacing matches of configured secret patterns with ``. + * + * @param text - The input text to be scanned for secrets. + * @param options - Additional options for tracing and configuration: + * - trace: An optional trace object to log detected secrets and warnings. + * + * @returns An object containing: + * - text: The redacted text with secrets replaced by ``. + * - found: A record where keys are secret names and values are counts of occurrences detected. + */ +export function redactSecrets(text, options) { + const { trace } = options ?? {}; + const runtimeHost = resolveRuntimeHost(); + const { secretPatterns = {} } = runtimeHost.config; + const found = {}; + const res = Object.entries(secretPatterns).reduce((acc, [name, pattern]) => { + if (!pattern) + return acc; // null, undefined, or empty string + const regex = cachedSecretScanners[pattern] ?? (cachedSecretScanners[pattern] = new RegExp(pattern, "g")); + return acc.replace(regex, () => { + found[name] = (found[name] ?? 0) + 1; + return ``; + }); + }, text); + if (Object.keys(found).length > 0 && trace) { + const msg = `detected secrets: ${Object.entries(found) + .map(([k, v]) => `${k} (${v})`) + .join(", ")}`; + dbg(msg); + logWarn(msg); + trace.warn(msg); + } + return { + text: res, + found, + }; +} +//# sourceMappingURL=secretscanner.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/secretscanner.js.map b/packages/core/.tshy-build/browser/secretscanner.js.map new file mode 100644 index 0000000000..b72d11e324 --- /dev/null +++ b/packages/core/.tshy-build/browser/secretscanner.js.map @@ -0,0 +1 @@ +{"version":3,"file":"secretscanner.js","sourceRoot":"","sources":["../../src/secretscanner.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAExC,MAAM,oBAAoB,GAA2B,EAAE,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAsB;IAChE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IACnD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;QACzE,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,CAAC,mCAAmC;QAC7D,MAAM,KAAK,GACT,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9F,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,qBAAqB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG;QACT,KAAK;KACN,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/semver.d.ts b/packages/core/.tshy-build/browser/semver.d.ts new file mode 100644 index 0000000000..e79070663d --- /dev/null +++ b/packages/core/.tshy-build/browser/semver.d.ts @@ -0,0 +1,4 @@ +import { satisfies, parse } from "semver"; +export declare const semverSatisfies: typeof satisfies; +export declare const semverParse: typeof parse; +//# sourceMappingURL=semver.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/semver.d.ts.map b/packages/core/.tshy-build/browser/semver.d.ts.map new file mode 100644 index 0000000000..08077db57f --- /dev/null +++ b/packages/core/.tshy-build/browser/semver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE1C,eAAO,MAAM,eAAe,kBAAY,CAAC;AAEzC,eAAO,MAAM,WAAW,cAAQ,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/semver.js b/packages/core/.tshy-build/browser/semver.js new file mode 100644 index 0000000000..3a0c8af958 --- /dev/null +++ b/packages/core/.tshy-build/browser/semver.js @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { satisfies, parse } from "semver"; +export const semverSatisfies = satisfies; +export const semverParse = parse; +//# sourceMappingURL=semver.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/semver.js.map b/packages/core/.tshy-build/browser/semver.js.map new file mode 100644 index 0000000000..5b00ce99d4 --- /dev/null +++ b/packages/core/.tshy-build/browser/semver.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/client.d.ts b/packages/core/.tshy-build/browser/server/client.d.ts new file mode 100644 index 0000000000..65da9bbd3b --- /dev/null +++ b/packages/core/.tshy-build/browser/server/client.d.ts @@ -0,0 +1,31 @@ +import type { ChatCompletionsProgressReport } from "../chattypes.js"; +import type { MarkdownTrace } from "../trace.js"; +import type { PromptScriptTestRunOptions, PromptScriptTestRunResponse, PromptScriptRunOptions, ChatChunk, ChatStart, GenerationResult } from "./messages.js"; +import { WebSocketClient } from "./wsclient.js"; +import type { PromptScript } from "../types.js"; +export type LanguageModelChatRequest = (request: ChatStart, onChunk: (param: Omit) => void) => Promise; +export declare class VsCodeClient extends WebSocketClient { + readonly url: string; + readonly externalUrl: string; + readonly cspUrl: string; + chatRequest: LanguageModelChatRequest; + private runs; + constructor(url: string, externalUrl: string, cspUrl: string); + private installPolyfill; + private configure; + runScript(script: string, files: string[], options: Partial & { + jsSource?: string; + signal: AbortSignal; + trace: MarkdownTrace; + infoCb: (partialResponse: { + text: string; + }) => void; + partialCb: (progress: ChatCompletionsProgressReport) => void; + }): Promise<{ + runId: string; + request: Promise>; + }>; + abortScriptRuns(reason: string): void; + runTest(script: PromptScript, options?: PromptScriptTestRunOptions): Promise; +} +//# sourceMappingURL=client.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/client.d.ts.map b/packages/core/.tshy-build/browser/server/client.d.ts.map new file mode 100644 index 0000000000..35472fa6a8 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/client.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/server/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAIrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EAItB,SAAS,EACT,SAAS,EACT,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,KAChE,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,qBAAa,YAAa,SAAQ,eAAe;IAoB7C,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM;IArBzB,WAAW,EAAE,wBAAwB,CAAC;IAEtC,OAAO,CAAC,IAAI,CAcL;gBAGI,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM;IAMzB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,SAAS;IA8DX,SAAS,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC;QACpB,KAAK,EAAE,aAAa,CAAC;QACrB,MAAM,EAAE,CAAC,eAAe,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;KAC9D;;;;IAuCH,eAAe,CAAC,MAAM,EAAE,MAAM;IAOxB,OAAO,CACX,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,2BAA2B,CAAC;CAQxC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/client.js b/packages/core/.tshy-build/browser/server/client.js new file mode 100644 index 0000000000..2672e55e7c --- /dev/null +++ b/packages/core/.tshy-build/browser/server/client.js @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CLOSE, MESSAGE } from "../constants.js"; +import { errorMessage } from "../error.js"; +import { generateId } from "../id.js"; +import { logError } from "../util.js"; +import { WebSocketClient } from "./wsclient.js"; +export class VsCodeClient extends WebSocketClient { + url; + externalUrl; + cspUrl; + chatRequest; + runs = {}; + constructor(url, externalUrl, cspUrl) { + super(url); + this.url = url; + this.externalUrl = externalUrl; + this.cspUrl = cspUrl; + this.configure(); + } + installPolyfill() { + if (typeof WebSocket === "undefined") { + try { + require("websocket-polyfill"); + } + catch (err) { + logError("websocket polyfill failed"); + logError(err); + } + } + } + configure() { + this.installPolyfill(); + this.addEventListener(CLOSE, (e) => { + const reason = e.reason || "websocket closed"; + for (const [runId, run] of Object.entries(this.runs)) { + run.reject(reason); + delete this.runs[runId]; + } + }); + this.addEventListener(MESSAGE, async (e) => { + const event = e; + // handle run progress + const ev = event.data; + const { runId, type } = ev; + const run = this.runs[runId]; + if (run) { + switch (type) { + case "script.progress": { + if (ev.trace && run.trace) + run.trace.appendContent(ev.trace); + if (ev.progress && !ev.inner) + run.infoCb({ text: ev.progress }); + if (ev.response || ev.tokens !== undefined) + run.partialCb({ + responseChunk: ev.responseChunk, + responseSoFar: ev.response, + reasoningSoFar: ev.reasoning, + tokensSoFar: ev.tokens, + inner: ev.inner, + }); + break; + } + case "script.end": { + const run = this.runs[runId]; + delete this.runs[runId]; + if (run) { + const res = structuredClone(ev.result); + if (res?.text) + run.infoCb(res); + run.resolve(res); + } + break; + } + } + } + else { + const cev = event.data; + const { chatId, type } = cev; + switch (type) { + case "chat.start": { + if (!this.chatRequest) + throw new Error("GitHub Copilot Chat Models not supported"); + await this.chatRequest(cev, (chunk) => { + this.queue({ + ...chunk, + chatId, + type: "chat.chunk", + }); + }); + // done + } + } + } + }); + } + async runScript(script, files, options) { + const runId = generateId(); + const { signal, infoCb, partialCb, trace, ...optionsRest } = options; + let resolve; + let reject; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + this.runs[runId] = { + script, + files, + options, + trace, + infoCb, + partialCb, + promise, + resolve, + reject, + signal, + }; + signal?.addEventListener("abort", (ev) => { + this.abortScript(runId, "user aborted"); + }); + const res = await this.queue({ + type: "script.start", + runId, + script, + files, + options: optionsRest, + }); + if (!res.response?.ok) { + delete this.runs[runId]; // failed to start + throw new Error(errorMessage(res.response?.error) ?? "failed to start script"); + } + return { runId, request: promise }; + } + abortScriptRuns(reason) { + for (const runId of Object.keys(this.runs)) { + this.abortScript(runId, reason); + delete this.runs[runId]; + } + } + async runTest(script, options) { + const res = await this.queue({ + type: "tests.run", + scripts: script?.id ? [script?.id] : undefined, + options, + }); + return res.response; + } +} +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/client.js.map b/packages/core/.tshy-build/browser/server/client.js.map new file mode 100644 index 0000000000..a053ff6772 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/server/client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/messages.d.ts b/packages/core/.tshy-build/browser/server/messages.d.ts new file mode 100644 index 0000000000..7027ac744c --- /dev/null +++ b/packages/core/.tshy-build/browser/server/messages.d.ts @@ -0,0 +1,316 @@ +import type { ChatCompletionAssistantMessageParam, ChatCompletionMessageParam } from "../chattypes.js"; +import type { ChatToolChoice, Diagnostic, Edits, ExpansionVariables, FenceFormat, GenerationOutput, LanguageModelInfo, LanguageModelReference, Logprob, PromptScript, SerializedError, WorkspaceFile } from "../types.js"; +export interface ResponseStatus { + ok: boolean; + error?: SerializedError; + status?: number; +} +export type OpenAIAPIType = "openai" | "azure" | "localai" | "azure_ai_inference" | "azure_serverless" | "azure_serverless_models" | "alibaba" | "huggingface" | "github"; +export type AzureCredentialsType = "default" | "cli" | "env" | "powershell" | "devcli" | "managedidentity" | "workloadidentity"; +export interface LanguageModelConfiguration extends LanguageModelReference { + base: string; + token: string; + source?: string; + type?: OpenAIAPIType; + version?: string; + azureCredentialsType?: AzureCredentialsType; +} +export type ResolvedLanguageModelConfiguration = Partial & { + models?: LanguageModelInfo[]; + error?: string; +}; +/** + * Represents a project containing templates and diagnostics. + * Provides utility methods to manage templates and diagnose issues. + */ +export interface Project { + systemDir?: string; + scripts: PromptScript[]; + diagnostics: Diagnostic[]; +} +export interface RequestMessage { + type: string; + id: string; + response?: ResponseStatus; +} +export interface ServerKill extends RequestMessage { + type: "server.kill"; +} +export interface ServerVersion extends RequestMessage { + type: "server.version"; + version?: string; +} +export interface ServerEnv extends RequestMessage { + type: "server.env"; +} +export interface ServerEnvResponse extends ResponseStatus { + providers: ResolvedLanguageModelConfiguration[]; + remote?: { + url: string; + branch?: string; + }; + configuration: { + name?: string; + description?: string; + version?: string; + homepage?: string; + readme?: string; + author?: string; + }; +} +export interface PromptScriptTestRunOptions extends PromptScriptModelRunOptions { + testProvider?: string; + models?: string[]; + groups?: string[]; +} +export interface PromptScriptModelRunOptions { + model?: string; + smallModel?: string; + visionModel?: string; +} +export interface PromptScriptTestRun extends RequestMessage { + type: "tests.run"; + scripts?: string[]; + options?: PromptScriptTestRunOptions; +} +export interface PromptScriptTestResult extends ResponseStatus { + script: string; + value?: { + evalId: string; + results: { + stats?: { + successes: number; + failures: number; + errors: number; + tokenUsage?: { + cached?: number; + completion?: number; + prompt?: number; + total?: number; + }; + }; + }; + }; +} +export interface PromptScriptTestRunResponse extends ResponseStatus { + value?: PromptScriptTestResult[]; +} +export interface PromptScriptRunOptions { + excludedFiles: string[]; + ignoreGitIgnore: boolean; + runRetry: string; + out: string; + retry: string; + retryDelay: string; + maxDelay: string; + maxRetryAfter: string; + json: boolean; + outTrace: string; + outOutput: string; + outAnnotations: string; + outChangelogs: string; + pullRequestComment: string | boolean; + pullRequestDescription: string | boolean; + pullRequestReviews: boolean; + teamsMessage: boolean; + outData: string; + label: string; + temperature: string | number; + reasoningEffort: "high" | "low" | "medium"; + topP: string | number; + toolChoice: ChatToolChoice; + seed: string | number; + maxTokens: string | number; + maxToolCalls: string | number; + maxDataRepairs: string | number; + model: string; + smallModel: string; + visionModel: string; + embeddingsModel: string; + modelAlias: string[]; + provider: string; + csvSeparator: string; + cache: boolean | string; + cacheName: string; + applyEdits: boolean; + failOnErrors: boolean; + removeOut: boolean; + vars: string[] | Record; + fallbackTools: boolean; + jsSource: string; + logprobs: boolean; + topLogprobs: number; + fenceFormat: FenceFormat; + workspaceFiles?: WorkspaceFile[]; + runTrace: boolean; + outputTrace: boolean; + accept: string; +} +export interface RunResultList extends RequestMessage { + type: "run.list"; +} +export interface RunResultListResponse extends ResponseStatus { + runs: { + scriptId: string; + runId: string; + creationTime: string; + }[]; +} +export interface PromptScriptList extends RequestMessage { + type: "script.list"; +} +export interface PromptScriptListResponse extends ResponseStatus { + project: Project; +} +export interface PromptScriptStart extends RequestMessage { + type: "script.start"; + runId: string; + script: string; + files?: string[]; + options: Partial; +} +export interface PromptScriptStartResponse extends ResponseStatus { + runId: string; +} +export type GenerationStatus = "success" | "error" | "cancelled" | undefined; +export interface GenerationResult extends GenerationOutput { + /** + * Run identifier + */ + runId: string; + /** + * The environment variables passed to the prompt + */ + env: Partial; + /** + * Expanded prompt text composed of multiple messages + */ + messages: ChatCompletionMessageParam[]; + /** + * Edits to apply, if any + */ + edits: Edits[]; + /** + * Source annotations parsed as diagnostics + */ + annotations: Diagnostic[]; + /** + * Sections of the ChangeLog + */ + changelogs: string[]; + /** + * Error message or object, if any error occurred + */ + error?: SerializedError; + /** + * Status of the generation process (success, error, or cancelled) + */ + status: GenerationStatus; + /** + * Additional status information or message + */ + statusText?: string; + /** + * Completion status from the language model + */ + finishReason?: string; + /** + * Optional label for the run + */ + label?: string; + /** + * Version of the GenAIScript used + */ + version: string; + /** + * Log probs of the choices + */ + choices?: Logprob[]; + /** + * Logprobs if computed + */ + logprobs?: Logprob[]; + /** + * Statistics of the generation + */ + perplexity?: number; + /** + * Structural uncertainty + */ + uncertainty?: number; +} +export interface PromptScriptEndResponseEvent { + type: "script.end"; + runId: string; + exitCode: number; + result?: Partial; + trace?: string; +} +export interface PromptScriptAbort extends RequestMessage { + type: "script.abort"; + reason: string; + runId: string; +} +export interface PromptScriptProgressResponseEvent { + type: "script.progress"; + runId: string; + trace?: string; + output?: string; + progress?: string; + tokens?: number; + response?: string; + responseChunk?: string; + responseTokens?: Logprob[]; + reasoning?: string; + reasoningChunk?: string; + reasoningTokens?: Logprob[]; + inner?: boolean; +} +export interface LanguageModelConfigurationRequest extends RequestMessage { + type: "model.configuration"; + model: string; + token?: boolean; + response?: LanguageModelConfigurationResponse; +} +export interface LanguageModelConfigurationResponse extends ResponseStatus { + info?: LanguageModelConfiguration; +} +export interface ServerResponse extends ResponseStatus { + version: string; + node: string; + platform: string; + arch: string; + pid: number; +} +export interface ChatStart { + type: "chat.start"; + chatId: string; + messages: ChatCompletionAssistantMessageParam[]; + model: string; + modelOptions?: { + temperature?: number; + }; +} +export interface ChatCancel { + type: "chat.cancel"; + chatId: string; +} +export interface ChatChunk extends RequestMessage { + type: "chat.chunk"; + chatId: string; + model?: string; + finishReason?: string; + chunk?: string; + tokens?: number; + error?: SerializedError; +} +export type LogLevel = "debug" | "info" | "warn" | "error"; +export interface LogMessageEvent { + type: "log"; + message: string; + level: LogLevel; +} +export type RequestMessages = ServerKill | ServerEnv | ServerVersion | PromptScriptTestRun | PromptScriptStart | PromptScriptAbort | ChatChunk | LanguageModelConfigurationRequest | PromptScriptList | RunResultList; +export type PromptScriptResponseEvents = PromptScriptProgressResponseEvent | PromptScriptEndResponseEvent; +export type ChatEvents = ChatStart | ChatCancel; +//# sourceMappingURL=messages.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/messages.d.ts.map b/packages/core/.tshy-build/browser/server/messages.d.ts.map new file mode 100644 index 0000000000..13370e60c9 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/messages.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/server/messages.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/messages.js b/packages/core/.tshy-build/browser/server/messages.js new file mode 100644 index 0000000000..2d4adac575 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/messages.js @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export {}; +//# sourceMappingURL=messages.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/messages.js.map b/packages/core/.tshy-build/browser/server/messages.js.map new file mode 100644 index 0000000000..5b5f98c191 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/messages.js.map @@ -0,0 +1 @@ +{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/server/messages.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/wsclient.d.ts b/packages/core/.tshy-build/browser/server/wsclient.d.ts new file mode 100644 index 0000000000..7b2e444ded --- /dev/null +++ b/packages/core/.tshy-build/browser/server/wsclient.d.ts @@ -0,0 +1,36 @@ +import type { LanguageModelConfiguration, Project, PromptScriptRunOptions, PromptScriptStart, RequestMessage, ResponseStatus, ServerEnvResponse, ServerResponse } from "./messages.js"; +export declare class WebSocketClient extends EventTarget { + readonly url: string; + private awaiters; + private _nextId; + private _ws; + private _pendingMessages; + private _reconnectTimeout; + private _error; + connectedOnce: boolean; + reconnectAttempts: number; + constructor(url: string); + private dispatchChange; + init(): Promise; + get readyState(): "connecting" | "open" | "closing" | "closed" | "error"; + get error(): unknown; + private reconnect; + private connect; + queue(msg: Omit, options?: { + reuse: boolean; + }): Promise; + get pending(): boolean; + stop(): void; + cancel(reason?: string): void; + kill(): void; + dispose(): any; + getLanguageModelConfiguration(modelId: string, options?: { + token?: boolean; + }): Promise; + version(): Promise; + infoEnv(): Promise; + listScripts(): Promise; + startScript(runId: string, script: string, files: string[], options: Partial): Promise; + abortScript(runId: string, reason: string): Promise; +} +//# sourceMappingURL=wsclient.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/wsclient.d.ts.map b/packages/core/.tshy-build/browser/server/wsclient.d.ts.map new file mode 100644 index 0000000000..0a0fb37be4 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/wsclient.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wsclient.d.ts","sourceRoot":"","sources":["../../../src/server/wsclient.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,0BAA0B,EAG1B,OAAO,EAKP,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,cAAc,EAEd,iBAAiB,EACjB,cAAc,EAEf,MAAM,eAAe,CAAC;AASvB,qBAAa,eAAgB,SAAQ,WAAW;IAUlC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAThC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,MAAM,CAAsB;IACpC,aAAa,UAAS;IACtB,iBAAiB,SAAK;gBAED,GAAG,EAAE,MAAM;IAIhC,OAAO,CAAC,cAAc;IAIhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,IAAI,UAAU,IAAI,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAIvE;IAED,IAAI,KAAK,YAER;IAED,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,OAAO;IA+Df,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAgC7F,IAAI,OAAO,YAEV;IAED,IAAI;IAkBJ,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM;IAQtB,IAAI,IAAI,IAAI;IAMZ,OAAO,IAAI,GAAG;IAKR,6BAA6B,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAY5C,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAKlC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKrC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAM/B,WAAW,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC;IAYpC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAS1E"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/wsclient.js b/packages/core/.tshy-build/browser/server/wsclient.js new file mode 100644 index 0000000000..77fcfaa8f1 --- /dev/null +++ b/packages/core/.tshy-build/browser/server/wsclient.js @@ -0,0 +1,206 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { CHANGE, CLIENT_RECONNECT_DELAY, CLOSE, CONNECT, ERROR, MESSAGE, OPEN, QUEUE_SCRIPT_START, RECONNECT, } from "../constants.js"; +export class WebSocketClient extends EventTarget { + url; + awaiters = {}; + _nextId = 1; + _ws; + _pendingMessages = []; + _reconnectTimeout; + _error; + connectedOnce = false; + reconnectAttempts = 0; + constructor(url) { + super(); + this.url = url; + } + dispatchChange() { + this.dispatchEvent(new Event(CHANGE)); + } + async init() { + if (this._ws) + return Promise.resolve(undefined); + this.connect(); + } + get readyState() { + const states = ["connecting", "open", "closing", "closed", "error"]; + if (this._error) + return "error"; + return states[this._ws?.readyState] || "closed"; + } + get error() { + return this._error; + } + reconnect() { + this.reconnectAttempts++; + this.dispatchEvent(new Event(RECONNECT)); + this._ws = undefined; + clearTimeout(this._reconnectTimeout); + this._reconnectTimeout = setTimeout(() => { + try { + this.connect(); + } + catch (e) { + this._error = e; + this.dispatchChange(); + } + }, CLIENT_RECONNECT_DELAY); + } + connect() { + this._error = undefined; + this._ws = new WebSocket(this.url); + this._ws.addEventListener(OPEN, () => { + // clear counter + this.connectedOnce = true; + this.reconnectAttempts = 0; + // flush cached messages + let m; + while (this._ws?.readyState === WebSocket.OPEN && (m = this._pendingMessages.pop())) + this._ws.send(m); + this.dispatchEvent(new Event(OPEN)); + this.dispatchChange(); + }, false); + this._ws.addEventListener(ERROR, (ev) => { + this.reconnect(); + this.dispatchChange(); + }, false); + this._ws.addEventListener(CLOSE, + // CloseEvent not defined in electron + (ev) => { + const reason = ev.reason || "websocket closed"; + this.cancel(reason); + this.dispatchEvent(new Event(CLOSE)); + this.dispatchChange(); + this.reconnect(); + }, false); + this._ws.addEventListener(MESSAGE, (async (e) => { + const event = e; + const data = JSON.parse(event.data); + // handle responses + const req = data; + const { id } = req; + const awaiter = this.awaiters[id]; + if (awaiter) { + delete this.awaiters[id]; + await awaiter.resolve(req); + } + // not a response + this.dispatchEvent(new MessageEvent(MESSAGE, { + data, + })); + }), false); + this.dispatchEvent(new Event(CONNECT)); + } + queue(msg, options) { + const { reuse } = options || {}; + if (reuse) { + const awaiter = Object.values(this.awaiters).find((a) => a.msg.type === msg.type); + if (awaiter?.promise) { + return awaiter.promise; + } + } + const id = this._nextId++ + ""; + const mo = { ...msg, id }; + // avoid pollution + delete mo.trace; + if (mo.options) + delete mo.options.trace; + const m = JSON.stringify(mo); + this.init(); + let awaiter; + const p = new Promise((resolve, reject) => { + awaiter = this.awaiters[id] = { + msg, + resolve: (data) => resolve(data), + reject, + }; + if (this._ws?.readyState === WebSocket.OPEN) { + this._ws.send(m); + } + else + this._pendingMessages.push(m); + }); + awaiter.promise = p; + return p; + } + get pending() { + return this._pendingMessages?.length > 0; + } + stop() { + this.reconnectAttempts = 0; + if (this._reconnectTimeout) { + clearTimeout(this._reconnectTimeout); + this._reconnectTimeout = undefined; + } + if (this._ws) { + const ws = this._ws; + this._ws = undefined; + if (ws.readyState !== WebSocket.CLOSED) + try { + ws.close(); + } + finally { + } + } + this.cancel(); + } + cancel(reason) { + this.reconnectAttempts = 0; + this._pendingMessages = []; + const cancellers = Object.values(this.awaiters); + this.awaiters = {}; + cancellers.forEach((a) => a.reject(reason || "cancelled")); + } + kill() { + if (typeof WebSocket !== "undefined" && this._ws?.readyState === WebSocket.OPEN) + this._ws.send(JSON.stringify({ type: "server.kill", id: this._nextId++ + "" })); + this.stop(); + } + dispose() { + this.kill(); + return undefined; + } + async getLanguageModelConfiguration(modelId, options) { + const res = await this.queue({ + type: "model.configuration", + model: modelId, + token: options?.token, + }, { reuse: true }); + return res.response?.ok ? res.response.info : undefined; + } + async version() { + const res = await this.queue({ type: "server.version" }, { reuse: true }); + return res.response; + } + async infoEnv() { + const res = await this.queue({ type: "server.env" }, { reuse: true }); + return res.response; + } + async listScripts() { + const res = await this.queue({ type: "script.list" }, { reuse: true }); + const project = res.response?.project; + return project; + } + async startScript(runId, script, files, options) { + this.dispatchEvent(new Event(QUEUE_SCRIPT_START)); + return this.queue({ + type: "script.start", + runId, + script, + files, + options, + }); + } + async abortScript(runId, reason) { + if (!runId) + return { ok: true }; + const res = await this.queue({ + type: "script.abort", + runId, + reason, + }); + return res.response; + } +} +//# sourceMappingURL=wsclient.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/server/wsclient.js.map b/packages/core/.tshy-build/browser/server/wsclient.js.map new file mode 100644 index 0000000000..ec601dcfcf --- /dev/null +++ b/packages/core/.tshy-build/browser/server/wsclient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"wsclient.js","sourceRoot":"","sources":["../../../src/server/wsclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/shell.d.ts b/packages/core/.tshy-build/browser/shell.d.ts new file mode 100644 index 0000000000..b81123c46e --- /dev/null +++ b/packages/core/.tshy-build/browser/shell.d.ts @@ -0,0 +1,24 @@ +/** + * Parses a shell command into an array of arguments. + * + * @param cmd - The shell command string to be parsed. + * @returns An array of arguments, excluding comments. For non-string elements, + * it resolves operation types (e.g., globs or operators) and includes them in the result. + */ +export declare function shellParse(cmd: string): string[]; +/** + * Quotes an array of strings for safe use in a shell command. + * + * @param args - An array of strings representing the components of a shell command. + * Each string will be quoted as necessary to ensure it is interpreted correctly by the shell. + * @returns A single string where the input arguments are properly quoted for shell usage. + */ +export declare function shellQuote(args: string[]): string; +/** + * Removes ANSI escape codes used for ASCII colors from a given string. + * + * @param text - The input string containing potential ANSI color codes. + * @returns The string with ANSI color codes removed. + */ +export declare function shellRemoveAsciiColors(text: string): string; +//# sourceMappingURL=shell.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/shell.d.ts.map b/packages/core/.tshy-build/browser/shell.d.ts.map new file mode 100644 index 0000000000..7ace51113d --- /dev/null +++ b/packages/core/.tshy-build/browser/shell.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/shell.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAElD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/shell.js b/packages/core/.tshy-build/browser/shell.js new file mode 100644 index 0000000000..29ff2b1852 --- /dev/null +++ b/packages/core/.tshy-build/browser/shell.js @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { parse, quote } from "shell-quote"; +/** + * Parses a shell command into an array of arguments. + * + * @param cmd - The shell command string to be parsed. + * @returns An array of arguments, excluding comments. For non-string elements, + * it resolves operation types (e.g., globs or operators) and includes them in the result. + */ +export function shellParse(cmd) { + const args = parse(cmd); + const res = args + .filter((e) => !e.comment) + .map((e) => typeof e === "string" ? e : e.op === "glob" ? e.pattern : e.op); + return res; +} +/** + * Quotes an array of strings for safe use in a shell command. + * + * @param args - An array of strings representing the components of a shell command. + * Each string will be quoted as necessary to ensure it is interpreted correctly by the shell. + * @returns A single string where the input arguments are properly quoted for shell usage. + */ +export function shellQuote(args) { + return quote(args); +} +/** + * Removes ANSI escape codes used for ASCII colors from a given string. + * + * @param text - The input string containing potential ANSI color codes. + * @returns The string with ANSI color codes removed. + */ +export function shellRemoveAsciiColors(text) { + return text?.replace(/\x1b\[[0-9;]*m/g, ""); // ascii colors +} +//# sourceMappingURL=shell.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/shell.js.map b/packages/core/.tshy-build/browser/shell.js.map new file mode 100644 index 0000000000..a001063607 --- /dev/null +++ b/packages/core/.tshy-build/browser/shell.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/shell.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAS,CAAC,EAAE,CAC1F,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe;AAC9D,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdin.d.ts b/packages/core/.tshy-build/browser/stdin.d.ts new file mode 100644 index 0000000000..04be1c1520 --- /dev/null +++ b/packages/core/.tshy-build/browser/stdin.d.ts @@ -0,0 +1,11 @@ +import type { WorkspaceFile } from "./types.js"; +/** + * Reads data from standard input with a timeout mechanism and returns it wrapped in a `WorkspaceFile` object. + * The function determines the MIME type of the input and processes it accordingly as binary or text data. + * + * If the input is binary, it encodes the content in base64. If the input is text, it converts the content to a UTF-8 string. + * + * @returns A `WorkspaceFile` object containing the parsed input data, or undefined if there is no data or if a timeout occurs. + */ +export declare function readStdIn(): Promise; +//# sourceMappingURL=stdin.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdin.d.ts.map b/packages/core/.tshy-build/browser/stdin.d.ts.map new file mode 100644 index 0000000000..a45d2aab16 --- /dev/null +++ b/packages/core/.tshy-build/browser/stdin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/stdin.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyChD;;;;;;;GAOG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAsBxD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdin.js b/packages/core/.tshy-build/browser/stdin.js new file mode 100644 index 0000000000..3d306eac80 --- /dev/null +++ b/packages/core/.tshy-build/browser/stdin.js @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { fileTypeFromBuffer } from "file-type"; +import prettyBytes from "pretty-bytes"; +import { isBinaryMimeType } from "./binary.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { STDIN_READ_TIMEOUT } from "./constants.js"; +import { logVerbose } from "./util.js"; +import { toBase64 } from "./base64.js"; +function readStdinOrTimeout() { + return new Promise((resolve, reject) => { + const res = []; + const { stdin } = process; + if (!stdin || stdin.isTTY) { + resolve(undefined); + return; + } + const controller = new AbortController(); + const timeoutId = setTimeout(() => { + controller.abort(); + resolve(undefined); // Resolve without data when timed out + }, STDIN_READ_TIMEOUT); + const dataHandler = (data) => { + clearTimeout(timeoutId); + res.push(data); + }; + const errorHandler = (err) => { + clearTimeout(timeoutId); + reject(err); + }; + stdin.on("data", dataHandler); + stdin.once("error", errorHandler); + stdin.once("end", () => { + clearTimeout(timeoutId); + resolve(Buffer.concat(res)); + }); + if (controller.signal.aborted) { + stdin.removeListener("data", dataHandler); + stdin.removeListener("error", errorHandler); + } + }); +} +/** + * Reads data from standard input with a timeout mechanism and returns it wrapped in a `WorkspaceFile` object. + * The function determines the MIME type of the input and processes it accordingly as binary or text data. + * + * If the input is binary, it encodes the content in base64. If the input is text, it converts the content to a UTF-8 string. + * + * @returns A `WorkspaceFile` object containing the parsed input data, or undefined if there is no data or if a timeout occurs. + */ +export async function readStdIn() { + const data = await readStdinOrTimeout(); + if (!data?.length) + return undefined; + const mime = await fileTypeFromBuffer(data); + const res = isBinaryMimeType(mime?.mime) + ? { + filename: `stdin.${mime?.ext || "bin"}`, + content: toBase64(data), + encoding: "base64", + size: data.length, + type: mime?.mime, + } + : { + filename: `stdin.${mime?.ext || "md"}`, + content: data.toString("utf-8"), + size: data.length, + type: mime?.mime, + }; + logVerbose(`stdin: ${res.filename} (${prettyBytes(res.size)})`); + return deleteUndefinedValues(res); +} +//# sourceMappingURL=stdin.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdin.js.map b/packages/core/.tshy-build/browser/stdin.js.map new file mode 100644 index 0000000000..2036102ff1 --- /dev/null +++ b/packages/core/.tshy-build/browser/stdin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/stdin.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,SAAS,kBAAkB;IACzB,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,sCAAsC;QAC5D,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;YACnC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,GAAU,EAAE,EAAE;YAClC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1C,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,CAAC,CAAE;YACC,QAAQ,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE;YACvC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI,EAAE,IAAI;SACQ;QAC5B,CAAC,CAAE;YACC,QAAQ,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE;YACtC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI,EAAE,IAAI;SACQ,CAAC;IAE/B,UAAU,CAAC,UAAU,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdio.d.ts b/packages/core/.tshy-build/browser/stdio.d.ts new file mode 100644 index 0000000000..d26113fd3f --- /dev/null +++ b/packages/core/.tshy-build/browser/stdio.d.ts @@ -0,0 +1,11 @@ +export declare let stdout: NodeJS.WriteStream; +export declare const stderr: NodeJS.WriteStream; +/** + * Overrides the standard output stream with the standard error stream. + * + * No parameters are required for this function. + * After execution, any output written to the standard output stream will + * instead be redirected to the standard error stream. + */ +export declare function overrideStdoutWithStdErr(): void; +//# sourceMappingURL=stdio.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdio.d.ts.map b/packages/core/.tshy-build/browser/stdio.d.ts.map new file mode 100644 index 0000000000..48879e0cec --- /dev/null +++ b/packages/core/.tshy-build/browser/stdio.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/stdio.ts"],"names":[],"mappings":"AAGA,eAAO,IAAI,MAAM,EAAE,MAAM,CAAC,WAA4B,CAAC;AACvD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,SAEvC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdio.js b/packages/core/.tshy-build/browser/stdio.js new file mode 100644 index 0000000000..7501b5457d --- /dev/null +++ b/packages/core/.tshy-build/browser/stdio.js @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export let stdout = process.stdout; +export const stderr = process.stderr; +/** + * Overrides the standard output stream with the standard error stream. + * + * No parameters are required for this function. + * After execution, any output written to the standard output stream will + * instead be redirected to the standard error stream. + */ +export function overrideStdoutWithStdErr() { + stdout = stderr; +} +//# sourceMappingURL=stdio.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/stdio.js.map b/packages/core/.tshy-build/browser/stdio.js.map new file mode 100644 index 0000000000..5d502dcc06 --- /dev/null +++ b/packages/core/.tshy-build/browser/stdio.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/stdio.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,IAAI,MAAM,GAAuB,OAAO,CAAC,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,MAAM,GAAuB,OAAO,CAAC,MAAM,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,MAAM,CAAC;AAClB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/systems.d.ts b/packages/core/.tshy-build/browser/systems.d.ts new file mode 100644 index 0000000000..c7a12a9037 --- /dev/null +++ b/packages/core/.tshy-build/browser/systems.d.ts @@ -0,0 +1,41 @@ +import type { GenerationOptions } from "./generation.js"; +import type { Project } from "./server/messages.js"; +import type { ContentSafetyOptions, ModelOptions, PromptSystemOptions, SystemPromptInstance, ToolCallback } from "./types.js"; +/** + * Resolves and returns a list of unique systems based on the provided script and project. + * Analyzes script options, JavaScript source code, tools, resolved tools, and MCP servers to determine applicable systems. + * + * @param prj - The project object containing templates, tools, scripts, and other project-related data. + * @param script - An object containing prompt system options, model options, content safety options, and optionally JavaScript source code. + * @param resolvedTools - An optional array of tools resolved externally for additional system inclusion. + * @returns An array of unique system prompt instances applicable based on the analysis, including both system IDs and instances. + */ +export declare function resolveSystems(prj: Project, script: PromptSystemOptions & ModelOptions & ContentSafetyOptions & { + jsSource?: string; +}, resolvedTools?: ToolCallback[]): SystemPromptInstance[]; +/** + * Adds fallback tool systems to the provided list of systems based on tool configuration + * and model/tool support. Ensures "system.tool_calls" is included if fallback tools + * are required and tools are unsupported. + * + * @param systems - The current list of system prompt instances where fallback tools might be added. + * @param tools - The list of tools to evaluate for inclusion of fallback systems. + * @param options - Optional model-specific generation options containing fallback tool settings. + * @param genOptions - Optional general generation options containing fallback tool configurations. + * @returns A boolean indicating if fallback tools were added. + */ +export declare function addFallbackToolSystems(systems: SystemPromptInstance[], tools: ToolCallback[], options?: ModelOptions, genOptions?: GenerationOptions): boolean; +/** + * Resolves tools in the project based on provided systems and tools. + * Matches system IDs or instances and tool IDs against project scripts to find associated tools. + * + * @param prj - The project containing templates and script data, including scripts and tool definitions. + * @param systems - A list of system IDs or instances to resolve tools for. + * @param tools - A list of tool IDs to match against project scripts. + * @returns A list of tool objects, each containing an ID and description, associated with the provided systems and tools. + */ +export declare function resolveTools(prj: Project, systems: (string | SystemPromptInstance)[], tools: string[]): { + id: string; + description: string; +}[]; +//# sourceMappingURL=systems.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/systems.d.ts.map b/packages/core/.tshy-build/browser/systems.d.ts.map new file mode 100644 index 0000000000..2b9da2d8a1 --- /dev/null +++ b/packages/core/.tshy-build/browser/systems.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"systems.d.ts","sourceRoot":"","sources":["../../src/systems.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,mBAAmB,GAAG,YAAY,GAAG,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACzF,aAAa,CAAC,EAAE,YAAY,EAAE,GAC7B,oBAAoB,EAAE,CAkMxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,iBAAiB,WAqB/B;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,CAAC,MAAM,GAAG,oBAAoB,CAAC,EAAE,EAC1C,KAAK,EAAE,MAAM,EAAE,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAQvC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/systems.js b/packages/core/.tshy-build/browser/systems.js new file mode 100644 index 0000000000..bf82134e02 --- /dev/null +++ b/packages/core/.tshy-build/browser/systems.js @@ -0,0 +1,261 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// cspell: disable +// This module resolves and returns a list of applicable systems based on the provided script and project. +// It analyzes script options and the JavaScript source code to determine which systems to include or exclude. +import { uniq } from "es-toolkit"; +import { arrayify } from "./cleaners.js"; +import { isToolsSupported } from "./tools.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("systems"); +const dbgr = dbg.extend("resolve"); +dbgr.enabled = false; +/** + * Resolves and returns a list of unique systems based on the provided script and project. + * Analyzes script options, JavaScript source code, tools, resolved tools, and MCP servers to determine applicable systems. + * + * @param prj - The project object containing templates, tools, scripts, and other project-related data. + * @param script - An object containing prompt system options, model options, content safety options, and optionally JavaScript source code. + * @param resolvedTools - An optional array of tools resolved externally for additional system inclusion. + * @returns An array of unique system prompt instances applicable based on the analysis, including both system IDs and instances. + */ +export function resolveSystems(prj, script, resolvedTools) { + const { jsSource, responseType, responseSchema, systemSafety, mcpServers, mcpAgentServers } = script; + // Initialize systems array from script.system, converting to array if necessary using arrayify utility + let systems = arrayify(script.system).filter((s) => typeof s === "string"); + const systemInstances = arrayify(script.system).filter((s) => typeof s === "object"); + const excludedSystem = arrayify(script.excludedSystem); + const tools = arrayify(script.tools); + const dataMode = responseSchema || (responseType && responseType !== "markdown" && responseType !== "text"); + const safeties = [ + "system.safety_jailbreak", + "system.safety_harmful_content", + "system.safety_protected_material", + ]; + // If no system is defined in the script, determine systems based on jsSource + if (script.system === undefined) { + // current date + // safety + if (systemSafety !== false) { + dbgr(`adding safeties to systems`); + systems.push(...safeties); + } + // Check for schema definition in jsSource using regex + const useSchema = /\Wdefschema\W/i.test(jsSource); + // Default systems if no responseType is specified + if (!dataMode) { + dbgr(`adding default systems`); + systems.push("system"); + systems.push("system.explanations"); + if (!responseType) { + dbgr(`adding system.output_markdown`); + systems.push("system.output_markdown"); + } + } + // Add planner system if any tool starts with "agent" + if (tools.some((t) => /^agent/.test(t))) { + dbgr(`tool starts with "agent", adding system.planner`); + systems.push("system.planner"); + } + // Add harmful content system if images are defined + if (/\Wdefimages\W/i.test(jsSource)) { + dbgr(`images found, adding system.safety_harmful_content`); + systems.push("system.safety_harmful_content"); + } + // Determine additional systems based on content of jsSource + if (/\Wfile\W/i.test(jsSource)) { + dbgr(`file references found, adding system.files`); + systems.push("system.files"); + // Add file schema system if schema is used + if (useSchema) { + dbgr(`schema is used, adding system.files_schema`); + systems.push("system.files_schema"); + } + } + if (/\Wchangelog\W/i.test(jsSource)) { + dbgr(`changelog references found, adding system.changelog`); + systems.push("system.changelog"); + } + // Add schema system if schema is used + if (useSchema) { + dbgr(`schema is used, adding system.schema`); + systems.push("system.schema"); + } + // Add annotation system if annotations, warnings, or errors are found + if (/\W(annotations|warnings|errors)\W/i.test(jsSource)) { + dbgr(`annotations, warnings, or errors found, adding system.annotations`); + systems.push("system.annotations"); + } + // Add diagram system if diagrams or charts are found + if (/\W(diagram|chart)\W/i.test(jsSource)) { + dbgr(`diagrams or charts found, adding system.diagrams`); + systems.push("system.diagrams"); + } + // Add git information system if git is found + if (/\W(git)\W/i.test(jsSource)) { + dbgr(`git references found, adding system.git_info`); + systems.push("system.git_info"); + } + // Add GitHub information system if GitHub is found + if (/\W(github)\W/i.test(jsSource)) { + dbgr(`GitHub references found, adding system.github_info`); + systems.push("system.github_info"); + } + // Add programming language system prompts based on file extensions or language keywords + if (/\.(go)$|golang|go\s/i.test(jsSource)) { + dbgr(`Go references found, adding system.go`); + systems.push("system.go"); + } + if (/\.(rs)$|rust|cargo/i.test(jsSource)) { + dbgr(`Rust references found, adding system.rust`); + systems.push("system.rust"); + } + if (/\.(java)$|java\s|maven|gradle/i.test(jsSource)) { + dbgr(`Java references found, adding system.java`); + systems.push("system.java"); + } + if (/\.(cpp|cxx|cc|c\+\+|h|hpp)$|c\+\+|cpp|cmake/i.test(jsSource)) { + dbgr(`C/C++ references found, adding system.cpp`); + systems.push("system.cpp"); + } + if (/\.(rb|rbw|rake|gemspec)$|ruby|rails|gem|bundle|rake/i.test(jsSource)) { + dbgr(`Ruby references found, adding system.ruby`); + systems.push("system.ruby"); + } + if (/\.(php|phtml|php[3-8])$|php|composer|laravel|symfony/i.test(jsSource)) { + dbgr(`PHP references found, adding system.php`); + systems.push("system.php"); + } + // Add system.today if "today" is found in jsSource + if (/today/i.test(jsSource)) { + dbgr(`adding system.today to systems`); + systems.push("system.today"); + } + } + // insert safety first + if (systemSafety === "default") { + dbgr(`inserting safety systems`); + systems.unshift(...safeties); + } + // output format + switch (responseType) { + case "markdown": + systems.push("system.output_markdown"); + break; + case "text": + systems.push("system.output_plaintext"); + break; + case "json": + case "json_object": + case "json_schema": + systems.push("system.output_json"); + break; + case "yaml": + systems.push("system.output_yaml"); + break; + } + if (responseSchema && !responseType) { + dbgr(`adding system.output_json to match responseSchema`); + systems.push("system.output_json"); + } + // Include tools-related systems if specified in the script + if (tools.length || resolvedTools?.length) { + dbgr(`tools or resolvedTools found, adding system.tools`); + systems.push("system.tools"); + // Resolve and add each tool's systems based on its definition in the project + tools.forEach((tool) => systems.push(...resolveSystemFromTools(prj, tool))); + } + // map mcps to system scripts + if (typeof mcpServers === "object") { + for (const [id, config] of Object.entries(mcpServers)) { + systemInstances.push({ + id: "system.mcp", + parameters: { + id, + ...config, + }, + }); + } + } + if (typeof mcpAgentServers === "object") { + for (const [id, config] of Object.entries(mcpAgentServers)) { + systemInstances.push({ + id: "system.agent_mcp", + parameters: { + id, + ...config, + }, + }); + } + } + // filter out + systems = systems.filter((s) => !!s).filter((s) => !excludedSystem.includes(s)); + // Return a unique list of non-empty systems + // Filters out duplicates and empty entries using unique utility + systems = uniq(systems); + // now compute system instances + const res = [...systems.map((id) => ({ id })), ...systemInstances]; + dbgr(`resolved %O`, res); + return res; +} +/** + * Adds fallback tool systems to the provided list of systems based on tool configuration + * and model/tool support. Ensures "system.tool_calls" is included if fallback tools + * are required and tools are unsupported. + * + * @param systems - The current list of system prompt instances where fallback tools might be added. + * @param tools - The list of tools to evaluate for inclusion of fallback systems. + * @param options - Optional model-specific generation options containing fallback tool settings. + * @param genOptions - Optional general generation options containing fallback tool configurations. + * @returns A boolean indicating if fallback tools were added. + */ +export function addFallbackToolSystems(systems, tools, options, genOptions) { + if (!tools?.length || systems.find(({ id }) => id === "system.tool_calls")) { + dbg(`no tools or fallback tools found, skip fallback tools`); + return false; + } + const supported = isToolsSupported(options?.model || genOptions?.model); + const fallbackTools = supported === false || options?.fallbackTools || genOptions?.fallbackTools; + if (fallbackTools) { + dbg(`adding fallback tools to systems`, deleteUndefinedValues({ + supported, + options: options?.fallbackTools, + genOptions: genOptions?.fallbackTools, + })); + systems.push({ id: "system.tool_calls" }); + } + return fallbackTools; +} +/** + * Helper function to resolve tools in the project and return their system IDs. + * Finds systems in the project associated with a specific tool. + * + * @param prj - The project object containing templates and other project-related data. + * @param tool - The tool ID to resolve systems for. + * @returns An array of system IDs associated with the specified tool. + */ +function resolveSystemFromTools(prj, tool) { + const system = prj.scripts.filter((t) => t.isSystem && t.defTools?.find((to) => to.id.startsWith(tool))); + const res = system.map(({ id }) => id); + return res; +} +/** + * Resolves tools in the project based on provided systems and tools. + * Matches system IDs or instances and tool IDs against project scripts to find associated tools. + * + * @param prj - The project containing templates and script data, including scripts and tool definitions. + * @param systems - A list of system IDs or instances to resolve tools for. + * @param tools - A list of tool IDs to match against project scripts. + * @returns A list of tool objects, each containing an ID and description, associated with the provided systems and tools. + */ +export function resolveTools(prj, systems, tools) { + const { scripts: scripts } = prj; + const toolScripts = uniq([ + ...systems.map((sys) => scripts.find((s) => (typeof sys === "string" ? s.id === sys : false))), + ...tools.map((tid) => scripts.find((s) => s.defTools?.find((t) => t.id.startsWith(tid)))), + ]).filter((s) => !!s); + const res = toolScripts.map(({ defTools }) => defTools ?? []).flat(); + return res; +} +//# sourceMappingURL=systems.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/systems.js.map b/packages/core/.tshy-build/browser/systems.js.map new file mode 100644 index 0000000000..34b6ed68df --- /dev/null +++ b/packages/core/.tshy-build/browser/systems.js.map @@ -0,0 +1 @@ +{"version":3,"file":"systems.js","sourceRoot":"","sources":["../../src/systems.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/tags.d.ts b/packages/core/.tshy-build/browser/tags.d.ts new file mode 100644 index 0000000000..8c0a1331d1 --- /dev/null +++ b/packages/core/.tshy-build/browser/tags.d.ts @@ -0,0 +1,15 @@ +/** + * Filters a tag based on a list of tags. + * It checks if the tag starts with any of the tags in the list. + * If a tag starts with ":!", it is treated as an exclusion. + * If no tags are provided, it returns true. + * If the tag starts with any of the tags in the list, it returns true. + * If the tag starts with ":!" and matches any of the tags in the list, it returns false. + * If the tag starts with any of the tags in the list and there are exclusions, it returns true. + * If the tag does not match any of the tags in the list, it returns false. + * @param tags List of tags to filter against, with ":!" indicating exclusions. + * @param tag The tag to be checked. + * @returns Whether the tag passes the filter. + */ +export declare function tagFilter(tags: string[], tag: string): boolean; +//# sourceMappingURL=tags.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/tags.d.ts.map b/packages/core/.tshy-build/browser/tags.d.ts.map new file mode 100644 index 0000000000..54b03c8b70 --- /dev/null +++ b/packages/core/.tshy-build/browser/tags.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/tags.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,WAwBpD"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/tags.js b/packages/core/.tshy-build/browser/tags.js new file mode 100644 index 0000000000..f8e97c2563 --- /dev/null +++ b/packages/core/.tshy-build/browser/tags.js @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * Filters a tag based on a list of tags. + * It checks if the tag starts with any of the tags in the list. + * If a tag starts with ":!", it is treated as an exclusion. + * If no tags are provided, it returns true. + * If the tag starts with any of the tags in the list, it returns true. + * If the tag starts with ":!" and matches any of the tags in the list, it returns false. + * If the tag starts with any of the tags in the list and there are exclusions, it returns true. + * If the tag does not match any of the tags in the list, it returns false. + * @param tags List of tags to filter against, with ":!" indicating exclusions. + * @param tag The tag to be checked. + * @returns Whether the tag passes the filter. + */ +export function tagFilter(tags, tag) { + if (!tags?.length) + return true; + // normalize tag + const ltag = tag?.toLocaleLowerCase() || ""; + let noMatchDefault = false; + // apply exclusions first + for (const t of tags.filter((t) => t.startsWith(":!"))) { + const lt = t.toLocaleLowerCase(); + if (ltag.startsWith(lt.slice(2))) + return false; + noMatchDefault = true; // if any exclusion is found, set noMatchDefault to true + } + // apply inclusions + for (const t of tags.filter((t) => !t.startsWith(":!"))) { + noMatchDefault = false; // if any inclusion is found, set noMatchDefault to false + // check if the tag starts with the inclusion tag + const lt = t.toLocaleLowerCase(); + if (ltag.startsWith(lt)) + return true; + } + // no matches + return noMatchDefault; +} +//# sourceMappingURL=tags.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/tags.js.map b/packages/core/.tshy-build/browser/tags.js.map new file mode 100644 index 0000000000..896b2bd5ac --- /dev/null +++ b/packages/core/.tshy-build/browser/tags.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tags.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,GAAW;IACnD,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,gBAAgB;IAChB,MAAM,IAAI,GAAG,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAE5C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,yBAAyB;IACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,cAAc,GAAG,IAAI,CAAC,CAAC,wDAAwD;IACjF,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxD,cAAc,GAAG,KAAK,CAAC,CAAC,yDAAyD;QACjF,iDAAiD;QACjD,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IAED,aAAa;IACb,OAAO,cAAc,CAAC;AACxB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/teams.d.ts b/packages/core/.tshy-build/browser/teams.d.ts new file mode 100644 index 0000000000..1ad8cbfe4a --- /dev/null +++ b/packages/core/.tshy-build/browser/teams.d.ts @@ -0,0 +1,58 @@ +import type { CancellationOptions } from "./cancellation.js"; +import type { TraceOptions } from "./trace.js"; +import type { MessageChannelClient, PromptScript, WorkspaceFileWithDescription } from "./types.js"; +/** + * Converts a Markdown string into HTML formatted for Microsoft Teams. + * + * @param markdown - The Markdown content to be converted. + * Supports headers, lists, links, bold, italic, underlined, code, strikethrough, and blockquotes. + * + * @returns An object containing: + * - `content`: The converted HTML string suitable for Microsoft Teams. + * - `subject`: The extracted title if available, or undefined. + */ +export declare function convertMarkdownToTeamsHTML(markdown: string): { + content: string; + subject: string; +}; +export interface MicrosoftTeamsEntity { + webUrl: string; + name: string; +} +/** + * Sends a message to a Microsoft Teams channel, optionally including file attachments. + * + * @param channelUrl The URL of the Microsoft Teams channel, in the format https://teams.microsoft.com/l/channel//?groupId=. + * @param message The message content to post in Markdown format. It will be converted to HTML. + * @param options Additional configurations for the message. + * - script: The script context to include an attribution footer. + * - info: Metadata about the originating script or run (e.g., runUrl). + * - files: A list of files to attach to the message. Files are uploaded to the channel's storage. + * - folder: The folder in the channel's storage where files will be uploaded, if applicable. + * - disclaimer: A disclaimer to append to the message. If a string, it is used directly. Pass false to omit it. + * @returns A promise resolving to the created message entity containing the message's metadata, including its web URL. + */ +export declare function microsoftTeamsChannelPostMessage(channelUrl: string, message: string, options?: { + script?: PromptScript; + info?: { + runUrl?: string; + }; + files?: (string | WorkspaceFileWithDescription)[]; + folder?: string; + disclaimer?: boolean | string; +} & TraceOptions & CancellationOptions): Promise; +/** + * Creates a Microsoft Teams Channel Client for interacting with a Teams channel. + * This client allows posting messages and managing attachments in the specified channel. + * + * @param url The URL of the Microsoft Teams channel. Must be in the format: + * `https://teams.microsoft.com/.../channel//?groupId=`. + * If not provided, the function attempts to retrieve the URL from the + * GENAISCRIPT_TEAMS_CHANNEL_URL or GENAISCRIPT_TEAMS_URL environment variables. + * + * @throws Error if the provided URL is invalid or cannot be parsed. + * + * @returns An instance of a MicrosoftTeamsChannelClient for interacting with the specified channel. + */ +export declare function createMicrosoftTeamsChannelClient(url: string): MessageChannelClient; +//# sourceMappingURL=teams.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/teams.d.ts.map b/packages/core/.tshy-build/browser/teams.d.ts.map new file mode 100644 index 0000000000..e43d9b9b4c --- /dev/null +++ b/packages/core/.tshy-build/browser/teams.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../../src/teams.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAEnG;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM;;;EAwB1D;AAYD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AA6FD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,4BAA4B,CAAC,EAAE,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B,GAAG,YAAY,GACd,mBAAmB,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAuE/B;AA8CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAInF"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/teams.js b/packages/core/.tshy-build/browser/teams.js new file mode 100644 index 0000000000..26fd990950 --- /dev/null +++ b/packages/core/.tshy-build/browser/teams.js @@ -0,0 +1,259 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { fileTypeFromBuffer } from "./filetype.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { createFetch } from "./fetch.js"; +import { resolveRuntimeHost } from "./host.js"; +import { HTMLEscape } from "./htmlescape.js"; +import { logError, logVerbose } from "./util.js"; +import { dedent } from "./indent.js"; +import { TOOL_ID } from "./constants.js"; +import { filenameOrFileToFilename } from "./unwrappers.js"; +import { resolveFileBytes } from "./filebytes.js"; +import { basename } from "node:path"; +import { frontmatterTryParse, splitMarkdown } from "./frontmatter.js"; +/** + * Converts a Markdown string into HTML formatted for Microsoft Teams. + * + * @param markdown - The Markdown content to be converted. + * Supports headers, lists, links, bold, italic, underlined, code, strikethrough, and blockquotes. + * + * @returns An object containing: + * - `content`: The converted HTML string suitable for Microsoft Teams. + * - `subject`: The extracted title if available, or undefined. + */ +export function convertMarkdownToTeamsHTML(markdown) { + // using regexes, convert headers, lists, links, bold, italic, code, and quotes + const { content, frontmatter } = splitMarkdown(markdown || ""); + const fm = frontmatterTryParse(frontmatter); + let subject = fm?.value?.title; + const html = "
" + + (content || "") + .replace(/^# (.*$)/gim, (m, t) => { + subject = t; + return ""; + }) + .replace(/^#### (.*$)/gim, "

$1

") + .replace(/^### (.*$)/gim, "

$1

") + .replace(/^## (.*$)/gim, "

$1

") + .replace(/^> (.*$)/gim, "
$1
\n") + .replace(/\*\*(.*)\*\*/gim, "$1") + .replace(/\*(.*)\*/gim, "$1") + .replace(/__(.*)__/gim, "$1") + .replace(/`(.*?)`/gim, "$1") + .replace(/~~(.*?)~~/gim, "$1") + .replace(/^- (.*$)/gim, "
- $1") + + "
"; + return { content: html.trim(), subject: subject?.trim() }; +} +function parseTeamsChannelUrl(url) { + const m = /^https:\/\/teams.microsoft.com\/[^/]{1,32}\/channel\/(?.+)\/.*\?groupId=(?([a-z0-9-])+)$/.exec(url); + if (!m) + throw new Error("Invalid Teams channel URL"); + const { teamId, channelId } = m.groups; + return { teamId, channelId }; +} +function generatedByFooter(script, info) { + if (!script) + return `\n
AI-generated may be incorrect
\n`; + return `\n
AI-generated by ${info?.runUrl ? `${HTMLEscape(script.id)}` : HTMLEscape(script.id)} may be incorrect
\n`; +} +/** + * Uploads a file to the files storage of a Microsoft Teams channel. + * @param channelUrl Shared channel link in the format https://teams.microsoft.com/l/channel//?groupId= + * @param filename + * @returns + */ +async function microsoftTeamsChannelUploadFile(token, channelUrl, file, options) { + const { disclaimer } = options || {}; + const filename = filenameOrFileToFilename(file); + const description = typeof file === "object" ? file.description : undefined; + logVerbose(`teams: uploading ${filename}...`); + const { teamId, channelId } = parseTeamsChannelUrl(channelUrl); + const Authorization = `Bearer ${token}`; + const channelInfoUrl = `https://graph.microsoft.com/v1.0/teams/${teamId}/channels/${channelId}`; + const fetch = await createFetch({ ...(options || {}), retries: 1 }); + const channelInfoRes = await fetch(channelInfoUrl, { + headers: { + Authorization, + }, + }); + if (!channelInfoRes.ok) { + throw new Error(`Failed to get channel info: ${channelInfoRes.status} ${channelInfoRes.statusText}`); + } + const channelInfo = await channelInfoRes.json(); + const root = channelInfo.displayName; + // resolve channel folder name + const content = await resolveFileBytes(file, options); + if (!file) + throw new Error(`${filename} not found`); + const folder = options?.folder || TOOL_ID; + const itemUrl = `https://graph.microsoft.com/v1.0/groups/${teamId}/drive/root:/${root}/${folder}/${basename(filename)}`; + const contentUrl = `${itemUrl}:/content`; + const mime = await fileTypeFromBuffer(content); + const res = await fetch(contentUrl, { + method: "PUT", + headers: { + Authorization, + "Content-Type": mime?.mime || "application/octet-stream", + }, + body: content, + }); + if (!res.ok) { + logError(await res.text()); + throw new Error(`Failed to upload file: ${res.status} ${res.statusText}`); + } + const j = (await res.json()); + logVerbose(`teams: uploaded ${filename} to ${j.webUrl}`); + if (disclaimer || description) { + const html = convertMarkdownToTeamsHTML(description); + if (disclaimer) + html.content += disclaimer; + const dbody = deleteUndefinedValues({ + description: html.content, + title: html.subject, + }); + const resd = await fetch(itemUrl, { + method: "PATCH", + headers: { + Authorization, + "Content-Type": "application/json", + }, + body: JSON.stringify(dbody), + }); + if (!resd.ok) { + logVerbose(`description: ${dbody.description}`); + logVerbose(await resd.json()); + throw new Error(`Failed to update file description: ${resd.status} ${resd.statusText}`); + } + } + return j; +} +/** + * Sends a message to a Microsoft Teams channel, optionally including file attachments. + * + * @param channelUrl The URL of the Microsoft Teams channel, in the format https://teams.microsoft.com/l/channel//?groupId=. + * @param message The message content to post in Markdown format. It will be converted to HTML. + * @param options Additional configurations for the message. + * - script: The script context to include an attribution footer. + * - info: Metadata about the originating script or run (e.g., runUrl). + * - files: A list of files to attach to the message. Files are uploaded to the channel's storage. + * - folder: The folder in the channel's storage where files will be uploaded, if applicable. + * - disclaimer: A disclaimer to append to the message. If a string, it is used directly. Pass false to omit it. + * @returns A promise resolving to the created message entity containing the message's metadata, including its web URL. + */ +export async function microsoftTeamsChannelPostMessage(channelUrl, message, options) { + logVerbose(`teams: posting message to ${channelUrl}`); + const { files = [] } = options || {}; + const { teamId, channelId } = parseTeamsChannelUrl(channelUrl); + const runtimeHost = resolveRuntimeHost(); + const authToken = await runtimeHost.microsoftGraphToken.token("default"); + const token = authToken?.token?.token; + if (!token) { + logError("Microsoft Graph token not available"); + return undefined; + } + // convert message to html + const { content, subject } = convertMarkdownToTeamsHTML(message); + const disclaimer = typeof options.disclaimer === "string" + ? `\n
${HTMLEscape(options.disclaimer)}
\n` + : options.disclaimer !== false + ? generatedByFooter(options?.script, options?.info) + : undefined; + const body = deleteUndefinedValues({ + body: { + contentType: "html", + content, + }, + subject, + attachments: [], + }); + for (const file of files) { + const fres = await microsoftTeamsChannelUploadFile(token, channelUrl, file, { + ...options, + disclaimer, + }); + const guid = crypto.randomUUID(); + body.body.content += "\n" + ``; + body.attachments.push({ + id: guid, + contentType: "reference", + contentUrl: fres.webUrl, + name: fres.name, + thumbnailUrl: null, + }); + } + // finalize message + if (disclaimer) + body.body.content += disclaimer; + const url = `https://graph.microsoft.com/v1.0/teams/${teamId}/channels/${channelId}/messages`; + const fetch = await createFetch({ ...(options || {}), retries: 1 }); + const response = await fetch(url, { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }); + if (!response.ok) { + const err = await response.text(); + logError(err); + return undefined; + } + const data = await response.json(); + const { webUrl } = data; + logVerbose(`teams: message created at ${webUrl}`); + return data; +} +class MicrosoftTeamsChannelClient { + channelUrl; + constructor(channelUrl) { + this.channelUrl = channelUrl; + } + get teamId() { + const { teamId } = parseTeamsChannelUrl(this.channelUrl); + return teamId; + } + get channelId() { + const { channelId } = parseTeamsChannelUrl(this.channelUrl); + return channelId; + } + /** + * Posts a message with attachments to the channel + * @param message + * @param options + */ + async postMessage(message, options) { + const { files, disclaimer } = options || {}; + const res = await microsoftTeamsChannelPostMessage(this.channelUrl, dedent(message), { + files, + disclaimer, + }); + return res.webUrl; + } + toString() { + return this.channelUrl; + } +} +/** + * Creates a Microsoft Teams Channel Client for interacting with a Teams channel. + * This client allows posting messages and managing attachments in the specified channel. + * + * @param url The URL of the Microsoft Teams channel. Must be in the format: + * `https://teams.microsoft.com/.../channel//?groupId=`. + * If not provided, the function attempts to retrieve the URL from the + * GENAISCRIPT_TEAMS_CHANNEL_URL or GENAISCRIPT_TEAMS_URL environment variables. + * + * @throws Error if the provided URL is invalid or cannot be parsed. + * + * @returns An instance of a MicrosoftTeamsChannelClient for interacting with the specified channel. + */ +export function createMicrosoftTeamsChannelClient(url) { + if (!url) + url = process.env.GENAISCRIPT_TEAMS_CHANNEL_URL || process.env.GENAISCRIPT_TEAMS_URL; + if (!parseTeamsChannelUrl(url)) + throw new Error("Invalid Teams channel URL"); + return new MicrosoftTeamsChannelClient(url); +} +//# sourceMappingURL=teams.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/teams.js.map b/packages/core/.tshy-build/browser/teams.js.map new file mode 100644 index 0000000000..3317cffb73 --- /dev/null +++ b/packages/core/.tshy-build/browser/teams.js.map @@ -0,0 +1 @@ +{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/teams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/template.d.ts b/packages/core/.tshy-build/browser/template.d.ts new file mode 100644 index 0000000000..6827de6940 --- /dev/null +++ b/packages/core/.tshy-build/browser/template.d.ts @@ -0,0 +1,26 @@ +import type { PromptArgs, PromptScript } from "./types.js"; +/** + * Extracts a template ID from the given filename by removing specific extensions + * and directories. + * + * @param filename - The filename to extract the template ID from. + * @returns The extracted template ID. + */ +export declare function templateIdFromFileName(filename: string): string; +/** + * Parses metadata from the provided JavaScript source code. Determines the script type + * (e.g., "system" or "script"), extracts metadata, and identifies tools defined in the script. + * + * @param jsSource - The JavaScript source code to analyze. + * @returns An object containing extracted metadata, tool definitions, and system-specific properties. + */ +export declare function parsePromptScriptMeta(jsSource: string): PromptArgs & Pick; +/** + * Parses a prompt script file, validating its structure and content. + * + * @param filename - The filename of the script. + * @param content - The content of the script. + * @returns The parsed PromptScript or undefined in case of errors. + */ +export declare function parsePromptScript(filename: string, content: string): Promise; +//# sourceMappingURL=template.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/template.d.ts.map b/packages/core/.tshy-build/browser/template.d.ts.map new file mode 100644 index 0000000000..8f43cfa0a1 --- /dev/null +++ b/packages/core/.tshy-build/browser/template.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/template.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,UAKtD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAW7C;AAiDD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yBAGxE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/template.js b/packages/core/.tshy-build/browser/template.js new file mode 100644 index 0000000000..f072fc2192 --- /dev/null +++ b/packages/core/.tshy-build/browser/template.js @@ -0,0 +1,100 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/** + * This module provides functions for parsing and validating prompt scripts + * within a project. It includes a Checker class for validation of various + * data types and formats. + */ +import { GENAI_ANY_REGEX, GENAI_MD_REGEX } from "./constants.js"; +import { JSON5TryParse } from "./json5.js"; +import { humanize } from "./inflection.js"; +import { metadataValidate } from "./metadata.js"; +import { deleteUndefinedValues } from "./cleaners.js"; +import { markdownScriptParse } from "./markdownscript.js"; +import { basename, resolve } from "node:path"; +/** + * Extracts a template ID from the given filename by removing specific extensions + * and directories. + * + * @param filename - The filename to extract the template ID from. + * @returns The extracted template ID. + */ +export function templateIdFromFileName(filename) { + return filename + .replace(/\.(mjs|ts|js|mts|prompty|md)$/i, "") + .replace(/\.genai$/i, "") + .replace(/.*[/\\]/, ""); +} +/** + * Parses metadata from the provided JavaScript source code. Determines the script type + * (e.g., "system" or "script"), extracts metadata, and identifies tools defined in the script. + * + * @param jsSource - The JavaScript source code to analyze. + * @returns An object containing extracted metadata, tool definitions, and system-specific properties. + */ +export function parsePromptScriptMeta(jsSource) { + const m = /\b(?system|script)\(\s*(?\{.*?\})\s*\)/s.exec(jsSource); + const meta = JSON5TryParse(m?.groups?.meta) ?? {}; + if (m?.groups?.kind === "system") { + meta.unlisted = true; + meta.isSystem = true; + meta.group = meta.group || "system"; + } + meta.defTools = parsePromptScriptTools(jsSource); + meta.metadata = metadataValidate(meta.metadata); + return deleteUndefinedValues(meta); +} +function parsePromptScriptTools(jsSource) { + const tools = []; + jsSource.replace(/def(?Tool|Agent)\s*\(\s*"(?[^"]+?)"\s*,\s*"(?[^"]+?)"/g, (m, kind, id, description) => { + tools.push({ + id: kind === "Agent" ? "agent_" + id : id, + description, + kind: kind.toLocaleLowerCase(), + }); + return ""; + }); + return tools; +} +/** + * Core function to parse a prompt template and validate its contents. + * + * @param filename - The filename of the template. + * @param content - The content of the template. + * @returns The parsed PromptScript or undefined in case of errors. + */ +async function parsePromptTemplateCore(filename, content) { + // Check if this is a markdown script file + let jsSource; + let meta; + if (GENAI_MD_REGEX.test(filename)) { + const res = await markdownScriptParse(content); + meta = res.meta; + jsSource = res.jsSource; + } + else { + // Use content as-is for JavaScript/TypeScript files + jsSource = content; + meta = parsePromptScriptMeta(jsSource); + } + const r = { + id: templateIdFromFileName(filename), + title: humanize(basename(filename).replace(GENAI_ANY_REGEX, "")), + jsSource, + ...meta, + }; + r.filename = resolve(filename); + return r; +} +/** + * Parses a prompt script file, validating its structure and content. + * + * @param filename - The filename of the script. + * @param content - The content of the script. + * @returns The parsed PromptScript or undefined in case of errors. + */ +export async function parsePromptScript(filename, content) { + const script = await parsePromptTemplateCore(filename, content); + return script; +} +//# sourceMappingURL=template.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/template.js.map b/packages/core/.tshy-build/browser/template.js.map new file mode 100644 index 0000000000..7ee0d42dcd --- /dev/null +++ b/packages/core/.tshy-build/browser/template.js.map @@ -0,0 +1 @@ +{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/template.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/terminal.d.ts b/packages/core/.tshy-build/browser/terminal.d.ts new file mode 100644 index 0000000000..20e928b16d --- /dev/null +++ b/packages/core/.tshy-build/browser/terminal.d.ts @@ -0,0 +1,3 @@ +import terminalSize_ from "terminal-size"; +export declare const terminalSize: typeof terminalSize_; +//# sourceMappingURL=terminal.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/terminal.d.ts.map b/packages/core/.tshy-build/browser/terminal.d.ts.map new file mode 100644 index 0000000000..07b03dbd5b --- /dev/null +++ b/packages/core/.tshy-build/browser/terminal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,eAAO,MAAM,YAAY,sBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/terminal.js b/packages/core/.tshy-build/browser/terminal.js new file mode 100644 index 0000000000..6bc7ff51f3 --- /dev/null +++ b/packages/core/.tshy-build/browser/terminal.js @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import terminalSize_ from "terminal-size"; +export const terminalSize = terminalSize_; +//# sourceMappingURL=terminal.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/terminal.js.map b/packages/core/.tshy-build/browser/terminal.js.map new file mode 100644 index 0000000000..07793e649e --- /dev/null +++ b/packages/core/.tshy-build/browser/terminal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testeval.d.ts b/packages/core/.tshy-build/browser/testeval.d.ts new file mode 100644 index 0000000000..d7ce12a3b9 --- /dev/null +++ b/packages/core/.tshy-build/browser/testeval.d.ts @@ -0,0 +1,9 @@ +import type { PromptScriptRunOptions, GenerationResult } from "./server/messages.js"; +import type { PromptScript, PromptTest } from "./types.js"; +export interface PromptTestConfiguration { + script: PromptScript; + test: PromptTest; + options: Partial; +} +export declare function evaluateTestResult(config: PromptTestConfiguration, result: GenerationResult): Promise; +//# sourceMappingURL=testeval.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testeval.d.ts.map b/packages/core/.tshy-build/browser/testeval.d.ts.map new file mode 100644 index 0000000000..31c514d618 --- /dev/null +++ b/packages/core/.tshy-build/browser/testeval.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testeval.d.ts","sourceRoot":"","sources":["../../src/testeval.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC1C;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmJ7B"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testeval.js b/packages/core/.tshy-build/browser/testeval.js new file mode 100644 index 0000000000..5fe7af5a5d --- /dev/null +++ b/packages/core/.tshy-build/browser/testeval.js @@ -0,0 +1,129 @@ +import { arrayify } from "./cleaners.js"; +import { genaiscriptDebug } from "./debug.js"; +import { GROQEvaluate } from "./groq.js"; +import { levenshteinDistance } from "./levenshtein.js"; +const dbg = genaiscriptDebug("tests:eval"); +export async function evaluateTestResult(config, result) { + const { script, test } = config; + const { id } = script; + const { status, error, text } = result; + dbg(`evaluating test: %s %s`, id, test.description); + if (error) { + dbg(`error: %O`, error); + return `error: ${error.message}`; + } + if (status !== "success") { + dbg(`status: %s`, status); + return status; + } + const { keywords, forbidden, asserts } = test; + const upperText = text.toLocaleUpperCase(); + // keywords + for (const keyword of arrayify(keywords)) { + if (!upperText.includes(keyword.toLocaleUpperCase())) { + return `keyword '${keyword}' not found in output`; + } + } + // forbidden + for (const keyword of arrayify(forbidden)) { + if (upperText.includes(keyword.toLocaleUpperCase())) { + return `forbidden keyword '${keyword}' found in output`; + } + } + for (const assert of arrayify(asserts)) { + const { type, transform } = assert; + const transformedText = transform ? "" + (await GROQEvaluate(text, result)) : text; // TODO: implement actual transformation + const transformedUpperText = transformedText.toLocaleUpperCase(); + // Handle different assertion types + let passed = false; + switch (type) { + case "icontains": { + const { value } = assert; + passed = transformedUpperText.includes(value.toLocaleUpperCase()); + break; + } + case "not-icontains": { + const { value } = assert; + passed = !transformedUpperText.includes(value.toLocaleUpperCase()); + break; + } + case "equals": { + const { value } = assert; + passed = transformedText === value; + break; + } + case "not-equals": { + const { value } = assert; + passed = transformedText !== value; + break; + } + case "starts-with": { + const { value } = assert; + passed = transformedText.startsWith(value); + break; + } + case "not-starts-with": { + const { value } = assert; + passed = !transformedText.startsWith(value); + break; + } + case "contains-all": { + const { value } = assert; + passed = arrayify(value).every((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "not-contains-all": { + const { value } = assert; + passed = !arrayify(value).every((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "contains-any": { + const { value } = assert; + passed = arrayify(value).some((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "not-contains-any": { + const { value } = assert; + passed = !arrayify(value).some((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "icontains-all": { + const { value } = assert; + passed = arrayify(value).every((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "not-icontains-all": { + const { value } = assert; + passed = !arrayify(value).every((v) => transformedUpperText.includes(v.toLocaleUpperCase())); + break; + } + case "levenshtein": { + const { value, threshold } = assert; + const dist = await levenshteinDistance(transformedText, value); + const maxThreshold = threshold ?? 3; // Default threshold + passed = dist <= maxThreshold; + break; + } + case "not-levenshtein": { + const { value, threshold } = assert; + const dist = await levenshteinDistance(transformedText, value); + const maxThreshold = threshold ?? 3; // Default threshold + passed = dist > maxThreshold; + break; + } + default: + dbg(`unknown assertion type: ${type}`); + return `unknown assertion type: ${type}`; + } + if (!passed) { + const value = assert.value; + const assertionDesc = Array.isArray(value) + ? `${type}([${value.join(", ")}])` + : `${type}('${value}')`; + return `assertion failed: ${assertionDesc}`; + } + } + dbg(`test passed`); + return undefined; // Test passed, no error message +} +//# sourceMappingURL=testeval.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testeval.js.map b/packages/core/.tshy-build/browser/testeval.js.map new file mode 100644 index 0000000000..c7f0d8b824 --- /dev/null +++ b/packages/core/.tshy-build/browser/testeval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"testeval.js","sourceRoot":"","sources":["../../src/testeval.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testhost.d.ts b/packages/core/.tshy-build/browser/testhost.d.ts new file mode 100644 index 0000000000..14cdb47f7c --- /dev/null +++ b/packages/core/.tshy-build/browser/testhost.d.ts @@ -0,0 +1,51 @@ +import type { ServerManager, UTF8Decoder, UTF8Encoder, RuntimeHost, ModelConfigurations, ModelConfiguration } from "./host.js"; +import type { TraceOptions } from "./trace.js"; +import type { LanguageModel } from "./chat.js"; +import type { LanguageModelConfiguration, LogLevel, Project, ResponseStatus } from "./server/messages.js"; +import type { CancellationToken } from "./cancellation.js"; +import type { McpClientManager } from "./mcpclient.js"; +import { ResourceManager } from "./mcpresource.js"; +import type { WorkspaceFileSystem, ContentSafety, ShellOptions, ShellOutput, ContainerOptions, ContainerHost, Path } from "./types.js"; +export declare class TestHost implements RuntimeHost { + project: Project; + userState: any; + server: ServerManager; + path: Path; + workspace: WorkspaceFileSystem; + readonly modelAliases: ModelConfigurations; + readonly mcp: McpClientManager; + readonly resources: ResourceManager; + static install(): void; + constructor(); + pullModel(cfg: LanguageModelConfiguration, options?: TraceOptions & CancellationToken): Promise; + clearModelAlias(source: "cli" | "env" | "config" | "script"): void; + setModelAlias(source: "cli" | "env" | "config", id: string, value: string | ModelConfiguration): void; + readConfig(): Promise<{}>; + get config(): {}; + contentSafety(id?: "azure", options?: TraceOptions): Promise; + createUTF8Decoder(): UTF8Decoder; + createUTF8Encoder(): UTF8Encoder; + projectFolder(): string; + resolvePath(...segments: string[]): string; + readSecret(name: string): Promise; + getLanguageModelConfiguration(modelId: string): Promise; + clientLanguageModel?: LanguageModel; + log(level: LogLevel, msg: string): void; + readFile(name: string): Promise; + statFile(name: string): Promise<{ + size: number; + type: "file" | "directory"; + }>; + writeFile(name: string, content: Uint8Array): Promise; + deleteFile(name: string): Promise; + findFiles(pattern: string, options?: unknown): Promise; + createDirectory(name: string): Promise; + deleteDirectory(name: string): Promise; + exec(containerId: string, command: string, args: string[], options: ShellOptions): Promise; + container(options: ContainerOptions & TraceOptions): Promise; + removeContainers(): Promise; + select(message: string, options: string[]): Promise; + input(message: string): Promise; + confirm(message: string): Promise; +} +//# sourceMappingURL=testhost.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testhost.d.ts.map b/packages/core/.tshy-build/browser/testhost.d.ts.map new file mode 100644 index 0000000000..2406e83835 --- /dev/null +++ b/packages/core/.tshy-build/browser/testhost.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testhost.d.ts","sourceRoot":"","sources":["../../src/testhost.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testhost.js b/packages/core/.tshy-build/browser/testhost.js new file mode 100644 index 0000000000..6eec9a6d98 --- /dev/null +++ b/packages/core/.tshy-build/browser/testhost.js @@ -0,0 +1,165 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// This module defines a TestHost class that implements the RuntimeHost interface. +// It provides various functionalities related to language models, file operations, and other utilities. +// Tags: RuntimeHost, TestHost, LanguageModel, FileSystem, Node.js +// Import necessary modules and functions from various files +import { readFile, writeFile } from "fs/promises"; +import { ensureDir } from "./fs.js"; +import { setRuntimeHost } from "./host.js"; +import { resolve } from "node:path"; +import { errorMessage, NotSupportedError } from "./error.js"; +import { defaultModelConfigurations } from "./llms.js"; +import { createNodePath } from "./path.js"; +import { ResourceManager } from "./mcpresource.js"; +import { execSync } from "node:child_process"; +import { shellQuote } from "./shell.js"; +import { genaiscriptDebug } from "./debug.js"; +import { installGlobals } from "./globals.js"; +import { originalConsole } from "./global.js"; +const dbg = genaiscriptDebug("host:test"); +// Class representing a test host for runtime, implementing the RuntimeHost interface +export class TestHost { + project; + // State object to store user-specific data + userState = {}; + // Server management service + server; + // Instance of the path utility + path = createNodePath(); + // File system for workspace + workspace; + // Default options for language models + modelAliases = defaultModelConfigurations(); + mcp; + resources; + // Static method to set this class as the runtime host + static install() { + installGlobals(); + setRuntimeHost(new TestHost()); + } + constructor() { + this.resources = new ResourceManager(); + } + async pullModel(cfg, options) { + return { ok: true }; + } + clearModelAlias(source) { + this.modelAliases[source] = {}; + } + setModelAlias(source, id, value) { + if (typeof value === "string") + value = { source, model: value }; + this.modelAliases[id] = value; + } + async readConfig() { + return {}; + } + get config() { + return {}; + } + contentSafety(id, options) { + throw new NotSupportedError("contentSafety"); + } + // Method to create a UTF-8 decoder + createUTF8Decoder() { + return new TextDecoder("utf-8"); + } + // Method to create a UTF-8 encoder + createUTF8Encoder() { + return new TextEncoder(); + } + // Method to get the current project folder path + projectFolder() { + return resolve("."); + } + // Placeholder for path resolution method + resolvePath(...segments) { + return this.path.resolve(...segments); + } + // Placeholder for reading a secret value + readSecret(name) { + throw new Error("Method not implemented."); + } + // Placeholder for getting language model configuration + getLanguageModelConfiguration(modelId) { + throw new Error("Method not implemented."); + } + // Optional client language model + clientLanguageModel; + // Placeholder for logging functionality + log(level, msg) { + const fn = originalConsole[level] || originalConsole.debug; + fn(msg); + } + // Method to read a file and return its content as a Uint8Array + async readFile(name) { + return new Uint8Array(await readFile(resolve(name))); + } + async statFile(name) { + return undefined; + } + // Method to write content to a file + async writeFile(name, content) { + await writeFile(resolve(name), content); + } + // Placeholder for file deletion functionality + deleteFile(name) { + throw new Error("Method not implemented."); + } + // Placeholder for finding files with a glob pattern + async findFiles(pattern, options) { + return [pattern]; + } + // Placeholder for creating a directory + async createDirectory(name) { + await ensureDir(name); + } + // Placeholder for deleting a directory + deleteDirectory(name) { + throw new Error("Method not implemented."); + } + // Placeholder for executing a shell command in a container + async exec(containerId, command, args, options) { + if (containerId) + throw new Error("Container not started"); + try { + const cmd = command + " " + shellQuote(args); + dbg(`%s> %s`, process.cwd(), cmd); + const stdout = await execSync(cmd, { encoding: "utf-8" }); + return { + stdout, + exitCode: 0, + failed: false, + }; + } + catch (error) { + return { + stderr: errorMessage(error), + failed: true, + exitCode: -1, + }; + } + } + // Placeholder for creating a container host + container(options) { + throw new Error("Method not implemented."); + } + // Async method to remove containers + async removeContainers() { } + // Placeholder for selecting an option from a list + select(message, options) { + throw new Error("Method not implemented."); + } + // Placeholder for input functionality + input(message) { + throw new Error("Method not implemented."); + } + // Placeholder for confirmation functionality + confirm(message) { + throw new Error("Method not implemented."); + } +} +//# sourceMappingURL=testhost.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testhost.js.map b/packages/core/.tshy-build/browser/testhost.js.map new file mode 100644 index 0000000000..dda3670783 --- /dev/null +++ b/packages/core/.tshy-build/browser/testhost.js.map @@ -0,0 +1 @@ +{"version":3,"file":"testhost.js","sourceRoot":"","sources":["../../src/testhost.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testschema.d.ts b/packages/core/.tshy-build/browser/testschema.d.ts new file mode 100644 index 0000000000..6b3da8fafa --- /dev/null +++ b/packages/core/.tshy-build/browser/testschema.d.ts @@ -0,0 +1,143 @@ +declare const _default: { + $schema: string; + title: string; + type: string; + properties: { + name: { + type: string; + description: string; + }; + description: { + type: string; + description: string; + }; + files: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + workspaceFiles: { + oneOf: ({ + type: string; + properties: { + filename: { + type: string; + }; + content: { + type: string; + }; + encoding: { + type: string; + enum: string[]; + }; + size: { + type: string; + }; + }; + required: string[]; + items?: undefined; + } | { + type: string; + items: { + type: string; + properties: { + filename: { + type: string; + }; + content: { + type: string; + }; + encoding: { + type: string; + enum: string[]; + }; + size: { + type: string; + }; + }; + required: string[]; + }; + properties?: undefined; + required?: undefined; + })[]; + description: string; + }; + vars: { + type: string; + additionalProperties: { + type: string[]; + }; + description: string; + }; + rubrics: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + facts: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + keywords: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + forbidden: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + asserts: { + oneOf: ({ + type: string; + items?: undefined; + } | { + type: string; + items: { + type: string; + }; + })[]; + description: string; + }; + }; + additionalProperties: boolean; +}; +export default _default; +//# sourceMappingURL=testschema.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testschema.d.ts.map b/packages/core/.tshy-build/browser/testschema.d.ts.map new file mode 100644 index 0000000000..e567bc0534 --- /dev/null +++ b/packages/core/.tshy-build/browser/testschema.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testschema.d.ts","sourceRoot":"","sources":["../../src/testschema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAwJE"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testschema.js b/packages/core/.tshy-build/browser/testschema.js new file mode 100644 index 0000000000..d82b30f648 --- /dev/null +++ b/packages/core/.tshy-build/browser/testschema.js @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export default { + $schema: "http://json-schema.org/draft-07/schema#", + title: "PromptTest", + type: "object", + properties: { + name: { + type: "string", + description: "Short name of the test", + }, + description: { + type: "string", + description: "Description of the test", + }, + files: { + oneOf: [ + { + type: "string", + }, + { + type: "array", + items: { + type: "string", + }, + }, + ], + description: "List of files to apply the test to", + }, + workspaceFiles: { + oneOf: [ + { + type: "object", + properties: { + filename: { + type: "string", + }, + content: { + type: "string", + }, + encoding: { + type: "string", + enum: ["base64"], + }, + size: { + type: "integer", + }, + }, + required: ["content"], + }, + { + type: "array", + items: { + type: "object", + properties: { + filename: { + type: "string", + }, + content: { + type: "string", + }, + encoding: { + type: "string", + enum: ["base64"], + }, + size: { + type: "integer", + }, + }, + required: ["content"], + }, + }, + ], + description: "List of files to apply the test to", + }, + vars: { + type: "object", + additionalProperties: { + type: ["string", "boolean", "number"], + }, + description: "Extra set of variables for this scenario", + }, + rubrics: { + oneOf: [ + { + type: "string", + }, + { + type: "array", + items: { + type: "string", + }, + }, + ], + description: "LLM output matches a given rubric", + }, + facts: { + oneOf: [ + { + type: "string", + }, + { + type: "array", + items: { + type: "string", + }, + }, + ], + description: "LLM output adheres to the given facts", + }, + keywords: { + oneOf: [ + { + type: "string", + }, + { + type: "array", + items: { + type: "string", + }, + }, + ], + description: "Required keywords in the LLM output", + }, + forbidden: { + oneOf: [ + { + type: "string", + }, + { + type: "array", + items: { + type: "string", + }, + }, + ], + description: "Disallowed keywords in the LLM output", + }, + asserts: { + oneOf: [ + { + type: "object", + }, + { + type: "array", + items: { + type: "object", + }, + }, + ], + description: "Additional deterministic assertions", + }, + }, + additionalProperties: false, +}; +//# sourceMappingURL=testschema.js.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/testschema.js.map b/packages/core/.tshy-build/browser/testschema.js.map new file mode 100644 index 0000000000..d7231d1601 --- /dev/null +++ b/packages/core/.tshy-build/browser/testschema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"testschema.js","sourceRoot":"","sources":["../../src/testschema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/textsplitter.d.ts b/packages/core/.tshy-build/browser/textsplitter.d.ts new file mode 100644 index 0000000000..e4a4693df2 --- /dev/null +++ b/packages/core/.tshy-build/browser/textsplitter.d.ts @@ -0,0 +1,37 @@ +import type { Tokenizer } from "./types.js"; +export interface TextSplitterConfig { + separators: string[]; + keepSeparators: boolean; + chunkSize: number; + chunkOverlap: number; + tokenizer: Tokenizer; + docType?: string; +} +export interface TextSplitterTextChunk { + text: string; + tokens: number[]; + startPos: number; + endPos: number; + startOverlap: number[]; + endOverlap: number[]; +} +/** + * Rebuilds the original text from an array of text chunks. + * + * @param text - The original text that was split into chunks. + * @param chunks - An array of text chunks containing information about the segmented portions of the text. + * + * @returns The reconstructed text built by combining all text chunks and their respective positions. + */ +export declare function unchunk(text: string, chunks: TextSplitterTextChunk[]): string; +export declare class TextSplitter { + private readonly _config; + constructor(config?: Partial); + split(text: string): TextSplitterTextChunk[]; + private recursiveSplit; + private combineChunks; + private containsAlphanumeric; + private splitBySpaces; + private getSeparators; +} +//# sourceMappingURL=textsplitter.d.ts.map \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/textsplitter.d.ts.map b/packages/core/.tshy-build/browser/textsplitter.d.ts.map new file mode 100644 index 0000000000..889b6aa595 --- /dev/null +++ b/packages/core/.tshy-build/browser/textsplitter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"textsplitter.d.ts","sourceRoot":"","sources":["../../src/textsplitter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAYpE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IA6BzC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE;IA+BnD,OAAO,CAAC,cAAc;IAsEtB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,aAAa;CA4WtB"} \ No newline at end of file diff --git a/packages/core/.tshy-build/browser/textsplitter.js b/packages/core/.tshy-build/browser/textsplitter.js new file mode 100644 index 0000000000..b6a5965844 --- /dev/null +++ b/packages/core/.tshy-build/browser/textsplitter.js @@ -0,0 +1,557 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// forked from https://raw.githubusercontent.com/Stevenic/vectra/refs/heads/main/src/TextSplitter.ts +// removed tokenizer dependency +import { assert } from "console"; +import { genaiscriptDebug } from "./debug.js"; +const dbg = genaiscriptDebug("splitter"); +/** + * Rebuilds the original text from an array of text chunks. + * + * @param text - The original text that was split into chunks. + * @param chunks - An array of text chunks containing information about the segmented portions of the text. + * + * @returns The reconstructed text built by combining all text chunks and their respective positions. + */ +export function unchunk(text, chunks) { + let rebuild = ""; + for (let i = 0; i < chunks.length; i++) { + const chunk = chunks[i]; + if (i === 0 && chunk.startPos > 0) + rebuild += text.slice(0, chunk.startPos); + rebuild += text.slice(chunk.startPos, chunk.endPos); + if (chunk.endPos < text.length) { + const nextChuk = chunks[i + 1]; + rebuild += text.slice(chunk.endPos, nextChuk?.startPos); + } + } + return rebuild; +} +export class TextSplitter { + _config; + constructor(config) { + this._config = Object.assign({ + keepSeparators: false, + chunkSize: 400, + chunkOverlap: 40, + }, config); + if (!this._config.tokenizer) + throw new Error("Tokenizer is required"); + // Use default separators if none are provided + if (!this._config.separators || this._config.separators.length === 0) { + this._config.separators = this.getSeparators(this._config.docType); + } + // Validate the config settings + if (this._config.chunkSize < 1) { + throw new Error("chunkSize must be >= 1"); + } + else if (this._config.chunkOverlap < 0) { + throw new Error("chunkOverlap must be >= 0"); + } + else if (this._config.chunkOverlap > this._config.chunkSize) { + throw new Error("chunkOverlap must be <= chunkSize"); + } + dbg(`config: %O`, this._config); + } + split(text) { + if (!text) + return []; + // Get basic chunks + const chunks = this.recursiveSplit(text, this._config.separators, 0); + assert(!chunks.some((c) => !c.text), `TextSplitter returned empty chunk.`); + const getOverlapTokens = (tokens) => { + if (tokens != undefined) { + const len = tokens.length > this._config.chunkOverlap ? this._config.chunkOverlap : tokens.length; + return tokens.slice(0, len); + } + else { + return []; + } + }; + // Add overlap tokens and text to the start and end of each chunk + if (this._config.chunkOverlap > 0) { + for (let i = 1; i < chunks.length; i++) { + const previousChunk = chunks[i - 1]; + const chunk = chunks[i]; + const nextChunk = i < chunks.length - 1 ? chunks[i + 1] : undefined; + chunk.startOverlap = getOverlapTokens(previousChunk.tokens.reverse()).reverse(); + chunk.endOverlap = getOverlapTokens(nextChunk?.tokens); + } + } + return chunks; + } + recursiveSplit(text, separators, startPos) { + const chunks = []; + if (text.length > 0) { + // Split text into parts + let parts; + let separator = ""; + const nextSeparators = separators.length > 1 ? separators.slice(1) : []; + if (separators.length > 0) { + // Split by separator + separator = separators[0]; + parts = separator == " " ? this.splitBySpaces(text) : text.split(separator); + } + else { + // Cut text in half + const half = Math.floor(text.length / 2); + parts = [text.substring(0, half), text.substring(half)]; + } + // Iterate over parts + for (let i = 0; i < parts.length; i++) { + const lastChunk = i === parts.length - 1; + // Get chunk text and endPos + let chunk = parts[i]; + const endPos = startPos + (chunk.length - 1) + (lastChunk ? 0 : separator.length); + if (this._config.keepSeparators && !lastChunk) { + chunk += separator; + } + // Ensure chunk contains text + if (!this._config.keepSeparators && !this.containsAlphanumeric(chunk)) { + continue; + } + // Optimization to avoid encoding really large chunks + if (chunk.length / 6 > this._config.chunkSize) { + // Break the text into smaller chunks + const subChunks = this.recursiveSplit(chunk, nextSeparators, startPos); + chunks.push(...subChunks); + } + else { + // Encode chunk text + const tokens = this._config.tokenizer.encode(chunk); + if (tokens.length > this._config.chunkSize) { + // Break the text into smaller chunks + const subChunks = this.recursiveSplit(chunk, nextSeparators, startPos); + chunks.push(...subChunks); + } + else { + // Append chunk to output + chunks.push({ + text: chunk, + tokens: tokens, + startPos: startPos, + endPos: endPos, + startOverlap: [], + endOverlap: [], + }); + } + } + // Update startPos + startPos = endPos + 1; + } + } + return this.combineChunks(chunks); + } + combineChunks(chunks) { + const combinedChunks = []; + let currentChunk; + let currentLength = 0; + const separator = this._config.keepSeparators ? "" : " "; + for (let i = 0; i < chunks.length; i++) { + const chunk = chunks[i]; + if (currentChunk) { + const length = currentChunk.tokens.length + chunk.tokens.length; + if (length > this._config.chunkSize) { + combinedChunks.push(currentChunk); + currentChunk = chunk; + currentLength = chunk.tokens.length; + } + else { + currentChunk.text += separator + chunk.text; + currentChunk.endPos = chunk.endPos; + currentChunk.tokens.push(...chunk.tokens); + currentLength += chunk.tokens.length; + } + } + else { + currentChunk = chunk; + currentLength = chunk.tokens.length; + } + } + if (currentChunk) { + combinedChunks.push(currentChunk); + } + return combinedChunks; + } + containsAlphanumeric(text) { + return /[a-z0-9]/i.test(text); + } + splitBySpaces(text) { + // Split text by tokens and return parts + const parts = []; + const tokens = this._config.tokenizer.encode(text); + do { + if (tokens.length <= this._config.chunkSize) { + parts.push(this._config.tokenizer.decode(tokens)); + break; + } + else { + const span = tokens.splice(0, this._config.chunkSize); + parts.push(this._config.tokenizer.decode(span)); + } + } while (true); + return parts; + } + getSeparators(docType) { + switch (docType ?? "") { + case "cpp": + return [ + // Split along class definitions + "\nclass ", + // Split along function definitions + "\nvoid ", + "\nint ", + "\nfloat ", + "\ndouble ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nwhile ", + "\nswitch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "go": + return [ + // Split along function definitions + "\nfunc ", + "\nvar ", + "\nconst ", + "\ntype ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nswitch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "java": + case "c#": + case "csharp": + case "cs": + case "ts": + case "tsx": + case "typescript": + return [ + // split along regions + "// LLM-REGION", + "/* LLM-REGION", + "/** LLM-REGION", + // Split along class definitions + "\nclass ", + // Split along method definitions + "\npublic ", + "\nprotected ", + "\nprivate ", + "\nstatic ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nwhile ", + "\nswitch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "js": + case "jsx": + case "javascript": + return [ + // split along regions + "// LLM-REGION", + "/* LLM-REGION", + "/** LLM-REGION", + // Split along class definitions + "\nclass ", + // Split along function definitions + "\nfunction ", + "\nconst ", + "\nlet ", + "\nvar ", + "\nclass ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nwhile ", + "\nswitch ", + "\ncase ", + "\ndefault ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "php": + return [ + // Split along function definitions + "\nfunction ", + // Split along class definitions + "\nclass ", + // Split along control flow statements + "\nif ", + "\nforeach ", + "\nwhile ", + "\ndo ", + "\nswitch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "proto": + return [ + // Split along message definitions + "\nmessage ", + // Split along service definitions + "\nservice ", + // Split along enum definitions + "\nenum ", + // Split along option definitions + "\noption ", + // Split along import statements + "\nimport ", + // Split along syntax declarations + "\nsyntax ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "python": + case "py": + return [ + // First, try to split along class definitions + "\nclass ", + "\ndef ", + "\n\tdef ", + // Now split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "rst": + return [ + // Split along section titles + "\n===\n", + "\n---\n", + "\n***\n", + // Split along directive markers + "\n.. ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "ruby": + return [ + // Split along method definitions + "\ndef ", + "\nclass ", + // Split along control flow statements + "\nif ", + "\nunless ", + "\nwhile ", + "\nfor ", + "\ndo ", + "\nbegin ", + "\nrescue ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "rust": + return [ + // Split along function definitions + "\nfn ", + "\nconst ", + "\nlet ", + // Split along control flow statements + "\nif ", + "\nwhile ", + "\nfor ", + "\nloop ", + "\nmatch ", + "\nconst ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "scala": + return [ + // Split along class definitions + "\nclass ", + "\nobject ", + // Split along method definitions + "\ndef ", + "\nval ", + "\nvar ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nwhile ", + "\nmatch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "swift": + return [ + // Split along function definitions + "\nfunc ", + // Split along class definitions + "\nclass ", + "\nstruct ", + "\nenum ", + // Split along control flow statements + "\nif ", + "\nfor ", + "\nwhile ", + "\ndo ", + "\nswitch ", + "\ncase ", + // Split by the normal type of lines + "\n\n", + "\n", + " ", + ]; + case "md": + case "markdown": + return [ + // First, try to split along Markdown headings (starting with level 2) + "\n## ", + "\n### ", + "\n#### ", + "\n##### ", + "\n###### ", + // Note the alternative syntax for headings (below) is not handled here + // Heading level 2 + // --------------- + // End of code block + "```\n\n", + // Horizontal lines + "\n\n***\n\n", + "\n\n---\n\n", + "\n\n___\n\n", + // Note that this splitter doesn't handle horizontal lines defined + // by *three or more* of ***, ---, or ___, but this is not handled + // Github tables + "", + // "", + // "
", + // "", + "
", + "

", + "
", + "

  • ", + "

    ", + "

    ", + "

    ", + "

    ", + "

    ", + "
    ", + "", + "", + "", + "
    ", + "", + "
      ", + "
        ", + "
        ", + "