@remoraflow/core 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib.js.map CHANGED
@@ -17,11 +17,11 @@
17
17
  "import type { WorkflowDefinition } from \"../../types\";\nimport type { Diagnostic } from \"../types\";\n\nexport function validateReferences(workflow: WorkflowDefinition): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const stepIds = new Set(workflow.steps.map((s) => s.id));\n\n // Check initialStepId\n if (!stepIds.has(workflow.initialStepId)) {\n diagnostics.push({\n severity: \"error\",\n location: { stepId: null, field: \"initialStepId\" },\n message: `Initial step '${workflow.initialStepId}' does not exist`,\n code: \"MISSING_INITIAL_STEP\",\n });\n }\n\n for (const step of workflow.steps) {\n // Check nextStepId\n if (step.nextStepId && !stepIds.has(step.nextStepId)) {\n diagnostics.push({\n severity: \"error\",\n location: { stepId: step.id, field: \"nextStepId\" },\n message: `Step '${step.id}' references non-existent next step '${step.nextStepId}'`,\n code: \"MISSING_NEXT_STEP\",\n });\n }\n\n // Check branchBodyStepId in switch-case\n if (step.type === \"switch-case\") {\n for (const [i, c] of step.params.cases.entries()) {\n if (!stepIds.has(c.branchBodyStepId)) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: `params.cases[${i}].branchBodyStepId`,\n },\n message: `Step '${step.id}' case ${i} references non-existent branch body step '${c.branchBodyStepId}'`,\n code: \"MISSING_BRANCH_BODY_STEP\",\n });\n }\n }\n }\n\n // Check loopBodyStepId in for-each\n if (step.type === \"for-each\") {\n if (!stepIds.has(step.params.loopBodyStepId)) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: \"params.loopBodyStepId\",\n },\n message: `Step '${step.id}' references non-existent loop body step '${step.params.loopBodyStepId}'`,\n code: \"MISSING_LOOP_BODY_STEP\",\n });\n }\n }\n\n // Check conditionStepId in wait-for-condition\n if (step.type === \"wait-for-condition\") {\n if (!stepIds.has(step.params.conditionStepId)) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: \"params.conditionStepId\",\n },\n message: `Step '${step.id}' references non-existent condition body step '${step.params.conditionStepId}'`,\n code: \"MISSING_CONDITION_BODY_STEP\",\n });\n }\n }\n }\n\n return diagnostics;\n}\n",
18
18
  "import type { WorkflowDefinition } from \"../../types\";\nimport type { Diagnostic, ExecutionGraph, ToolDefinitionMap } from \"../types\";\nimport { getSchemaType, resolveExpressionSchema } from \"../utils/schema\";\n\n/**\n * Validate that tool input values are type-compatible with the tool's\n * JSON Schema. Checks literal values, JMESPath expressions (simple dotted\n * paths only), and string templates.\n */\nexport function validateToolInputTypes(\n workflow: WorkflowDefinition,\n graph: ExecutionGraph,\n tools: ToolDefinitionMap,\n): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n\n for (const step of workflow.steps) {\n if (step.type !== \"tool-call\") continue;\n\n const toolDef = tools[step.params.toolName];\n if (!toolDef?.inputSchema.properties) continue;\n\n const schemaProps = toolDef.inputSchema.properties as Record<\n string,\n Record<string, unknown>\n >;\n\n for (const [key, expr] of Object.entries(step.params.toolInput)) {\n const propSchema = schemaProps[key];\n if (!propSchema) continue;\n\n const expectedType = getSchemaType(propSchema);\n if (!expectedType) continue;\n\n const exprObj = expr as {\n type: string;\n value?: unknown;\n expression?: string;\n template?: string;\n };\n\n if (exprObj.type === \"literal\") {\n const actualType = getValueType(exprObj.value);\n if (!isTypeCompatible(actualType, expectedType)) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: `params.toolInput.${key}`,\n },\n message: `Step '${step.id}' input '${key}' has literal type '${actualType}' but tool expects '${expectedType}'`,\n code: \"TOOL_INPUT_TYPE_MISMATCH\",\n });\n }\n } else if (exprObj.type === \"jmespath\" && exprObj.expression) {\n const resolvedSchema = resolveExpressionSchema(\n exprObj.expression,\n step.id,\n tools,\n workflow,\n graph,\n );\n if (resolvedSchema) {\n const resolvedType = getSchemaType(resolvedSchema);\n if (resolvedType && !isTypeCompatible(resolvedType, expectedType)) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: `params.toolInput.${key}`,\n },\n message: `Step '${step.id}' input '${key}' expression '${exprObj.expression}' resolves to type '${resolvedType}' but tool expects '${expectedType}'`,\n code: \"TOOL_INPUT_TYPE_MISMATCH\",\n });\n }\n }\n } else if (exprObj.type === \"template\") {\n // Templates always produce strings\n if (expectedType !== \"string\") {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: `params.toolInput.${key}`,\n },\n message: `Step '${step.id}' input '${key}' uses a string template but tool expects '${expectedType}'`,\n code: \"TOOL_INPUT_TYPE_MISMATCH\",\n });\n }\n }\n }\n }\n\n return diagnostics;\n}\n\nfunction getValueType(value: unknown): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n}\n\n/** Check if an actual type is compatible with the expected schema type. */\nfunction isTypeCompatible(actual: string, expected: string): boolean {\n if (actual === expected) return true;\n // integer accepts number values\n if (expected === \"integer\" && actual === \"number\") return true;\n return false;\n}\n",
19
19
  "import type { WorkflowDefinition } from \"../../types\";\nimport type { Diagnostic, ToolDefinitionMap } from \"../types\";\n\nexport function validateTools(\n workflow: WorkflowDefinition,\n tools: ToolDefinitionMap,\n): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n\n for (const step of workflow.steps) {\n if (step.type === \"tool-call\") {\n const { toolName, toolInput } = step.params;\n\n // Check tool exists\n const toolDef = tools[toolName];\n if (!toolDef) {\n diagnostics.push({\n severity: \"error\",\n location: { stepId: step.id, field: \"params.toolName\" },\n message: `Step '${step.id}' references unknown tool '${toolName}'`,\n code: \"UNKNOWN_TOOL\",\n });\n continue; // Can't validate inputs for unknown tool\n }\n\n const schemaProperties = toolDef.inputSchema.properties ?? {};\n const requiredKeys = new Set(toolDef.inputSchema.required ?? []);\n const definedKeys = new Set(Object.keys(schemaProperties));\n const providedKeys = new Set(Object.keys(toolInput));\n\n // Check for extra keys (provided but not in schema)\n for (const key of providedKeys) {\n if (!definedKeys.has(key)) {\n diagnostics.push({\n severity: \"warning\",\n location: {\n stepId: step.id,\n field: `params.toolInput.${key}`,\n },\n message: `Step '${step.id}' provides input key '${key}' which is not defined in tool '${toolName}' schema`,\n code: \"EXTRA_TOOL_INPUT_KEY\",\n });\n }\n }\n\n // Check for missing required keys\n for (const key of requiredKeys) {\n if (!providedKeys.has(key)) {\n diagnostics.push({\n severity: \"error\",\n location: { stepId: step.id, field: \"params.toolInput\" },\n message: `Step '${step.id}' is missing required input key '${key}' for tool '${toolName}'`,\n code: \"MISSING_TOOL_INPUT_KEY\",\n });\n }\n }\n }\n\n // Validate tool references in agent-loop steps\n if (step.type === \"agent-loop\") {\n for (const [i, toolName] of step.params.tools.entries()) {\n if (!tools[toolName]) {\n diagnostics.push({\n severity: \"error\",\n location: {\n stepId: step.id,\n field: `params.tools[${i}]`,\n },\n message: `Step '${step.id}' references unknown tool '${toolName}'`,\n code: \"UNKNOWN_TOOL\",\n });\n }\n }\n }\n }\n\n return diagnostics;\n}\n",
20
- "import type { ExecutionState } from \"./state\";\n\n// ─── Interfaces ──────────────────────────────────────────────────\n\n/** Options for configuring a {@link BaseExecutionStateChannel}. */\nexport interface WorkflowExecutionStateChannelOptions {\n debounce?: {\n /** Minimum interval in milliseconds between emitted states. */\n ms: number;\n /** Always flush terminal states (`completed` / `failed`) immediately, bypassing the debounce window. Defaults to `true`. */\n flushOnComplete?: boolean;\n };\n}\n\n/** Pub/sub channel for streaming {@link ExecutionState} snapshots from an executor to one or more consumers. */\nexport interface WorkflowExecutionStateChannel {\n /** Push a new state snapshot into the channel. */\n publish(state: ExecutionState): void;\n /** Signal that no more states will be published. Subscribers will drain and terminate. */\n close(): void;\n /**\n * Subscribe to state updates.\n *\n * - Default (`replay: false`): yields the latest state immediately (if any), then follows live.\n * - `replay: true`: yields the full history from the beginning, then follows live.\n */\n subscribe(opts?: { replay?: boolean }): AsyncIterable<ExecutionState>;\n /** Returns the most recent state, or `null` if none has been published. */\n latest?(): Promise<ExecutionState | null>;\n}\n\n// ─── Base Class ──────────────────────────────────────────────────\n\nconst TERMINAL_STATUSES = new Set([\"completed\", \"failed\"]);\n\n/**\n * Abstract base that handles debounce logic so subclasses only implement\n * {@link emit}, {@link doClose}, and {@link subscribe}.\n */\nexport abstract class BaseExecutionStateChannel\n implements WorkflowExecutionStateChannel\n{\n private readonly debounceMs: number | undefined;\n private readonly flushOnComplete: boolean;\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private bufferedState: ExecutionState | null = null;\n\n constructor(options?: WorkflowExecutionStateChannelOptions) {\n this.debounceMs = options?.debounce?.ms;\n this.flushOnComplete = options?.debounce?.flushOnComplete ?? true;\n }\n\n /** Push a state snapshot, applying debounce if configured. */\n publish(state: ExecutionState): void {\n if (this.debounceMs === undefined) {\n this.emit(state);\n return;\n }\n\n // Terminal states flush immediately when configured.\n if (this.flushOnComplete && TERMINAL_STATUSES.has(state.status)) {\n this.clearDebounce();\n this.emit(state);\n return;\n }\n\n this.bufferedState = state;\n if (this.debounceTimer === null) {\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = null;\n if (this.bufferedState) {\n const s = this.bufferedState;\n this.bufferedState = null;\n this.emit(s);\n }\n }, this.debounceMs);\n }\n }\n\n /** Close the channel, flushing any buffered state first. */\n close(): void {\n this.clearDebounce();\n if (this.bufferedState) {\n const s = this.bufferedState;\n this.bufferedState = null;\n this.emit(s);\n }\n this.doClose();\n }\n\n private clearDebounce(): void {\n if (this.debounceTimer !== null) {\n clearTimeout(this.debounceTimer);\n this.debounceTimer = null;\n }\n }\n\n /** Deliver a state snapshot to subscribers. Subclasses implement storage + notification. */\n protected abstract emit(state: ExecutionState): void;\n /** Perform subclass-specific close logic (e.g. resolve pending waiters). */\n protected abstract doClose(): void;\n\n abstract subscribe(opts?: {\n replay?: boolean;\n }): AsyncIterable<ExecutionState>;\n\n /** Returns the most recent state. Override in subclasses that track history. */\n latest(): Promise<ExecutionState | null> {\n return Promise.resolve(null);\n }\n}\n\n// ─── In-Memory Implementation ────────────────────────────────────\n\n/**\n * A simple in-memory channel that buffers all published states in an array.\n * Suitable for single-process use (e.g. {@link executeWorkflowStream}).\n */\nexport class MemoryExecutionStateChannel extends BaseExecutionStateChannel {\n private readonly states: ExecutionState[] = [];\n private readonly waiters: Array<() => void> = [];\n private closed = false;\n\n protected emit(state: ExecutionState): void {\n this.states.push(state);\n // Wake all waiting subscribers.\n const pending = this.waiters.splice(0);\n for (const resolve of pending) {\n resolve();\n }\n }\n\n protected doClose(): void {\n this.closed = true;\n const pending = this.waiters.splice(0);\n for (const resolve of pending) {\n resolve();\n }\n }\n\n override latest(): Promise<ExecutionState | null> {\n return Promise.resolve(\n this.states.length > 0\n ? (this.states[this.states.length - 1] ?? null)\n : null,\n );\n }\n\n subscribe(opts?: { replay?: boolean }): AsyncIterable<ExecutionState> {\n const channel = this;\n\n async function* generator(): AsyncGenerator<ExecutionState> {\n let cursor: number;\n\n if (opts?.replay) {\n // Replay: yield everything from the start.\n cursor = 0;\n } else {\n // Default: yield only the latest state (if any), then follow live.\n cursor = Math.max(0, channel.states.length - 1);\n }\n\n while (true) {\n // Yield all buffered states from cursor.\n while (cursor < channel.states.length) {\n // biome-ignore lint/style/noNonNullAssertion: cursor is bounds-checked by the while condition\n yield channel.states[cursor]!;\n cursor++;\n }\n\n // If the channel is closed and we've drained the buffer, we're done.\n if (channel.closed) return;\n\n // Wait for the next emit or close.\n await new Promise<void>((resolve) => {\n channel.waiters.push(resolve);\n });\n }\n }\n\n return generator();\n }\n}\n",
20
+ "import type { ExecutionState } from \"./state\";\n\n// ─── Interfaces ──────────────────────────────────────────────────\n\n/** Options for configuring a {@link BaseExecutionStateChannel}. */\nexport interface WorkflowExecutionStateChannelOptions {\n debounce?: {\n /** Minimum interval in milliseconds between emitted states. */\n ms: number;\n /** Always flush terminal states (`completed` / `failed`) immediately, bypassing the debounce window. Defaults to `true`. */\n flushOnComplete?: boolean;\n };\n}\n\n/** Pub/sub channel for streaming {@link ExecutionState} snapshots from an executor to one or more consumers. */\nexport interface WorkflowExecutionStateChannel {\n /** Push a new state snapshot into the channel. */\n publish(state: ExecutionState): void | Promise<void>;\n /** Signal that no more states will be published. Subscribers will drain and terminate. */\n close(): void | Promise<void>;\n /**\n * Subscribe to state updates.\n *\n * - Default (`replay: false`): yields the latest state immediately (if any), then follows live.\n * - `replay: true`: yields the full history from the beginning, then follows live.\n */\n subscribe(opts?: { replay?: boolean }): AsyncIterable<ExecutionState>;\n /** Returns the most recent state, or `null` if none has been published. */\n latest?(): Promise<ExecutionState | null>;\n}\n\n// ─── Base Class ──────────────────────────────────────────────────\n\nconst TERMINAL_STATUSES = new Set([\"completed\", \"failed\"]);\n\n/**\n * Abstract base that handles debounce logic so subclasses only implement\n * {@link emit}, {@link doClose}, and {@link subscribe}.\n */\nexport abstract class BaseExecutionStateChannel\n implements WorkflowExecutionStateChannel\n{\n private readonly debounceMs: number | undefined;\n private readonly flushOnComplete: boolean;\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private bufferedState: ExecutionState | null = null;\n\n constructor(options?: WorkflowExecutionStateChannelOptions) {\n this.debounceMs = options?.debounce?.ms;\n this.flushOnComplete = options?.debounce?.flushOnComplete ?? true;\n }\n\n /** Push a state snapshot, applying debounce if configured. */\n async publish(state: ExecutionState): Promise<void> {\n if (this.debounceMs === undefined) {\n await this.emit(state);\n return;\n }\n\n // Terminal states flush immediately when configured.\n if (this.flushOnComplete && TERMINAL_STATUSES.has(state.status)) {\n this.clearDebounce();\n await this.emit(state);\n return;\n }\n\n this.bufferedState = state;\n if (this.debounceTimer === null) {\n this.debounceTimer = setTimeout(async () => {\n this.debounceTimer = null;\n if (this.bufferedState) {\n const s = this.bufferedState;\n this.bufferedState = null;\n await this.emit(s);\n }\n }, this.debounceMs);\n }\n }\n\n /** Close the channel, flushing any buffered state first. */\n async close(): Promise<void> {\n this.clearDebounce();\n if (this.bufferedState) {\n const s = this.bufferedState;\n this.bufferedState = null;\n await this.emit(s);\n }\n await this.doClose();\n }\n\n private clearDebounce(): void {\n if (this.debounceTimer !== null) {\n clearTimeout(this.debounceTimer);\n this.debounceTimer = null;\n }\n }\n\n /** Deliver a state snapshot to subscribers. Subclasses implement storage + notification. */\n protected abstract emit(state: ExecutionState): void | Promise<void>;\n /** Perform subclass-specific close logic (e.g. resolve pending waiters). */\n protected abstract doClose(): void | Promise<void>;\n\n abstract subscribe(opts?: {\n replay?: boolean;\n }): AsyncIterable<ExecutionState>;\n\n /** Returns the most recent state. Override in subclasses that track history. */\n latest(): Promise<ExecutionState | null> {\n return Promise.resolve(null);\n }\n}\n\n// ─── In-Memory Implementation ────────────────────────────────────\n\n/**\n * A simple in-memory channel that buffers all published states in an array.\n * Suitable for single-process use (e.g. {@link executeWorkflowStream}).\n */\nexport class MemoryExecutionStateChannel extends BaseExecutionStateChannel {\n private readonly states: ExecutionState[] = [];\n private readonly waiters: Array<() => void> = [];\n private closed = false;\n\n protected emit(state: ExecutionState): void {\n this.states.push(state);\n // Wake all waiting subscribers.\n const pending = this.waiters.splice(0);\n for (const resolve of pending) {\n resolve();\n }\n }\n\n protected doClose(): void {\n this.closed = true;\n const pending = this.waiters.splice(0);\n for (const resolve of pending) {\n resolve();\n }\n }\n\n override latest(): Promise<ExecutionState | null> {\n return Promise.resolve(\n this.states.length > 0\n ? (this.states[this.states.length - 1] ?? null)\n : null,\n );\n }\n\n subscribe(opts?: { replay?: boolean }): AsyncIterable<ExecutionState> {\n const channel = this;\n\n async function* generator(): AsyncGenerator<ExecutionState> {\n let cursor: number;\n\n if (opts?.replay) {\n // Replay: yield everything from the start.\n cursor = 0;\n } else {\n // Default: yield only the latest state (if any), then follow live.\n cursor = Math.max(0, channel.states.length - 1);\n }\n\n while (true) {\n // Yield all buffered states from cursor.\n while (cursor < channel.states.length) {\n // biome-ignore lint/style/noNonNullAssertion: cursor is bounds-checked by the while condition\n yield channel.states[cursor]!;\n cursor++;\n }\n\n // If the channel is closed and we've drained the buffer, we're done.\n if (channel.closed) return;\n\n // Wait for the next emit or close.\n await new Promise<void>((resolve) => {\n channel.waiters.push(resolve);\n });\n }\n }\n\n return generator();\n }\n}\n",
21
21
  "// ─── Recovery & Classification Types ────────────────────────────\n\n/** Strategy for recovering from a step execution error. */\nexport type RecoveryStrategy =\n | \"none\"\n | \"retry\"\n | \"llm-transform\"\n | \"llm-reprompt\";\n\n/**\n * High-level category of a step execution error.\n * - `configuration` — the workflow is misconfigured (missing tools, no agent)\n * - `validation` — input or output data doesn't match the expected schema\n * - `external-service` — a tool or LLM call failed\n * - `expression` — a JMESPath or template expression failed to evaluate\n * - `output-quality` — the LLM produced output that couldn't be parsed\n * - `extraction` — the LLM determined the requested data cannot be extracted\n * - `authorization` — a policy denied the action\n */\nexport type ErrorCategory =\n | \"configuration\"\n | \"validation\"\n | \"external-service\"\n | \"expression\"\n | \"output-quality\"\n | \"extraction\"\n | \"authorization\";\n\n/** Machine-readable error code identifying the specific failure. */\nexport type ErrorCode =\n // configuration — workflow is misconfigured\n | \"TOOL_NOT_FOUND\"\n | \"TOOL_MISSING_EXECUTE\"\n | \"AGENT_NOT_PROVIDED\"\n // validation — input/output data doesn't match expected schema/type\n | \"TOOL_INPUT_VALIDATION_FAILED\"\n | \"FOREACH_TARGET_NOT_ARRAY\"\n | \"WORKFLOW_OUTPUT_VALIDATION_FAILED\"\n // external-service — external service failure\n | \"TOOL_EXECUTION_FAILED\"\n | \"LLM_API_ERROR\"\n | \"LLM_RATE_LIMITED\"\n | \"LLM_NETWORK_ERROR\"\n | \"LLM_NO_CONTENT\"\n // expression — JMESPath or template evaluation failure\n | \"JMESPATH_EVALUATION_ERROR\"\n | \"TEMPLATE_INTERPOLATION_ERROR\"\n // output-quality — LLM produced unparseable/unusable output\n | \"LLM_OUTPUT_PARSE_ERROR\"\n // extraction — probe mode failures\n | \"EXTRACTION_GAVE_UP\"\n // wait — wait/sleep step errors\n | \"SLEEP_INVALID_DURATION\"\n | \"WAIT_CONDITION_TIMEOUT\"\n | \"WAIT_CONDITION_MAX_ATTEMPTS\"\n // execution limits — aggregate time bounds\n | \"EXECUTION_TOTAL_TIMEOUT\"\n | \"EXECUTION_ACTIVE_TIMEOUT\"\n // authorization — policy denied the action\n | \"POLICY_DENIED\";\n\n// ─── Base Error Class ───────────────────────────────────────────\n\n/**\n * Base error class for all step execution failures. Contains the step ID,\n * error code, error category, and optional cause. All executor error classes\n * extend this.\n */\nexport class StepExecutionError extends Error {\n override readonly name = \"StepExecutionError\";\n\n constructor(\n public readonly stepId: string,\n public readonly code: ErrorCode,\n public readonly category: ErrorCategory,\n message: string,\n public override readonly cause?: unknown,\n ) {\n super(message);\n }\n}\n\n// ─── Category Subclasses ────────────────────────────────────────\n\n/** Thrown when the workflow is misconfigured (missing tools, missing agent, missing execute function). Not retryable. */\nexport class ConfigurationError extends StepExecutionError {\n constructor(stepId: string, code: ErrorCode, message: string) {\n super(stepId, code, \"configuration\", message);\n }\n}\n\n/** Thrown when input or output data doesn't match the expected schema. Not retryable. */\nexport class ValidationError extends StepExecutionError {\n constructor(\n stepId: string,\n code: ErrorCode,\n message: string,\n public readonly input: unknown,\n cause?: unknown,\n ) {\n super(stepId, code, \"validation\", message, cause);\n }\n}\n\n/** Thrown when a tool execution or LLM API call fails. May be retryable (check {@link isRetryable}). */\nexport class ExternalServiceError extends StepExecutionError {\n constructor(\n stepId: string,\n code: ErrorCode,\n message: string,\n cause?: unknown,\n public readonly statusCode?: number,\n public readonly isRetryable: boolean = true,\n ) {\n super(stepId, code, \"external-service\", message, cause);\n }\n}\n\n/** Thrown when a JMESPath expression or template interpolation fails to evaluate. Not retryable. */\nexport class ExpressionError extends StepExecutionError {\n constructor(\n stepId: string,\n code: ErrorCode,\n message: string,\n public readonly expression: string,\n cause?: unknown,\n ) {\n super(stepId, code, \"expression\", message, cause);\n }\n}\n\n/** Thrown when an LLM produces output that can't be parsed as valid JSON. Retryable via automatic retry. */\nexport class OutputQualityError extends StepExecutionError {\n constructor(\n stepId: string,\n code: ErrorCode,\n message: string,\n public readonly rawOutput: unknown,\n cause?: unknown,\n ) {\n super(stepId, code, \"output-quality\", message, cause);\n }\n}\n\n/** Thrown when a policy denies execution of a step. Not retryable. */\nexport class AuthorizationError extends StepExecutionError {\n constructor(\n stepId: string,\n public readonly reason: string,\n public readonly sourcePolicyId: string,\n ) {\n super(\n stepId,\n \"POLICY_DENIED\",\n \"authorization\",\n `Step denied by policy '${sourcePolicyId}': ${reason}`,\n );\n }\n}\n\n/** Thrown when the LLM determines that the requested data cannot be found or extracted from the source data during probe mode. Not retryable. */\nexport class ExtractionError extends StepExecutionError {\n constructor(\n stepId: string,\n message: string,\n public readonly reason: string,\n ) {\n super(stepId, \"EXTRACTION_GAVE_UP\", \"extraction\", message);\n }\n}\n",
22
22
  "import { ExternalServiceError } from \"./errors\";\n\n// ─── Types ───────────────────────────────────────────────────────\n\nexport interface WaitForConditionOptions {\n maxAttempts: number;\n intervalMs: number;\n backoffMultiplier: number;\n timeoutMs?: number;\n}\n\n/**\n * Injectable execution context for durable execution environments.\n *\n * In a durable environment (AWS Step Functions, Temporal, Inngest, etc.),\n * each `step()` runs in its own execution environment. The workflow code\n * **outside** of `step()` closures re-executes on every resume, so it\n * must be idempotent (pure reads, expression evaluation, scope construction).\n * Code **inside** a `step()` closure runs exactly once — the environment\n * records its result and replays the cached value on subsequent resumes\n * instead of re-executing the function.\n */\nexport interface DurableContext {\n /**\n * Wrap a step that should execute exactly once. In durable environments,\n * `fn` runs on the first invocation and its result is persisted; on\n * subsequent resumes the cached result is returned without calling `fn`\n * again. All code outside `step()` must be idempotent because it\n * re-runs on every resume.\n * Default: executes the function directly (passthrough).\n */\n step: (name: string, fn: () => Promise<unknown>) => Promise<unknown>;\n\n /**\n * Sleep for the given duration. In durable environments,\n * this uses a durable timer that survives process restarts.\n * Default: setTimeout-based promise.\n */\n sleep: (name: string, durationMs: number) => Promise<void>;\n\n /**\n * Wait for a condition by polling. In durable environments,\n * this might use waitForCallback or durable polling.\n * Default: loop with setTimeout + backoff.\n */\n waitForCondition: (\n name: string,\n checkFn: () => Promise<unknown>,\n options: WaitForConditionOptions,\n ) => Promise<unknown>;\n\n /**\n * Wait for an external callback. Creates a callback ID, calls the\n * submitter function with it, then parks the workflow until the\n * external system submits a result via that callback ID.\n *\n * In durable environments (AWS Lambda Durable, Temporal, etc.),\n * the function terminates with zero compute cost while waiting.\n * When the callback arrives, the environment re-invokes the function\n * and replays to this point.\n *\n * Default: not available. When absent, the executor falls back to\n * polling via `conditionFn`. When present, both `waitForCallback`\n * and polling run concurrently — whichever resolves first wins.\n */\n waitForCallback?: (\n name: string,\n submitter: (callbackId: string) => Promise<void>,\n timeoutMs?: number,\n ) => Promise<unknown>;\n}\n\n// ─── Default Implementation ──────────────────────────────────────\n\nexport function createDefaultDurableContext(): DurableContext {\n return {\n step: (_name, fn) => fn(),\n\n sleep: (_name, ms) => new Promise((r) => setTimeout(r, ms)),\n\n waitForCondition: async (_name, checkFn, opts) => {\n let delay = opts.intervalMs;\n const deadline = opts.timeoutMs ? Date.now() + opts.timeoutMs : undefined;\n\n for (let attempt = 0; attempt < opts.maxAttempts; attempt++) {\n const result = await checkFn();\n if (result) return result;\n\n if (deadline && Date.now() + delay > deadline) {\n throw new ExternalServiceError(\n _name,\n \"WAIT_CONDITION_TIMEOUT\",\n `wait-for-condition '${_name}' timed out after ${opts.timeoutMs}ms`,\n undefined,\n undefined,\n false,\n );\n }\n\n await new Promise((r) => setTimeout(r, delay));\n delay *= opts.backoffMultiplier;\n }\n\n throw new ExternalServiceError(\n _name,\n \"WAIT_CONDITION_MAX_ATTEMPTS\",\n `wait-for-condition '${_name}' exceeded ${opts.maxAttempts} attempts`,\n undefined,\n undefined,\n false,\n );\n },\n };\n}\n",
23
23
  "import { type } from \"arktype\";\nimport type { StepExecutionError } from \"./errors\";\n\n// ─── Enums ───────────────────────────────────────────────────────\n\nexport const stepStatusSchema = type(\n \"'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'awaiting-approval'\",\n);\nexport type StepStatus = typeof stepStatusSchema.infer;\n\nexport const runStatusSchema = type(\n \"'pending' | 'running' | 'completed' | 'failed'\",\n);\nexport type RunStatus = typeof runStatusSchema.infer;\n\n// ─── Serializable Snapshots ──────────────────────────────────────\n\nexport const errorSnapshotSchema = type({\n code: \"string\",\n category: \"string\",\n message: \"string\",\n \"stepId?\": \"string\",\n \"statusCode?\": \"number\",\n \"isRetryable?\": \"boolean\",\n});\nexport type ErrorSnapshot = typeof errorSnapshotSchema.infer;\n\nexport const retryRecordSchema = type({\n attempt: \"number\",\n startedAt: \"string\",\n failedAt: \"string\",\n errorCode: \"string\",\n errorMessage: \"string\",\n});\nexport type RetryRecord = typeof retryRecordSchema.infer;\n\n// ─── Execution Path ──────────────────────────────────────────────\n\nexport const executionPathSegmentSchema = type({\n type: \"'for-each'\",\n stepId: \"string\",\n iterationIndex: \"number\",\n itemValue: \"unknown\",\n})\n .or({\n type: \"'switch-case'\",\n stepId: \"string\",\n matchedCaseIndex: \"number\",\n matchedValue: \"unknown\",\n })\n .or({\n type: \"'wait-for-condition'\",\n stepId: \"string\",\n pollAttempt: \"number\",\n });\nexport type ExecutionPathSegment = typeof executionPathSegmentSchema.infer;\n\n// ─── Trace Entries ──────────────────────────────────────────────\n\nexport const traceEntrySchema = type({\n type: \"'log'\",\n message: \"string\",\n \"data?\": \"unknown\",\n}).or({\n type: \"'agent-step'\",\n step: \"unknown\",\n});\nexport type TraceEntry = typeof traceEntrySchema.infer;\n\n// ─── Step Execution Record ───────────────────────────────────────\n\nexport const stepExecutionRecordSchema = type({\n stepId: \"string\",\n status: stepStatusSchema,\n \"startedAt?\": \"string\",\n \"completedAt?\": \"string\",\n \"durationMs?\": \"number\",\n \"output?\": \"unknown\",\n \"error?\": errorSnapshotSchema,\n \"resolvedInputs?\": \"unknown\",\n \"trace?\": [traceEntrySchema, \"[]\"],\n retries: [retryRecordSchema, \"[]\"],\n path: [executionPathSegmentSchema, \"[]\"],\n});\nexport type StepExecutionRecord = typeof stepExecutionRecordSchema.infer;\n\n// ─── Execution State ─────────────────────────────────────────────\n\nexport const executionStateSchema = type({\n runId: \"string\",\n status: runStatusSchema,\n startedAt: \"string\",\n \"completedAt?\": \"string\",\n \"durationMs?\": \"number\",\n stepRecords: [stepExecutionRecordSchema, \"[]\"],\n \"output?\": \"unknown\",\n \"error?\": errorSnapshotSchema,\n \"workflowHash?\": \"string\",\n});\nexport type ExecutionState = typeof executionStateSchema.infer;\n\n// ─── Deltas ──────────────────────────────────────────────────────\n\nexport const executionDeltaSchema = type({\n type: \"'run-started'\",\n runId: \"string\",\n startedAt: \"string\",\n})\n .or({\n type: \"'step-started'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n startedAt: \"string\",\n })\n .or({\n type: \"'step-completed'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n completedAt: \"string\",\n durationMs: \"number\",\n output: \"unknown\",\n \"resolvedInputs?\": \"unknown\",\n \"trace?\": [traceEntrySchema, \"[]\"],\n })\n .or({\n type: \"'step-failed'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n failedAt: \"string\",\n durationMs: \"number\",\n error: errorSnapshotSchema,\n \"resolvedInputs?\": \"unknown\",\n })\n .or({\n type: \"'step-retry'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n retry: retryRecordSchema,\n })\n .or({\n type: \"'run-completed'\",\n runId: \"string\",\n completedAt: \"string\",\n durationMs: \"number\",\n \"output?\": \"unknown\",\n })\n .or({\n type: \"'run-failed'\",\n runId: \"string\",\n failedAt: \"string\",\n durationMs: \"number\",\n error: errorSnapshotSchema,\n })\n .or({\n type: \"'step-awaiting-approval'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n sourcePolicyId: \"string\",\n requestedAt: \"string\",\n })\n .or({\n type: \"'step-approved'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n sourcePolicyId: \"string\",\n approvedAt: \"string\",\n })\n .or({\n type: \"'step-denied'\",\n stepId: \"string\",\n path: [executionPathSegmentSchema, \"[]\"],\n sourcePolicyId: \"string\",\n deniedAt: \"string\",\n \"reason?\": \"string\",\n });\nexport type ExecutionDelta = typeof executionDeltaSchema.infer;\n\n// ─── Helpers ─────────────────────────────────────────────────────\n\n/** Convert a StepExecutionError class instance to a serializable snapshot. */\nexport function snapshotError(err: StepExecutionError): ErrorSnapshot {\n const snapshot: ErrorSnapshot = {\n code: err.code,\n category: err.category,\n message: err.message,\n };\n if (err.stepId) snapshot.stepId = err.stepId;\n if (\"statusCode\" in err && typeof err.statusCode === \"number\") {\n snapshot.statusCode = err.statusCode;\n }\n if (\"isRetryable\" in err && typeof err.isRetryable === \"boolean\") {\n snapshot.isRetryable = err.isRetryable;\n }\n return snapshot;\n}\n\n// ─── Path Matching ───────────────────────────────────────────────\n\nfunction segmentsEqual(\n sa: ExecutionPathSegment,\n sb: ExecutionPathSegment,\n): boolean {\n if (sa.type !== sb.type || sa.stepId !== sb.stepId) return false;\n if (sa.type === \"for-each\" && sb.type === \"for-each\") {\n return sa.iterationIndex === sb.iterationIndex;\n }\n if (sa.type === \"switch-case\" && sb.type === \"switch-case\") {\n return sa.matchedCaseIndex === sb.matchedCaseIndex;\n }\n if (sa.type === \"wait-for-condition\" && sb.type === \"wait-for-condition\") {\n return sa.pollAttempt === sb.pollAttempt;\n }\n return true;\n}\n\nfunction pathsEqual(\n a: ExecutionPathSegment[],\n b: ExecutionPathSegment[],\n): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const sa = a[i] as ExecutionPathSegment;\n const sb = b[i] as ExecutionPathSegment;\n if (!segmentsEqual(sa, sb)) return false;\n }\n return true;\n}\n\nfunction findRecordIndex(\n records: StepExecutionRecord[],\n stepId: string,\n path: ExecutionPathSegment[],\n): number {\n for (let i = records.length - 1; i >= 0; i--) {\n const record = records[i] as StepExecutionRecord;\n if (record.stepId === stepId && pathsEqual(record.path, path)) {\n return i;\n }\n }\n return -1;\n}\n\n// ─── Pure Reducer ────────────────────────────────────────────────\n\n/** Apply a delta to an execution state, returning a new state. Pure — no mutations. */\nexport function applyDelta(\n state: ExecutionState,\n delta: ExecutionDelta,\n): ExecutionState {\n switch (delta.type) {\n case \"run-started\":\n return { ...state, status: \"running\", startedAt: delta.startedAt };\n\n case \"step-started\": {\n const record: StepExecutionRecord = {\n stepId: delta.stepId,\n status: \"running\",\n startedAt: delta.startedAt,\n retries: [],\n path: delta.path,\n };\n return {\n ...state,\n stepRecords: [...state.stepRecords, record],\n };\n }\n\n case \"step-completed\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n const updated: StepExecutionRecord = {\n ...existing,\n status: \"completed\",\n completedAt: delta.completedAt,\n durationMs: delta.durationMs,\n output: delta.output,\n };\n if (delta.resolvedInputs !== undefined) {\n updated.resolvedInputs = delta.resolvedInputs;\n }\n if (delta.trace !== undefined) {\n updated.trace = delta.trace;\n }\n records[idx] = updated;\n }\n return { ...state, stepRecords: records };\n }\n\n case \"step-failed\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n const updated: StepExecutionRecord = {\n ...existing,\n status: \"failed\",\n completedAt: delta.failedAt,\n durationMs: delta.durationMs,\n error: delta.error,\n };\n if (delta.resolvedInputs !== undefined) {\n updated.resolvedInputs = delta.resolvedInputs;\n }\n records[idx] = updated;\n }\n return { ...state, stepRecords: records };\n }\n\n case \"step-retry\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n records[idx] = {\n ...existing,\n retries: [...existing.retries, delta.retry],\n };\n }\n return { ...state, stepRecords: records };\n }\n\n case \"run-completed\":\n return {\n ...state,\n status: \"completed\",\n completedAt: delta.completedAt,\n durationMs: delta.durationMs,\n output: delta.output,\n };\n\n case \"run-failed\":\n return {\n ...state,\n status: \"failed\",\n completedAt: delta.failedAt,\n durationMs: delta.durationMs,\n error: delta.error,\n };\n\n case \"step-awaiting-approval\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n records[idx] = { ...existing, status: \"awaiting-approval\" };\n }\n return { ...state, stepRecords: records };\n }\n\n case \"step-approved\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n records[idx] = { ...existing, status: \"running\" };\n }\n return { ...state, stepRecords: records };\n }\n\n case \"step-denied\": {\n const records = [...state.stepRecords];\n const idx = findRecordIndex(records, delta.stepId, delta.path);\n if (idx >= 0) {\n const existing = records[idx] as StepExecutionRecord;\n records[idx] = {\n ...existing,\n status: \"failed\",\n error: {\n code: \"POLICY_DENIED\",\n category: \"authorization\",\n message: delta.reason ?? \"Approval denied\",\n },\n };\n }\n return { ...state, stepRecords: records };\n }\n }\n}\n",
24
- "import type { Agent, LanguageModel, ToolSet } from \"ai\";\nimport type { WorkflowStep } from \"../types\";\nimport type { WorkflowExecutionStateChannel } from \"./channel\";\nimport type { DurableContext } from \"./context\";\nimport type { ErrorCode } from \"./errors\";\nimport { ExternalServiceError, type StepExecutionError } from \"./errors\";\nimport type { Policy } from \"./policy\";\nimport type {\n ExecutionDelta,\n ExecutionPathSegment,\n ExecutionState,\n RetryRecord,\n TraceEntry,\n} from \"./state\";\nimport { applyDelta, snapshotError } from \"./state\";\n\n// ─── Public Types ────────────────────────────────────────────────\n\n/** The result of executing a workflow. */\nexport interface ExecutionResult {\n /** Whether the workflow completed without errors. */\n success: boolean;\n /** Map of step ID to that step's output value. */\n stepOutputs: Record<string, unknown>;\n /** The workflow's final output (from the `end` step's output expression), if any. */\n output?: unknown;\n /** The error that caused execution to fail, if `success` is `false`. */\n error?: StepExecutionError;\n /** The final execution state snapshot after the run completes. */\n executionState: ExecutionState;\n}\n\nexport interface ExecutorLimits {\n /** Max wall-clock time from start to finish, including sleeps/waits. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxTotalMs?: number;\n /** Max active execution time (inside step() + checkFn, excluding sleeps/waits). @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxActiveMs?: number;\n /** Soft cap on sleep durationMs and wait intervalMs. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxSleepMs?: number;\n /** Soft cap on wait-for-condition maxAttempts. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxAttempts?: number;\n /** Soft cap on backoffMultiplier upper bound. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxBackoffMultiplier?: number;\n /** Soft cap on backoffMultiplier lower bound. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n minBackoffMultiplier?: number;\n /** Soft cap on wait-for-condition timeoutMs. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxTimeoutMs?: number;\n /** Byte threshold above which extract-data uses probe mode instead of inline data. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeThresholdBytes?: number;\n /** Maximum bytes returned per probe-data call. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeResultMaxBytes?: number;\n /** Maximum probe steps for extract-data probe mode. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeMaxSteps?: number;\n}\n\n/** Options for {@link executeWorkflow}. */\nexport interface ExecuteWorkflowOptions<\n ExecutionContext extends Record<string, unknown> = Record<string, unknown>,\n ApprovalRequestDecisionDetails extends Record<string, unknown> = Record<\n string,\n unknown\n >,\n> {\n /** Tool definitions. Every tool referenced by a `tool-call` step must be present with an `execute` function. */\n tools: ToolSet;\n /** An AI SDK `LanguageModel` for `llm-prompt`, `extract-data`, and `agent-loop` steps. Required if the workflow contains LLM steps. */\n model?: LanguageModel;\n /** An AI SDK `Agent` to use for `agent-loop` steps. When provided, agent-loop steps use the Agent's own tools\n * and describe the expected output shape in the prompt. The bare `model` is then used to coerce the Agent's\n * text output into the structured format. Only applies to `agent-loop` steps. */\n // biome-ignore lint/suspicious/noExplicitAny: Agent generic params are irrelevant here\n agent?: Agent<any, any, any>;\n /** Input values passed to the workflow's `start` step. Validated against the start step's `inputSchema`. */\n inputs?: Record<string, unknown>;\n /** Maximum number of retries for recoverable errors (rate limits, network errors, parse failures). Defaults to 3. */\n maxRetries?: number;\n /** Base delay in milliseconds for exponential backoff between retries. Defaults to 1000. */\n retryDelayMs?: number;\n /** Called when a step begins execution. */\n onStepStart?: (stepId: string, step: WorkflowStep) => void;\n /** Called when a step completes successfully. */\n onStepComplete?: (stepId: string, output: unknown) => void;\n /** Called on every state transition with the full execution state and the idempotent delta that produced it. */\n onStateChange?: (state: ExecutionState, delta: ExecutionDelta) => void;\n /** Optional channel for publishing execution state snapshots. Publishes on every state transition, in addition to {@link onStateChange}. */\n channel?: WorkflowExecutionStateChannel;\n /** Injectable durable execution context. Default: simple in-process implementation. */\n context?: DurableContext;\n /** Execution limits for sleep/wait/timeout bounds. */\n limits?: ExecutorLimits;\n /** Previous execution state to resume from. When provided, completed steps are skipped and execution continues from the first incomplete step. */\n initialState?: ExecutionState;\n /** Authorization policies evaluated in order before each tool-call step. When absent, all steps execute freely. */\n policies?: Policy<ExecutionContext, ApprovalRequestDecisionDetails>[];\n /** App-defined execution context passed to policy deciders (e.g. user, organization, session). */\n executionContext?: ExecutionContext;\n /** Timeout in milliseconds for approval requests before treating as rejection. @see {@link DEFAULT_APPROVAL_TIMEOUT_MS} */\n approvalTimeoutMs?: number;\n /** Initial polling interval in milliseconds for approval condition checks. @see {@link DEFAULT_APPROVAL_INTERVAL_MS} */\n approvalIntervalMs?: number;\n /** Backoff multiplier applied to the polling interval after each attempt. @see {@link DEFAULT_APPROVAL_BACKOFF_MULTIPLIER} */\n approvalBackoffMultiplier?: number;\n /** Maximum polling interval in milliseconds. The interval will never grow beyond this. @see {@link DEFAULT_APPROVAL_MAX_INTERVAL_MS} */\n approvalMaxIntervalMs?: number;\n}\n\n// ─── Internal Types ──────────────────────────────────────────────\n\nexport type Expression =\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string };\n\n/**\n * Internal resolved options. Currently identical to the public options\n * but kept as a separate type for future internal-only fields.\n */\nexport type ResolvedExecuteWorkflowOptions = ExecuteWorkflowOptions;\n\n/**\n * Callback type for `executeChain`, injected into structural steps\n * (switch-case, for-each, wait-for-condition) to avoid circular imports.\n */\nexport type ExecuteChainFn = (\n startStepId: string,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer | undefined,\n stateManager: ExecutionStateManager | undefined,\n execPath: ExecutionPathSegment[],\n resumeSkipSteps?: Set<string>,\n) => Promise<unknown>;\n\n// ─── Execution Timer ─────────────────────────────────────────────\n\nexport const DEFAULT_EXECUTOR_LIMITS: Required<ExecutorLimits> = {\n maxTotalMs: 600_000, // 10 minutes\n maxActiveMs: 300_000, // 5 minutes\n maxSleepMs: 300_000, // 5 minutes\n maxAttempts: Number.POSITIVE_INFINITY,\n maxBackoffMultiplier: 2,\n minBackoffMultiplier: 1,\n maxTimeoutMs: 600_000, // 10 minutes\n probeThresholdBytes: 50_000, // 50KB\n probeResultMaxBytes: 10_000, // 10KB\n probeMaxSteps: 10,\n};\n\nexport class ExecutionTimer {\n private readonly startTime = Date.now();\n private activeMs = 0;\n private activeStart: number | null = null;\n private readonly limits: Required<ExecutorLimits>;\n\n constructor(limits?: ExecutorLimits) {\n this.limits = { ...DEFAULT_EXECUTOR_LIMITS, ...limits };\n }\n\n get resolvedLimits(): Required<ExecutorLimits> {\n return this.limits;\n }\n\n /** Call before entering active work (step execution, condition check). */\n beginActive(): void {\n this.activeStart = Date.now();\n }\n\n /** Call after active work completes. Checks active timeout. */\n endActive(stepId: string): void {\n if (this.activeStart !== null) {\n this.activeMs += Date.now() - this.activeStart;\n this.activeStart = null;\n }\n if (this.activeMs > this.limits.maxActiveMs) {\n throw new ExternalServiceError(\n stepId,\n \"EXECUTION_ACTIVE_TIMEOUT\" as ErrorCode,\n `Active execution time ${this.activeMs}ms exceeded limit of ${this.limits.maxActiveMs}ms`,\n undefined,\n undefined,\n false,\n );\n }\n }\n\n /** Check total wall-clock timeout before starting a step. */\n checkTotal(stepId: string): void {\n const elapsed = Date.now() - this.startTime;\n if (elapsed > this.limits.maxTotalMs) {\n throw new ExternalServiceError(\n stepId,\n \"EXECUTION_TOTAL_TIMEOUT\" as ErrorCode,\n `Total execution time ${elapsed}ms exceeded limit of ${this.limits.maxTotalMs}ms`,\n undefined,\n undefined,\n false,\n );\n }\n }\n}\n\n// ─── Execution State Manager ─────────────────────────────────────\n\nexport class ExecutionStateManager {\n private state: ExecutionState;\n private readonly onChange?: (\n state: ExecutionState,\n delta: ExecutionDelta,\n ) => void;\n\n constructor(\n onChange?: (state: ExecutionState, delta: ExecutionDelta) => void,\n initialState?: ExecutionState,\n workflowHash?: string,\n ) {\n this.state = initialState ?? {\n runId: crypto.randomUUID(),\n status: \"pending\",\n startedAt: new Date().toISOString(),\n stepRecords: [],\n workflowHash,\n };\n this.onChange = onChange;\n }\n\n get currentState(): ExecutionState {\n return this.state;\n }\n\n private emit(delta: ExecutionDelta): void {\n this.state = applyDelta(this.state, delta);\n this.onChange?.(this.state, delta);\n }\n\n runStarted(): void {\n this.emit({\n type: \"run-started\",\n runId: this.state.runId,\n startedAt: this.state.startedAt,\n });\n }\n\n stepStarted(stepId: string, path: ExecutionPathSegment[]): void {\n this.emit({\n type: \"step-started\",\n stepId,\n path,\n startedAt: new Date().toISOString(),\n });\n }\n\n stepCompleted(\n stepId: string,\n path: ExecutionPathSegment[],\n output: unknown,\n durationMs: number,\n resolvedInputs?: unknown,\n trace?: TraceEntry[],\n ): void {\n this.emit({\n type: \"step-completed\",\n stepId,\n path,\n completedAt: new Date().toISOString(),\n durationMs,\n output,\n resolvedInputs,\n trace,\n });\n }\n\n stepFailed(\n stepId: string,\n path: ExecutionPathSegment[],\n error: StepExecutionError,\n durationMs: number,\n resolvedInputs?: unknown,\n ): void {\n this.emit({\n type: \"step-failed\",\n stepId,\n path,\n failedAt: new Date().toISOString(),\n durationMs,\n error: snapshotError(error),\n resolvedInputs,\n });\n }\n\n retryAttempted(\n stepId: string,\n path: ExecutionPathSegment[],\n retry: RetryRecord,\n ): void {\n this.emit({\n type: \"step-retry\",\n stepId,\n path,\n retry,\n });\n }\n\n runCompleted(output?: unknown): void {\n const startMs = new Date(this.state.startedAt).getTime();\n this.emit({\n type: \"run-completed\",\n runId: this.state.runId,\n completedAt: new Date().toISOString(),\n durationMs: Date.now() - startMs,\n output,\n });\n }\n\n runFailed(error: StepExecutionError): void {\n const startMs = new Date(this.state.startedAt).getTime();\n this.emit({\n type: \"run-failed\",\n runId: this.state.runId,\n failedAt: new Date().toISOString(),\n durationMs: Date.now() - startMs,\n error: snapshotError(error),\n });\n }\n\n stepAwaitingApproval(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n ): void {\n this.emit({\n type: \"step-awaiting-approval\",\n stepId,\n path,\n sourcePolicyId,\n requestedAt: new Date().toISOString(),\n });\n }\n\n stepApproved(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n ): void {\n this.emit({\n type: \"step-approved\",\n stepId,\n path,\n sourcePolicyId,\n approvedAt: new Date().toISOString(),\n });\n }\n\n stepDenied(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n reason?: string,\n ): void {\n this.emit({\n type: \"step-denied\",\n stepId,\n path,\n sourcePolicyId,\n deniedAt: new Date().toISOString(),\n reason,\n });\n }\n}\n",
24
+ "import type { Agent, LanguageModel, ToolSet } from \"ai\";\nimport type { WorkflowStep } from \"../types\";\nimport type { WorkflowExecutionStateChannel } from \"./channel\";\nimport type { DurableContext } from \"./context\";\nimport type { ErrorCode } from \"./errors\";\nimport { ExternalServiceError, type StepExecutionError } from \"./errors\";\nimport type { Policy } from \"./policy\";\nimport type {\n ExecutionDelta,\n ExecutionPathSegment,\n ExecutionState,\n RetryRecord,\n TraceEntry,\n} from \"./state\";\nimport { applyDelta, snapshotError } from \"./state\";\n\n// ─── Public Types ────────────────────────────────────────────────\n\n/** The result of executing a workflow. */\nexport interface ExecutionResult {\n /** Whether the workflow completed without errors. */\n success: boolean;\n /** Map of step ID to that step's output value. */\n stepOutputs: Record<string, unknown>;\n /** The workflow's final output (from the `end` step's output expression), if any. */\n output?: unknown;\n /** The error that caused execution to fail, if `success` is `false`. */\n error?: StepExecutionError;\n /** The final execution state snapshot after the run completes. */\n executionState: ExecutionState;\n}\n\nexport interface ExecutorLimits {\n /** Max wall-clock time from start to finish, including sleeps/waits. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxTotalMs?: number;\n /** Max active execution time (inside step() + checkFn, excluding sleeps/waits). @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxActiveMs?: number;\n /** Soft cap on sleep durationMs and wait intervalMs. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxSleepMs?: number;\n /** Soft cap on wait-for-condition maxAttempts. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxAttempts?: number;\n /** Soft cap on backoffMultiplier upper bound. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxBackoffMultiplier?: number;\n /** Soft cap on backoffMultiplier lower bound. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n minBackoffMultiplier?: number;\n /** Soft cap on wait-for-condition timeoutMs. Clamped silently. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n maxTimeoutMs?: number;\n /** Byte threshold above which extract-data uses probe mode instead of inline data. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeThresholdBytes?: number;\n /** Maximum bytes returned per probe-data call. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeResultMaxBytes?: number;\n /** Maximum probe steps for extract-data probe mode. @see {@link DEFAULT_EXECUTOR_LIMITS} */\n probeMaxSteps?: number;\n}\n\n/** Options for {@link executeWorkflow}. */\nexport interface ExecuteWorkflowOptions<\n ExecutionContext extends Record<string, unknown> = Record<string, unknown>,\n ApprovalRequestDecisionDetails extends Record<string, unknown> = Record<\n string,\n unknown\n >,\n> {\n /** Tool definitions. Every tool referenced by a `tool-call` step must be present with an `execute` function. */\n tools: ToolSet;\n /** An AI SDK `LanguageModel` for `llm-prompt`, `extract-data`, and `agent-loop` steps. Required if the workflow contains LLM steps. */\n model?: LanguageModel;\n /** An AI SDK `Agent` to use for `agent-loop` steps. When provided, agent-loop steps use the Agent's own tools\n * and describe the expected output shape in the prompt. The bare `model` is then used to coerce the Agent's\n * text output into the structured format. Only applies to `agent-loop` steps. */\n // biome-ignore lint/suspicious/noExplicitAny: Agent generic params are irrelevant here\n agent?: Agent<any, any, any>;\n /** Input values passed to the workflow's `start` step. Validated against the start step's `inputSchema`. */\n inputs?: Record<string, unknown>;\n /** Maximum number of retries for recoverable errors (rate limits, network errors, parse failures). Defaults to 3. */\n maxRetries?: number;\n /** Base delay in milliseconds for exponential backoff between retries. Defaults to 1000. */\n retryDelayMs?: number;\n /** Called when a step begins execution. */\n onStepStart?: (stepId: string, step: WorkflowStep) => void;\n /** Called when a step completes successfully. */\n onStepComplete?: (stepId: string, output: unknown) => void;\n /** Called on every state transition with the full execution state and the idempotent delta that produced it. */\n onStateChange?: (\n state: ExecutionState,\n delta: ExecutionDelta,\n ) => void | Promise<void>;\n /** Optional channel for publishing execution state snapshots. Publishes on every state transition, in addition to {@link onStateChange}. */\n channel?: WorkflowExecutionStateChannel;\n /** Injectable durable execution context. Default: simple in-process implementation. */\n context?: DurableContext;\n /** Execution limits for sleep/wait/timeout bounds. */\n limits?: ExecutorLimits;\n /** Previous execution state to resume from. When provided, completed steps are skipped and execution continues from the first incomplete step. */\n initialState?: ExecutionState;\n /** Authorization policies evaluated in order before each tool-call step. When absent, all steps execute freely. */\n policies?: Policy<ExecutionContext, ApprovalRequestDecisionDetails>[];\n /** App-defined execution context passed to policy deciders (e.g. user, organization, session). */\n executionContext?: ExecutionContext;\n /** Timeout in milliseconds for approval requests before treating as rejection. @see {@link DEFAULT_APPROVAL_TIMEOUT_MS} */\n approvalTimeoutMs?: number;\n /** Initial polling interval in milliseconds for approval condition checks. @see {@link DEFAULT_APPROVAL_INTERVAL_MS} */\n approvalIntervalMs?: number;\n /** Backoff multiplier applied to the polling interval after each attempt. @see {@link DEFAULT_APPROVAL_BACKOFF_MULTIPLIER} */\n approvalBackoffMultiplier?: number;\n /** Maximum polling interval in milliseconds. The interval will never grow beyond this. @see {@link DEFAULT_APPROVAL_MAX_INTERVAL_MS} */\n approvalMaxIntervalMs?: number;\n}\n\n// ─── Internal Types ──────────────────────────────────────────────\n\nexport type Expression =\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string };\n\n/**\n * Internal resolved options. Currently identical to the public options\n * but kept as a separate type for future internal-only fields.\n */\nexport type ResolvedExecuteWorkflowOptions = ExecuteWorkflowOptions;\n\n/**\n * Callback type for `executeChain`, injected into structural steps\n * (switch-case, for-each, wait-for-condition) to avoid circular imports.\n */\nexport type ExecuteChainFn = (\n startStepId: string,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer | undefined,\n stateManager: ExecutionStateManager | undefined,\n execPath: ExecutionPathSegment[],\n resumeSkipSteps?: Set<string>,\n) => Promise<unknown>;\n\n// ─── Execution Timer ─────────────────────────────────────────────\n\nexport const DEFAULT_EXECUTOR_LIMITS: Required<ExecutorLimits> = {\n maxTotalMs: 600_000, // 10 minutes\n maxActiveMs: 300_000, // 5 minutes\n maxSleepMs: 300_000, // 5 minutes\n maxAttempts: Number.POSITIVE_INFINITY,\n maxBackoffMultiplier: 2,\n minBackoffMultiplier: 1,\n maxTimeoutMs: 600_000, // 10 minutes\n probeThresholdBytes: 50_000, // 50KB\n probeResultMaxBytes: 10_000, // 10KB\n probeMaxSteps: 10,\n};\n\nexport class ExecutionTimer {\n private readonly startTime = Date.now();\n private activeMs = 0;\n private activeStart: number | null = null;\n private readonly limits: Required<ExecutorLimits>;\n\n constructor(limits?: ExecutorLimits) {\n this.limits = { ...DEFAULT_EXECUTOR_LIMITS, ...limits };\n }\n\n get resolvedLimits(): Required<ExecutorLimits> {\n return this.limits;\n }\n\n /** Call before entering active work (step execution, condition check). */\n beginActive(): void {\n this.activeStart = Date.now();\n }\n\n /** Call after active work completes. Checks active timeout. */\n endActive(stepId: string): void {\n if (this.activeStart !== null) {\n this.activeMs += Date.now() - this.activeStart;\n this.activeStart = null;\n }\n if (this.activeMs > this.limits.maxActiveMs) {\n throw new ExternalServiceError(\n stepId,\n \"EXECUTION_ACTIVE_TIMEOUT\" as ErrorCode,\n `Active execution time ${this.activeMs}ms exceeded limit of ${this.limits.maxActiveMs}ms`,\n undefined,\n undefined,\n false,\n );\n }\n }\n\n /** Check total wall-clock timeout before starting a step. */\n checkTotal(stepId: string): void {\n const elapsed = Date.now() - this.startTime;\n if (elapsed > this.limits.maxTotalMs) {\n throw new ExternalServiceError(\n stepId,\n \"EXECUTION_TOTAL_TIMEOUT\" as ErrorCode,\n `Total execution time ${elapsed}ms exceeded limit of ${this.limits.maxTotalMs}ms`,\n undefined,\n undefined,\n false,\n );\n }\n }\n}\n\n// ─── Execution State Manager ─────────────────────────────────────\n\nexport class ExecutionStateManager {\n private state: ExecutionState;\n private readonly onChange?: (\n state: ExecutionState,\n delta: ExecutionDelta,\n ) => void | Promise<void>;\n\n constructor(\n onChange?: (\n state: ExecutionState,\n delta: ExecutionDelta,\n ) => void | Promise<void>,\n initialState?: ExecutionState,\n workflowHash?: string,\n ) {\n this.state = initialState ?? {\n runId: crypto.randomUUID(),\n status: \"pending\",\n startedAt: new Date().toISOString(),\n stepRecords: [],\n workflowHash,\n };\n this.onChange = onChange;\n }\n\n get currentState(): ExecutionState {\n return this.state;\n }\n\n private async emit(delta: ExecutionDelta): Promise<void> {\n this.state = applyDelta(this.state, delta);\n await this.onChange?.(this.state, delta);\n }\n\n async runStarted(): Promise<void> {\n await this.emit({\n type: \"run-started\",\n runId: this.state.runId,\n startedAt: this.state.startedAt,\n });\n }\n\n async stepStarted(\n stepId: string,\n path: ExecutionPathSegment[],\n ): Promise<void> {\n await this.emit({\n type: \"step-started\",\n stepId,\n path,\n startedAt: new Date().toISOString(),\n });\n }\n\n async stepCompleted(\n stepId: string,\n path: ExecutionPathSegment[],\n output: unknown,\n durationMs: number,\n resolvedInputs?: unknown,\n trace?: TraceEntry[],\n ): Promise<void> {\n await this.emit({\n type: \"step-completed\",\n stepId,\n path,\n completedAt: new Date().toISOString(),\n durationMs,\n output,\n resolvedInputs,\n trace,\n });\n }\n\n async stepFailed(\n stepId: string,\n path: ExecutionPathSegment[],\n error: StepExecutionError,\n durationMs: number,\n resolvedInputs?: unknown,\n ): Promise<void> {\n await this.emit({\n type: \"step-failed\",\n stepId,\n path,\n failedAt: new Date().toISOString(),\n durationMs,\n error: snapshotError(error),\n resolvedInputs,\n });\n }\n\n async retryAttempted(\n stepId: string,\n path: ExecutionPathSegment[],\n retry: RetryRecord,\n ): Promise<void> {\n await this.emit({\n type: \"step-retry\",\n stepId,\n path,\n retry,\n });\n }\n\n async runCompleted(output?: unknown): Promise<void> {\n const startMs = new Date(this.state.startedAt).getTime();\n await this.emit({\n type: \"run-completed\",\n runId: this.state.runId,\n completedAt: new Date().toISOString(),\n durationMs: Date.now() - startMs,\n output,\n });\n }\n\n async runFailed(error: StepExecutionError): Promise<void> {\n const startMs = new Date(this.state.startedAt).getTime();\n await this.emit({\n type: \"run-failed\",\n runId: this.state.runId,\n failedAt: new Date().toISOString(),\n durationMs: Date.now() - startMs,\n error: snapshotError(error),\n });\n }\n\n async stepAwaitingApproval(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n ): Promise<void> {\n await this.emit({\n type: \"step-awaiting-approval\",\n stepId,\n path,\n sourcePolicyId,\n requestedAt: new Date().toISOString(),\n });\n }\n\n async stepApproved(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n ): Promise<void> {\n await this.emit({\n type: \"step-approved\",\n stepId,\n path,\n sourcePolicyId,\n approvedAt: new Date().toISOString(),\n });\n }\n\n async stepDenied(\n stepId: string,\n path: ExecutionPathSegment[],\n sourcePolicyId: string,\n reason?: string,\n ): Promise<void> {\n await this.emit({\n type: \"step-denied\",\n stepId,\n path,\n sourcePolicyId,\n deniedAt: new Date().toISOString(),\n reason,\n });\n }\n}\n",
25
25
  "import type { WorkflowDefinition } from \"../types\";\n\n/**\n * Produces a deterministic hash string for a workflow definition.\n * Uses FNV-1a (32-bit) on the JSON-serialized workflow. This is intended\n * for change-detection / cache-invalidation, not cryptographic security.\n */\nexport function hashWorkflow(workflow: WorkflowDefinition): string {\n const str = JSON.stringify(workflow);\n let hash = 0x811c9dc5; // FNV offset basis\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193); // FNV prime\n }\n return (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n",
26
26
  "import type { Agent, LanguageModel, ToolSet } from \"ai\";\nimport {\n generateText,\n jsonSchema,\n Output,\n stepCountIs,\n ToolLoopAgent,\n} from \"ai\";\nimport type { WorkflowStep } from \"../../types\";\nimport {\n ConfigurationError,\n ExtractionError,\n StepExecutionError,\n ValidationError,\n} from \"../errors\";\nimport type {\n ExecutorLimits,\n Expression,\n ResolvedExecuteWorkflowOptions,\n} from \"../executor-types\";\nimport {\n classifyLlmError,\n createGiveUpTool,\n createProbeDataTool,\n evaluateExpression,\n interpolateTemplate,\n} from \"../helpers\";\nimport { sanitizeOutputSchema } from \"../sanitize-output-schema\";\nimport type { TraceEntry } from \"../state\";\n\ntype StepOutput = { output: unknown; trace?: TraceEntry[] };\n\nexport async function executeAgentLoop(\n step: WorkflowStep & { type: \"agent-loop\" },\n scope: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n limits: Required<ExecutorLimits>,\n): Promise<StepOutput> {\n if (!options.model) {\n throw new ConfigurationError(\n step.id,\n \"AGENT_NOT_PROVIDED\",\n \"agent-loop steps require a LanguageModel to be provided\",\n );\n }\n\n const interpolatedInstructions = interpolateTemplate(\n step.params.instructions,\n scope,\n step.id,\n );\n\n const outputSchema = jsonSchema(\n sanitizeOutputSchema(\n step.params.outputFormat as Parameters<typeof jsonSchema>[0],\n ),\n );\n\n if (options.agent) {\n return executeWithAgent(\n step,\n interpolatedInstructions,\n options.agent,\n options.model,\n outputSchema,\n step.params.outputFormat,\n );\n }\n\n return executeWithModel(\n step,\n interpolatedInstructions,\n scope,\n options,\n options.model,\n limits,\n outputSchema,\n );\n}\n\n/** Agent path: use the provided Agent with its own tools, then coerce output with the bare model. */\nasync function executeWithAgent(\n step: WorkflowStep & { type: \"agent-loop\" },\n interpolatedInstructions: string,\n agent: Agent,\n model: LanguageModel,\n outputSchema: ReturnType<typeof jsonSchema>,\n rawOutputFormat: unknown,\n): Promise<StepOutput> {\n const schemaStr = JSON.stringify(rawOutputFormat, null, 2);\n const prompt = `${interpolatedInstructions}\\n\\nWhen you have completed the task, respond with your final answer. Your response should contain the following structured information matching this JSON Schema:\\n\\`\\`\\`json\\n${schemaStr}\\n\\`\\`\\`\\n\\nInclude all the required fields in your response.`;\n\n try {\n const result = await agent.generate({ prompt });\n\n // Coerce the Agent's text output into structured output using the bare model.\n // A give-up tool is provided so the model can signal if the Agent's output\n // cannot be meaningfully parsed into the expected schema.\n const giveUp = createGiveUpTool();\n const coerced = await generateText({\n model,\n output: Output.object({ schema: outputSchema }),\n tools: { \"give-up\": giveUp.tool },\n prompt: `Extract the structured data from the following text. Return only the data matching the schema. If the text does not contain enough information to populate the required fields, call the give-up tool with an explanation.\\n\\nText:\\n${result.text}`,\n });\n\n if (giveUp.getReason() !== undefined) {\n throw new ExtractionError(\n step.id,\n `Could not coerce agent output into expected schema: ${giveUp.getReason()}`,\n giveUp.getReason() as string,\n );\n }\n\n const trace: TraceEntry[] = [\n ...result.steps.map((s): TraceEntry => ({ type: \"agent-step\", step: s })),\n ...coerced.steps.map(\n (s): TraceEntry => ({ type: \"agent-step\", step: s }),\n ),\n ];\n\n return { output: coerced.output, trace };\n } catch (e) {\n if (e instanceof StepExecutionError) throw e;\n throw classifyLlmError(step.id, e);\n }\n}\n\n/** LanguageModel path: subset tools from options.tools, use ToolLoopAgent with structured output. */\nasync function executeWithModel(\n step: WorkflowStep & { type: \"agent-loop\" },\n interpolatedInstructions: string,\n scope: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n model: LanguageModel,\n limits: Required<ExecutorLimits>,\n outputSchema: ReturnType<typeof jsonSchema>,\n): Promise<StepOutput> {\n // Subset tools to only those listed in step.params.tools\n const subsetTools: ToolSet = {};\n for (const toolName of step.params.tools) {\n const toolDef = options.tools[toolName];\n if (!toolDef) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `agent-loop step references tool '${toolName}' which is not in the provided tool set`,\n );\n }\n if (!toolDef.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_MISSING_EXECUTE\",\n `agent-loop step references tool '${toolName}' which has no execute function`,\n );\n }\n subsetTools[toolName] = toolDef;\n }\n\n // Inject built-in probe-data and give-up tools\n const probeDataTool = createProbeDataTool(scope, limits);\n const giveUp = createGiveUpTool();\n subsetTools[\"probe-data\"] = probeDataTool;\n subsetTools[\"give-up\"] = giveUp.tool;\n\n // Evaluate maxSteps (default: 10)\n const maxSteps = step.params.maxSteps\n ? evaluateExpression(step.params.maxSteps as Expression, scope, step.id)\n : 10;\n if (typeof maxSteps !== \"number\" || maxSteps < 1) {\n throw new ValidationError(\n step.id,\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `agent-loop maxSteps must be a positive number, got ${typeof maxSteps === \"number\" ? maxSteps : typeof maxSteps}`,\n maxSteps,\n );\n }\n\n const agent = new ToolLoopAgent({\n model,\n tools: subsetTools,\n output: Output.object({ schema: outputSchema }),\n stopWhen: [\n () => giveUp?.getReason() !== undefined,\n stepCountIs(Math.floor(maxSteps)),\n ],\n });\n\n try {\n const result = await agent.generate({ prompt: interpolatedInstructions });\n\n // Check if the agent gave up before returning structured output\n if (giveUp.getReason() !== undefined) {\n throw new ExtractionError(\n step.id,\n `Agent gave up: ${giveUp.getReason()}`,\n giveUp.getReason() as string,\n );\n }\n\n const trace: TraceEntry[] = result.steps.map((s) => ({\n type: \"agent-step\" as const,\n step: s,\n }));\n\n return { output: result.output, trace };\n } catch (e) {\n if (e instanceof StepExecutionError) throw e;\n throw classifyLlmError(step.id, e);\n }\n}\n\nexport function resolveAgentLoopInputs(\n step: WorkflowStep & { type: \"agent-loop\" },\n scope: Record<string, unknown>,\n): unknown {\n try {\n return {\n instructions: interpolateTemplate(\n step.params.instructions,\n scope,\n step.id,\n ),\n };\n } catch {\n return { instructions: step.params.instructions };\n }\n}\n",
27
27
  "import { search } from \"@jmespath-community/jmespath\";\nimport {\n APICallError,\n JSONParseError,\n NoContentGeneratedError,\n RetryError,\n TypeValidationError,\n tool,\n} from \"ai\";\nimport { type as arktype } from \"arktype\";\nimport { extractTemplateExpressions } from \"../compiler/utils/jmespath-helpers\";\nimport type { ErrorCode } from \"./errors\";\nimport {\n ExpressionError,\n ExternalServiceError,\n OutputQualityError,\n type StepExecutionError,\n} from \"./errors\";\nimport type { Expression } from \"./executor-types\";\n\n// ─── Helpers ─────────────────────────────────────────────────────\n\nexport function stripCodeFence(text: string): string {\n const match = text.match(/^```(?:\\w*)\\s*\\n?([\\s\\S]*?)\\n?\\s*```\\s*$/);\n return match?.[1] ?? text;\n}\n\n// ─── Expression Evaluation ───────────────────────────────────────\n\nexport function evaluateExpression(\n expr: Expression,\n scope: Record<string, unknown>,\n stepId: string,\n): unknown {\n if (expr.type === \"literal\") {\n return expr.value;\n }\n if (expr.type === \"template\") {\n return interpolateTemplate(expr.template, scope, stepId);\n }\n try {\n return search(scope as Parameters<typeof search>[0], expr.expression);\n } catch (e) {\n throw new ExpressionError(\n stepId,\n \"JMESPATH_EVALUATION_ERROR\",\n `JMESPath expression '${expr.expression}' failed: ${e instanceof Error ? e.message : String(e)}`,\n expr.expression,\n e,\n );\n }\n}\n\nexport function stringifyValue(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function interpolateTemplate(\n template: string,\n scope: Record<string, unknown>,\n stepId: string,\n): string {\n const { expressions } = extractTemplateExpressions(template);\n if (expressions.length === 0) return template;\n\n let result = \"\";\n let lastEnd = 0;\n for (const expr of expressions) {\n result += template.slice(lastEnd, expr.start);\n try {\n const value = search(\n scope as Parameters<typeof search>[0],\n expr.expression,\n );\n result += stringifyValue(value);\n } catch (e) {\n throw new ExpressionError(\n stepId,\n \"TEMPLATE_INTERPOLATION_ERROR\",\n `Template expression '${expr.expression}' failed: ${e instanceof Error ? e.message : String(e)}`,\n expr.expression,\n e,\n );\n }\n lastEnd = expr.end;\n }\n result += template.slice(lastEnd);\n return result;\n}\n\n// ─── LLM Error Classification ───────────────────────────────────\n\nexport function classifyLlmError(\n stepId: string,\n e: unknown,\n): StepExecutionError {\n if (APICallError.isInstance(e)) {\n const code: ErrorCode =\n e.statusCode === 429 ? \"LLM_RATE_LIMITED\" : \"LLM_API_ERROR\";\n return new ExternalServiceError(\n stepId,\n code,\n e.message,\n e,\n e.statusCode,\n e.isRetryable ?? true,\n );\n }\n if (RetryError.isInstance(e)) {\n return new ExternalServiceError(\n stepId,\n \"LLM_API_ERROR\",\n e.message,\n e,\n undefined,\n false,\n );\n }\n if (NoContentGeneratedError.isInstance(e)) {\n return new ExternalServiceError(\n stepId,\n \"LLM_NO_CONTENT\",\n e.message,\n e,\n undefined,\n true,\n );\n }\n if (TypeValidationError.isInstance(e)) {\n return new OutputQualityError(\n stepId,\n \"LLM_OUTPUT_PARSE_ERROR\",\n `LLM output could not be parsed: ${e.message}`,\n e.value,\n e,\n );\n }\n if (JSONParseError.isInstance(e)) {\n return new OutputQualityError(\n stepId,\n \"LLM_OUTPUT_PARSE_ERROR\",\n `LLM output could not be parsed: ${e.message}`,\n e.text,\n e,\n );\n }\n return new ExternalServiceError(\n stepId,\n \"LLM_NETWORK_ERROR\",\n e instanceof Error ? e.message : String(e),\n e,\n undefined,\n true,\n );\n}\n\n// ─── Shared Probe Tools ──────────────────────────────────────────\n\nexport function createProbeDataTool(\n sourceData: unknown,\n limits: { probeResultMaxBytes: number },\n) {\n return tool({\n description:\n \"Query the available data using a JMESPath expression. Returns the matching subset of the data.\",\n inputSchema: arktype({\n expression: [\n \"string\",\n \"@\",\n \"A JMESPath expression to evaluate against the data. Examples: 'users[0]', 'users[*].name', 'metadata.total', 'users[?age > `30`].name'\",\n ],\n }),\n execute: async ({ expression }) => {\n try {\n const result = search(\n sourceData as Parameters<typeof search>[0],\n expression,\n );\n const resultStr =\n typeof result === \"string\" ? result : JSON.stringify(result, null, 2);\n if (\n new TextEncoder().encode(resultStr).byteLength >\n limits.probeResultMaxBytes\n ) {\n const truncated = resultStr.slice(0, limits.probeResultMaxBytes);\n return `${truncated}\\n\\n[TRUNCATED - result exceeded ${limits.probeResultMaxBytes} bytes. Use a more specific JMESPath expression to narrow the result.]`;\n }\n return resultStr;\n } catch (e) {\n return `JMESPath error: ${e instanceof Error ? e.message : String(e)}. Check your expression syntax.`;\n }\n },\n });\n}\n\nexport function createGiveUpTool() {\n let reason: string | undefined;\n const giveUpTool = tool({\n description:\n \"Call this if you determine you cannot complete the task or find/extract the requested data.\",\n inputSchema: arktype({\n reason: [\n \"string\",\n \"@\",\n \"Explanation of why the task cannot be completed\",\n ],\n }),\n execute: async ({ reason: r }) => {\n reason = r;\n return { acknowledged: true };\n },\n });\n return {\n tool: giveUpTool,\n getReason: () => reason,\n };\n}\n",
@@ -36,12 +36,12 @@
36
36
  "import type { WorkflowStep } from \"../../types\";\nimport type { DurableContext } from \"../context\";\nimport type {\n ExecuteChainFn,\n ExecutionStateManager,\n Expression,\n ResolvedExecuteWorkflowOptions,\n} from \"../executor-types\";\nimport { evaluateExpression } from \"../helpers\";\nimport type { ExecutionPathSegment } from \"../state\";\n\nexport async function executeSwitchCase(\n step: WorkflowStep & { type: \"switch-case\" },\n scope: Record<string, unknown>,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n stateManager: ExecutionStateManager | undefined,\n execPath: ExecutionPathSegment[],\n executeChain: ExecuteChainFn,\n): Promise<unknown> {\n const switchValue = evaluateExpression(\n step.params.switchOn as Expression,\n scope,\n step.id,\n );\n\n let matchedBranchId: string | undefined;\n let defaultBranchId: string | undefined;\n let matchedCaseIndex = -1;\n\n for (let i = 0; i < step.params.cases.length; i++) {\n const c = step.params.cases[i] as (typeof step.params.cases)[number];\n if (c.value.type === \"default\") {\n defaultBranchId = c.branchBodyStepId;\n if (matchedCaseIndex === -1) matchedCaseIndex = i;\n } else {\n const caseValue = evaluateExpression(\n c.value as Expression,\n scope,\n step.id,\n );\n if (caseValue === switchValue) {\n matchedBranchId = c.branchBodyStepId;\n matchedCaseIndex = i;\n break;\n }\n }\n }\n\n const selectedBranchId = matchedBranchId ?? defaultBranchId;\n if (!selectedBranchId) {\n return undefined;\n }\n\n const branchPath: ExecutionPathSegment[] = [\n ...execPath,\n {\n type: \"switch-case\" as const,\n stepId: step.id,\n matchedCaseIndex,\n matchedValue: switchValue,\n },\n ];\n\n return await executeChain(\n selectedBranchId,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n undefined,\n stateManager,\n branchPath,\n );\n}\n\nexport function resolveSwitchCaseInputs(\n step: WorkflowStep & { type: \"switch-case\" },\n scope: Record<string, unknown>,\n): unknown {\n try {\n return {\n switchOn: evaluateExpression(\n step.params.switchOn as Expression,\n scope,\n step.id,\n ),\n };\n } catch {\n return undefined;\n }\n}\n",
37
37
  "import { safeValidateTypes } from \"@ai-sdk/provider-utils\";\nimport type { ToolSet } from \"ai\";\nimport type { WorkflowStep } from \"../../types\";\nimport {\n ConfigurationError,\n ExternalServiceError,\n ValidationError,\n} from \"../errors\";\nimport type { Expression } from \"../executor-types\";\nimport { evaluateExpression } from \"../helpers\";\n\nexport async function executeToolCall(\n step: WorkflowStep & { type: \"tool-call\" },\n scope: Record<string, unknown>,\n tools: ToolSet,\n): Promise<unknown> {\n // Tool existence and executability are validated in pre-flight checks\n const toolDef = tools[step.params.toolName];\n if (!toolDef?.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `Tool '${step.params.toolName}' not found or has no execute function`,\n );\n }\n\n const resolvedInput: Record<string, unknown> = {};\n for (const [key, expr] of Object.entries(step.params.toolInput)) {\n resolvedInput[key] = evaluateExpression(expr as Expression, scope, step.id);\n }\n\n if (toolDef.inputSchema) {\n const validation = await safeValidateTypes({\n value: resolvedInput,\n schema: toolDef.inputSchema,\n });\n if (!validation.success) {\n throw new ValidationError(\n step.id,\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Tool '${step.params.toolName}' input validation failed: ${validation.error.message}`,\n resolvedInput,\n validation.error,\n );\n }\n }\n\n try {\n return await toolDef.execute(resolvedInput, {\n toolCallId: step.id,\n messages: [],\n });\n } catch (e) {\n throw new ExternalServiceError(\n step.id,\n \"TOOL_EXECUTION_FAILED\",\n e instanceof Error ? e.message : String(e),\n e,\n );\n }\n}\n\nexport function resolveToolCallInputs(\n step: WorkflowStep & { type: \"tool-call\" },\n scope: Record<string, unknown>,\n): unknown {\n const resolved: Record<string, unknown> = {};\n for (const [key, expr] of Object.entries(step.params.toolInput)) {\n try {\n resolved[key] = evaluateExpression(expr as Expression, scope, step.id);\n } catch {\n resolved[key] = `<error resolving ${key}>`;\n }\n }\n return resolved;\n}\n",
38
38
  "import type { WorkflowStep } from \"../../types\";\nimport type { DurableContext } from \"../context\";\nimport type {\n ExecuteChainFn,\n ExecutionStateManager,\n ExecutionTimer,\n Expression,\n ResolvedExecuteWorkflowOptions,\n} from \"../executor-types\";\nimport { evaluateExpression } from \"../helpers\";\nimport type { ExecutionPathSegment } from \"../state\";\n\nexport async function executeWaitForCondition(\n step: WorkflowStep & { type: \"wait-for-condition\" },\n scope: Record<string, unknown>,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager: ExecutionStateManager | undefined,\n execPath: ExecutionPathSegment[],\n executeChain: ExecuteChainFn,\n): Promise<unknown> {\n const limits = timer.resolvedLimits;\n\n const maxAttempts = Math.min(\n step.params.maxAttempts\n ? (evaluateExpression(\n step.params.maxAttempts as Expression,\n scope,\n step.id,\n ) as number)\n : 10,\n limits.maxAttempts,\n );\n const intervalMs = Math.min(\n step.params.intervalMs\n ? (evaluateExpression(\n step.params.intervalMs as Expression,\n scope,\n step.id,\n ) as number)\n : 1000,\n limits.maxSleepMs,\n );\n const rawBackoff = step.params.backoffMultiplier\n ? (evaluateExpression(\n step.params.backoffMultiplier as Expression,\n scope,\n step.id,\n ) as number)\n : 1;\n const backoffMultiplier = Math.max(\n limits.minBackoffMultiplier,\n Math.min(rawBackoff, limits.maxBackoffMultiplier),\n );\n const timeoutMs = step.params.timeoutMs\n ? Math.min(\n evaluateExpression(\n step.params.timeoutMs as Expression,\n scope,\n step.id,\n ) as number,\n limits.maxTimeoutMs,\n )\n : undefined;\n\n let pollAttempt = 0;\n return context.waitForCondition(\n step.id,\n async () => {\n const pollPath: ExecutionPathSegment[] = [\n ...execPath,\n {\n type: \"wait-for-condition\" as const,\n stepId: step.id,\n pollAttempt: pollAttempt++,\n },\n ];\n timer.beginActive();\n try {\n await executeChain(\n step.params.conditionStepId,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n undefined,\n stateManager,\n pollPath,\n );\n const updatedScope = { ...stepOutputs, ...loopVars };\n return evaluateExpression(\n step.params.condition as Expression,\n updatedScope,\n step.id,\n );\n } finally {\n timer.endActive(step.id);\n }\n },\n { maxAttempts, intervalMs, backoffMultiplier, timeoutMs },\n );\n}\n",
39
- "import type { WorkflowDefinition, WorkflowStep } from \"../types\";\nimport { MemoryExecutionStateChannel } from \"./channel\";\nimport { createDefaultDurableContext, type DurableContext } from \"./context\";\nimport {\n AuthorizationError,\n ConfigurationError,\n ExternalServiceError,\n ExtractionError,\n StepExecutionError,\n ValidationError,\n} from \"./errors\";\nimport {\n type ExecuteChainFn,\n type ExecuteWorkflowOptions,\n type ExecutionResult,\n ExecutionStateManager,\n ExecutionTimer,\n type ResolvedExecuteWorkflowOptions,\n} from \"./executor-types\";\nimport { hashWorkflow } from \"./hash\";\nimport type { ApprovableAction } from \"./policy\";\nimport type { ExecutionPathSegment, ExecutionState, TraceEntry } from \"./state\";\n\nexport type {\n WorkflowExecutionStateChannel,\n WorkflowExecutionStateChannelOptions,\n} from \"./channel\";\nexport {\n BaseExecutionStateChannel,\n MemoryExecutionStateChannel,\n} from \"./channel\";\nexport type {\n ExecuteWorkflowOptions,\n ExecutionResult,\n ExecutorLimits,\n} from \"./executor-types\";\n\n// ─── Step Imports ────────────────────────────────────────────────\n\nimport { executeAgentLoop, resolveAgentLoopInputs } from \"./steps/agent-loop\";\nimport { executeEnd } from \"./steps/end\";\nimport {\n executeExtractData,\n resolveExtractDataInputs,\n} from \"./steps/extract-data\";\nimport { executeForEach, resolveForEachInputs } from \"./steps/for-each\";\nimport { executeLlmPrompt, resolveLlmPromptInputs } from \"./steps/llm-prompt\";\nimport { executeSleep } from \"./steps/sleep\";\nimport { executeStart } from \"./steps/start\";\nimport {\n executeSwitchCase,\n resolveSwitchCaseInputs,\n} from \"./steps/switch-case\";\nimport { executeToolCall, resolveToolCallInputs } from \"./steps/tool-call\";\nimport { executeWaitForCondition } from \"./steps/wait-for-condition\";\n\n// ─── Policy Evaluation ───────────────────────────────────────────\n\nexport const DEFAULT_APPROVAL_TIMEOUT_MS = 259_200_000; // 3 days\nexport const DEFAULT_APPROVAL_INTERVAL_MS = 2_000; // 2 seconds\nexport const DEFAULT_APPROVAL_BACKOFF_MULTIPLIER = 1.1;\nexport const DEFAULT_APPROVAL_MAX_INTERVAL_MS = 3_600_000; // 1 hour\n\n/**\n * Evaluate policies in order for a tool-call action. Short-circuits on\n * `approve`, `reject`, or `request`. If all policies defer, the action\n * is approved by default.\n */\nasync function evaluatePolicies(\n action: ApprovableAction,\n stepId: string,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<void> {\n const policies = options.policies;\n if (!policies || policies.length === 0) return;\n\n const executionContext = options.executionContext ?? {};\n\n for (const policy of policies) {\n const decision = await policy.decider(executionContext, action);\n const sourcePolicyId = policy.id;\n\n switch (decision.type) {\n case \"approve\":\n return;\n\n case \"reject\":\n throw new AuthorizationError(\n stepId,\n \"Action rejected by policy\",\n sourcePolicyId,\n );\n\n case \"defer\":\n continue;\n\n case \"request\": {\n stateManager?.stepAwaitingApproval(stepId, execPath, sourcePolicyId);\n\n const timeoutMs =\n options.approvalTimeoutMs ?? DEFAULT_APPROVAL_TIMEOUT_MS;\n const intervalMs =\n options.approvalIntervalMs ?? DEFAULT_APPROVAL_INTERVAL_MS;\n const backoffMultiplier =\n options.approvalBackoffMultiplier ??\n DEFAULT_APPROVAL_BACKOFF_MULTIPLIER;\n const maxIntervalMs =\n options.approvalMaxIntervalMs ?? DEFAULT_APPROVAL_MAX_INTERVAL_MS;\n\n // Generate a synthetic callback ID for polling-only mode.\n // In durable environments with waitForCallback, the environment\n // provides its own callback ID via the submitter.\n const syntheticCallbackId = `approval:${stateManager?.currentState.runId ?? \"unknown\"}:${stepId}`;\n\n const hasConditionFn = !!decision.conditionFn;\n const hasRequestFn = !!decision.requestFn;\n\n // requestFn-only requires waitForCallback\n if (hasRequestFn && !hasConditionFn && !context.waitForCallback) {\n throw new AuthorizationError(\n stepId,\n \"Policy returned requestFn without conditionFn, but no DurableContext.waitForCallback is available\",\n sourcePolicyId,\n );\n }\n\n // Fire the notification (if provided) with the callback ID.\n // When waitForCallback is available, requestFn is called inside the\n // submitter (see below) with the environment-provided callback ID.\n if (hasRequestFn && !context.waitForCallback) {\n await decision.requestFn(syntheticCallbackId);\n }\n\n let approvalResult: unknown;\n try {\n // Build the polling promise (if conditionFn is provided)\n const pollingPromise = hasConditionFn\n ? (async () => {\n const deadline = Date.now() + timeoutMs;\n let delay = intervalMs;\n\n while (true) {\n // Check staleness before checking condition\n if (decision.staleFn) {\n const staleCheck = await decision.staleFn();\n if (staleCheck.stale) {\n return {\n approved: false,\n reason:\n staleCheck.reason ?? \"Approval request is stale\",\n };\n }\n }\n\n const result = await decision.conditionFn();\n if (result) return result;\n\n if (Date.now() + delay > deadline) {\n throw new Error(\"timeout\");\n }\n\n await context.sleep(`approval:${stepId}:poll`, delay);\n delay = Math.min(delay * backoffMultiplier, maxIntervalMs);\n }\n })()\n : null;\n\n // Build the callback promise (if waitForCallback is available)\n const callbackPromise = context.waitForCallback\n ? context.waitForCallback(\n `approval:${stepId}`,\n async (callbackId) => {\n if (hasRequestFn) {\n await decision.requestFn(callbackId);\n }\n },\n timeoutMs,\n )\n : null;\n\n // Race whichever promises are available\n if (callbackPromise && pollingPromise) {\n approvalResult = await Promise.race([\n callbackPromise,\n pollingPromise,\n ]);\n } else if (callbackPromise) {\n approvalResult = await callbackPromise;\n } else {\n // pollingPromise is guaranteed non-null here (validated above)\n approvalResult = await pollingPromise;\n }\n } catch {\n // Timeout — treat as rejection\n stateManager?.stepDenied(\n stepId,\n execPath,\n sourcePolicyId,\n \"Approval request timed out\",\n );\n throw new AuthorizationError(\n stepId,\n \"Approval request timed out\",\n sourcePolicyId,\n );\n }\n\n // Check the decision\n const approvalDecision = approvalResult as {\n approved: boolean;\n reason?: string;\n };\n\n // Notify via onApproval callback if provided\n if (decision.onApproval) {\n await decision.onApproval(approvalDecision);\n }\n\n if (approvalDecision.approved) {\n stateManager?.stepApproved(stepId, execPath, sourcePolicyId);\n return;\n }\n\n stateManager?.stepDenied(\n stepId,\n execPath,\n sourcePolicyId,\n approvalDecision.reason,\n );\n throw new AuthorizationError(\n stepId,\n approvalDecision.reason ?? \"Approval denied\",\n sourcePolicyId,\n );\n }\n }\n }\n\n // All policies deferred — action is approved by default\n}\n\n// ─── Input Validation ────────────────────────────────────────────\n\nfunction validateWorkflowInputs(\n inputSchema: Record<string, unknown> | undefined,\n inputs: Record<string, unknown>,\n): void {\n if (!inputSchema || typeof inputSchema !== \"object\") return;\n\n const required = inputSchema.required;\n if (Array.isArray(required)) {\n const missing = required.filter(\n (key: unknown) => typeof key === \"string\" && !(key in inputs),\n );\n if (missing.length > 0) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: missing required input(s): ${missing.join(\", \")}`,\n inputs,\n );\n }\n }\n\n const properties = inputSchema.properties;\n if (properties && typeof properties === \"object\") {\n for (const [key, value] of Object.entries(inputs)) {\n const propSchema = (properties as Record<string, unknown>)[key];\n if (\n propSchema &&\n typeof propSchema === \"object\" &&\n \"type\" in propSchema\n ) {\n const expectedType = (propSchema as { type: string }).type;\n const actualType = typeof value;\n if (expectedType === \"integer\" || expectedType === \"number\") {\n if (actualType !== \"number\") {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type '${expectedType}' but got '${actualType}'`,\n inputs,\n );\n }\n } else if (expectedType === \"array\") {\n if (!Array.isArray(value)) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type 'array' but got '${actualType}'`,\n inputs,\n );\n }\n } else if (actualType !== expectedType) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type '${expectedType}' but got '${actualType}'`,\n inputs,\n );\n }\n }\n }\n }\n}\n\n// ─── Output Validation ──────────────────────────────────────────\n\nfunction validateWorkflowOutput(\n outputSchema: Record<string, unknown>,\n output: unknown,\n endStepId: string,\n): void {\n const expectedType = outputSchema.type;\n if (typeof expectedType === \"string\") {\n if (\n expectedType === \"object\" &&\n (typeof output !== \"object\" || output === null)\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type 'object' but got '${output === null ? \"null\" : typeof output}'`,\n output,\n );\n }\n if (expectedType === \"array\" && !Array.isArray(output)) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type 'array' but got '${typeof output}'`,\n output,\n );\n }\n if (\n (expectedType === \"string\" || expectedType === \"boolean\") &&\n typeof output !== expectedType\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type '${expectedType}' but got '${typeof output}'`,\n output,\n );\n }\n if (\n (expectedType === \"number\" || expectedType === \"integer\") &&\n typeof output !== \"number\"\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type '${expectedType}' but got '${typeof output}'`,\n output,\n );\n }\n }\n\n if (typeof output === \"object\" && output !== null && !Array.isArray(output)) {\n const required = outputSchema.required;\n if (Array.isArray(required)) {\n const missing = required.filter(\n (key: unknown) =>\n typeof key === \"string\" &&\n !(key in (output as Record<string, unknown>)),\n );\n if (missing.length > 0) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: missing required field(s): ${missing.join(\", \")}`,\n output,\n );\n }\n }\n\n const properties = outputSchema.properties;\n if (properties && typeof properties === \"object\") {\n for (const [key, value] of Object.entries(\n output as Record<string, unknown>,\n )) {\n const propSchema = (properties as Record<string, unknown>)[key];\n if (\n propSchema &&\n typeof propSchema === \"object\" &&\n \"type\" in propSchema\n ) {\n const propExpectedType = (propSchema as { type: string }).type;\n const actualType = typeof value;\n if (propExpectedType === \"integer\" || propExpectedType === \"number\") {\n if (actualType !== \"number\") {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type '${propExpectedType}' but got '${actualType}'`,\n output,\n );\n }\n } else if (propExpectedType === \"array\") {\n if (!Array.isArray(value)) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type 'array' but got '${actualType}'`,\n output,\n );\n }\n } else if (actualType !== propExpectedType) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type '${propExpectedType}' but got '${actualType}'`,\n output,\n );\n }\n }\n }\n }\n }\n}\n\n// ─── Resolve Step Inputs (for viewer display) ───────────────────\n\nfunction resolveStepInputs(\n step: WorkflowStep,\n scope: Record<string, unknown>,\n): unknown {\n switch (step.type) {\n case \"tool-call\":\n return resolveToolCallInputs(step, scope);\n case \"llm-prompt\":\n return resolveLlmPromptInputs(step, scope);\n case \"extract-data\":\n return resolveExtractDataInputs(step, scope);\n case \"switch-case\":\n return resolveSwitchCaseInputs(step, scope);\n case \"for-each\":\n return resolveForEachInputs(step, scope);\n case \"agent-loop\":\n return resolveAgentLoopInputs(step, scope);\n default:\n return undefined;\n }\n}\n\n// ─── Step Dispatch ───────────────────────────────────────────────\n\n/** Return type for executeStep. LLM steps may attach trace entries for debugging. */\ntype StepOutput = {\n output: unknown;\n trace?: TraceEntry[];\n};\n\nasync function executeStep(\n step: WorkflowStep,\n scope: Record<string, unknown>,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n switch (step.type) {\n case \"llm-prompt\":\n return executeLlmPrompt(step, scope, options);\n case \"extract-data\":\n return executeExtractData(step, scope, options, timer.resolvedLimits);\n case \"agent-loop\":\n return executeAgentLoop(step, scope, options, timer.resolvedLimits);\n case \"tool-call\":\n return { output: await executeToolCall(step, scope, options.tools) };\n case \"switch-case\":\n return {\n output: await executeSwitchCase(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"for-each\":\n return {\n output: await executeForEach(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"sleep\":\n return { output: await executeSleep(step, scope, context, timer) };\n case \"wait-for-condition\":\n return {\n output: await executeWaitForCondition(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"start\":\n return { output: await executeStart() };\n case \"end\":\n return { output: await executeEnd(step, scope) };\n }\n}\n\n// ─── Error Recovery ──────────────────────────────────────────────\n\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_BASE_DELAY_MS = 1000;\n\nasync function retryStep(\n step: WorkflowStep,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n originalError: StepExecutionError,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n const baseDelay = options.retryDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const scope = { ...stepOutputs, ...loopVars };\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n const retryStartedAt = new Date().toISOString();\n await context.sleep(\n `${step.id}_retry_${attempt}`,\n baseDelay * 2 ** (attempt - 1),\n );\n try {\n return await executeStep(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer,\n stateManager,\n execPath,\n );\n } catch (e) {\n stateManager?.retryAttempted(step.id, execPath, {\n attempt,\n startedAt: retryStartedAt,\n failedAt: new Date().toISOString(),\n errorCode: e instanceof StepExecutionError ? e.code : \"UNKNOWN\",\n errorMessage: e instanceof Error ? e.message : String(e),\n });\n // If the retry produced a non-retryable error (e.g. the LLM called\n // give-up), stop retrying immediately instead of masking it.\n if (e instanceof ExtractionError) throw e;\n if (attempt === maxRetries) throw originalError;\n }\n }\n throw originalError;\n}\n\nasync function recoverFromError(\n error: StepExecutionError,\n step: WorkflowStep,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n switch (error.code) {\n case \"LLM_RATE_LIMITED\":\n case \"LLM_NETWORK_ERROR\":\n case \"LLM_NO_CONTENT\":\n case \"LLM_OUTPUT_PARSE_ERROR\":\n return retryStep(\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n error,\n context,\n timer,\n stateManager,\n execPath,\n );\n\n case \"LLM_API_ERROR\":\n if (error instanceof ExternalServiceError && error.isRetryable) {\n return retryStep(\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n error,\n context,\n timer,\n stateManager,\n execPath,\n );\n }\n throw error;\n\n case \"EXTRACTION_GAVE_UP\":\n throw error;\n\n default:\n throw error;\n }\n}\n\n// ─── Chain Execution ─────────────────────────────────────────────\n\n// In a durable execution environment, code outside context.step() re-runs\n// on every resume. All code in this loop body outside the context.step()\n// call must therefore be idempotent: pure reads (stepIndex lookups,\n// nextStepId traversal), scope construction, and writing the same cached\n// step output back into stepOutputs.\nconst executeChain: ExecuteChainFn = async function executeChain(\n startStepId: string,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer?: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n resumeSkipSteps?: Set<string>,\n): Promise<unknown> {\n let currentStepId: string | undefined = startStepId;\n let lastOutput: unknown;\n\n while (currentStepId) {\n const step = stepIndex.get(currentStepId);\n if (!step) {\n // Defensive: the compiler and pre-flight checks should prevent this\n throw new Error(`Step '${currentStepId}' not found`);\n }\n\n // Skip steps already completed in a prior run (resumption)\n if (resumeSkipSteps?.has(step.id)) {\n lastOutput = stepOutputs[step.id];\n currentStepId = step.nextStepId;\n continue;\n }\n\n timer?.checkTotal(step.id);\n const stepStartTime = Date.now();\n stateManager?.stepStarted(step.id, execPath);\n options.onStepStart?.(step.id, step);\n\n const scope = { ...stepOutputs, ...loopVars };\n const resolvedInputs = stateManager\n ? resolveStepInputs(step, scope)\n : undefined;\n\n // Policy check for tool-call steps\n if (step.type === \"tool-call\" && options.policies?.length) {\n const action: ApprovableAction = {\n type: \"tool-call\",\n params: {\n toolName: step.params.toolName,\n toolInput: (resolvedInputs ?? {}) as Record<string, unknown>,\n },\n };\n await evaluatePolicies(\n action,\n step.id,\n options,\n context,\n stateManager,\n execPath,\n );\n }\n\n let stepResult: StepOutput;\n\n try {\n timer?.beginActive();\n try {\n stepResult = (await context.step(step.id, () =>\n executeStep(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer ?? new ExecutionTimer(),\n stateManager,\n execPath,\n ),\n )) as StepOutput;\n } finally {\n timer?.endActive(step.id);\n }\n } catch (e) {\n if (!(e instanceof StepExecutionError)) {\n const durationMs = Date.now() - stepStartTime;\n const wrappedError = new ExternalServiceError(\n step.id,\n \"TOOL_EXECUTION_FAILED\",\n e instanceof Error ? e.message : String(e),\n e,\n undefined,\n false,\n );\n stateManager?.stepFailed(\n step.id,\n execPath,\n wrappedError,\n durationMs,\n resolvedInputs,\n );\n throw e;\n }\n try {\n stepResult = await recoverFromError(\n e,\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer ?? new ExecutionTimer(),\n stateManager,\n execPath,\n );\n } catch (unrecoverable) {\n const durationMs = Date.now() - stepStartTime;\n stateManager?.stepFailed(\n step.id,\n execPath,\n e,\n durationMs,\n resolvedInputs,\n );\n throw unrecoverable;\n }\n }\n\n const durationMs = Date.now() - stepStartTime;\n stepOutputs[step.id] = stepResult.output;\n lastOutput = stepResult.output;\n stateManager?.stepCompleted(\n step.id,\n execPath,\n stepResult.output,\n durationMs,\n resolvedInputs,\n stepResult.trace,\n );\n options.onStepComplete?.(step.id, stepResult.output);\n\n currentStepId = step.nextStepId;\n }\n\n return lastOutput;\n};\n\n// ─── Pre-flight Validation ───────────────────────────────────────\n\nfunction validateWorkflowConfig(\n workflow: WorkflowDefinition,\n options: ResolvedExecuteWorkflowOptions,\n): void {\n const needsAgent = workflow.steps.some(\n (s) =>\n s.type === \"llm-prompt\" ||\n s.type === \"extract-data\" ||\n s.type === \"agent-loop\",\n );\n if (needsAgent && !options.model) {\n const llmStep = workflow.steps.find(\n (s) =>\n s.type === \"llm-prompt\" ||\n s.type === \"extract-data\" ||\n s.type === \"agent-loop\",\n );\n throw new ConfigurationError(\n llmStep?.id ?? \"unknown\",\n \"AGENT_NOT_PROVIDED\",\n \"Workflow contains LLM/agent steps but no agent was provided\",\n );\n }\n\n for (const step of workflow.steps) {\n if (step.type === \"tool-call\") {\n const toolDef = options.tools[step.params.toolName];\n if (!toolDef) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `Tool '${step.params.toolName}' not found`,\n );\n }\n if (!toolDef.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_MISSING_EXECUTE\",\n `Tool '${step.params.toolName}' has no execute function`,\n );\n }\n }\n if (step.type === \"agent-loop\" && !options.agent) {\n // When an Agent is provided, tools come from the Agent itself;\n // only validate tool references when using the LanguageModel path\n for (const toolName of step.params.tools) {\n const toolDef = options.tools[toolName];\n if (!toolDef) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `Tool '${toolName}' referenced in agent-loop step not found`,\n );\n }\n if (!toolDef.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_MISSING_EXECUTE\",\n `Tool '${toolName}' referenced in agent-loop step has no execute function`,\n );\n }\n }\n }\n }\n}\n\n// ─── Public API ──────────────────────────────────────────────────\n\n/**\n * Executes a compiled workflow by walking its step graph from `initialStepId`.\n *\n * Handles all step types (tool calls, LLM prompts, data extraction, branching,\n * loops) and supports automatic retry with exponential backoff for recoverable\n * errors (rate limits, network failures, LLM parse errors).\n *\n * @param workflow - The workflow definition to execute (should be compiled first via {@link compileWorkflow}).\n * @param options - Execution options including tools, agent, inputs, and callbacks.\n * @returns An {@link ExecutionResult} with success status, all step outputs, and the final workflow output.\n */\nexport async function executeWorkflow(\n workflow: WorkflowDefinition,\n options: ExecuteWorkflowOptions,\n): Promise<ExecutionResult> {\n const stepIndex = new Map<string, WorkflowStep>();\n for (const step of workflow.steps) {\n stepIndex.set(step.id, step);\n }\n\n const stepOutputs: Record<string, unknown> = {};\n const wfHash = hashWorkflow(workflow);\n\n // Seed stepOutputs from initial state (completed top-level steps only).\n // If the workflow hash doesn't match, the initial state is stale — ignore it.\n const resumeSkipSteps = new Set<string>();\n const validInitialState =\n options.initialState?.workflowHash === wfHash\n ? options.initialState\n : undefined;\n if (validInitialState) {\n for (const record of validInitialState.stepRecords) {\n if (\n record.status === \"completed\" &&\n record.path.length === 0 &&\n record.output !== undefined\n ) {\n stepOutputs[record.stepId] = record.output;\n resumeSkipSteps.add(record.stepId);\n }\n }\n }\n\n const resolvedOptions: ResolvedExecuteWorkflowOptions = options;\n const resolvedContext = options.context ?? createDefaultDurableContext();\n const timer = new ExecutionTimer(options.limits);\n // When resuming, strip non-completed step records so that steps that were\n // in-progress at pause time don't linger as stale \"running\" entries.\n const cleanedInitialState = validInitialState\n ? {\n ...validInitialState,\n workflowHash: wfHash,\n stepRecords: validInitialState.stepRecords.filter(\n (r) => r.status === \"completed\",\n ),\n }\n : undefined;\n const combinedOnChange: typeof options.onStateChange = options.channel\n ? (state, delta) => {\n options.channel?.publish(state);\n options.onStateChange?.(state, delta);\n }\n : options.onStateChange;\n\n const stateManager = new ExecutionStateManager(\n combinedOnChange,\n cleanedInitialState,\n wfHash,\n );\n stateManager.runStarted();\n\n try {\n validateWorkflowConfig(workflow, resolvedOptions);\n\n const inputs = options.inputs ?? {};\n validateWorkflowInputs(\n workflow.inputSchema as Record<string, unknown> | undefined,\n inputs,\n );\n stepOutputs.input = inputs;\n\n const chainOutput = await executeChain(\n workflow.initialStepId,\n stepIndex,\n stepOutputs,\n {},\n resolvedOptions,\n resolvedContext,\n timer,\n stateManager,\n [],\n resumeSkipSteps.size > 0 ? resumeSkipSteps : undefined,\n );\n\n if (workflow.outputSchema) {\n // Find the terminating end step for error reporting\n let endStepId = \"unknown\";\n for (const step of workflow.steps) {\n if (step.type === \"end\" && step.id in stepOutputs) {\n endStepId = step.id;\n }\n }\n validateWorkflowOutput(\n workflow.outputSchema as Record<string, unknown>,\n chainOutput,\n endStepId,\n );\n }\n\n stateManager.runCompleted(chainOutput);\n return {\n success: true,\n stepOutputs,\n output: chainOutput,\n executionState: stateManager.currentState,\n };\n } catch (e) {\n const error =\n e instanceof StepExecutionError\n ? e\n : new ExternalServiceError(\n \"unknown\",\n \"TOOL_EXECUTION_FAILED\",\n e instanceof Error ? e.message : String(e),\n e,\n undefined,\n false,\n );\n stateManager.runFailed(error);\n return {\n success: false,\n stepOutputs,\n error,\n executionState: stateManager.currentState,\n };\n } finally {\n options.channel?.close();\n }\n}\n\n// ─── Streaming Helper ────────────────────────────────────────────\n\n/**\n * Convenience wrapper that runs {@link executeWorkflow} and returns an\n * `AsyncIterable<ExecutionState>` that yields every state snapshot.\n *\n * The workflow executes in the background (fire-and-forget). The returned\n * iterable replays all states from the beginning and follows live updates\n * until the run completes or fails.\n */\nexport function executeWorkflowStream(\n workflow: WorkflowDefinition,\n options: ExecuteWorkflowOptions,\n): AsyncIterable<ExecutionState> {\n const channel = new MemoryExecutionStateChannel();\n\n // Fire-and-forget — channel.close() is called by executeWorkflow's finally block.\n executeWorkflow(workflow, { ...options, channel });\n\n return channel.subscribe({ replay: true });\n}\n",
39
+ "import type { WorkflowDefinition, WorkflowStep } from \"../types\";\nimport { MemoryExecutionStateChannel } from \"./channel\";\nimport { createDefaultDurableContext, type DurableContext } from \"./context\";\nimport {\n AuthorizationError,\n ConfigurationError,\n ExternalServiceError,\n ExtractionError,\n StepExecutionError,\n ValidationError,\n} from \"./errors\";\nimport {\n type ExecuteChainFn,\n type ExecuteWorkflowOptions,\n type ExecutionResult,\n ExecutionStateManager,\n ExecutionTimer,\n type ResolvedExecuteWorkflowOptions,\n} from \"./executor-types\";\nimport { hashWorkflow } from \"./hash\";\nimport type { ApprovableAction } from \"./policy\";\nimport type { ExecutionPathSegment, ExecutionState, TraceEntry } from \"./state\";\n\nexport type {\n WorkflowExecutionStateChannel,\n WorkflowExecutionStateChannelOptions,\n} from \"./channel\";\nexport {\n BaseExecutionStateChannel,\n MemoryExecutionStateChannel,\n} from \"./channel\";\nexport type {\n ExecuteWorkflowOptions,\n ExecutionResult,\n ExecutorLimits,\n} from \"./executor-types\";\n\n// ─── Step Imports ────────────────────────────────────────────────\n\nimport { executeAgentLoop, resolveAgentLoopInputs } from \"./steps/agent-loop\";\nimport { executeEnd } from \"./steps/end\";\nimport {\n executeExtractData,\n resolveExtractDataInputs,\n} from \"./steps/extract-data\";\nimport { executeForEach, resolveForEachInputs } from \"./steps/for-each\";\nimport { executeLlmPrompt, resolveLlmPromptInputs } from \"./steps/llm-prompt\";\nimport { executeSleep } from \"./steps/sleep\";\nimport { executeStart } from \"./steps/start\";\nimport {\n executeSwitchCase,\n resolveSwitchCaseInputs,\n} from \"./steps/switch-case\";\nimport { executeToolCall, resolveToolCallInputs } from \"./steps/tool-call\";\nimport { executeWaitForCondition } from \"./steps/wait-for-condition\";\n\n// ─── Policy Evaluation ───────────────────────────────────────────\n\nexport const DEFAULT_APPROVAL_TIMEOUT_MS = 259_200_000; // 3 days\nexport const DEFAULT_APPROVAL_INTERVAL_MS = 2_000; // 2 seconds\nexport const DEFAULT_APPROVAL_BACKOFF_MULTIPLIER = 1.1;\nexport const DEFAULT_APPROVAL_MAX_INTERVAL_MS = 3_600_000; // 1 hour\n\n/**\n * Evaluate policies in order for a tool-call action. Short-circuits on\n * `approve`, `reject`, or `request`. If all policies defer, the action\n * is approved by default.\n */\nasync function evaluatePolicies(\n action: ApprovableAction,\n stepId: string,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<void> {\n const policies = options.policies;\n if (!policies || policies.length === 0) return;\n\n const executionContext = options.executionContext ?? {};\n\n for (const policy of policies) {\n const decision = await policy.decider(executionContext, action);\n const sourcePolicyId = policy.id;\n\n switch (decision.type) {\n case \"approve\":\n return;\n\n case \"reject\":\n throw new AuthorizationError(\n stepId,\n \"Action rejected by policy\",\n sourcePolicyId,\n );\n\n case \"defer\":\n continue;\n\n case \"request\": {\n await stateManager?.stepAwaitingApproval(\n stepId,\n execPath,\n sourcePolicyId,\n );\n\n const timeoutMs =\n options.approvalTimeoutMs ?? DEFAULT_APPROVAL_TIMEOUT_MS;\n const intervalMs =\n options.approvalIntervalMs ?? DEFAULT_APPROVAL_INTERVAL_MS;\n const backoffMultiplier =\n options.approvalBackoffMultiplier ??\n DEFAULT_APPROVAL_BACKOFF_MULTIPLIER;\n const maxIntervalMs =\n options.approvalMaxIntervalMs ?? DEFAULT_APPROVAL_MAX_INTERVAL_MS;\n\n // Generate a synthetic callback ID for polling-only mode.\n // In durable environments with waitForCallback, the environment\n // provides its own callback ID via the submitter.\n const syntheticCallbackId = `approval:${stateManager?.currentState.runId ?? \"unknown\"}:${stepId}`;\n\n const hasConditionFn = !!decision.conditionFn;\n const hasRequestFn = !!decision.requestFn;\n\n // requestFn-only requires waitForCallback\n if (hasRequestFn && !hasConditionFn && !context.waitForCallback) {\n throw new AuthorizationError(\n stepId,\n \"Policy returned requestFn without conditionFn, but no DurableContext.waitForCallback is available\",\n sourcePolicyId,\n );\n }\n\n // Fire the notification (if provided) with the callback ID.\n // When waitForCallback is available, requestFn is called inside the\n // submitter (see below) with the environment-provided callback ID.\n if (hasRequestFn && !context.waitForCallback) {\n await decision.requestFn(syntheticCallbackId);\n }\n\n let approvalResult: unknown;\n try {\n // Build the polling promise (if conditionFn is provided)\n const pollingPromise = hasConditionFn\n ? (async () => {\n const deadline = Date.now() + timeoutMs;\n let delay = intervalMs;\n\n while (true) {\n // Check staleness before checking condition\n if (decision.staleFn) {\n const staleCheck = await decision.staleFn();\n if (staleCheck.stale) {\n return {\n approved: false,\n reason:\n staleCheck.reason ?? \"Approval request is stale\",\n };\n }\n }\n\n const result = await decision.conditionFn();\n if (result) return result;\n\n if (Date.now() + delay > deadline) {\n throw new Error(\"timeout\");\n }\n\n await context.sleep(`approval:${stepId}:poll`, delay);\n delay = Math.min(delay * backoffMultiplier, maxIntervalMs);\n }\n })()\n : null;\n\n // Build the callback promise (if waitForCallback is available)\n const callbackPromise = context.waitForCallback\n ? context.waitForCallback(\n `approval:${stepId}`,\n async (callbackId) => {\n if (hasRequestFn) {\n await decision.requestFn(callbackId);\n }\n },\n timeoutMs,\n )\n : null;\n\n // Race whichever promises are available\n if (callbackPromise && pollingPromise) {\n approvalResult = await Promise.race([\n callbackPromise,\n pollingPromise,\n ]);\n } else if (callbackPromise) {\n approvalResult = await callbackPromise;\n } else {\n // pollingPromise is guaranteed non-null here (validated above)\n approvalResult = await pollingPromise;\n }\n } catch {\n // Timeout — treat as rejection\n await stateManager?.stepDenied(\n stepId,\n execPath,\n sourcePolicyId,\n \"Approval request timed out\",\n );\n throw new AuthorizationError(\n stepId,\n \"Approval request timed out\",\n sourcePolicyId,\n );\n }\n\n // Check the decision\n const approvalDecision = approvalResult as {\n approved: boolean;\n reason?: string;\n };\n\n // Notify via onApproval callback if provided\n if (decision.onApproval) {\n await decision.onApproval(approvalDecision);\n }\n\n if (approvalDecision.approved) {\n await stateManager?.stepApproved(stepId, execPath, sourcePolicyId);\n return;\n }\n\n await stateManager?.stepDenied(\n stepId,\n execPath,\n sourcePolicyId,\n approvalDecision.reason,\n );\n throw new AuthorizationError(\n stepId,\n approvalDecision.reason ?? \"Approval denied\",\n sourcePolicyId,\n );\n }\n }\n }\n\n // All policies deferred — action is approved by default\n}\n\n// ─── Input Validation ────────────────────────────────────────────\n\nfunction validateWorkflowInputs(\n inputSchema: Record<string, unknown> | undefined,\n inputs: Record<string, unknown>,\n): void {\n if (!inputSchema || typeof inputSchema !== \"object\") return;\n\n const required = inputSchema.required;\n if (Array.isArray(required)) {\n const missing = required.filter(\n (key: unknown) => typeof key === \"string\" && !(key in inputs),\n );\n if (missing.length > 0) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: missing required input(s): ${missing.join(\", \")}`,\n inputs,\n );\n }\n }\n\n const properties = inputSchema.properties;\n if (properties && typeof properties === \"object\") {\n for (const [key, value] of Object.entries(inputs)) {\n const propSchema = (properties as Record<string, unknown>)[key];\n if (\n propSchema &&\n typeof propSchema === \"object\" &&\n \"type\" in propSchema\n ) {\n const expectedType = (propSchema as { type: string }).type;\n const actualType = typeof value;\n if (expectedType === \"integer\" || expectedType === \"number\") {\n if (actualType !== \"number\") {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type '${expectedType}' but got '${actualType}'`,\n inputs,\n );\n }\n } else if (expectedType === \"array\") {\n if (!Array.isArray(value)) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type 'array' but got '${actualType}'`,\n inputs,\n );\n }\n } else if (actualType !== expectedType) {\n throw new ValidationError(\n \"input\",\n \"TOOL_INPUT_VALIDATION_FAILED\",\n `Workflow input validation failed: input '${key}' expected type '${expectedType}' but got '${actualType}'`,\n inputs,\n );\n }\n }\n }\n }\n}\n\n// ─── Output Validation ──────────────────────────────────────────\n\nfunction validateWorkflowOutput(\n outputSchema: Record<string, unknown>,\n output: unknown,\n endStepId: string,\n): void {\n const expectedType = outputSchema.type;\n if (typeof expectedType === \"string\") {\n if (\n expectedType === \"object\" &&\n (typeof output !== \"object\" || output === null)\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type 'object' but got '${output === null ? \"null\" : typeof output}'`,\n output,\n );\n }\n if (expectedType === \"array\" && !Array.isArray(output)) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type 'array' but got '${typeof output}'`,\n output,\n );\n }\n if (\n (expectedType === \"string\" || expectedType === \"boolean\") &&\n typeof output !== expectedType\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type '${expectedType}' but got '${typeof output}'`,\n output,\n );\n }\n if (\n (expectedType === \"number\" || expectedType === \"integer\") &&\n typeof output !== \"number\"\n ) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: expected type '${expectedType}' but got '${typeof output}'`,\n output,\n );\n }\n }\n\n if (typeof output === \"object\" && output !== null && !Array.isArray(output)) {\n const required = outputSchema.required;\n if (Array.isArray(required)) {\n const missing = required.filter(\n (key: unknown) =>\n typeof key === \"string\" &&\n !(key in (output as Record<string, unknown>)),\n );\n if (missing.length > 0) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: missing required field(s): ${missing.join(\", \")}`,\n output,\n );\n }\n }\n\n const properties = outputSchema.properties;\n if (properties && typeof properties === \"object\") {\n for (const [key, value] of Object.entries(\n output as Record<string, unknown>,\n )) {\n const propSchema = (properties as Record<string, unknown>)[key];\n if (\n propSchema &&\n typeof propSchema === \"object\" &&\n \"type\" in propSchema\n ) {\n const propExpectedType = (propSchema as { type: string }).type;\n const actualType = typeof value;\n if (propExpectedType === \"integer\" || propExpectedType === \"number\") {\n if (actualType !== \"number\") {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type '${propExpectedType}' but got '${actualType}'`,\n output,\n );\n }\n } else if (propExpectedType === \"array\") {\n if (!Array.isArray(value)) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type 'array' but got '${actualType}'`,\n output,\n );\n }\n } else if (actualType !== propExpectedType) {\n throw new ValidationError(\n endStepId,\n \"WORKFLOW_OUTPUT_VALIDATION_FAILED\",\n `Workflow output validation failed: field '${key}' expected type '${propExpectedType}' but got '${actualType}'`,\n output,\n );\n }\n }\n }\n }\n }\n}\n\n// ─── Resolve Step Inputs (for viewer display) ───────────────────\n\nfunction resolveStepInputs(\n step: WorkflowStep,\n scope: Record<string, unknown>,\n): unknown {\n switch (step.type) {\n case \"tool-call\":\n return resolveToolCallInputs(step, scope);\n case \"llm-prompt\":\n return resolveLlmPromptInputs(step, scope);\n case \"extract-data\":\n return resolveExtractDataInputs(step, scope);\n case \"switch-case\":\n return resolveSwitchCaseInputs(step, scope);\n case \"for-each\":\n return resolveForEachInputs(step, scope);\n case \"agent-loop\":\n return resolveAgentLoopInputs(step, scope);\n default:\n return undefined;\n }\n}\n\n// ─── Step Dispatch ───────────────────────────────────────────────\n\n/** Return type for executeStep. LLM steps may attach trace entries for debugging. */\ntype StepOutput = {\n output: unknown;\n trace?: TraceEntry[];\n};\n\nasync function executeStep(\n step: WorkflowStep,\n scope: Record<string, unknown>,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n switch (step.type) {\n case \"llm-prompt\":\n return executeLlmPrompt(step, scope, options);\n case \"extract-data\":\n return executeExtractData(step, scope, options, timer.resolvedLimits);\n case \"agent-loop\":\n return executeAgentLoop(step, scope, options, timer.resolvedLimits);\n case \"tool-call\":\n return { output: await executeToolCall(step, scope, options.tools) };\n case \"switch-case\":\n return {\n output: await executeSwitchCase(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"for-each\":\n return {\n output: await executeForEach(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"sleep\":\n return { output: await executeSleep(step, scope, context, timer) };\n case \"wait-for-condition\":\n return {\n output: await executeWaitForCondition(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer,\n stateManager,\n execPath,\n executeChain,\n ),\n };\n case \"start\":\n return { output: await executeStart() };\n case \"end\":\n return { output: await executeEnd(step, scope) };\n }\n}\n\n// ─── Error Recovery ──────────────────────────────────────────────\n\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_BASE_DELAY_MS = 1000;\n\nasync function retryStep(\n step: WorkflowStep,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n originalError: StepExecutionError,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n const baseDelay = options.retryDelayMs ?? DEFAULT_BASE_DELAY_MS;\n const scope = { ...stepOutputs, ...loopVars };\n for (let attempt = 1; attempt <= maxRetries; attempt++) {\n const retryStartedAt = new Date().toISOString();\n await context.sleep(\n `${step.id}_retry_${attempt}`,\n baseDelay * 2 ** (attempt - 1),\n );\n try {\n return await executeStep(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer,\n stateManager,\n execPath,\n );\n } catch (e) {\n await stateManager?.retryAttempted(step.id, execPath, {\n attempt,\n startedAt: retryStartedAt,\n failedAt: new Date().toISOString(),\n errorCode: e instanceof StepExecutionError ? e.code : \"UNKNOWN\",\n errorMessage: e instanceof Error ? e.message : String(e),\n });\n // If the retry produced a non-retryable error (e.g. the LLM called\n // give-up), stop retrying immediately instead of masking it.\n if (e instanceof ExtractionError) throw e;\n if (attempt === maxRetries) throw originalError;\n }\n }\n throw originalError;\n}\n\nasync function recoverFromError(\n error: StepExecutionError,\n step: WorkflowStep,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n): Promise<StepOutput> {\n switch (error.code) {\n case \"LLM_RATE_LIMITED\":\n case \"LLM_NETWORK_ERROR\":\n case \"LLM_NO_CONTENT\":\n case \"LLM_OUTPUT_PARSE_ERROR\":\n return retryStep(\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n error,\n context,\n timer,\n stateManager,\n execPath,\n );\n\n case \"LLM_API_ERROR\":\n if (error instanceof ExternalServiceError && error.isRetryable) {\n return retryStep(\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n error,\n context,\n timer,\n stateManager,\n execPath,\n );\n }\n throw error;\n\n case \"EXTRACTION_GAVE_UP\":\n throw error;\n\n default:\n throw error;\n }\n}\n\n// ─── Chain Execution ─────────────────────────────────────────────\n\n// In a durable execution environment, code outside context.step() re-runs\n// on every resume. All code in this loop body outside the context.step()\n// call must therefore be idempotent: pure reads (stepIndex lookups,\n// nextStepId traversal), scope construction, and writing the same cached\n// step output back into stepOutputs.\nconst executeChain: ExecuteChainFn = async function executeChain(\n startStepId: string,\n stepIndex: Map<string, WorkflowStep>,\n stepOutputs: Record<string, unknown>,\n loopVars: Record<string, unknown>,\n options: ResolvedExecuteWorkflowOptions,\n context: DurableContext,\n timer?: ExecutionTimer,\n stateManager?: ExecutionStateManager,\n execPath: ExecutionPathSegment[] = [],\n resumeSkipSteps?: Set<string>,\n): Promise<unknown> {\n let currentStepId: string | undefined = startStepId;\n let lastOutput: unknown;\n\n while (currentStepId) {\n const step = stepIndex.get(currentStepId);\n if (!step) {\n // Defensive: the compiler and pre-flight checks should prevent this\n throw new Error(`Step '${currentStepId}' not found`);\n }\n\n // Skip steps already completed in a prior run (resumption)\n if (resumeSkipSteps?.has(step.id)) {\n lastOutput = stepOutputs[step.id];\n currentStepId = step.nextStepId;\n continue;\n }\n\n timer?.checkTotal(step.id);\n const stepStartTime = Date.now();\n await stateManager?.stepStarted(step.id, execPath);\n options.onStepStart?.(step.id, step);\n\n const scope = { ...stepOutputs, ...loopVars };\n const resolvedInputs = stateManager\n ? resolveStepInputs(step, scope)\n : undefined;\n\n // Policy check for tool-call steps\n if (step.type === \"tool-call\" && options.policies?.length) {\n const action: ApprovableAction = {\n type: \"tool-call\",\n params: {\n toolName: step.params.toolName,\n toolInput: (resolvedInputs ?? {}) as Record<string, unknown>,\n },\n };\n await evaluatePolicies(\n action,\n step.id,\n options,\n context,\n stateManager,\n execPath,\n );\n }\n\n let stepResult: StepOutput;\n\n try {\n timer?.beginActive();\n try {\n stepResult = (await context.step(step.id, () =>\n executeStep(\n step,\n scope,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer ?? new ExecutionTimer(),\n stateManager,\n execPath,\n ),\n )) as StepOutput;\n } finally {\n timer?.endActive(step.id);\n }\n } catch (e) {\n if (!(e instanceof StepExecutionError)) {\n const durationMs = Date.now() - stepStartTime;\n const wrappedError = new ExternalServiceError(\n step.id,\n \"TOOL_EXECUTION_FAILED\",\n e instanceof Error ? e.message : String(e),\n e,\n undefined,\n false,\n );\n await stateManager?.stepFailed(\n step.id,\n execPath,\n wrappedError,\n durationMs,\n resolvedInputs,\n );\n throw e;\n }\n try {\n stepResult = await recoverFromError(\n e,\n step,\n stepIndex,\n stepOutputs,\n loopVars,\n options,\n context,\n timer ?? new ExecutionTimer(),\n stateManager,\n execPath,\n );\n } catch (unrecoverable) {\n const durationMs = Date.now() - stepStartTime;\n await stateManager?.stepFailed(\n step.id,\n execPath,\n e,\n durationMs,\n resolvedInputs,\n );\n throw unrecoverable;\n }\n }\n\n const durationMs = Date.now() - stepStartTime;\n stepOutputs[step.id] = stepResult.output;\n lastOutput = stepResult.output;\n await stateManager?.stepCompleted(\n step.id,\n execPath,\n stepResult.output,\n durationMs,\n resolvedInputs,\n stepResult.trace,\n );\n options.onStepComplete?.(step.id, stepResult.output);\n\n currentStepId = step.nextStepId;\n }\n\n return lastOutput;\n};\n\n// ─── Pre-flight Validation ───────────────────────────────────────\n\nfunction validateWorkflowConfig(\n workflow: WorkflowDefinition,\n options: ResolvedExecuteWorkflowOptions,\n): void {\n const needsAgent = workflow.steps.some(\n (s) =>\n s.type === \"llm-prompt\" ||\n s.type === \"extract-data\" ||\n s.type === \"agent-loop\",\n );\n if (needsAgent && !options.model) {\n const llmStep = workflow.steps.find(\n (s) =>\n s.type === \"llm-prompt\" ||\n s.type === \"extract-data\" ||\n s.type === \"agent-loop\",\n );\n throw new ConfigurationError(\n llmStep?.id ?? \"unknown\",\n \"AGENT_NOT_PROVIDED\",\n \"Workflow contains LLM/agent steps but no agent was provided\",\n );\n }\n\n for (const step of workflow.steps) {\n if (step.type === \"tool-call\") {\n const toolDef = options.tools[step.params.toolName];\n if (!toolDef) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `Tool '${step.params.toolName}' not found`,\n );\n }\n if (!toolDef.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_MISSING_EXECUTE\",\n `Tool '${step.params.toolName}' has no execute function`,\n );\n }\n }\n if (step.type === \"agent-loop\" && !options.agent) {\n // When an Agent is provided, tools come from the Agent itself;\n // only validate tool references when using the LanguageModel path\n for (const toolName of step.params.tools) {\n const toolDef = options.tools[toolName];\n if (!toolDef) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_NOT_FOUND\",\n `Tool '${toolName}' referenced in agent-loop step not found`,\n );\n }\n if (!toolDef.execute) {\n throw new ConfigurationError(\n step.id,\n \"TOOL_MISSING_EXECUTE\",\n `Tool '${toolName}' referenced in agent-loop step has no execute function`,\n );\n }\n }\n }\n }\n}\n\n// ─── Public API ──────────────────────────────────────────────────\n\n/**\n * Executes a compiled workflow by walking its step graph from `initialStepId`.\n *\n * Handles all step types (tool calls, LLM prompts, data extraction, branching,\n * loops) and supports automatic retry with exponential backoff for recoverable\n * errors (rate limits, network failures, LLM parse errors).\n *\n * @param workflow - The workflow definition to execute (should be compiled first via {@link compileWorkflow}).\n * @param options - Execution options including tools, agent, inputs, and callbacks.\n * @returns An {@link ExecutionResult} with success status, all step outputs, and the final workflow output.\n */\nexport async function executeWorkflow(\n workflow: WorkflowDefinition,\n options: ExecuteWorkflowOptions,\n): Promise<ExecutionResult> {\n const stepIndex = new Map<string, WorkflowStep>();\n for (const step of workflow.steps) {\n stepIndex.set(step.id, step);\n }\n\n const stepOutputs: Record<string, unknown> = {};\n const wfHash = hashWorkflow(workflow);\n\n // Seed stepOutputs from initial state (completed top-level steps only).\n // If the workflow hash doesn't match, the initial state is stale — ignore it.\n const resumeSkipSteps = new Set<string>();\n const validInitialState =\n options.initialState?.workflowHash === wfHash\n ? options.initialState\n : undefined;\n if (validInitialState) {\n for (const record of validInitialState.stepRecords) {\n if (\n record.status === \"completed\" &&\n record.path.length === 0 &&\n record.output !== undefined\n ) {\n stepOutputs[record.stepId] = record.output;\n resumeSkipSteps.add(record.stepId);\n }\n }\n }\n\n const resolvedOptions: ResolvedExecuteWorkflowOptions = options;\n const resolvedContext = options.context ?? createDefaultDurableContext();\n const timer = new ExecutionTimer(options.limits);\n // When resuming, strip non-completed step records so that steps that were\n // in-progress at pause time don't linger as stale \"running\" entries.\n const cleanedInitialState = validInitialState\n ? {\n ...validInitialState,\n workflowHash: wfHash,\n stepRecords: validInitialState.stepRecords.filter(\n (r) => r.status === \"completed\",\n ),\n }\n : undefined;\n const combinedOnChange: typeof options.onStateChange = options.channel\n ? async (state, delta) => {\n await options.channel?.publish(state);\n await options.onStateChange?.(state, delta);\n }\n : options.onStateChange;\n\n const stateManager = new ExecutionStateManager(\n combinedOnChange,\n cleanedInitialState,\n wfHash,\n );\n await stateManager.runStarted();\n\n try {\n validateWorkflowConfig(workflow, resolvedOptions);\n\n const inputs = options.inputs ?? {};\n validateWorkflowInputs(\n workflow.inputSchema as Record<string, unknown> | undefined,\n inputs,\n );\n stepOutputs.input = inputs;\n\n const chainOutput = await executeChain(\n workflow.initialStepId,\n stepIndex,\n stepOutputs,\n {},\n resolvedOptions,\n resolvedContext,\n timer,\n stateManager,\n [],\n resumeSkipSteps.size > 0 ? resumeSkipSteps : undefined,\n );\n\n if (workflow.outputSchema) {\n // Find the terminating end step for error reporting\n let endStepId = \"unknown\";\n for (const step of workflow.steps) {\n if (step.type === \"end\" && step.id in stepOutputs) {\n endStepId = step.id;\n }\n }\n validateWorkflowOutput(\n workflow.outputSchema as Record<string, unknown>,\n chainOutput,\n endStepId,\n );\n }\n\n await stateManager.runCompleted(chainOutput);\n return {\n success: true,\n stepOutputs,\n output: chainOutput,\n executionState: stateManager.currentState,\n };\n } catch (e) {\n const error =\n e instanceof StepExecutionError\n ? e\n : new ExternalServiceError(\n \"unknown\",\n \"TOOL_EXECUTION_FAILED\",\n e instanceof Error ? e.message : String(e),\n e,\n undefined,\n false,\n );\n await stateManager.runFailed(error);\n return {\n success: false,\n stepOutputs,\n error,\n executionState: stateManager.currentState,\n };\n } finally {\n await options.channel?.close();\n }\n}\n\n// ─── Streaming Helper ────────────────────────────────────────────\n\n/**\n * Convenience wrapper that runs {@link executeWorkflow} and returns an\n * `AsyncIterable<ExecutionState>` that yields every state snapshot.\n *\n * The workflow executes in the background (fire-and-forget). The returned\n * iterable replays all states from the beginning and follows live updates\n * until the run completes or fails.\n */\nexport function executeWorkflowStream(\n workflow: WorkflowDefinition,\n options: ExecuteWorkflowOptions,\n): AsyncIterable<ExecutionState> {\n const channel = new MemoryExecutionStateChannel();\n\n // Fire-and-forget — channel.close() is called by executeWorkflow's finally block.\n executeWorkflow(workflow, { ...options, channel });\n\n return channel.subscribe({ replay: true });\n}\n",
40
40
  "import type { LanguageModel, ToolSet } from \"ai\";\nimport { generateText, stepCountIs, tool } from \"ai\";\nimport { type as arktype } from \"arktype\";\nimport { compileWorkflow } from \"../compiler\";\nimport type { Diagnostic } from \"../compiler/types\";\nimport type { WorkflowDefinition } from \"../types\";\nimport { workflowDefinitionSchema } from \"../types\";\nimport {\n buildWorkflowGenerationPrompt,\n formatDiagnostics,\n serializeToolsForPrompt,\n} from \"./prompt\";\n\n// ─── Types ───────────────────────────────────────────────────────\n\n/** Options for {@link generateWorkflow}. */\nexport interface GenerateWorkflowOptions {\n /** The language model to use for generating the workflow. */\n model: LanguageModel;\n /** Available tools the generated workflow can reference. All tools must have an `outputSchema`. */\n tools: ToolSet;\n /** Natural language description of the task the workflow should accomplish. */\n task: string;\n /** Maximum number of generation attempts if the LLM produces invalid workflows. Defaults to 3. */\n maxRetries?: number;\n /** Additional instructions appended to the system prompt to guide workflow generation. */\n additionalInstructions?: string;\n}\n\n/** The result of generating a workflow via LLM. */\nexport interface GenerateWorkflowResult {\n /** The generated workflow, or `null` if all attempts produced invalid workflows. */\n workflow: WorkflowDefinition | null;\n /** Diagnostics from the last compilation attempt. */\n diagnostics: Diagnostic[];\n /** Total number of generation attempts made. */\n attempts: number;\n}\n\n/** Options for {@link createWorkflowGeneratorTool}. */\nexport interface WorkflowGeneratorToolOptions {\n /** The language model to use for generation. */\n model: LanguageModel;\n /** Available tools the generated workflow can reference. */\n tools?: ToolSet;\n /** Maximum number of generation attempts. Defaults to 3. */\n maxRetries?: number;\n /** Additional instructions appended to the system prompt to guide workflow generation. */\n additionalInstructions?: string;\n}\n\n// ─── generateWorkflow ────────────────────────────────────────────\n\n/**\n * Uses an LLM to generate a validated workflow definition from a natural language\n * task description. The LLM produces a workflow via tool call, which is then compiled\n * and validated. If compilation fails, diagnostics are fed back to the LLM for\n * correction, up to `maxRetries` attempts.\n *\n * @param options - Generation options including model, tools, and task description.\n * @returns A {@link GenerateWorkflowResult} with the generated workflow (or null), diagnostics, and attempt count.\n * @throws If any tool in `options.tools` is missing an `outputSchema`.\n */\nexport async function generateWorkflow(\n options: GenerateWorkflowOptions,\n): Promise<GenerateWorkflowResult> {\n const {\n model,\n tools,\n task,\n maxRetries = 3,\n additionalInstructions,\n } = options;\n\n const missingOutputSchema = Object.entries(tools)\n .filter(([_, t]) => !t.outputSchema)\n .map(([name]) => name);\n if (missingOutputSchema.length > 0) {\n throw new Error(\n `All tools must have an outputSchema. Missing: ${missingOutputSchema.join(\", \")}`,\n );\n }\n\n const serializedTools = await serializeToolsForPrompt(tools);\n const systemPrompt = buildWorkflowGenerationPrompt(\n serializedTools,\n additionalInstructions,\n );\n\n let successWorkflow: WorkflowDefinition | null = null;\n let lastDiagnostics: Diagnostic[] = [];\n let attempts = 0;\n\n const createWorkflowTool = tool({\n description: \"Create a workflow definition\",\n inputSchema: workflowDefinitionSchema,\n execute: async (workflowDef) => {\n attempts++;\n const result = await compileWorkflow(workflowDef, { tools });\n lastDiagnostics = result.diagnostics;\n\n const errors = result.diagnostics.filter((d) => d.severity === \"error\");\n if (errors.length > 0) {\n return {\n success: false,\n errors: formatDiagnostics(result.diagnostics),\n };\n }\n\n successWorkflow = result.workflow ?? workflowDef;\n return { success: true };\n },\n });\n\n await generateText({\n model,\n system: systemPrompt,\n prompt: `Create a workflow to accomplish the following task:\\n\\n${task}`,\n tools: { createWorkflow: createWorkflowTool },\n toolChoice: { type: \"tool\", toolName: \"createWorkflow\" },\n stopWhen: [stepCountIs(maxRetries + 1), () => successWorkflow !== null],\n });\n\n return {\n workflow: successWorkflow,\n diagnostics: lastDiagnostics,\n attempts,\n };\n}\n\n// ─── createWorkflowGeneratorTool ─────────────────────────────────\n\n/**\n * Creates an AI SDK tool that generates validated workflow definitions from\n * natural language task descriptions. Useful for giving an agent the ability\n * to create workflows on the fly.\n *\n * @param options - Configuration including the model and available tools.\n * @returns An AI SDK `tool` that accepts a `{ task: string }` input and returns a {@link GenerateWorkflowResult}.\n */\nexport function createWorkflowGeneratorTool(\n options: WorkflowGeneratorToolOptions,\n) {\n const {\n model,\n tools: baseTools,\n maxRetries,\n additionalInstructions,\n } = options;\n\n return tool({\n description:\n \"Generate a validated workflow definition from a natural language task description\",\n inputSchema: arktype({ task: \"string\" }),\n execute: async ({ task }) => {\n return generateWorkflow({\n model,\n tools: baseTools ?? {},\n task,\n maxRetries,\n additionalInstructions,\n });\n },\n });\n}\n",
41
41
  "import { type } from \"arktype\";\n\nconst expressionSchema = type({\n type: \"'literal'\",\n value: \"unknown\",\n})\n .or({\n type: \"'jmespath'\",\n expression: \"string\",\n })\n .or({\n type: \"'template'\",\n template: \"string\",\n })\n .describe(\n \"a value that must always be wrapped as an expression object — use { type: 'literal', value: ... } for any static value (strings, numbers, booleans, etc.), { type: 'jmespath', expression: '...' } for dynamic data extracted from previous steps' outputs (via their step ids, e.g. `stepId.someKey`) or loop variables (e.g. `itemName.someKey` within a for-each loop body), or { type: 'template', template: '...' } for string interpolation with embedded JMESPath expressions using ${...} syntax (e.g. 'Hello ${user.name}, order ${order.id}') — template expressions always resolve to a string\",\n );\n\nconst toolCallParamsSchema = type({\n type: \"'tool-call'\",\n params: {\n toolName: \"string\",\n toolInput: [\n {\n \"[string]\": expressionSchema,\n },\n \"@\",\n \"a map of input parameter names to their values; ALL values must be wrapped as expression objects — even static strings like email addresses must use { type: 'literal', value: '...' }, never plain primitives\",\n ],\n },\n}).describe(\n \"a step that calls a tool with specified input parameters (which can be static values or expressions)\",\n);\n\nconst switchCaseParamsSchema = type({\n type: \"'switch-case'\",\n params: {\n switchOn: expressionSchema,\n cases: [\n {\n value: expressionSchema.or({ type: \"'default'\" }),\n branchBodyStepId: [\n \"string\",\n \"@\",\n \"the id of the first step in the branch body chain to execute if this case matches\",\n ],\n },\n \"[]\",\n ],\n },\n}).describe(\n \"a step that branches to different step chains based on the value of an expression; each case's chain runs until a step with no nextStepId, at which point execution continues with this step's nextStepId; a case with type 'default' serves as the fallback if no other case matches\",\n);\n\nconst forEachParamsSchema = type({\n type: \"'for-each'\",\n params: {\n target: expressionSchema,\n itemName: [\n \"string\",\n \"@\",\n \"the name to refer to the current item in the list within expressions in the loop body\",\n ],\n loopBodyStepId: [\n \"string\",\n \"@\",\n \"the id of the first step in the loop body chain to execute for each item in the list\",\n ],\n },\n}).describe(\n \"a step that iterates over a list and executes a chain of steps for each item; the loop body chain runs until a step with no nextStepId, at which point the next iteration begins; once all items are exhausted, execution continues with this step's nextStepId\",\n);\n\nconst llmPromptSchema = type({\n type: \"'llm-prompt'\",\n params: {\n prompt: [\n \"string\",\n \"@\",\n \"a template string where JMESPath expressions can be embedded using ${...} syntax (e.g. 'Hello ${user.name}, you have ${length(user.messages)} messages'). All data from previous steps is available via their step ids (e.g. ${stepId.someKey}), and loop variables are available within for-each loop bodies (e.g. ${itemName.someKey})\",\n ],\n outputFormat: [\n \"object\",\n \"@\",\n \"JSON schema specifying the output format expected from the LLM\",\n ],\n },\n}).describe(\n \"a step that prompts an LLM with a text prompt to produce an output in a specified format\",\n);\n\nconst extractDataParamsSchema = type({\n type: \"'extract-data'\",\n params: {\n sourceData: [expressionSchema, \"@\", \"the data to extract information from\"],\n outputFormat: [\n \"object\",\n \"@\",\n \"JSON schema specifying the output format expected from the data extraction\",\n ],\n },\n}).describe(\n \"a step that uses an LLM to extract structured data from a larger blob of source data (e.g. llm responses or tool outputs with unknown output formats) based on a specified output format\",\n);\n\nconst sleepParamsSchema = type({\n type: \"'sleep'\",\n params: {\n durationMs: expressionSchema,\n },\n}).describe(\n \"a step that pauses workflow execution for a specified duration in milliseconds; the durationMs parameter must evaluate to a non-negative number\",\n);\n\nconst waitForConditionParamsSchema = type({\n type: \"'wait-for-condition'\",\n params: {\n conditionStepId: [\n \"string\",\n \"@\",\n \"the id of the first step in the condition-check chain that will be executed on each polling attempt; this chain runs until a step with no nextStepId, then the condition expression is evaluated\",\n ],\n condition: [\n expressionSchema,\n \"@\",\n \"an expression evaluated after each execution of the condition-check chain; if it evaluates to a truthy value, the wait completes with that value as its output; all step outputs from the condition chain are available in scope for this expression\",\n ],\n \"maxAttempts?\": [\n expressionSchema,\n \"@\",\n \"maximum number of polling attempts before giving up (default: 10)\",\n ],\n \"intervalMs?\": [\n expressionSchema,\n \"@\",\n \"milliseconds to wait between polling attempts (default: 1000)\",\n ],\n \"backoffMultiplier?\": [\n expressionSchema,\n \"@\",\n \"multiply the interval by this factor after each attempt (default: 1, i.e. no backoff; use 2 for exponential backoff)\",\n ],\n \"timeoutMs?\": [\n expressionSchema,\n \"@\",\n \"hard timeout in milliseconds; if the total elapsed time exceeds this, the step fails regardless of remaining attempts\",\n ],\n },\n}).describe(\n \"a step that repeatedly executes a condition-check chain (starting at conditionStepId) and then evaluates the condition expression against the updated scope; if the condition expression evaluates to a truthy value, the step completes with that value as its output; otherwise it waits for intervalMs milliseconds (multiplied by backoffMultiplier after each attempt) and tries again, up to maxAttempts times or until timeoutMs milliseconds have elapsed; the condition-check chain runs until a step with no nextStepId, at which point the condition expression is evaluated; all step outputs from the condition chain are available in scope for the condition expression\",\n);\n\nconst agentLoopParamsSchema = type({\n type: \"'agent-loop'\",\n params: {\n instructions: [\n \"string\",\n \"@\",\n \"a template string with task instructions for the agent; JMESPath expressions can be embedded using ${...} syntax (e.g. 'Research ${input.topic} and summarize findings'). All data from previous steps is available via their step ids, and loop variables are available within for-each loop bodies\",\n ],\n tools: [\n [\"string\", \"[]\"],\n \"@\",\n \"names of tools from the workflow's tool set that the agent is allowed to use\",\n ],\n outputFormat: [\n \"object\",\n \"@\",\n \"JSON schema specifying the structured output format expected from the agent\",\n ],\n \"maxSteps?\": [\n expressionSchema,\n \"@\",\n \"maximum number of tool-calling steps the agent may take (default: 10)\",\n ],\n },\n}).describe(\n \"a step that delegates work to an autonomous agent with its own tool-calling loop; USE SPARINGLY — this sacrifices the determinism that is the core value of the workflow DSL. Prefer explicit tool-call, llm-prompt, and control flow steps whenever the task can be decomposed into predictable operations\",\n);\n\nconst startParamsSchema = type({\n type: \"'start'\",\n}).describe(\n \"a step that marks the entry point of a workflow; a no-op marker whose execution continues to the next step\",\n);\n\nconst endSchema = type({\n type: \"'end'\",\n \"params?\": {\n output: expressionSchema,\n },\n}).describe(\n \"a step that indicates the end of a branch; optionally specify an output expression whose evaluated value becomes the workflow's output\",\n);\n\nconst workflowStepSchema = type({\n id: /^[a-zA-Z_][a-zA-Z0-9_]+$/,\n name: \"string\",\n description: \"string\",\n \"nextStepId?\": \"string\",\n}).and(\n toolCallParamsSchema\n .or(llmPromptSchema)\n .or(extractDataParamsSchema)\n .or(switchCaseParamsSchema)\n .or(forEachParamsSchema)\n .or(sleepParamsSchema)\n .or(waitForConditionParamsSchema)\n .or(agentLoopParamsSchema)\n .or(startParamsSchema)\n .or(endSchema),\n);\n\n/**\n * ArkType schema for validating workflow definitions. Use this to validate\n * workflow JSON before passing it to {@link compileWorkflow}.\n */\nexport const workflowDefinitionSchema = type({\n initialStepId: \"string\",\n \"inputSchema?\": [\n \"object\",\n \"@\",\n \"an optional JSON Schema object defining the inputs required to run the workflow; the executor validates provided inputs against this schema, and the validated inputs become available in JMESPath scope via the root identifier 'input' (e.g. input.fieldName)\",\n ],\n \"outputSchema?\": [\n \"object\",\n \"@\",\n \"an optional JSON Schema object declaring the shape of the workflow's output; when present, the value produced by the end step's output expression will be validated against this schema\",\n ],\n steps: [\n [workflowStepSchema, \"[]\"],\n \"@\",\n \"a list of steps to execute in the workflow; these should be in no particular order as execution flow is determined by the nextStepId fields and branching logic within the steps\",\n ],\n});\n\n/**\n * A single step in a workflow. Each step has a type that determines its behavior:\n * - `start` — entry point, declares input schema\n * - `tool-call` — calls a tool with literal or expression-based arguments\n * - `llm-prompt` — prompts an LLM with template string interpolation\n * - `extract-data` — uses an LLM to extract structured data from unstructured source\n * - `switch-case` — branches to different step chains based on an expression value\n * - `for-each` — iterates over an array, executing a chain of steps per item\n * - `agent-loop` — delegates work to an autonomous agent with its own tool-calling loop (use sparingly)\n * - `end` — terminates a branch, optionally producing workflow output\n */\nexport type WorkflowStep = typeof workflowStepSchema.infer;\n\n/**\n * A complete workflow definition. Contains an initial step ID and an ordered list of steps.\n * Execution flow is determined by each step's `nextStepId` and branching/looping logic,\n * not by the order of steps in the array.\n */\nexport type WorkflowDefinition = typeof workflowDefinitionSchema.infer;\n",
42
42
  "import { asSchema, type ToolSet } from \"ai\";\nimport type { Diagnostic } from \"../compiler/types\";\n\nexport async function serializeToolsForPrompt(tools: ToolSet): Promise<string> {\n return JSON.stringify(\n await Promise.all(\n Object.entries(tools).map(async ([toolName, toolDef]) => ({\n name: toolName,\n description: toolDef.description,\n inputSchema: await asSchema(toolDef.inputSchema).jsonSchema,\n outputSchema: toolDef.outputSchema\n ? await asSchema(toolDef.outputSchema).jsonSchema\n : undefined,\n })),\n ),\n );\n}\n\nexport function buildWorkflowGenerationPrompt(\n serializedTools: string,\n additionalInstructions?: string,\n): string {\n return `You are a workflow architect. Your job is to design a workflow definition in the remora DSL that accomplishes a given task using the provided tools. You MUST call the createWorkflow tool with a valid workflow definition.\n\n## Workflow Structure\n\nA workflow has:\n- \\`initialStepId\\`: the id of the first step to execute\n- \\`inputSchema\\` (optional): a JSON Schema object defining the inputs required to run the workflow. When present, provided inputs are validated against this schema and become available in JMESPath expressions via the root identifier \\`input\\` (e.g. \\`input.fieldName\\`).\n- \\`outputSchema\\` (optional): a JSON Schema object declaring the shape of the workflow's output. When present, every \\`end\\` step should have an \\`output\\` expression that evaluates to a value matching this schema.\n- \\`steps\\`: an array of step objects (order does not matter — execution flow is determined by nextStepId links)\n\n## Step Common Fields\n\nEvery step has:\n- \\`id\\`: unique identifier matching /^[a-zA-Z_][a-zA-Z0-9_]+$/ (letters, digits, underscores; at least 2 characters)\n- \\`name\\`: human-readable name\n- \\`description\\`: what this step does\n- \\`type\\`: one of the step types below\n- \\`nextStepId\\` (optional): id of the next step to execute after this one\n\n## Step Types\n\n### start\nA no-op marker that indicates the entry point of a workflow. It takes no parameters. Workflow inputs are declared via \\`inputSchema\\` on the workflow definition itself, not on the start step.\n\\`\\`\\`json\n{\n \"type\": \"start\"\n}\n\\`\\`\\`\n\n### tool-call\nCalls a tool with input parameters. All values in toolInput MUST be expression objects.\n\\`\\`\\`json\n{\n \"type\": \"tool-call\",\n \"params\": {\n \"toolName\": \"name-of-tool\",\n \"toolInput\": {\n \"paramName\": { \"type\": \"literal\", \"value\": \"static value\" },\n \"otherParam\": { \"type\": \"jmespath\", \"expression\": \"previous_step.someField\" }\n }\n }\n}\n\\`\\`\\`\n\n### llm-prompt\nPrompts an LLM with a template string to produce structured output. Use \\${...} syntax to embed JMESPath expressions in the prompt.\n\\`\\`\\`json\n{\n \"type\": \"llm-prompt\",\n \"params\": {\n \"prompt\": \"Classify this ticket: \\${get_tickets.tickets[0].subject}\",\n \"outputFormat\": { \"type\": \"object\", \"properties\": { \"category\": { \"type\": \"string\" } }, \"required\": [\"category\"] }\n }\n}\n\\`\\`\\`\n\n### extract-data\nUses an LLM to extract structured data from a source. Use when you need to parse unstructured or semi-structured data into a known shape.\n\\`\\`\\`json\n{\n \"type\": \"extract-data\",\n \"params\": {\n \"sourceData\": { \"type\": \"jmespath\", \"expression\": \"previous_step.rawContent\" },\n \"outputFormat\": { \"type\": \"object\", \"properties\": { ... }, \"required\": [...] }\n }\n}\n\\`\\`\\`\n\n### switch-case\nBranches execution based on a value. Each case's branch chain runs until a step with no nextStepId, then execution continues with this step's nextStepId. Use \\`{ \"type\": \"default\" }\\` for a fallback case.\n\\`\\`\\`json\n{\n \"type\": \"switch-case\",\n \"params\": {\n \"switchOn\": { \"type\": \"jmespath\", \"expression\": \"classify.category\" },\n \"cases\": [\n {\n \"value\": { \"type\": \"literal\", \"value\": \"critical\" },\n \"branchBodyStepId\": \"handle_critical\"\n },\n {\n \"value\": { \"type\": \"default\" },\n \"branchBodyStepId\": \"handle_other\"\n }\n ]\n }\n}\n\\`\\`\\`\n\n### for-each\nIterates over a list and executes a chain of steps for each item. The loop body chain runs until a step with no nextStepId, then the next iteration begins. After all items, execution continues with this step's nextStepId. The \\`itemName\\` becomes a scoped variable accessible only within the loop body.\n\\`\\`\\`json\n{\n \"type\": \"for-each\",\n \"params\": {\n \"target\": { \"type\": \"jmespath\", \"expression\": \"get_items.items\" },\n \"itemName\": \"item\",\n \"loopBodyStepId\": \"process_item\"\n }\n}\n\\`\\`\\`\n\n### sleep\nPauses workflow execution for a fixed duration. Use when you need to wait between operations (e.g., rate limiting, propagation delays).\n\\`\\`\\`json\n{\n \"type\": \"sleep\",\n \"params\": {\n \"durationMs\": { \"type\": \"literal\", \"value\": 5000 }\n }\n}\n\\`\\`\\`\n\n### wait-for-condition\nRepeatedly executes a condition-check chain and evaluates a condition expression until it returns a truthy value. Use when you need to poll for a state change (e.g., waiting for a job to complete, a resource to become available).\n\nThe \\`conditionStepId\\` points to the first step of a sub-chain that will be executed on each polling attempt. After the chain runs, the \\`condition\\` expression is evaluated against the current scope (including all outputs from the condition chain). If the result is truthy, the wait-for-condition step completes with that value as its output. Otherwise, it waits and retries.\n\nOptional parameters control polling behavior:\n- \\`maxAttempts\\`: maximum number of polling attempts (default: 10)\n- \\`intervalMs\\`: milliseconds between attempts (default: 1000)\n- \\`backoffMultiplier\\`: multiply interval by this after each attempt (default: 1, i.e. no backoff; use 2 for exponential)\n- \\`timeoutMs\\`: hard timeout in milliseconds (optional)\n\\`\\`\\`json\n{\n \"type\": \"wait-for-condition\",\n \"params\": {\n \"conditionStepId\": \"poll_status\",\n \"condition\": { \"type\": \"jmespath\", \"expression\": \"poll_status.status == 'complete'\" },\n \"maxAttempts\": { \"type\": \"literal\", \"value\": 30 },\n \"intervalMs\": { \"type\": \"literal\", \"value\": 2000 },\n \"backoffMultiplier\": { \"type\": \"literal\", \"value\": 1.5 },\n \"timeoutMs\": { \"type\": \"literal\", \"value\": 120000 }\n }\n}\n\\`\\`\\`\n\n### agent-loop\n**USE SPARINGLY.** Delegates work to an autonomous agent with its own tool-calling loop. This step sacrifices the determinism that is the core value of the workflow DSL. Only use when the task genuinely cannot be decomposed into predictable tool-call, llm-prompt, and control flow steps (e.g., open-ended research tasks, complex multi-step reasoning that depends on intermediate results in unpredictable ways).\n\nThe agent receives the interpolated \\`instructions\\` as a prompt, has access to the listed \\`tools\\`, and must produce output matching \\`outputFormat\\`. The \\`maxSteps\\` parameter bounds the number of tool-calling iterations (default: 10).\n\\`\\`\\`json\n{\n \"type\": \"agent-loop\",\n \"params\": {\n \"instructions\": \"Research \\${input.topic} using the available search tools and compile a summary with at least 3 sources.\",\n \"tools\": [\"web_search\", \"fetch_page\"],\n \"outputFormat\": {\n \"type\": \"object\",\n \"properties\": {\n \"summary\": { \"type\": \"string\" },\n \"sources\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n },\n \"required\": [\"summary\", \"sources\"]\n },\n \"maxSteps\": { \"type\": \"literal\", \"value\": 15 }\n }\n}\n\\`\\`\\`\n\n### end\nMarks the end of a branch or the workflow. Must NOT have a nextStepId. Optionally, specify an output expression whose value becomes the workflow's return value.\n\\`\\`\\`json\n{\n \"type\": \"end\"\n}\n\\`\\`\\`\n\nWith output (when the workflow declares an outputSchema):\n\\`\\`\\`json\n{\n \"type\": \"end\",\n \"params\": {\n \"output\": { \"type\": \"jmespath\", \"expression\": \"summarize.result\" }\n }\n}\n\\`\\`\\`\n\n## Expression System\n\nEvery dynamic value must be an expression object:\n\n1. **Literal** — for static values known at design time:\n \\`{ \"type\": \"literal\", \"value\": <any value> }\\`\n\n2. **JMESPath** — for referencing data from previous steps, workflow inputs, or loop variables:\n \\`{ \"type\": \"jmespath\", \"expression\": \"<expression>\" }\\`\n The root of a JMESPath expression must be one of: the \\`input\\` alias (e.g. \\`input.orderId\\`) for workflow inputs, a step id (e.g. \\`get_orders.orders\\`) for previous step outputs, or a loop variable name (e.g. \\`item.id\\` within a for-each body).\n\n3. **Template strings** (llm-prompt only) — embed JMESPath in the prompt string using \\${...}:\n \\`\"Summarize: \\${fetch_data.content}\"\\`\n These are NOT expression objects — they appear directly in the prompt string.\n\n## Structural Rules\n\n1. Step IDs must be unique and match /^[a-zA-Z_][a-zA-Z0-9_]+$/.\n2. Steps link via nextStepId. Omitting nextStepId ends the chain.\n3. Branch body chains (switch-case), loop body chains (for-each), and condition body chains (wait-for-condition) must terminate — their last step must NOT have a nextStepId. Do NOT point them back to the parent or outside the body.\n4. Only reference step IDs of steps that will have executed before the current step (no forward references).\n5. Do not create cycles (for-each handles iteration — you do not need to loop manually).\n6. end steps must NOT have a nextStepId.\n\n## Available Tools\n\nEach tool below includes an \\`outputSchema\\` describing the shape of its return value. Use the output schema to construct correct JMESPath expressions. For example, if a tool returns \\`{ \"type\": \"object\", \"properties\": { \"orders\": { \"type\": \"array\", ... } } }\\`, reference the array as \\`step_id.orders\\`, not \\`step_id\\` alone.\n\n${serializedTools}\n\n## Common Mistakes\n\n1. NEVER use bare primitives in toolInput. ALL values must be expression objects.\n WRONG: \\`{ \"email\": \"user@example.com\" }\\`\n RIGHT: \\`{ \"email\": { \"type\": \"literal\", \"value\": \"user@example.com\" } }\\`\n\n2. Do NOT give end steps a nextStepId.\n\n3. Branch/loop body chains must terminate (last step has no nextStepId). Do NOT point them outside their scope.\n\n4. JMESPath expressions reference step outputs by step ID as the root identifier (e.g. \\`\"get_orders.orders[0].id\"\\`), and workflow inputs via the \\`input\\` alias (e.g. \\`\"input.orderId\"\\`).\n\n5. For-each itemName is a scoped variable accessible ONLY within the loop body steps.\n\n6. Step IDs must be at least 2 characters long.\n\n7. for-each target must resolve to an ARRAY. Check the tool's outputSchema to determine the correct path.\n WRONG: \\`\"target\": { \"type\": \"jmespath\", \"expression\": \"get_orders\" }\\` (when get_orders returns an object with an \\`orders\\` array property)\n RIGHT: \\`\"target\": { \"type\": \"jmespath\", \"expression\": \"get_orders.orders\" }\\`\n\n8. If the workflow needs to return structured data, declare an \\`outputSchema\\` on the workflow and give every \\`end\\` step an \\`output\\` expression that evaluates to a value matching it.\n\n9. wait-for-condition requires both \\`conditionStepId\\` (the chain to execute on each polling attempt) AND \\`condition\\` (the expression to evaluate after the chain runs). The condition expression is evaluated AFTER the chain runs, using the updated scope with all step outputs from the condition chain.\n\n10. Prefer explicit tool-call, llm-prompt, switch-case, and for-each steps over agent-loop. Only use agent-loop when the task is genuinely open-ended and cannot be decomposed into deterministic steps.${additionalInstructions ? `\\n\\n## Additional Instructions\\n\\n${additionalInstructions}` : \"\"}`;\n}\n\nexport function formatDiagnostics(diagnostics: Diagnostic[]): string {\n const errors = diagnostics.filter((d) => d.severity === \"error\");\n if (errors.length === 0) return \"No errors.\";\n return errors\n .map((d) => {\n const loc = d.location\n ? ` (at step ${d.location.stepId}${d.location.field ? `, field ${d.location.field}` : \"\"})`\n : \"\";\n return `- [${d.code}] ${d.message}${loc}`;\n })\n .join(\"\\n\");\n}\n"
43
43
  ],
44
- "mappings": "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",
45
- "debugId": "90EB293769CDA18E64756E2164756E21",
44
+ "mappings": ";AACA;;;ACqBA,IAAM,QAA4B,CAAC,qBAAqB,kBAAkB;AAMnE,SAAS,kBAAkB,CAChC,UACA,OACwB;AAAA,EACxB,IAAI,SAAS,gBAAgB,QAAQ;AAAA,EACrC,MAAM,iBAA+B,CAAC;AAAA,EAEtC,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,aAAa,KAAK,QAAQ,KAAK;AAAA,IACrC,SAAS,WAAW;AAAA,IACpB,eAAe,KAAK,GAAG,WAAW,WAAW;AAAA,EAC/C;AAAA,EAEA,OAAO,EAAE,UAAU,QAAQ,aAAa,eAAe;AAAA;AAOzD,SAAS,mBAAmB,CAC1B,UACA,QACwB;AAAA,EACxB,MAAM,cAA4B,CAAC;AAAA,EAEnC,MAAM,eAAe,SAAS,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAAA,EAClE,IAAI,cAAc;AAAA,IAChB,OAAO,EAAE,UAAU,YAAY;AAAA,EACjC;AAAA,EAEA,MAAM,cAAc;AAAA,EACpB,MAAM,mBAAmB,SAAS;AAAA,EAElC,MAAM,YAA0B;AAAA,IAC9B,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,MAAM;AAAA,IACN,YAAY;AAAA,EACd;AAAA,EAEA,SAAS,MAAM,QAAQ,SAAS;AAAA,EAChC,SAAS,gBAAgB;AAAA,EAEzB,YAAY,KAAK;AAAA,IACf,UAAU;AAAA,IACV,UAAU,EAAE,QAAQ,MAAM,OAAO,gBAAgB;AAAA,IACjD,SACE;AAAA,IACF,MAAM;AAAA,EACR,CAAC;AAAA,EAED,OAAO,EAAE,UAAU,YAAY;AAAA;AAOjC,SAAS,kBAAkB,CACzB,UACA,QACwB;AAAA,EACxB,MAAM,cAA8B,CAAC;AAAA,EAErC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAO;AAAA,IACzB,IAAI,KAAK;AAAA,MAAY;AAAA,IAErB,MAAM,YAAY,GAAG,KAAK;AAAA,IAC1B,KAAK,aAAa;AAAA,IAClB,YAAY,KAAK;AAAA,MACf,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,aAAa,sBAAsB,KAAK;AAAA,MACxC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,SAAS,MAAM,KAAK,GAAG,WAAW;AAAA,EAClC,OAAO,EAAE,UAAU,aAAa,CAAC,EAAE;AAAA;;;AC3G9B,SAAS,cAAc,CAAC,OAG7B;AAAA,EACA,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,aAAuB,CAAC;AAAA,EAE9B,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,MAAM,IAAI,KAAK,EAAE,GAAG;AAAA,MACtB,WAAW,KAAK,KAAK,EAAE;AAAA,IACzB,EAAO;AAAA,MACL,MAAM,IAAI,KAAK,IAAI,IAAI;AAAA;AAAA,EAE3B;AAAA,EAEA,OAAO,EAAE,OAAO,WAAW;AAAA;AAGtB,SAAS,iBAAiB,CAC/B,WAC0B;AAAA,EAC1B,MAAM,aAAa,IAAI;AAAA,EAEvB,YAAY,IAAI,SAAS,WAAW;AAAA,IAClC,MAAM,QAAQ,IAAI;AAAA,IAElB,IAAI,KAAK,YAAY;AAAA,MACnB,MAAM,IAAI,KAAK,UAAU;AAAA,IAC3B;AAAA,IAEA,IAAI,KAAK,SAAS,eAAe;AAAA,MAC/B,WAAW,KAAK,KAAK,OAAO,OAAO;AAAA,QACjC,MAAM,IAAI,EAAE,gBAAgB;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,SAAS,YAAY;AAAA,MAC5B,MAAM,IAAI,KAAK,OAAO,cAAc;AAAA,IACtC;AAAA,IAEA,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,MAAM,IAAI,KAAK,OAAO,eAAe;AAAA,IACvC;AAAA,IAEA,WAAW,IAAI,IAAI,KAAK;AAAA,EAC1B;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,mBAAmB,CACjC,eACA,YACa;AAAA,EACb,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,QAAQ,CAAC,aAAa;AAAA,EAE5B,OAAO,MAAM,SAAS,GAAG;AAAA,IACvB,MAAM,UAAU,MAAM,MAAM;AAAA,IAC5B,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,IAAI,UAAU,IAAI,OAAO;AAAA,MAAG;AAAA,IAC5B,UAAU,IAAI,OAAO;AAAA,IAErB,MAAM,QAAQ,WAAW,IAAI,OAAO;AAAA,IACpC,IAAI,OAAO;AAAA,MACT,WAAW,KAAK,OAAO;AAAA,QACrB,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG;AAAA,UACrB,MAAM,KAAK,CAAC;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAOF,SAAS,YAAY,CAC1B,WACA,YACY;AAAA,EACZ,MAAM,QAAQ;AAAA,EACd,MAAM,OAAO;AAAA,EACb,MAAM,QAAQ;AAAA,EAEd,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,MAAM,UAAU,KAAK,GAAG;AAAA,IACjC,MAAM,IAAI,IAAI,KAAK;AAAA,EACrB;AAAA,EAEA,MAAM,SAAqB,CAAC;AAAA,EAC5B,MAAM,OAAiB,CAAC;AAAA,EAExB,SAAS,GAAG,CAAC,MAAc;AAAA,IACzB,IAAI,CAAC,UAAU,IAAI,IAAI;AAAA,MAAG;AAAA,IAE1B,MAAM,IAAI,MAAM,IAAI;AAAA,IACpB,KAAK,KAAK,IAAI;AAAA,IAEd,MAAM,QAAQ,WAAW,IAAI,IAAI;AAAA,IACjC,IAAI,OAAO;AAAA,MACT,WAAW,QAAQ,OAAO;AAAA,QACxB,IAAI,CAAC,UAAU,IAAI,IAAI;AAAA,UAAG;AAAA,QAE1B,MAAM,IAAI,MAAM,IAAI,IAAI;AAAA,QACxB,IAAI,MAAM;AAAA,UAAW;AAAA,QACrB,IAAI,MAAM,MAAM;AAAA,UAEd,MAAM,aAAa,KAAK,QAAQ,IAAI;AAAA,UACpC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAAA,QACpC,EAAO,SAAI,MAAM,OAAO;AAAA,UACtB,IAAI,IAAI;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IAEA,KAAK,IAAI;AAAA,IACT,MAAM,IAAI,MAAM,KAAK;AAAA;AAAA,EAGvB,WAAW,MAAM,UAAU,KAAK,GAAG;AAAA,IACjC,IAAI,MAAM,IAAI,EAAE,MAAM,OAAO;AAAA,MAC3B,IAAI,EAAE;AAAA,IACR;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAWF,SAAS,mBAAmB,CACjC,kBACA,YAC0B;AAAA,EAC1B,MAAM,eAAe,IAAI;AAAA,EAEzB,WAAW,MAAM,kBAAkB;AAAA,IACjC,aAAa,IAAI,IAAI,IAAI,GAAK;AAAA,EAChC;AAAA,EAEA,WAAW,MAAM,kBAAkB;AAAA,IACjC,MAAM,QAAQ,WAAW,IAAI,EAAE;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,UAAU,aAAa,IAAI,IAAI;AAAA,MACrC,IAAI,CAAC;AAAA,QAAS;AAAA,MAGd,QAAQ,IAAI,EAAE;AAAA,MACd,MAAM,UAAU,aAAa,IAAI,EAAE;AAAA,MACnC,IAAI,SAAS;AAAA,QACX,WAAW,KAAK,SAAS;AAAA,UACvB,QAAQ,IAAI,CAAC;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAOF,SAAS,eAAe,CAC7B,SACA,YACiB;AAAA,EACjB,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,YAAY,IAAI,IAAI,OAAO;AAAA,EAEjC,WAAW,MAAM,SAAS;AAAA,IACxB,SAAS,IAAI,IAAI,CAAC;AAAA,EACpB;AAAA,EAEA,WAAW,MAAM,SAAS;AAAA,IACxB,MAAM,QAAQ,WAAW,IAAI,EAAE;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,WAAW,KAAK,OAAO;AAAA,MACrB,IAAI,UAAU,IAAI,CAAC,GAAG;AAAA,QACpB,SAAS,IAAI,IAAI,SAAS,IAAI,CAAC,KAAK,KAAK,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAkB,CAAC;AAAA,EACzB,YAAY,IAAI,QAAQ,UAAU;AAAA,IAChC,IAAI,QAAQ;AAAA,MAAG,MAAM,KAAK,EAAE;AAAA,EAC9B;AAAA,EAEA,MAAM,QAAkB,CAAC;AAAA,EACzB,OAAO,MAAM,SAAS,GAAG;AAAA,IACvB,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,SAAS;AAAA,MAAW;AAAA,IACxB,MAAM,KAAK,IAAI;AAAA,IAEf,MAAM,QAAQ,WAAW,IAAI,IAAI;AAAA,IACjC,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,WAAW,KAAK,OAAO;AAAA,MACrB,IAAI,CAAC,UAAU,IAAI,CAAC;AAAA,QAAG;AAAA,MACvB,MAAM,aAAa,SAAS,IAAI,CAAC;AAAA,MACjC,IAAI,eAAe;AAAA,QAAW;AAAA,MAC9B,MAAM,SAAS,aAAa;AAAA,MAC5B,SAAS,IAAI,GAAG,MAAM;AAAA,MACtB,IAAI,WAAW,GAAG;AAAA,QAChB,MAAM,KAAK,CAAC;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,WAAW,QAAQ,SAAS,QAAQ;AAAA;AAO5C,SAAS,6BAA6B,CAC3C,eACA,WAIA;AAAA,EACA,MAAM,uBAAuB,IAAI;AAAA,EACjC,MAAM,gBAAgB,IAAI;AAAA,EAE1B,SAAS,SAAS,CAChB,SACA,UACA,aACA;AAAA,IAIA,IAAI,YAAgC;AAAA,IACpC,MAAM,aAAmD,CAAC;AAAA,IAE1D,OAAO,WAAW;AAAA,MAChB,IAAI,qBAAqB,IAAI,SAAS;AAAA,QAAG;AAAA,MAEzC,MAAM,OAAO,UAAU,IAAI,SAAS;AAAA,MACpC,IAAI,CAAC;AAAA,QAAM;AAAA,MAEX,qBAAqB,IAAI,WAAW,IAAI,IAAI,QAAQ,CAAC;AAAA,MACrD,IAAI,gBAAgB,MAAM;AAAA,QACxB,cAAc,IAAI,WAAW,WAAW;AAAA,MAC1C;AAAA,MAEA,WAAW,KAAK,IAAI;AAAA,MACpB,YAAY,KAAK;AAAA,IACnB;AAAA,IAGA,WAAW,QAAQ,YAAY;AAAA,MAC7B,IAAI,KAAK,SAAS,YAAY;AAAA,QAC5B,MAAM,YAAY,IAAI,IAAI,QAAQ;AAAA,QAClC,UAAU,IAAI,KAAK,OAAO,QAAQ;AAAA,QAClC,UAAU,KAAK,OAAO,gBAAgB,WAAW,KAAK,EAAE;AAAA,MAC1D;AAAA,MAEA,IAAI,KAAK,SAAS,eAAe;AAAA,QAC/B,WAAW,KAAK,KAAK,OAAO,OAAO;AAAA,UACjC,UAAU,EAAE,kBAAkB,UAAU,KAAK,EAAE;AAAA,QACjD;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,SAAS,sBAAsB;AAAA,QACtC,UAAU,KAAK,OAAO,iBAAiB,UAAU,KAAK,EAAE;AAAA,MAC1D;AAAA,IACF;AAAA;AAAA,EAGF,UAAU,eAAe,IAAI,KAAO,IAAI;AAAA,EAExC,OAAO,EAAE,sBAAsB,cAAc;AAAA;;;ACrRxC,SAAS,UAAU,CAAC,UAGzB;AAAA,EACA,MAAM,cAA4B,CAAC;AAAA,EAGnC,MAAM,gBAAgB;AAAA,EACtB,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE,GAAG;AAAA,MAChC,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,KAAK;AAAA,QACzC,SAAS,YAAY,KAAK;AAAA,QAC1B,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAGA,MAAM,YAAY,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAAA,EACzD,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS,YAAY;AAAA,MAC5B,QAAQ,aAAa,KAAK;AAAA,MAC1B,IAAI,CAAC,cAAc,KAAK,QAAQ,GAAG;AAAA,QACjC,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,kBAAkB;AAAA,UACtD,SAAS,cAAc;AAAA,UACvB,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,IAAI,UAAU,IAAI,QAAQ,GAAG;AAAA,QAC3B,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,kBAAkB;AAAA,UACtD,SAAS,cAAc,8BAA8B,8BAA6B;AAAA,UAClF,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAGA,QAAQ,OAAO,WAAW,eAAe,eAAe,SAAS,KAAK;AAAA,EACtE,WAAW,SAAS,YAAY;AAAA,IAC9B,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,OAAO,OAAO,KAAK;AAAA,MACvC,SAAS,sBAAsB;AAAA,MAC/B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAGA,IAAI,CAAC,UAAU,IAAI,SAAS,aAAa,GAAG;AAAA,IAC1C,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,MAAM,OAAO,gBAAgB;AAAA,MACjD,SAAS,iBAAiB,SAAS;AAAA,MACnC,MAAM;AAAA,IACR,CAAC;AAAA,IAED,OAAO,EAAE,OAAO,MAAM,YAAY;AAAA,EACpC;AAAA,EAGA,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,OAAO,EAAE,OAAO,MAAM,YAAY;AAAA,EACpC;AAAA,EAEA,MAAM,aAAa,kBAAkB,SAAS;AAAA,EAG9C,MAAM,SAAS,aAAa,WAAW,UAAU;AAAA,EACjD,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,YAAY,MAAM;AAAA,IACxB,IAAI,CAAC;AAAA,MAAW;AAAA,IAChB,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,WAAW,OAAO,aAAa;AAAA,MACnD,SAAS,mBAAmB,MAAM,KAAK,KAAI,OAAO;AAAA,MAClD,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAGA,MAAM,iBAAiB,oBACrB,SAAS,eACT,UACF;AAAA,EAGA,YAAY,OAAO,WAAW;AAAA,IAC5B,IAAI,CAAC,eAAe,IAAI,EAAE,GAAG;AAAA,MAC3B,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,IAAI,OAAO,KAAK;AAAA,QACpC,SAAS,SAAS,2CAA2C,SAAS;AAAA,QACtE,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAGA,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,OAAO,EAAE,OAAO,MAAM,YAAY;AAAA,EACpC;AAAA,EAGA,MAAM,eAAe,CAAC,GAAG,cAAc;AAAA,EACvC,MAAM,mBAAmB,gBAAgB,cAAc,UAAU;AAAA,EACjE,IAAI,CAAC,kBAAkB;AAAA,IAErB,OAAO,EAAE,OAAO,MAAM,YAAY;AAAA,EACpC;AAAA,EAGA,MAAM,eAAe,oBAAoB,kBAAkB,UAAU;AAAA,EAGrE,QAAQ,sBAAsB,kBAAkB,8BAC9C,SAAS,eACT,SACF;AAAA,EAEA,OAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAAA;;;AC5HF,SAAS,gBAAgB,CACvB,UAC6B;AAAA,EAC7B,MAAM,kBAAkB,IAAI;AAAA,EAE5B,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAa;AAAA,IAE/B,QAAQ,UAAU,cAAc,KAAK;AAAA,IACrC,MAAM,OAAO,IAAI;AAAA,IAEjB,YAAY,KAAK,SAAS,OAAO,QAAQ,SAAS,GAAG;AAAA,MACnD,MAAM,aAAa;AAAA,MACnB,IAAI,WAAW,SAAS,WAAW;AAAA,QACjC,KAAK,IAAI,KAAK,EAAE,MAAM,WAAW,OAAO,WAAW,MAAM,CAAC;AAAA,MAC5D,EAAO;AAAA,QACL,KAAK,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA;AAAA,IAEtC;AAAA,IAEA,IAAI,QAAQ,gBAAgB,IAAI,QAAQ;AAAA,IACxC,IAAI,CAAC,OAAO;AAAA,MACV,QAAQ,CAAC;AAAA,MACT,gBAAgB,IAAI,UAAU,KAAK;AAAA,IACrC;AAAA,IACA,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,KAAK,CAAC;AAAA,EACtC;AAAA,EAEA,OAAO;AAAA;AAKT,SAAS,iBAAiB,CACxB,WACA,KACA,wBACkE;AAAA,EAClE,IAAI,gBAAgB;AAAA,EACpB,IAAI,aAAa;AAAA,EACjB,MAAM,gBAA2B,CAAC;AAAA,EAClC,MAAM,OAAO,IAAI;AAAA,EAEjB,WAAW,QAAQ,WAAW;AAAA,IAC5B,MAAM,QAAQ,KAAK,KAAK,IAAI,GAAG;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ;AAAA,IAEA,IAAI,MAAM,SAAS,YAAY;AAAA,MAC7B,aAAa;AAAA,IACf,EAAO;AAAA,MACL,MAAM,aAAa,KAAK,UAAU,MAAM,KAAK;AAAA,MAC7C,IAAI,CAAC,KAAK,IAAI,UAAU,GAAG;AAAA,QACzB,KAAK,IAAI,UAAU;AAAA,QACnB,cAAc,KAAK,MAAM,KAAK;AAAA,MAChC;AAAA;AAAA,EAEJ;AAAA,EAEA,MAAM,gBAAgB,kBAAkB,UAAU;AAAA,EAElD,IAAI,CAAC,YAAY;AAAA,IACf,OAAO,EAAE,QAAQ,wBAAwB,YAAY,OAAO,cAAc;AAAA,EAC5E;AAAA,EAEA,MAAM,WACJ,0BAA0B,OAAO,2BAA2B,WACvD,yBACD,CAAC;AAAA,EAEP,IAAI,cAAc,WAAW,GAAG;AAAA,IAC9B,OAAO;AAAA,MACL,QAAQ,KAAK,UAAU,OAAO,cAAc,GAAG;AAAA,MAC/C,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,QAAQ,KAAK,UAAU,MAAM,cAAc;AAAA,IAC3C,YAAY;AAAA,IACZ;AAAA,EACF;AAAA;AAKK,SAAS,8BAA8B,CAC5C,UACA,OAC0B;AAAA,EAC1B,MAAM,kBAAkB,iBAAiB,QAAQ;AAAA,EACjD,MAAM,SAAmC,CAAC;AAAA,EAE1C,YAAY,UAAU,cAAc,iBAAiB;AAAA,IACnD,MAAM,UAAU,MAAM;AAAA,IACtB,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,MAAM,qBAAqB,QAAQ,YAAY,cAAc,CAAC;AAAA,IAG9D,MAAM,cAAc,IAAI;AAAA,IACxB,WAAW,QAAQ,WAAW;AAAA,MAC5B,WAAW,OAAO,KAAK,KAAK,KAAK,GAAG;AAAA,QAClC,YAAY,IAAI,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,MAAM,wBAAiD,CAAC;AAAA,IACxD,MAAM,eAAyB,CAAC;AAAA,IAChC,IAAI,cAAc;AAAA,IAElB,WAAW,OAAO,aAAa;AAAA,MAC7B,MAAM,eAAe,mBAAmB;AAAA,MACxC,IAAI,iBAAiB;AAAA,QAAW;AAAA,MAEhC,QAAQ,QAAQ,YAAY,kBAAkB,kBAC5C,WACA,KACA,YACF;AAAA,MAEA,sBAAsB,OAAO;AAAA,MAE7B,IAAI,eAAe;AAAA,QACjB,aAAa,KAAK,GAAG;AAAA,MACvB;AAAA,MAEA,IAAI,CAAC,YAAY;AAAA,QACf,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,MAAM,cAAqC;AAAA,MACzC,aAAa;AAAA,QACX,UAAU,aAAa,KAAK;AAAA,QAC5B,YAAY;AAAA,MACd;AAAA,MACA;AAAA,MACA,WAAW,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK;AAAA,IACjD;AAAA,IAEA,IAAI,QAAQ,cAAc;AAAA,MACxB,YAAY,eAAe,QAAQ;AAAA,IACrC;AAAA,IAEA,OAAO,YAAY;AAAA,EACrB;AAAA,EAIA,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAc;AAAA,IAChC,WAAW,YAAY,KAAK,OAAO,OAAO;AAAA,MACxC,IAAI,OAAO,WAAW;AAAA,QACpB,OAAO,UAAU,cAAc;AAAA,QAC/B,IAAI,CAAC,OAAO,UAAU,UAAU,SAAS,KAAK,EAAE,GAAG;AAAA,UACjD,OAAO,UAAU,UAAU,KAAK,KAAK,EAAE;AAAA,UACvC,OAAO,UAAU,UAAU,KAAK;AAAA,QAClC;AAAA,MACF,EAAO,SAAI,MAAM,WAAW;AAAA,QAE1B,MAAM,UAAU,MAAM;AAAA,QACtB,MAAM,cAAqC;AAAA,UACzC,aAAa;AAAA,YACX,UAAU,CAAC;AAAA,YACX,YAAY,CAAC;AAAA,UACf;AAAA,UACA,aAAa;AAAA,UACb,WAAW,CAAC,KAAK,EAAE;AAAA,QACrB;AAAA,QACA,IAAI,QAAQ,cAAc;AAAA,UACxB,YAAY,eAAe,QAAQ;AAAA,QACrC;AAAA,QACA,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;ACrMF,SAAS,eAAe,CAAC,YAAqC;AAAA,EACnE,IAAI,CAAC,sDAAsD,KAAK,UAAU,GAAG;AAAA,IAC3E,OAAO;AAAA,EACT;AAAA,EACA,OAAO,WAAW,MAAM,GAAG;AAAA;AAOtB,SAAS,WAAW,CACzB,QACA,MACgC;AAAA,EAChC,IAAI,UAAU;AAAA,EACd,WAAW,WAAW,MAAM;AAAA,IAC1B,MAAM,aAAa,QAAQ;AAAA,IAG3B,IAAI,CAAC,aAAa;AAAA,MAAU,OAAO;AAAA,IACnC,UAAU,WAAW;AAAA,EACvB;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,aAAa,CAAC,QAAgD;AAAA,EAC5E,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,OAAO,OAAO;AAAA,EACnD,OAAO;AAAA;AAMF,SAAS,mBAAmB,CAAC,QAA2C;AAAA,EAC7E,MAAM,aAAa,OAAO;AAAA,EAG1B,IAAI,CAAC;AAAA,IAAY,OAAO,CAAC;AAAA,EACzB,OAAO,OAAO,QAAQ,UAAU,EAC7B,OAAO,EAAE,GAAG,gBAAgB,WAAW,SAAS,OAAO,EACvD,IAAI,EAAE,UAAU,IAAI;AAAA;AAOlB,SAAS,mBAAmB,CACjC,MACA,OACA,UACA,OACgC;AAAA,EAChC,QAAQ,KAAK;AAAA,SACN,aAAa;AAAA,MAChB,IAAI,CAAC;AAAA,QAAO,OAAO;AAAA,MACnB,MAAM,UAAU,MAAM,KAAK,OAAO;AAAA,MAClC,OAAO,SAAS,gBAAgB;AAAA,IAClC;AAAA,SACK;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAQ,KAAK,OAAO,gBAA4C;AAAA,SAC7D,YAAY;AAAA,MAEf,MAAM,iBAAiB,yBACrB,KAAK,OAAO,gBACZ,OACA,UACA,KACF;AAAA,MACA,IAAI,CAAC;AAAA,QAAgB,OAAO;AAAA,MAC5B,OAAO,EAAE,MAAM,SAAS,OAAO,eAAe;AAAA,IAChD;AAAA,SACK;AAAA,MAGH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAQb,SAAS,wBAAwB,CAC/B,SACA,OACA,UACA,OACgC;AAAA,EAChC,IAAI,YAAgC;AAAA,EACpC,MAAM,UAAU,IAAI;AAAA,EAEpB,OAAO,WAAW;AAAA,IAChB,IAAI,QAAQ,IAAI,SAAS;AAAA,MAAG;AAAA,IAC5B,QAAQ,IAAI,SAAS;AAAA,IAErB,MAAM,OAAO,MAAM,UAAU,IAAI,SAAS;AAAA,IAC1C,IAAI,CAAC;AAAA,MAAM;AAAA,IAEX,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,OAAO,oBAAoB,MAAM,OAAO,UAAU,KAAK;AAAA,IACzD;AAAA,IAEA,YAAY,KAAK;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAQF,SAAS,uBAAuB,CACrC,YACA,YACA,OACA,UACA,OACgC;AAAA,EAChC,MAAM,WAAW,gBAAgB,UAAU;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EAEtB,OAAO,WAAW,aAAa;AAAA,EAC/B,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEpB,IAAI,aAA6C;AAAA,EACjD,IAAI,WAAW,WAAW,SAAS,aAAa;AAAA,IAC9C,aAAa,SAAS;AAAA,EACxB,EAAO;AAAA,IACL,MAAM,iBAAiB,MAAM,UAAU,IAAI,MAAM;AAAA,IACjD,IAAI,CAAC;AAAA,MAAgB,OAAO;AAAA,IAC5B,aAAa,oBAAoB,gBAAgB,OAAO,UAAU,KAAK;AAAA;AAAA,EAGzE,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EAExB,IAAI,UAAU,WAAW;AAAA,IAAG,OAAO;AAAA,EACnC,OAAO,YAAY,YAAY,SAAS;AAAA;;;AC3JnC,SAAS,mBAAmB,CACjC,UACA,OACA,OACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IAEjC,IAAI,KAAK,SAAS,SAAS,KAAK,YAAY;AAAA,MAC1C,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,aAAa;AAAA,QACjD,SAAS,aAAa,KAAK;AAAA,QAC3B,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,KAAK,SAAS,eAAe;AAAA,MAC/B,MAAM,eAAe,KAAK,OAAO,MAAM,OACrC,CAAC,MAAM,EAAE,MAAM,SAAS,SAC1B,EAAE;AAAA,MACF,IAAI,eAAe,GAAG;AAAA,QACpB,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,eAAe;AAAA,UACnD,SAAS,qBAAqB,KAAK,WAAW;AAAA,UAC9C,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MAGA,YAAY,GAAG,MAAM,KAAK,OAAO,MAAM,QAAQ,GAAG;AAAA,QAChD,MAAM,UAAU,iBAAiB,EAAE,kBAAkB,KAAK,IAAI,KAAK;AAAA,QACnE,IAAI,SAAS;AAAA,UACX,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,gBAAgB;AAAA,YACzB;AAAA,YACA,SAAS,4BAA4B,EAAE,8BAA8B,KAAK,oBAAoB,QAAQ,sEAAsE,QAAQ;AAAA,YACpL,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,YAAY;AAAA,MAC5B,MAAM,UAAU,iBACd,KAAK,OAAO,gBACZ,KAAK,IACL,KACF;AAAA,MACA,IAAI,SAAS;AAAA,QACX,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU;AAAA,YACR,QAAQ,KAAK;AAAA,YACb,OAAO;AAAA,UACT;AAAA,UACA,SAAS,0BAA0B,KAAK,OAAO,4BAA4B,KAAK,oBAAoB,QAAQ,oEAAoE,QAAQ;AAAA,UACxL,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,MAAM,UAAU,iBACd,KAAK,OAAO,iBACZ,KAAK,IACL,KACF;AAAA,MACA,IAAI,SAAS;AAAA,QACX,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU;AAAA,YACR,QAAQ,KAAK;AAAA,YACb,OAAO;AAAA,UACT;AAAA,UACA,SAAS,+BAA+B,KAAK,OAAO,6BAA6B,KAAK,oBAAoB,QAAQ,yEAAyE,QAAQ;AAAA,UACnM,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAGA,IAAI,SAAS,cAAc;AAAA,IAEzB,MAAM,eAAe,yBACnB,SAAS,eACT,KACF;AAAA,IACA,WAAW,SAAS,cAAc;AAAA,MAChC,IAAI,MAAM,SAAS,eAAe;AAAA,QAChC,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,MAAM,QAAQ,OAAO,aAAa;AAAA,UACtD,SAAS,SAAS,MAAM;AAAA,UACxB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAO,SAAI,MAAM,SAAS,sBAAsB;AAAA,QAC9C,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,MAAM,QAAQ,OAAO,SAAS;AAAA,UAClD,SAAS,aAAa,MAAM;AAAA,UAC5B,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAO,SAAI,MAAM,SAAS,mBAAmB;AAAA,QAE3C,MAAM,OAAO,MAAM,UAAU,IAAI,MAAM,MAAM;AAAA,QAC7C,IAAI,MAAM,SAAS,SAAS,KAAK,QAAQ,QAAQ;AAAA,UAC/C,MAAM,OAAO,KAAK,OAAO;AAAA,UACzB,MAAM,eAAe,SAAS;AAAA,UAC9B,IAAI,KAAK,SAAS,WAAW;AAAA,YAC3B,YAAY,KACV,GAAG,4BACD,KAAK,OACL,cACA,MAAM,MACR,CACF;AAAA,UACF,EAAO,SAAI,KAAK,SAAS,YAAY;AAAA,YACnC,MAAM,iBAAiB,wBACrB,KAAK,YACL,MAAM,QACN,SAAS,MACT,UACA,KACF;AAAA,YACA,IAAI,gBAAgB;AAAA,cAClB,YAAY,KACV,GAAG,4BACD,gBACA,cACA,MAAM,QACN,KAAK,UACP,CACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAO;AAAA,IACL,WAAW,QAAQ,SAAS,OAAO;AAAA,MACjC,IAAI,KAAK,SAAS,SAAS,KAAK,QAAQ,QAAQ;AAAA,QAC9C,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,gBAAgB;AAAA,UACpD,SAAS,aAAa,KAAK;AAAA,UAC3B,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,EAGF,OAAO;AAAA;AAST,SAAS,gBAAgB,CACvB,SACA,cACA,OACiD;AAAA,EACjD,IAAI,YAAgC;AAAA,EACpC,MAAM,UAAU,IAAI;AAAA,EAEpB,OAAO,WAAW;AAAA,IAChB,IAAI,QAAQ,IAAI,SAAS;AAAA,MAAG;AAAA,IAC5B,QAAQ,IAAI,SAAS;AAAA,IAErB,MAAM,OAAO,MAAM,UAAU,IAAI,SAAS;AAAA,IAC1C,IAAI,CAAC;AAAA,MAAM;AAAA,IAEX,IAAI,KAAK,YAAY;AAAA,MAEnB,MAAM,YAAY,MAAM,cAAc,IAAI,KAAK,UAAU;AAAA,MACzD,MAAM,eAAe,MAAM,cAAc,IAAI,SAAS;AAAA,MAKtD,KACG,iBAAiB,gBAAgB,cAAc,YAChD,cAAc,cACd;AAAA,QACA,OAAO,EAAE,cAAc,WAAW,QAAQ,KAAK,WAAW;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,YAAY,KAAK;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAcT,SAAS,wBAAwB,CAC/B,SACA,OACe;AAAA,EACf,OAAO,oBAAoB,SAAS,OAAO,IAAI,GAAK;AAAA;AAGtD,SAAS,mBAAmB,CAC1B,SACA,OACA,SACe;AAAA,EACf,MAAM,SAAwB,CAAC;AAAA,EAC/B,IAAI,YAAgC;AAAA,EAEpC,OAAO,WAAW;AAAA,IAChB,IAAI,QAAQ,IAAI,SAAS;AAAA,MAAG;AAAA,IAC5B,QAAQ,IAAI,SAAS;AAAA,IAErB,MAAM,OAAO,MAAM,UAAU,IAAI,SAAS;AAAA,IAC1C,IAAI,CAAC;AAAA,MAAM;AAAA,IAEX,IAAI,CAAC,KAAK,YAAY;AAAA,MAEpB,IAAI,KAAK,SAAS,OAAO;AAAA,QACvB,OAAO,KAAK;AAAA,UACV,MAAM,KAAK,QAAQ,SAAS,oBAAoB;AAAA,UAChD,QAAQ,KAAK;AAAA,QACf,CAAC;AAAA,MACH,EAAO,SAAI,KAAK,SAAS,eAAe;AAAA,QAEtC,WAAW,KAAK,KAAK,OAAO,OAAO;AAAA,UACjC,OAAO,KACL,GAAG,oBAAoB,EAAE,kBAAkB,OAAO,OAAO,CAC3D;AAAA,QACF;AAAA,MACF,EAAO,SAAI,KAAK,SAAS,YAAY;AAAA,QAEnC,OAAO,KACL,GAAG,oBAAoB,KAAK,OAAO,gBAAgB,OAAO,OAAO,CACnE;AAAA,MACF,EAAO;AAAA,QAEL,OAAO,KAAK,EAAE,MAAM,eAAe,QAAQ,KAAK,GAAG,CAAC;AAAA;AAAA,MAEtD;AAAA,IACF;AAAA,IAEA,YAAY,KAAK;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,2BAA2B,CAClC,OACA,QACA,QACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,eAAe,OAAO;AAAA,EAE5B,IAAI,OAAO,iBAAiB;AAAA,IAAU,OAAO;AAAA,EAE7C,MAAM,aAAa,aAAa,KAAK;AAAA,EACrC,IAAI,iBAAiB,YAAY;AAAA,IAC/B,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,MAC3C,SAAS,aAAa,oCAAoC,yCAAyC;AAAA,MACnG,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA,EACT;AAAA,EAGA,IACE,iBAAiB,YACjB,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,GACpB;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC3B,MAAM,UAAU,SAAS,OACvB,CAAC,QAAiB,OAAO,QAAQ,YAAY,EAAG,OAAkB,IACpE;AAAA,MACA,IAAI,QAAQ,SAAS,GAAG;AAAA,QACtB,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,UAC3C,SAAS,aAAa,wDAAwD,QAAQ,KAAK,IAAI;AAAA,UAC/F,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,OAAO;AAAA,IAC1B,IAAI,cAAc,OAAO,eAAe,UAAU;AAAA,MAChD,YAAY,KAAK,QAAQ,OAAO,QAAQ,GAAG,GAAG;AAAA,QAC5C,MAAM,aAAc,WAAuC;AAAA,QAC3D,IACE,cACA,OAAO,eAAe,YACtB,UAAU,YACV;AAAA,UACA,MAAM,eAAgB,WAAgC;AAAA,UACtD,MAAM,aAAa,aAAa,GAAG;AAAA,UACnC,IAAI,iBAAiB,YAAY;AAAA,YAC/B,YAAY,KAAK;AAAA,cACf,UAAU;AAAA,cACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,cAC3C,SAAS,aAAa,iCAAiC,kBAAkB,mCAAmC;AAAA,cAC5G,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,OAAwB;AAAA,EAC5C,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,OAAO,OAAO;AAAA;AAQhB,SAAS,2BAA2B,CAClC,gBACA,cACA,QACA,YACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,eAAe,aAAa;AAAA,EAClC,MAAM,eAAe,eAAe;AAAA,EAEpC,IAAI,OAAO,iBAAiB,YAAY,OAAO,iBAAiB,UAAU;AAAA,IACxE,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,iBAAiB,cAAc;AAAA,IACjC,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,MAC3C,SAAS,aAAa,8BAA8B,iCAAiC,2CAA2C;AAAA,MAChI,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,iBAAiB,UAAU;AAAA,IAC7B,MAAM,mBAAmB,aAAa;AAAA,IACtC,MAAM,gBAAiB,eAAe,cAAc,CAAC;AAAA,IAKrD,IAAI,MAAM,QAAQ,gBAAgB,GAAG;AAAA,MACnC,MAAM,UAAU,iBAAiB,OAC/B,CAAC,QACC,OAAO,QAAQ,YAAY,EAAG,OAAkB,cACpD;AAAA,MACA,IAAI,QAAQ,SAAS,GAAG;AAAA,QACtB,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,UAC3C,SAAS,aAAa,8BAA8B,oDAAoD,QAAQ,KAAK,IAAI;AAAA,UACzH,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,MAAM,gBAAiB,aAAa,cAAc,CAAC;AAAA,IAInD,YAAY,KAAK,uBAAuB,OAAO,QAAQ,aAAa,GAAG;AAAA,MACrE,MAAM,qBAAqB,cAAc;AAAA,MACzC,IAAI,CAAC;AAAA,QAAoB;AAAA,MACzB,MAAM,mBAAmB,mBAAmB;AAAA,MAC5C,MAAM,mBAAmB,mBAAmB;AAAA,MAC5C,IACE,OAAO,qBAAqB,YAC5B,OAAO,qBAAqB,YAC5B,qBAAqB,kBACrB;AAAA,QACA,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,OAAO,gBAAgB;AAAA,UAC3C,SAAS,aAAa,8BAA8B,sBAAsB,kBAAkB,+CAA+C;AAAA,UAC3I,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;ACvaF,SAAS,qBAAqB,CACnC,UACA,OACA,OACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAY;AAAA,IAC9B,IAAI,KAAK,OAAO,OAAO,SAAS;AAAA,MAAY;AAAA,IAE5C,MAAM,aAAa,KAAK,OAAO,OAAO;AAAA,IAGtC,MAAM,WAAW,gBAAgB,UAAU;AAAA,IAC3C,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,OAAO,WAAW,aAAa;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAQ;AAAA,IAEb,IAAI,eAA+C;AAAA,IACnD,IAAI,WAAW,WAAW,SAAS,aAAa;AAAA,MAC9C,eAAe,SAAS;AAAA,IAC1B,EAAO;AAAA,MACL,MAAM,iBAAiB,MAAM,UAAU,IAAI,MAAM;AAAA,MACjD,IAAI,CAAC;AAAA,QAAgB;AAAA,MACrB,eAAe,oBACb,gBACA,OACA,UACA,KACF;AAAA;AAAA,IAEF,IAAI,CAAC;AAAA,MAAc;AAAA,IAEnB,MAAM,iBAAiB,YAAY,cAAc,SAAS;AAAA,IAC1D,IAAI,CAAC;AAAA,MAAgB;AAAA,IAErB,MAAM,eAAe,cAAc,cAAc;AAAA,IACjD,IAAI,iBAAiB;AAAA,MAAS;AAAA,IAE9B,IAAI,iBAAiB,UAAU;AAAA,MAC7B,MAAM,cAAc,oBAAoB,cAAc;AAAA,MACtD,MAAM,OACJ,YAAY,SAAS,IACjB,iBAAiB,YAAY,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,EAAE,KAAK,MAAM,OACvE;AAAA,MAEN,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,gBAAgB;AAAA,QACpD,SAAS,oBAAoB,mDAAmD;AAAA,QAChF,MAAM;AAAA,MACR,CAAC;AAAA,IACH,EAAO,SAAI,iBAAiB,MAAM;AAAA,MAChC,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,gBAAgB;AAAA,QACpD,SAAS,oBAAoB,iCAAiC;AAAA,QAC9D,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AC1ET;AAKO,SAAS,sBAAsB,CACpC,YACmD;AAAA,EACnD,IAAI;AAAA,IACF,QAAQ,UAAU;AAAA,IAClB,OAAO,EAAE,OAAO,KAAK;AAAA,IACrB,OAAO,GAAG;AAAA,IACV,OAAO,EAAE,OAAO,OAAO,OAAQ,EAAY,QAAQ;AAAA;AAAA;AAuBhD,SAAS,sBAAsB,CAAC,YAA8B;AAAA,EACnE,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,QAAQ,UAAU;AAAA,IACxB,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA,EAGV,MAAM,QAAQ,IAAI;AAAA,EAClB,aAAa,KAAK,KAAK;AAAA,EACvB,OAAO,CAAC,GAAG,KAAK;AAAA;AAGlB,SAAS,YAAY,CAAC,MAAe,OAA0B;AAAA,EAC7D,IAAI,CAAC,QAAQ,OAAO,SAAS;AAAA,IAAU;AAAA,EAEvC,QAAQ,KAAK;AAAA,SACN;AAAA,MAEH,IAAI,KAAK;AAAA,QAAM,MAAM,IAAI,KAAK,IAAI;AAAA,MAClC;AAAA,SAEG;AAAA,MAEH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SAEG;AAAA,MAIH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SAEG;AAAA,SACA;AAAA,MAEH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SAEG;AAAA,MAEH,IAAI,KAAK,UAAU;AAAA,QACjB,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,aAAa,OAAO,KAAK;AAAA,QAC3B;AAAA,MACF;AAAA,MACA;AAAA,SAEG;AAAA,SACA;AAAA,MACH,IAAI,KAAK,UAAU;AAAA,QACjB,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,aAAa,OAAO,KAAK;AAAA,QAC3B;AAAA,MACF;AAAA,MACA;AAAA,SAEG;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,aAAa,KAAK,MAAM,KAAK;AAAA,MAC5C,IAAI,KAAK;AAAA,QAAO,aAAa,KAAK,OAAO,KAAK;AAAA,MAC9C;AAAA,SAEG;AAAA,SACA;AAAA,MACH,IAAI,KAAK,WAAW;AAAA,QAAI,aAAa,KAAK,SAAS,IAAI,KAAK;AAAA,MAC5D;AAAA,SAEG;AAAA,MAEH,IAAI,KAAK;AAAA,QAAM,aAAa,KAAK,MAAM,KAAK;AAAA,MAC5C;AAAA,SAEG;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SAEG;AAAA,SACA;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SAEG;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MAEH;AAAA,SAEG,gBAAgB;AAAA,MACnB,MAAM,UAAW,KAAiC;AAAA,MAClD,IAAI,SAAS;AAAA,QACX,aAAa,SAAS,KAAK;AAAA,MAC7B;AAAA,MACA;AAAA,IACF;AAAA;AAAA,MAIE,IAAI,KAAK;AAAA,QAAM,aAAa,KAAK,MAAM,KAAK;AAAA,MAC5C,IAAI,KAAK;AAAA,QAAO,aAAa,KAAK,OAAO,KAAK;AAAA,MAC9C,IAAI,KAAK,UAAU;AAAA,QACjB,WAAW,SAAS,KAAK,UAAU;AAAA,UACjC,aAAa,OAAO,KAAK;AAAA,QAC3B;AAAA,MACF;AAAA,MACA;AAAA;AAAA;AAQN,SAAS,mBAAmB,CAAC,MAAe,OAA0B;AAAA,EACpE,IAAI,CAAC;AAAA,IAAM;AAAA,EAEX,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,MAAM,IAAI,KAAK,IAAI;AAAA,MAClC;AAAA,SACG;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA,SACG;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,IAAI,KAAK;AAAA,QAAM,oBAAoB,KAAK,MAAM,KAAK;AAAA,MACnD;AAAA;AAAA,MAGA,aAAa,MAAM,KAAK;AAAA,MACxB;AAAA;AAAA;AAmBC,SAAS,0BAA0B,CACxC,UAC0B;AAAA,EAC1B,MAAM,cAAoC,CAAC;AAAA,EAC3C,MAAM,WAAqB,CAAC;AAAA,EAC5B,IAAI,IAAI;AAAA,EAER,OAAO,IAAI,SAAS,QAAQ;AAAA,IAC1B,IAAI,SAAS,OAAO,OAAO,SAAS,IAAI,OAAO,KAAK;AAAA,MAClD,MAAM,QAAQ;AAAA,MACd,KAAK;AAAA,MACL,IAAI,QAAQ;AAAA,MACZ,MAAM,YAAY;AAAA,MAElB,OAAO,IAAI,SAAS,UAAU,QAAQ,GAAG;AAAA,QACvC,IAAI,SAAS,OAAO;AAAA,UAAK;AAAA,QACpB,SAAI,SAAS,OAAO;AAAA,UAAK;AAAA,QAC9B,IAAI,QAAQ;AAAA,UAAG;AAAA,MACjB;AAAA,MAEA,IAAI,UAAU,GAAG;AAAA,QACf,MAAM,aAAa,SAAS,MAAM,WAAW,CAAC;AAAA,QAC9C,YAAY,KAAK,EAAE,YAAY,OAAO,KAAK,IAAI,EAAE,CAAC;AAAA,QAClD;AAAA,MACF,EAAO;AAAA,QACL,SAAS,KAAK,KAAK;AAAA;AAAA,IAEvB,EAAO;AAAA,MACL;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO,EAAE,aAAa,SAAS;AAAA;;;AClN1B,SAAS,gBAAgB,CAC9B,UACA,OACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAGnC,QAAQ,aAAa,wBAAwB,mBAAmB,QAAQ;AAAA,EACxE,YAAY,KAAK,GAAG,mBAAmB;AAAA,EAEvC,WAAW,QAAQ,aAAa;AAAA,IAE9B,MAAM,eAAe,uBAAuB,KAAK,UAAU;AAAA,IAC3D,IAAI,CAAC,aAAa,OAAO;AAAA,MACvB,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,QACnD,SAAS,+BAA+B,KAAK,gBAAgB,aAAa;AAAA,QAC1E,MAAM;AAAA,MACR,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAGA,wBAAwB,MAAM,OAAO,CAAC,CAAC,SAAS,aAAa,WAAW;AAAA,EAC1E;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,0BAA0B,CACjC,KACA,QACA,OACA,aACA,qBACM;AAAA,EACN,IAAI,IAAI,SAAS,cAAc,IAAI,YAAY;AAAA,IAC7C,YAAY,KAAK;AAAA,MACf,YAAY,IAAI;AAAA,MAChB;AAAA,MACA,OAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,EAAO,SAAI,IAAI,SAAS,cAAc,IAAI,UAAU;AAAA,IAClD,QAAQ,aAAa,eAAe,aAAa,2BAC/C,IAAI,QACN;AAAA,IACA,WAAW,MAAM,eAAe;AAAA,MAC9B,YAAY,KAAK;AAAA,QACf,YAAY,GAAG;AAAA,QACf;AAAA,QACA,OAAO,GAAG,kBAAkB,GAAG,SAAS,GAAG;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO,UAAU;AAAA,MAC1B,oBAAoB,KAAK;AAAA,QACvB,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,OAAO,GAAG,kBAAkB,OAAO;AAAA,QACvD,SAAS,4CAA4C;AAAA,QACrD,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAGF,SAAS,kBAAkB,CAAC,UAG1B;AAAA,EACA,MAAM,cAAgC,CAAC;AAAA,EACvC,MAAM,sBAAoC,CAAC;AAAA,EAE3C,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,YAAY,KAAK,QAAQ,OAAO,QAAQ,KAAK,OAAO,SAAS,GAAG;AAAA,UAC9D,2BACE,KACA,KAAK,IACL,oBAAoB,OACpB,aACA,mBACF;AAAA,QACF;AAAA,QACA;AAAA,WAEG;AAAA,QACH,2BACE,KAAK,OAAO,UACZ,KAAK,IACL,mBACA,aACA,mBACF;AAAA,QACA,YAAY,GAAG,MAAM,KAAK,OAAO,MAAM,QAAQ,GAAG;AAAA,UAChD,2BACE,EAAE,OACF,KAAK,IACL,gBAAgB,YAChB,aACA,mBACF;AAAA,QACF;AAAA,QACA;AAAA,WAEG;AAAA,QACH,2BACE,KAAK,OAAO,QACZ,KAAK,IACL,iBACA,aACA,mBACF;AAAA,QACA;AAAA,WAEG;AAAA,QACH,2BACE,KAAK,OAAO,YACZ,KAAK,IACL,qBACA,aACA,mBACF;AAAA,QACA;AAAA,WAEG;AAAA,QACH;AAAA,WAEG;AAAA,QACH,IAAI,KAAK,QAAQ,QAAQ;AAAA,UACvB,2BACE,KAAK,OAAO,QACZ,KAAK,IACL,iBACA,aACA,mBACF;AAAA,QACF;AAAA,QACA;AAAA,WAEG,cAAc;AAAA,QACjB,QAAQ,aAAa,eAAe,aAClC,2BAA2B,KAAK,OAAO,MAAM;AAAA,QAC/C,WAAW,MAAM,eAAe;AAAA,UAC9B,YAAY,KAAK;AAAA,YACf,YAAY,GAAG;AAAA,YACf,QAAQ,KAAK;AAAA,YACb,OAAO,iBAAiB,GAAG,SAAS,GAAG;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,QACA,WAAW,OAAO,UAAU;AAAA,UAC1B,oBAAoB,KAAK;AAAA,YACvB,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,iBAAiB;AAAA,YAC1B;AAAA,YACA,SAAS,4CAA4C;AAAA,YACrD,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,WAEK,cAAc;AAAA,QACjB,QAAQ,aAAa,eAAe,aAClC,2BAA2B,KAAK,OAAO,YAAY;AAAA,QACrD,WAAW,MAAM,eAAe;AAAA,UAC9B,YAAY,KAAK;AAAA,YACf,YAAY,GAAG;AAAA,YACf,QAAQ,KAAK;AAAA,YACb,OAAO,uBAAuB,GAAG,SAAS,GAAG;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,QACA,WAAW,OAAO,UAAU;AAAA,UAC1B,oBAAoB,KAAK;AAAA,YACvB,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,uBAAuB;AAAA,YAChC;AAAA,YACA,SAAS,4CAA4C;AAAA,YACrD,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,QACA,IAAI,KAAK,OAAO,UAAU;AAAA,UACxB,2BACE,KAAK,OAAO,UACZ,KAAK,IACL,mBACA,aACA,mBACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO,EAAE,aAAa,oBAAoB;AAAA;AAG5C,SAAS,uBAAuB,CAC9B,MACA,OACA,gBACA,aACM;AAAA,EACN,MAAM,WAAW,uBAAuB,KAAK,UAAU;AAAA,EACvD,MAAM,WAAW,MAAM,qBAAqB,IAAI,KAAK,MAAM;AAAA,EAC3D,MAAM,eAAe,MAAM,aAAa,IAAI,KAAK,MAAM;AAAA,EAEvD,WAAW,QAAQ,UAAU;AAAA,IAE3B,IAAI,SAAS,WAAW;AAAA,MAAgB;AAAA,IAGxC,IAAI,UAAU,IAAI,IAAI;AAAA,MAAG;AAAA,IAGzB,IAAI,MAAM,UAAU,IAAI,IAAI,GAAG;AAAA,MAE7B,IAAI,gBAAgB,CAAC,aAAa,IAAI,IAAI,GAAG;AAAA,QAC3C,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,UACnD,SAAS,eAAe,KAAK,gCAAgC,kDAAkD,KAAK;AAAA,UACpH,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,IAEA,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,MACnD,SAAS,eAAe,KAAK,2BAA2B;AAAA,MACxD,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA;;;AC1PF,IAAM,iBAA2C;AAAA,EAC/C,aAAa,OAAO;AAAA,EACpB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,cAAc;AAChB;AAOO,SAAS,cAAc,CAC5B,UACA,QACc;AAAA,EACd,MAAM,WAAW,KAAK,mBAAmB,OAAO;AAAA,EAChD,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS,SAAS;AAAA,MACzB,MAAM,OAAO,KAAK,OAAO;AAAA,MACzB,IAAI,KAAK,SAAS,aAAa,OAAO,KAAK,UAAU,UAAU;AAAA,QAC7D,IAAI,KAAK,QAAQ,SAAS,YAAY;AAAA,UACpC,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,oBAAoB;AAAA,YACxD,SAAS,kBAAkB,KAAK,4BAA4B,SAAS;AAAA,YACrE,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,QAAQ,aAAa,YAAY,mBAAmB,cAClD,KAAK;AAAA,MAEP,IACE,aAAa,SAAS,aACtB,OAAO,YAAY,UAAU,UAC7B;AAAA,QACA,IAAI,YAAY,QAAQ,SAAS,aAAa;AAAA,UAC5C,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,qBAAqB;AAAA,YACzD,SAAS,eAAe,YAAY,0BAA0B,SAAS;AAAA,YACvE,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,IACE,YAAY,SAAS,aACrB,OAAO,WAAW,UAAU,UAC5B;AAAA,QACA,IAAI,WAAW,QAAQ,SAAS,YAAY;AAAA,UAC1C,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,oBAAoB;AAAA,YACxD,SAAS,cAAc,WAAW,4BAA4B,SAAS;AAAA,YACvE,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,IACE,mBAAmB,SAAS,aAC5B,OAAO,kBAAkB,UAAU,UACnC;AAAA,QACA,IACE,kBAAkB,QAAQ,SAAS,wBACnC,kBAAkB,QAAQ,SAAS,sBACnC;AAAA,UACA,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,2BAA2B;AAAA,YAC/D,SAAS,qBAAqB,kBAAkB,mCAAmC,SAAS,yBAAyB,SAAS;AAAA,YAC9H,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,IACE,WAAW,SAAS,aACpB,OAAO,UAAU,UAAU,UAC3B;AAAA,QACA,IAAI,UAAU,QAAQ,SAAS,cAAc;AAAA,UAC3C,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,mBAAmB;AAAA,YACvD,SAAS,aAAa,UAAU,4BAA4B,SAAS;AAAA,YACrE,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AChGF,SAAS,qBAAqB,CACnC,UACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IACE,KAAK,SAAS,gBACd,KAAK,SAAS,kBACd,KAAK,SAAS,cACd;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,KAAK,OAAO;AAAA,IACjC,IAAI,CAAC,gBAAgB,OAAO,iBAAiB;AAAA,MAAU;AAAA,IAEvD,mBACE,cACA,KAAK,IACL,uBACA,WACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAIT,IAAM,uBAAuB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,kBAAkB,CACzB,QACA,QACA,MACA,aACM;AAAA,EACN,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,qBAAqB,IAAI,GAAG,GAAG;AAAA,MACjC,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,OAAO,GAAG,QAAQ,MAAM;AAAA,QAC5C,SAAS,SAAS,8BAA8B,gBAAgB,KAAK,UAAU,KAAK;AAAA,QACpF,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,QAAQ,cAAc,OAAO,UAAU,YAAY,QAAQ,GAAG;AAAA,MAChE,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,OAAO,GAAG,gBAAgB;AAAA,QAC9C,SAAS,SAAS,mDAAmD;AAAA,QACrE,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxE,mBACE,OACA,QACA,GAAG,QAAQ,OACX,WACF;AAAA,IACF;AAAA,EACF;AAAA;;;ACnFK,SAAS,kBAAkB,CAAC,UAA4C;AAAA,EAC7E,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,UAAU,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAAA,EAGvD,IAAI,CAAC,QAAQ,IAAI,SAAS,aAAa,GAAG;AAAA,IACxC,YAAY,KAAK;AAAA,MACf,UAAU;AAAA,MACV,UAAU,EAAE,QAAQ,MAAM,OAAO,gBAAgB;AAAA,MACjD,SAAS,iBAAiB,SAAS;AAAA,MACnC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,QAAQ,SAAS,OAAO;AAAA,IAEjC,IAAI,KAAK,cAAc,CAAC,QAAQ,IAAI,KAAK,UAAU,GAAG;AAAA,MACpD,YAAY,KAAK;AAAA,QACf,UAAU;AAAA,QACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,aAAa;AAAA,QACjD,SAAS,SAAS,KAAK,0CAA0C,KAAK;AAAA,QACtE,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,KAAK,SAAS,eAAe;AAAA,MAC/B,YAAY,GAAG,MAAM,KAAK,OAAO,MAAM,QAAQ,GAAG;AAAA,QAChD,IAAI,CAAC,QAAQ,IAAI,EAAE,gBAAgB,GAAG;AAAA,UACpC,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,gBAAgB;AAAA,YACzB;AAAA,YACA,SAAS,SAAS,KAAK,YAAY,+CAA+C,EAAE;AAAA,YACpF,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,YAAY;AAAA,MAC5B,IAAI,CAAC,QAAQ,IAAI,KAAK,OAAO,cAAc,GAAG;AAAA,QAC5C,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU;AAAA,YACR,QAAQ,KAAK;AAAA,YACb,OAAO;AAAA,UACT;AAAA,UACA,SAAS,SAAS,KAAK,+CAA+C,KAAK,OAAO;AAAA,UAClF,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,IAAI,CAAC,QAAQ,IAAI,KAAK,OAAO,eAAe,GAAG;AAAA,QAC7C,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU;AAAA,YACR,QAAQ,KAAK;AAAA,YACb,OAAO;AAAA,UACT;AAAA,UACA,SAAS,SAAS,KAAK,oDAAoD,KAAK,OAAO;AAAA,UACvF,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;ACnEF,SAAS,sBAAsB,CACpC,UACA,OACA,OACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAa;AAAA,IAE/B,MAAM,UAAU,MAAM,KAAK,OAAO;AAAA,IAClC,IAAI,CAAC,SAAS,YAAY;AAAA,MAAY;AAAA,IAEtC,MAAM,cAAc,QAAQ,YAAY;AAAA,IAKxC,YAAY,KAAK,SAAS,OAAO,QAAQ,KAAK,OAAO,SAAS,GAAG;AAAA,MAC/D,MAAM,aAAa,YAAY;AAAA,MAC/B,IAAI,CAAC;AAAA,QAAY;AAAA,MAEjB,MAAM,eAAe,cAAc,UAAU;AAAA,MAC7C,IAAI,CAAC;AAAA,QAAc;AAAA,MAEnB,MAAM,UAAU;AAAA,MAOhB,IAAI,QAAQ,SAAS,WAAW;AAAA,QAC9B,MAAM,aAAa,cAAa,QAAQ,KAAK;AAAA,QAC7C,IAAI,CAAC,iBAAiB,YAAY,YAAY,GAAG;AAAA,UAC/C,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,oBAAoB;AAAA,YAC7B;AAAA,YACA,SAAS,SAAS,KAAK,cAAc,0BAA0B,iCAAiC;AAAA,YAChG,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,EAAO,SAAI,QAAQ,SAAS,cAAc,QAAQ,YAAY;AAAA,QAC5D,MAAM,iBAAiB,wBACrB,QAAQ,YACR,KAAK,IACL,OACA,UACA,KACF;AAAA,QACA,IAAI,gBAAgB;AAAA,UAClB,MAAM,eAAe,cAAc,cAAc;AAAA,UACjD,IAAI,gBAAgB,CAAC,iBAAiB,cAAc,YAAY,GAAG;AAAA,YACjE,YAAY,KAAK;AAAA,cACf,UAAU;AAAA,cACV,UAAU;AAAA,gBACR,QAAQ,KAAK;AAAA,gBACb,OAAO,oBAAoB;AAAA,cAC7B;AAAA,cACA,SAAS,SAAS,KAAK,cAAc,oBAAoB,QAAQ,iCAAiC,mCAAmC;AAAA,cACrI,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,EAAO,SAAI,QAAQ,SAAS,YAAY;AAAA,QAEtC,IAAI,iBAAiB,UAAU;AAAA,UAC7B,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,oBAAoB;AAAA,YAC7B;AAAA,YACA,SAAS,SAAS,KAAK,cAAc,iDAAiD;AAAA,YACtF,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,aAAY,CAAC,OAAwB;AAAA,EAC5C,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,OAAO,OAAO;AAAA;AAIhB,SAAS,gBAAgB,CAAC,QAAgB,UAA2B;AAAA,EACnE,IAAI,WAAW;AAAA,IAAU,OAAO;AAAA,EAEhC,IAAI,aAAa,aAAa,WAAW;AAAA,IAAU,OAAO;AAAA,EAC1D,OAAO;AAAA;;;ACxGF,SAAS,aAAa,CAC3B,UACA,OACc;AAAA,EACd,MAAM,cAA4B,CAAC;AAAA,EAEnC,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS,aAAa;AAAA,MAC7B,QAAQ,UAAU,cAAc,KAAK;AAAA,MAGrC,MAAM,UAAU,MAAM;AAAA,MACtB,IAAI,CAAC,SAAS;AAAA,QACZ,YAAY,KAAK;AAAA,UACf,UAAU;AAAA,UACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,kBAAkB;AAAA,UACtD,SAAS,SAAS,KAAK,gCAAgC;AAAA,UACvD,MAAM;AAAA,QACR,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA,MAAM,mBAAmB,QAAQ,YAAY,cAAc,CAAC;AAAA,MAC5D,MAAM,eAAe,IAAI,IAAI,QAAQ,YAAY,YAAY,CAAC,CAAC;AAAA,MAC/D,MAAM,cAAc,IAAI,IAAI,OAAO,KAAK,gBAAgB,CAAC;AAAA,MACzD,MAAM,eAAe,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AAAA,MAGnD,WAAW,OAAO,cAAc;AAAA,QAC9B,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AAAA,UACzB,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,oBAAoB;AAAA,YAC7B;AAAA,YACA,SAAS,SAAS,KAAK,2BAA2B,sCAAsC;AAAA,YACxF,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAGA,WAAW,OAAO,cAAc;AAAA,QAC9B,IAAI,CAAC,aAAa,IAAI,GAAG,GAAG;AAAA,UAC1B,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU,EAAE,QAAQ,KAAK,IAAI,OAAO,mBAAmB;AAAA,YACvD,SAAS,SAAS,KAAK,sCAAsC,kBAAkB;AAAA,YAC/E,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,cAAc;AAAA,MAC9B,YAAY,GAAG,aAAa,KAAK,OAAO,MAAM,QAAQ,GAAG;AAAA,QACvD,IAAI,CAAC,MAAM,WAAW;AAAA,UACpB,YAAY,KAAK;AAAA,YACf,UAAU;AAAA,YACV,UAAU;AAAA,cACR,QAAQ,KAAK;AAAA,cACb,OAAO,gBAAgB;AAAA,YACzB;AAAA,YACA,SAAS,SAAS,KAAK,gCAAgC;AAAA,YACvD,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AdtCT,eAAsB,eAAe,CACnC,UACA,SAIyB;AAAA,EACzB,MAAM,cAA4B,CAAC;AAAA,EAGnC,MAAM,cAAc,WAAW,QAAQ;AAAA,EACvC,YAAY,KAAK,GAAG,YAAY,WAAW;AAAA,EAG3C,MAAM,iBAAiB,mBAAmB,QAAQ;AAAA,EAElD,WAAW,KAAK,gBAAgB;AAAA,IAC9B,IACE,EAAE,SAAS,0BACX,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,sBAAsB,GACzD;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAY,KAAK,CAAC;AAAA,EACpB;AAAA,EAGA,YAAY,KAAK,GAAG,eAAe,UAAU,SAAS,MAAM,CAAC;AAAA,EAG7D,YAAY,KAAK,GAAG,sBAAsB,QAAQ,CAAC;AAAA,EAGnD,IAAI,yBAA0D;AAAA,EAC9D,IAAI,cAAwC;AAAA,EAC5C,IAAI,SAAS,OAAO;AAAA,IAClB,cAAc,MAAM,mBAAmB,QAAQ,KAAK;AAAA,IACpD,YAAY,KAAK,GAAG,cAAc,UAAU,WAAW,CAAC;AAAA,IACxD,yBAAyB,+BACvB,UACA,WACF;AAAA,EACF;AAAA,EAGA,IAAI,YAAY,OAAO;AAAA,IACrB,YAAY,KACV,GAAG,oBAAoB,UAAU,YAAY,OAAO,WAAW,CACjE;AAAA,IAEA,YAAY,KAAK,GAAG,iBAAiB,UAAU,YAAY,KAAK,CAAC;AAAA,IAGjE,IAAI,aAAa;AAAA,MACf,YAAY,KACV,GAAG,sBAAsB,UAAU,YAAY,OAAO,WAAW,CACnE;AAAA,MACA,YAAY,KACV,GAAG,uBAAuB,UAAU,YAAY,OAAO,WAAW,CACpE;AAAA,IACF;AAAA,EACF;AAAA,EAGA,MAAM,YAAY,YAAY,KAAK,CAAC,MAAM,EAAE,aAAa,OAAO;AAAA,EAChE,IAAI,oBAA+C;AAAA,EACnD,IAAI,YAAY,SAAS,CAAC,WAAW;AAAA,IACnC,MAAM,WAAW,mBAAmB,UAAU,YAAY,KAAK;AAAA,IAC/D,oBAAoB,SAAS;AAAA,IAC7B,YAAY,KAAK,GAAG,SAAS,WAAW;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA,OAAO,YAAY;AAAA,IACnB,UAAU;AAAA,IACV;AAAA,EACF;AAAA;AAGF,eAAsB,kBAAkB,CACtC,OAC4B;AAAA,EAC5B,MAAM,UAA6B,CAAC;AAAA,EACpC,YAAY,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,IACnD,MAAM,aAAa,MAAM,SAAS,QAAQ,WAAW,EAAE;AAAA,IACvD,QAAQ,QAAQ;AAAA,MACd,aAAa,QAAQ;AAAA,MACrB,aAAa;AAAA,IACf;AAAA,IACA,IAAI,QAAQ,cAAc;AAAA,MACxB,QAAQ,MAAM,eAAgB,MAAM,SAAS,QAAQ,YAAY,EAC9D;AAAA,IACL;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;AepGT,IAAM,oBAAoB,IAAI,IAAI,CAAC,aAAa,QAAQ,CAAC;AAAA;AAMlD,MAAe,0BAEtB;AAAA,EACmB;AAAA,EACA;AAAA,EACT,gBAAsD;AAAA,EACtD,gBAAuC;AAAA,EAE/C,WAAW,CAAC,SAAgD;AAAA,IAC1D,KAAK,aAAa,SAAS,UAAU;AAAA,IACrC,KAAK,kBAAkB,SAAS,UAAU,mBAAmB;AAAA;AAAA,OAIzD,QAAO,CAAC,OAAsC;AAAA,IAClD,IAAI,KAAK,eAAe,WAAW;AAAA,MACjC,MAAM,KAAK,KAAK,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,mBAAmB,kBAAkB,IAAI,MAAM,MAAM,GAAG;AAAA,MAC/D,KAAK,cAAc;AAAA,MACnB,MAAM,KAAK,KAAK,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,KAAK,gBAAgB;AAAA,IACrB,IAAI,KAAK,kBAAkB,MAAM;AAAA,MAC/B,KAAK,gBAAgB,WAAW,YAAY;AAAA,QAC1C,KAAK,gBAAgB;AAAA,QACrB,IAAI,KAAK,eAAe;AAAA,UACtB,MAAM,IAAI,KAAK;AAAA,UACf,KAAK,gBAAgB;AAAA,UACrB,MAAM,KAAK,KAAK,CAAC;AAAA,QACnB;AAAA,SACC,KAAK,UAAU;AAAA,IACpB;AAAA;AAAA,OAII,MAAK,GAAkB;AAAA,IAC3B,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK,eAAe;AAAA,MACtB,MAAM,IAAI,KAAK;AAAA,MACf,KAAK,gBAAgB;AAAA,MACrB,MAAM,KAAK,KAAK,CAAC;AAAA,IACnB;AAAA,IACA,MAAM,KAAK,QAAQ;AAAA;AAAA,EAGb,aAAa,GAAS;AAAA,IAC5B,IAAI,KAAK,kBAAkB,MAAM;AAAA,MAC/B,aAAa,KAAK,aAAa;AAAA,MAC/B,KAAK,gBAAgB;AAAA,IACvB;AAAA;AAAA,EAaF,MAAM,GAAmC;AAAA,IACvC,OAAO,QAAQ,QAAQ,IAAI;AAAA;AAE/B;AAAA;AAQO,MAAM,oCAAoC,0BAA0B;AAAA,EACxD,SAA2B,CAAC;AAAA,EAC5B,UAA6B,CAAC;AAAA,EACvC,SAAS;AAAA,EAEP,IAAI,CAAC,OAA6B;AAAA,IAC1C,KAAK,OAAO,KAAK,KAAK;AAAA,IAEtB,MAAM,UAAU,KAAK,QAAQ,OAAO,CAAC;AAAA,IACrC,WAAW,WAAW,SAAS;AAAA,MAC7B,QAAQ;AAAA,IACV;AAAA;AAAA,EAGQ,OAAO,GAAS;AAAA,IACxB,KAAK,SAAS;AAAA,IACd,MAAM,UAAU,KAAK,QAAQ,OAAO,CAAC;AAAA,IACrC,WAAW,WAAW,SAAS;AAAA,MAC7B,QAAQ;AAAA,IACV;AAAA;AAAA,EAGO,MAAM,GAAmC;AAAA,IAChD,OAAO,QAAQ,QACb,KAAK,OAAO,SAAS,IAChB,KAAK,OAAO,KAAK,OAAO,SAAS,MAAM,OACxC,IACN;AAAA;AAAA,EAGF,SAAS,CAAC,MAA4D;AAAA,IACpE,MAAM,UAAU;AAAA,IAEhB,gBAAgB,SAAS,GAAmC;AAAA,MAC1D,IAAI;AAAA,MAEJ,IAAI,MAAM,QAAQ;AAAA,QAEhB,SAAS;AAAA,MACX,EAAO;AAAA,QAEL,SAAS,KAAK,IAAI,GAAG,QAAQ,OAAO,SAAS,CAAC;AAAA;AAAA,MAGhD,OAAO,MAAM;AAAA,QAEX,OAAO,SAAS,QAAQ,OAAO,QAAQ;AAAA,UAErC,MAAM,QAAQ,OAAO;AAAA,UACrB;AAAA,QACF;AAAA,QAGA,IAAI,QAAQ;AAAA,UAAQ;AAAA,QAGpB,MAAM,IAAI,QAAc,CAAC,YAAY;AAAA,UACnC,QAAQ,QAAQ,KAAK,OAAO;AAAA,SAC7B;AAAA,MACH;AAAA;AAAA,IAGF,OAAO,UAAU;AAAA;AAErB;;;AClHO,MAAM,2BAA2B,MAAM;AAAA,EAI1B;AAAA,EACA;AAAA,EACA;AAAA,EAES;AAAA,EAPT,OAAO;AAAA,EAEzB,WAAW,CACO,QACA,MACA,UAChB,SACyB,OACzB;AAAA,IACA,MAAM,OAAO;AAAA,IANG;AAAA,IACA;AAAA,IACA;AAAA,IAES;AAAA;AAI7B;AAAA;AAKO,MAAM,2BAA2B,mBAAmB;AAAA,EACzD,WAAW,CAAC,QAAgB,MAAiB,SAAiB;AAAA,IAC5D,MAAM,QAAQ,MAAM,iBAAiB,OAAO;AAAA;AAEhD;AAAA;AAGO,MAAM,wBAAwB,mBAAmB;AAAA,EAKpC;AAAA,EAJlB,WAAW,CACT,QACA,MACA,SACgB,OAChB,OACA;AAAA,IACA,MAAM,QAAQ,MAAM,cAAc,SAAS,KAAK;AAAA,IAHhC;AAAA;AAKpB;AAAA;AAGO,MAAM,6BAA6B,mBAAmB;AAAA,EAMzC;AAAA,EACA;AAAA,EANlB,WAAW,CACT,QACA,MACA,SACA,OACgB,YACA,cAAuB,MACvC;AAAA,IACA,MAAM,QAAQ,MAAM,oBAAoB,SAAS,KAAK;AAAA,IAHtC;AAAA,IACA;AAAA;AAIpB;AAAA;AAGO,MAAM,wBAAwB,mBAAmB;AAAA,EAKpC;AAAA,EAJlB,WAAW,CACT,QACA,MACA,SACgB,YAChB,OACA;AAAA,IACA,MAAM,QAAQ,MAAM,cAAc,SAAS,KAAK;AAAA,IAHhC;AAAA;AAKpB;AAAA;AAGO,MAAM,2BAA2B,mBAAmB;AAAA,EAKvC;AAAA,EAJlB,WAAW,CACT,QACA,MACA,SACgB,WAChB,OACA;AAAA,IACA,MAAM,QAAQ,MAAM,kBAAkB,SAAS,KAAK;AAAA,IAHpC;AAAA;AAKpB;AAAA;AAGO,MAAM,2BAA2B,mBAAmB;AAAA,EAGvC;AAAA,EACA;AAAA,EAHlB,WAAW,CACT,QACgB,QACA,gBAChB;AAAA,IACA,MACE,QACA,iBACA,iBACA,0BAA0B,oBAAoB,QAChD;AAAA,IARgB;AAAA,IACA;AAAA;AASpB;AAAA;AAGO,MAAM,wBAAwB,mBAAmB;AAAA,EAIpC;AAAA,EAHlB,WAAW,CACT,QACA,SACgB,QAChB;AAAA,IACA,MAAM,QAAQ,sBAAsB,cAAc,OAAO;AAAA,IAFzC;AAAA;AAIpB;;;AC/FO,SAAS,2BAA2B,GAAmB;AAAA,EAC5D,OAAO;AAAA,IACL,MAAM,CAAC,OAAO,OAAO,GAAG;AAAA,IAExB,OAAO,CAAC,OAAO,OAAO,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAAA,IAE1D,kBAAkB,OAAO,OAAO,SAAS,SAAS;AAAA,MAChD,IAAI,QAAQ,KAAK;AAAA,MACjB,MAAM,WAAW,KAAK,YAAY,KAAK,IAAI,IAAI,KAAK,YAAY;AAAA,MAEhE,SAAS,UAAU,EAAG,UAAU,KAAK,aAAa,WAAW;AAAA,QAC3D,MAAM,SAAS,MAAM,QAAQ;AAAA,QAC7B,IAAI;AAAA,UAAQ,OAAO;AAAA,QAEnB,IAAI,YAAY,KAAK,IAAI,IAAI,QAAQ,UAAU;AAAA,UAC7C,MAAM,IAAI,qBACR,OACA,0BACA,uBAAuB,0BAA0B,KAAK,eACtD,WACA,WACA,KACF;AAAA,QACF;AAAA,QAEA,MAAM,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAAA,QAC7C,SAAS,KAAK;AAAA,MAChB;AAAA,MAEA,MAAM,IAAI,qBACR,OACA,+BACA,uBAAuB,mBAAmB,KAAK,wBAC/C,WACA,WACA,KACF;AAAA;AAAA,EAEJ;AAAA;;;AChHF;AAKO,IAAM,mBAAmB,KAC9B,kFACF;AAGO,IAAM,kBAAkB,KAC7B,gDACF;AAKO,IAAM,sBAAsB,KAAK;AAAA,EACtC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,gBAAgB;AAClB,CAAC;AAGM,IAAM,oBAAoB,KAAK;AAAA,EACpC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAChB,CAAC;AAKM,IAAM,6BAA6B,KAAK;AAAA,EAC7C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,WAAW;AACb,CAAC,EACE,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,cAAc;AAChB,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AACf,CAAC;AAKI,IAAM,mBAAmB,KAAK;AAAA,EACnC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AACX,CAAC,EAAE,GAAG;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AACR,CAAC;AAKM,IAAM,4BAA4B,KAAK;AAAA,EAC5C,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,UAAU,CAAC,kBAAkB,IAAI;AAAA,EACjC,SAAS,CAAC,mBAAmB,IAAI;AAAA,EACjC,MAAM,CAAC,4BAA4B,IAAI;AACzC,CAAC;AAKM,IAAM,uBAAuB,KAAK;AAAA,EACvC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,aAAa,CAAC,2BAA2B,IAAI;AAAA,EAC7C,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AACnB,CAAC;AAKM,IAAM,uBAAuB,KAAK;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC,EACE,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,WAAW;AACb,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,UAAU,CAAC,kBAAkB,IAAI;AACnC,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,mBAAmB;AACrB,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,OAAO;AACT,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AACb,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AACT,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,gBAAgB;AAAA,EAChB,aAAa;AACf,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,gBAAgB;AAAA,EAChB,YAAY;AACd,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM,CAAC,4BAA4B,IAAI;AAAA,EACvC,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,WAAW;AACb,CAAC;AAMI,SAAS,aAAa,CAAC,KAAwC;AAAA,EACpE,MAAM,WAA0B;AAAA,IAC9B,MAAM,IAAI;AAAA,IACV,UAAU,IAAI;AAAA,IACd,SAAS,IAAI;AAAA,EACf;AAAA,EACA,IAAI,IAAI;AAAA,IAAQ,SAAS,SAAS,IAAI;AAAA,EACtC,IAAI,gBAAgB,OAAO,OAAO,IAAI,eAAe,UAAU;AAAA,IAC7D,SAAS,aAAa,IAAI;AAAA,EAC5B;AAAA,EACA,IAAI,iBAAiB,OAAO,OAAO,IAAI,gBAAgB,WAAW;AAAA,IAChE,SAAS,cAAc,IAAI;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;AAKT,SAAS,aAAa,CACpB,IACA,IACS;AAAA,EACT,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG;AAAA,IAAQ,OAAO;AAAA,EAC3D,IAAI,GAAG,SAAS,cAAc,GAAG,SAAS,YAAY;AAAA,IACpD,OAAO,GAAG,mBAAmB,GAAG;AAAA,EAClC;AAAA,EACA,IAAI,GAAG,SAAS,iBAAiB,GAAG,SAAS,eAAe;AAAA,IAC1D,OAAO,GAAG,qBAAqB,GAAG;AAAA,EACpC;AAAA,EACA,IAAI,GAAG,SAAS,wBAAwB,GAAG,SAAS,sBAAsB;AAAA,IACxE,OAAO,GAAG,gBAAgB,GAAG;AAAA,EAC/B;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,UAAU,CACjB,GACA,GACS;AAAA,EACT,IAAI,EAAE,WAAW,EAAE;AAAA,IAAQ,OAAO;AAAA,EAClC,SAAS,IAAI,EAAG,IAAI,EAAE,QAAQ,KAAK;AAAA,IACjC,MAAM,KAAK,EAAE;AAAA,IACb,MAAM,KAAK,EAAE;AAAA,IACb,IAAI,CAAC,cAAc,IAAI,EAAE;AAAA,MAAG,OAAO;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CACtB,SACA,QACA,MACQ;AAAA,EACR,SAAS,IAAI,QAAQ,SAAS,EAAG,KAAK,GAAG,KAAK;AAAA,IAC5C,MAAM,SAAS,QAAQ;AAAA,IACvB,IAAI,OAAO,WAAW,UAAU,WAAW,OAAO,MAAM,IAAI,GAAG;AAAA,MAC7D,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,UAAU,CACxB,OACA,OACgB;AAAA,EAChB,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO,KAAK,OAAO,QAAQ,WAAW,WAAW,MAAM,UAAU;AAAA,SAE9D,gBAAgB;AAAA,MACnB,MAAM,SAA8B;AAAA,QAClC,QAAQ,MAAM;AAAA,QACd,QAAQ;AAAA,QACR,WAAW,MAAM;AAAA,QACjB,SAAS,CAAC;AAAA,QACV,MAAM,MAAM;AAAA,MACd;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,aAAa,CAAC,GAAG,MAAM,aAAa,MAAM;AAAA,MAC5C;AAAA,IACF;AAAA,SAEK,kBAAkB;AAAA,MACrB,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,MAAM,UAA+B;AAAA,aAChC;AAAA,UACH,QAAQ;AAAA,UACR,aAAa,MAAM;AAAA,UACnB,YAAY,MAAM;AAAA,UAClB,QAAQ,MAAM;AAAA,QAChB;AAAA,QACA,IAAI,MAAM,mBAAmB,WAAW;AAAA,UACtC,QAAQ,iBAAiB,MAAM;AAAA,QACjC;AAAA,QACA,IAAI,MAAM,UAAU,WAAW;AAAA,UAC7B,QAAQ,QAAQ,MAAM;AAAA,QACxB;AAAA,QACA,QAAQ,OAAO;AAAA,MACjB;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA,SAEK,eAAe;AAAA,MAClB,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,MAAM,UAA+B;AAAA,aAChC;AAAA,UACH,QAAQ;AAAA,UACR,aAAa,MAAM;AAAA,UACnB,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,QACf;AAAA,QACA,IAAI,MAAM,mBAAmB,WAAW;AAAA,UACtC,QAAQ,iBAAiB,MAAM;AAAA,QACjC;AAAA,QACA,QAAQ,OAAO;AAAA,MACjB;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA,SAEK,cAAc;AAAA,MACjB,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,QAAQ,OAAO;AAAA,aACV;AAAA,UACH,SAAS,CAAC,GAAG,SAAS,SAAS,MAAM,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA,SAEK;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,QAAQ;AAAA,QACR,aAAa,MAAM;AAAA,QACnB,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,MAChB;AAAA,SAEG;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,QAAQ;AAAA,QACR,aAAa,MAAM;AAAA,QACnB,YAAY,MAAM;AAAA,QAClB,OAAO,MAAM;AAAA,MACf;AAAA,SAEG,0BAA0B;AAAA,MAC7B,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,QAAQ,OAAO,KAAK,UAAU,QAAQ,oBAAoB;AAAA,MAC5D;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA,SAEK,iBAAiB;AAAA,MACpB,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,QAAQ,OAAO,KAAK,UAAU,QAAQ,UAAU;AAAA,MAClD;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA,SAEK,eAAe;AAAA,MAClB,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW;AAAA,MACrC,MAAM,MAAM,gBAAgB,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,OAAO,GAAG;AAAA,QACZ,MAAM,WAAW,QAAQ;AAAA,QACzB,QAAQ,OAAO;AAAA,aACV;AAAA,UACH,QAAQ;AAAA,UACR,OAAO;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,MAAM,UAAU;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,KAAK,OAAO,aAAa,QAAQ;AAAA,IAC1C;AAAA;AAAA;;;AC5OG,IAAM,0BAAoD;AAAA,EAC/D,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,aAAa,OAAO;AAAA,EACpB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,eAAe;AACjB;AAAA;AAEO,MAAM,eAAe;AAAA,EACT,YAAY,KAAK,IAAI;AAAA,EAC9B,WAAW;AAAA,EACX,cAA6B;AAAA,EACpB;AAAA,EAEjB,WAAW,CAAC,QAAyB;AAAA,IACnC,KAAK,SAAS,KAAK,4BAA4B,OAAO;AAAA;AAAA,MAGpD,cAAc,GAA6B;AAAA,IAC7C,OAAO,KAAK;AAAA;AAAA,EAId,WAAW,GAAS;AAAA,IAClB,KAAK,cAAc,KAAK,IAAI;AAAA;AAAA,EAI9B,SAAS,CAAC,QAAsB;AAAA,IAC9B,IAAI,KAAK,gBAAgB,MAAM;AAAA,MAC7B,KAAK,YAAY,KAAK,IAAI,IAAI,KAAK;AAAA,MACnC,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI,KAAK,WAAW,KAAK,OAAO,aAAa;AAAA,MAC3C,MAAM,IAAI,qBACR,QACA,4BACA,yBAAyB,KAAK,gCAAgC,KAAK,OAAO,iBAC1E,WACA,WACA,KACF;AAAA,IACF;AAAA;AAAA,EAIF,UAAU,CAAC,QAAsB;AAAA,IAC/B,MAAM,UAAU,KAAK,IAAI,IAAI,KAAK;AAAA,IAClC,IAAI,UAAU,KAAK,OAAO,YAAY;AAAA,MACpC,MAAM,IAAI,qBACR,QACA,2BACA,wBAAwB,+BAA+B,KAAK,OAAO,gBACnE,WACA,WACA,KACF;AAAA,IACF;AAAA;AAEJ;AAAA;AAIO,MAAM,sBAAsB;AAAA,EACzB;AAAA,EACS;AAAA,EAKjB,WAAW,CACT,UAIA,cACA,cACA;AAAA,IACA,KAAK,QAAQ,gBAAgB;AAAA,MAC3B,OAAO,OAAO,WAAW;AAAA,MACzB,QAAQ;AAAA,MACR,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,MAClC,aAAa,CAAC;AAAA,MACd;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AAAA;AAAA,MAGd,YAAY,GAAmB;AAAA,IACjC,OAAO,KAAK;AAAA;AAAA,OAGA,KAAI,CAAC,OAAsC;AAAA,IACvD,KAAK,QAAQ,WAAW,KAAK,OAAO,KAAK;AAAA,IACzC,MAAM,KAAK,WAAW,KAAK,OAAO,KAAK;AAAA;AAAA,OAGnC,WAAU,GAAkB;AAAA,IAChC,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,KAAK,MAAM;AAAA,MAClB,WAAW,KAAK,MAAM;AAAA,IACxB,CAAC;AAAA;AAAA,OAGG,YAAW,CACf,QACA,MACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,IACpC,CAAC;AAAA;AAAA,OAGG,cAAa,CACjB,QACA,MACA,QACA,YACA,gBACA,OACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,aAAa,IAAI,KAAK,EAAE,YAAY;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA,OAGG,WAAU,CACd,QACA,MACA,OACA,YACA,gBACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,MACjC;AAAA,MACA,OAAO,cAAc,KAAK;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA;AAAA,OAGG,eAAc,CAClB,QACA,MACA,OACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA,OAGG,aAAY,CAAC,QAAiC;AAAA,IAClD,MAAM,UAAU,IAAI,KAAK,KAAK,MAAM,SAAS,EAAE,QAAQ;AAAA,IACvD,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,KAAK,MAAM;AAAA,MAClB,aAAa,IAAI,KAAK,EAAE,YAAY;AAAA,MACpC,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB;AAAA,IACF,CAAC;AAAA;AAAA,OAGG,UAAS,CAAC,OAA0C;AAAA,IACxD,MAAM,UAAU,IAAI,KAAK,KAAK,MAAM,SAAS,EAAE,QAAQ;AAAA,IACvD,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,KAAK,MAAM;AAAA,MAClB,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,MACjC,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO,cAAc,KAAK;AAAA,IAC5B,CAAC;AAAA;AAAA,OAGG,qBAAoB,CACxB,QACA,MACA,gBACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,IAAI,KAAK,EAAE,YAAY;AAAA,IACtC,CAAC;AAAA;AAAA,OAGG,aAAY,CAChB,QACA,MACA,gBACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,IACrC,CAAC;AAAA;AAAA,OAGG,WAAU,CACd,QACA,MACA,gBACA,QACe;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,MACd,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,MACjC;AAAA,IACF,CAAC;AAAA;AAEL;;;ACpXO,SAAS,YAAY,CAAC,UAAsC;AAAA,EACjE,MAAM,MAAM,KAAK,UAAU,QAAQ;AAAA,EACnC,IAAI,OAAO;AAAA,EACX,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,IACnC,QAAQ,IAAI,WAAW,CAAC;AAAA,IACxB,OAAO,KAAK,KAAK,MAAM,QAAU;AAAA,EACnC;AAAA,EACA,QAAQ,SAAS,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA;;ACblD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACDA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,iBAAS;AAoBF,SAAS,kBAAkB,CAChC,MACA,OACA,QACS;AAAA,EACT,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,OAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,KAAK,SAAS,YAAY;AAAA,IAC5B,OAAO,oBAAoB,KAAK,UAAU,OAAO,MAAM;AAAA,EACzD;AAAA,EACA,IAAI;AAAA,IACF,OAAO,OAAO,OAAuC,KAAK,UAAU;AAAA,IACpE,OAAO,GAAG;AAAA,IACV,MAAM,IAAI,gBACR,QACA,6BACA,wBAAwB,KAAK,uBAAuB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,KAC7F,KAAK,YACL,CACF;AAAA;AAAA;AAIG,SAAS,cAAc,CAAC,OAAwB;AAAA,EACrD,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,KAAK,UAAU,KAAK;AAAA,EAC1D,OAAO,OAAO,KAAK;AAAA;AAGd,SAAS,mBAAmB,CACjC,UACA,OACA,QACQ;AAAA,EACR,QAAQ,gBAAgB,2BAA2B,QAAQ;AAAA,EAC3D,IAAI,YAAY,WAAW;AAAA,IAAG,OAAO;AAAA,EAErC,IAAI,SAAS;AAAA,EACb,IAAI,UAAU;AAAA,EACd,WAAW,QAAQ,aAAa;AAAA,IAC9B,UAAU,SAAS,MAAM,SAAS,KAAK,KAAK;AAAA,IAC5C,IAAI;AAAA,MACF,MAAM,QAAQ,OACZ,OACA,KAAK,UACP;AAAA,MACA,UAAU,eAAe,KAAK;AAAA,MAC9B,OAAO,GAAG;AAAA,MACV,MAAM,IAAI,gBACR,QACA,gCACA,wBAAwB,KAAK,uBAAuB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,KAC7F,KAAK,YACL,CACF;AAAA;AAAA,IAEF,UAAU,KAAK;AAAA,EACjB;AAAA,EACA,UAAU,SAAS,MAAM,OAAO;AAAA,EAChC,OAAO;AAAA;AAKF,SAAS,gBAAgB,CAC9B,QACA,GACoB;AAAA,EACpB,IAAI,aAAa,WAAW,CAAC,GAAG;AAAA,IAC9B,MAAM,OACJ,EAAE,eAAe,MAAM,qBAAqB;AAAA,IAC9C,OAAO,IAAI,qBACT,QACA,MACA,EAAE,SACF,GACA,EAAE,YACF,EAAE,eAAe,IACnB;AAAA,EACF;AAAA,EACA,IAAI,WAAW,WAAW,CAAC,GAAG;AAAA,IAC5B,OAAO,IAAI,qBACT,QACA,iBACA,EAAE,SACF,GACA,WACA,KACF;AAAA,EACF;AAAA,EACA,IAAI,wBAAwB,WAAW,CAAC,GAAG;AAAA,IACzC,OAAO,IAAI,qBACT,QACA,kBACA,EAAE,SACF,GACA,WACA,IACF;AAAA,EACF;AAAA,EACA,IAAI,oBAAoB,WAAW,CAAC,GAAG;AAAA,IACrC,OAAO,IAAI,mBACT,QACA,0BACA,mCAAmC,EAAE,WACrC,EAAE,OACF,CACF;AAAA,EACF;AAAA,EACA,IAAI,eAAe,WAAW,CAAC,GAAG;AAAA,IAChC,OAAO,IAAI,mBACT,QACA,0BACA,mCAAmC,EAAE,WACrC,EAAE,MACF,CACF;AAAA,EACF;AAAA,EACA,OAAO,IAAI,qBACT,QACA,qBACA,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GACzC,GACA,WACA,IACF;AAAA;AAKK,SAAS,mBAAmB,CACjC,YACA,QACA;AAAA,EACA,OAAO,KAAK;AAAA,IACV,aACE;AAAA,IACF,aAAa,QAAQ;AAAA,MACnB,YAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,SAAS,SAAS,iBAAiB;AAAA,MACjC,IAAI;AAAA,QACF,MAAM,SAAS,OACb,YACA,UACF;AAAA,QACA,MAAM,YACJ,OAAO,WAAW,WAAW,SAAS,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,QACtE,IACE,IAAI,YAAY,EAAE,OAAO,SAAS,EAAE,aACpC,OAAO,qBACP;AAAA,UACA,MAAM,YAAY,UAAU,MAAM,GAAG,OAAO,mBAAmB;AAAA,UAC/D,OAAO,GAAG;AAAA;AAAA,+BAA6C,OAAO;AAAA,QAChE;AAAA,QACA,OAAO;AAAA,QACP,OAAO,GAAG;AAAA,QACV,OAAO,mBAAmB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA,EAGzE,CAAC;AAAA;AAGI,SAAS,gBAAgB,GAAG;AAAA,EACjC,IAAI;AAAA,EACJ,MAAM,aAAa,KAAK;AAAA,IACtB,aACE;AAAA,IACF,aAAa,QAAQ;AAAA,MACnB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,SAAS,SAAS,QAAQ,QAAQ;AAAA,MAChC,SAAS;AAAA,MACT,OAAO,EAAE,cAAc,KAAK;AAAA;AAAA,EAEhC,CAAC;AAAA,EACD,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,MAAM;AAAA,EACnB;AAAA;;;ACrMK,SAAS,oBAAuD,CACrE,QACG;AAAA,EACH,OAAO,iBAAiB,MAAM;AAAA;AAOhC,IAAM,wBAAuB,IAAI,IAAI;AAAA,EAEnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB;AAAA,EACjD,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,OAAO,MAAM,IAAI,gBAAgB;AAAA,EACnC;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAAA,IAC/C,MAAM,SAAkC,CAAC;AAAA,IACzC,YAAY,GAAG,MAAM,OAAO,QAAQ,KAAK,GAAG;AAAA,MAC1C,IAAI,sBAAqB,IAAI,CAAC;AAAA,QAAG;AAAA,MAGjC,IAAI,MAAM,cAAc,OAAO,MAAM,YAAY,IAAI;AAAA,QAAG;AAAA,MAExD,OAAO,KAAK,iBAAiB,CAAC;AAAA,IAChC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;;;AFlDT,eAAsB,gBAAgB,CACpC,MACA,OACA,SACA,QACqB;AAAA,EACrB,IAAI,CAAC,QAAQ,OAAO;AAAA,IAClB,MAAM,IAAI,mBACR,KAAK,IACL,sBACA,yDACF;AAAA,EACF;AAAA,EAEA,MAAM,2BAA2B,oBAC/B,KAAK,OAAO,cACZ,OACA,KAAK,EACP;AAAA,EAEA,MAAM,eAAe,WACnB,qBACE,KAAK,OAAO,YACd,CACF;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IACjB,OAAO,iBACL,MACA,0BACA,QAAQ,OACR,QAAQ,OACR,cACA,KAAK,OAAO,YACd;AAAA,EACF;AAAA,EAEA,OAAO,iBACL,MACA,0BACA,OACA,SACA,QAAQ,OACR,QACA,YACF;AAAA;AAIF,eAAe,gBAAgB,CAC7B,MACA,0BACA,OACA,OACA,cACA,iBACqB;AAAA,EACrB,MAAM,YAAY,KAAK,UAAU,iBAAiB,MAAM,CAAC;AAAA,EACzD,MAAM,SAAS,GAAG;AAAA;AAAA;AAAA;AAAA,EAA2M;AAAA;AAAA;AAAA;AAAA,EAE7N,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAAA,IAK9C,MAAM,SAAS,iBAAiB;AAAA,IAChC,MAAM,UAAU,MAAM,aAAa;AAAA,MACjC;AAAA,MACA,QAAQ,OAAO,OAAO,EAAE,QAAQ,aAAa,CAAC;AAAA,MAC9C,OAAO,EAAE,WAAW,OAAO,KAAK;AAAA,MAChC,QAAQ;AAAA;AAAA;AAAA,EAAwO,OAAO;AAAA,IACzP,CAAC;AAAA,IAED,IAAI,OAAO,UAAU,MAAM,WAAW;AAAA,MACpC,MAAM,IAAI,gBACR,KAAK,IACL,uDAAuD,OAAO,UAAU,KACxE,OAAO,UAAU,CACnB;AAAA,IACF;AAAA,IAEA,MAAM,QAAsB;AAAA,MAC1B,GAAG,OAAO,MAAM,IAAI,CAAC,OAAmB,EAAE,MAAM,cAAc,MAAM,EAAE,EAAE;AAAA,MACxE,GAAG,QAAQ,MAAM,IACf,CAAC,OAAmB,EAAE,MAAM,cAAc,MAAM,EAAE,EACpD;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,QAAQ,QAAQ,QAAQ,MAAM;AAAA,IACvC,OAAO,GAAG;AAAA,IACV,IAAI,aAAa;AAAA,MAAoB,MAAM;AAAA,IAC3C,MAAM,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAKrC,eAAe,gBAAgB,CAC7B,MACA,0BACA,OACA,SACA,OACA,QACA,cACqB;AAAA,EAErB,MAAM,cAAuB,CAAC;AAAA,EAC9B,WAAW,YAAY,KAAK,OAAO,OAAO;AAAA,IACxC,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,mBACR,KAAK,IACL,kBACA,oCAAoC,iDACtC;AAAA,IACF;AAAA,IACA,IAAI,CAAC,QAAQ,SAAS;AAAA,MACpB,MAAM,IAAI,mBACR,KAAK,IACL,wBACA,oCAAoC,yCACtC;AAAA,IACF;AAAA,IACA,YAAY,YAAY;AAAA,EAC1B;AAAA,EAGA,MAAM,gBAAgB,oBAAoB,OAAO,MAAM;AAAA,EACvD,MAAM,SAAS,iBAAiB;AAAA,EAChC,YAAY,gBAAgB;AAAA,EAC5B,YAAY,aAAa,OAAO;AAAA,EAGhC,MAAM,WAAW,KAAK,OAAO,WACzB,mBAAmB,KAAK,OAAO,UAAwB,OAAO,KAAK,EAAE,IACrE;AAAA,EACJ,IAAI,OAAO,aAAa,YAAY,WAAW,GAAG;AAAA,IAChD,MAAM,IAAI,gBACR,KAAK,IACL,gCACA,sDAAsD,OAAO,aAAa,WAAW,WAAW,OAAO,YACvG,QACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,IAAI,cAAc;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,IACP,QAAQ,OAAO,OAAO,EAAE,QAAQ,aAAa,CAAC;AAAA,IAC9C,UAAU;AAAA,MACR,MAAM,QAAQ,UAAU,MAAM;AAAA,MAC9B,YAAY,KAAK,MAAM,QAAQ,CAAC;AAAA,IAClC;AAAA,EACF,CAAC;AAAA,EAED,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,MAAM,SAAS,EAAE,QAAQ,yBAAyB,CAAC;AAAA,IAGxE,IAAI,OAAO,UAAU,MAAM,WAAW;AAAA,MACpC,MAAM,IAAI,gBACR,KAAK,IACL,kBAAkB,OAAO,UAAU,KACnC,OAAO,UAAU,CACnB;AAAA,IACF;AAAA,IAEA,MAAM,QAAsB,OAAO,MAAM,IAAI,CAAC,OAAO;AAAA,MACnD,MAAM;AAAA,MACN,MAAM;AAAA,IACR,EAAE;AAAA,IAEF,OAAO,EAAE,QAAQ,OAAO,QAAQ,MAAM;AAAA,IACtC,OAAO,GAAG;AAAA,IACV,IAAI,aAAa;AAAA,MAAoB,MAAM;AAAA,IAC3C,MAAM,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAI9B,SAAS,sBAAsB,CACpC,MACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,OAAO;AAAA,MACL,cAAc,oBACZ,KAAK,OAAO,cACZ,OACA,KAAK,EACP;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,OAAO,EAAE,cAAc,KAAK,OAAO,aAAa;AAAA;AAAA;;;AG7N7C,SAAS,UAAU,CACxB,MACA,OACS;AAAA,EACT,IAAI,KAAK,QAAQ,QAAQ;AAAA,IACvB,OAAO,mBAAmB,KAAK,OAAO,QAAsB,OAAO,KAAK,EAAE;AAAA,EAC5E;AAAA,EACA;AAAA;;;ACXF;AACA,mBAAS;AACT;AAAA,gBACE;AAAA,YAEA;AAAA,iBACA;AAAA,mBACA;AAAA,UACA;AAAA;;;ACRF,SAAS,SAAS,CAAC,GAAY,GAAqB;AAAA,EAClD,OAAO,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAAA;AAQ/C,SAAS,oBAAoB,CAAC,QAA0B;AAAA,EACtD,IAAI,WAAW,QAAQ,WAAW;AAAA,IAAW,OAAO;AAAA,EACpD,IAAI,OAAO,WAAW;AAAA,IAAU,OAAO;AAAA,EACvC,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,IAEzB,IAAI,OAAO,WAAW,KAAK,OAAO,OAAO,OAAO,UAAU;AAAA,MACxD,OAAO,CAAC,qBAAqB,OAAO,EAAE,GAAG,CAAC;AAAA,IAC5C;AAAA,IACA,OAAO,OAAO,IAAI,oBAAoB;AAAA,EACxC;AAAA,EACA,IAAI,OAAO,WAAW,UAAU;AAAA,IAC9B,MAAM,aAAsC,CAAC;AAAA,IAC7C,YAAY,KAAK,QAAQ,OAAO,QAAQ,MAAM,GAAG;AAAA,MAC/C,WAAW,OAAO,qBAAqB,GAAG;AAAA,IAC5C;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,UAAa,CAAC,KAAoB;AAAA,EACzC,IAAI,IAAI,WAAW;AAAA,IAAG,OAAO;AAAA,EAE7B,MAAM,SAAS,IAAI;AAAA,EAEnB,IAAI,QAAQ,CAAC,SAAS;AAAA,IACpB,IAAI,QAAQ;AAAA,IACZ,YAAY,MAAM,UAAU,OAAO,QAAQ,GAAG;AAAA,MAC5C,IAAI,UAAU,MAAM,MAAM,OAAO,GAAG;AAAA,QAClC,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,CAAC,OAAO;AAAA,MACV,OAAO,IAAI,OAAO,MAAM,EAAE,SAAS,MAAM,OAAO,EAAE,CAAC;AAAA,IACrD;AAAA,GACD;AAAA,EAED,IAAI,MAAM,EAAE,SAAS,IAAI,IAAS,OAAO,EAAE;AAAA,EAC3C,WAAW,SAAS,OAAO,OAAO,GAAG;AAAA,IACnC,IAAI,MAAM,QAAQ,IAAI;AAAA,MAAO,MAAM;AAAA,EACrC;AAAA,EAEA,OAAO,IAAI;AAAA;AAGN,SAAS,WAAW,CACzB,OACA,QAAmB,CAAC,GACpB,UAAU,IACV;AAAA,EACA,IAAI;AAAA,EACJ,IAAI,UAAU,MAAM;AAAA,IAClB,SAAS;AAAA,EACX,EAAO,SAAI,UAAU,WAAW;AAAA,IAC9B,SAAS;AAAA,EACX,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,IACpC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,MAAM,iBAAiB,MAAM,IAAI,CAAC,YAChC,YAAY,SAAS,OAAO,OAAO,CACrC;AAAA,MAEA,MAAM,0BAA0B,WAAW,cAAc;AAAA,MAEzD,MAAM,wBACJ,eAAe,OAAO,CAAC,YACrB,UAAU,SAAQ,uBAAuB,CAC3C,EAAE,SAAS,eAAe;AAAA,MAE5B,MAAM,4BAA4B,yBAAyB;AAAA,MAE3D,IAAI,2BAA2B;AAAA,QAC7B,SAAS,CAAC,yBAAyB,MAAM,MAAM;AAAA,MACjD,EAAO;AAAA,QACL,SAAS;AAAA;AAAA,IAEb,EAAO;AAAA,MACL,MAAM,OAAO,OAAO,KAAK,KAAK;AAAA,MAC9B,MAAM,YAAY,KAAK;AAAA,MAIvB,IAAI,aAAa,GAAG;AAAA,QAClB,MAAM,aAAa,KAAK,MAAM,GAAG,OAAO;AAAA,QACxC,MAAM,eAAe,WAAW,IAAI,CAAC,QACnC,YAAa,MAAkC,MAAM,CAAC,GAAG,OAAO,CAClE;AAAA,QAGA,MAAM,oBAAoB,aAAa,IAAI,oBAAoB;AAAA,QAC/D,MAAM,uBAAuB,WAAW,iBAAiB;AAAA,QAEzD,IACE,yBAAyB,QACzB,OAAO,yBAAyB,YAChC,yBAAyB,MACzB;AAAA,UACA,MAAM,eAAe,kBAAkB,OAAO,CAAC,MAC7C,UAAU,GAAG,oBAAoB,CACnC,EAAE;AAAA,UACF,MAAM,iBAAiB,eAAe,WAAW;AAAA,UAEjD,IAAI,gBAAgB,KAAK,kBAAkB,MAAM;AAAA,YAE/C,MAAM,uBAAuB,aAAa,KAAK,CAAC,MAC9C,UAAU,qBAAqB,CAAC,GAAG,oBAAoB,CACzD;AAAA,YACA,SAAS;AAAA,cACP,QAAQ,CAAC,sBAAsB,SAAS;AAAA,YAC1C;AAAA,YACA,MAAM,KAAK,MAAM;AAAA,YACjB,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,UAAmC,CAAC;AAAA,MAC1C,MAAM,gBAAgB,KAAK,MAAM,GAAG,OAAO;AAAA,MAE3C,WAAW,OAAO,eAAe;AAAA,QAC/B,QAAQ,OAAO,YACZ,MAAkC,MACnC,OACA,OACF;AAAA,MACF;AAAA,MAEA,IAAI,YAAY,SAAS;AAAA,QACvB,QAAQ,MAAM,YAAY,uBAAuB;AAAA,MACnD;AAAA,MAEA,SAAS;AAAA;AAAA,EAEb,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,IACpC,SAAS;AAAA,EACX,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,IACpC,SAAS;AAAA,EACX,EAAO,SAAI,OAAO,UAAU,WAAW;AAAA,IACrC,SAAS;AAAA,EACX,EAAO;AAAA,IACL,SAAS;AAAA;AAAA,EAGX,MAAM,KAAK,MAAM;AAAA,EACjB,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,QAAiB,QAAkC;AAAA,EACzE,MAAM,YAAY,OAAO,WAAW,WAAW,IAAI,OAAO,MAAM,IAAI;AAAA,EACpE,MAAM,SAAS,cAAc;AAAA,EAE7B,SAAS,SAAS,CAAC,OAAgB,QAAQ,GAAW;AAAA,IAEpD,IAAI,UAAU;AAAA,MAAM,OAAO;AAAA,IAC3B,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IAGhC,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO;AAAA,IAGtC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MAExB,IAAI,MAAM,WAAW,KAAK,OAAO,MAAM,OAAO,UAAU;AAAA,QAEtD,OAAO,GAAG,UAAU,MAAM,IAAI,KAAK,KAAK,MAAM;AAAA,MAChD;AAAA,MAGA,IAAI,CAAC,UAAU,CAAC,WAAW;AAAA,QACzB,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,KAAK,IAAI;AAAA,MAC5D;AAAA,MAEA,MAAM,gBAAgB,UAAU,OAAO,KAAK;AAAA,MAC5C,MAAM,aAAa,UAAU,OAAO,QAAQ,CAAC;AAAA,MAC7C,MAAM,QAAQ,MACX,IAAI,CAAC,MAAM,GAAG,aAAa,UAAU,GAAG,QAAQ,CAAC,GAAG,EACpD,KAAK;AAAA,CAAK;AAAA,MACb,OAAO;AAAA,EAAM;AAAA,EAAU;AAAA,IACzB;AAAA,IAGA,IAAI,OAAO,UAAU,UAAU;AAAA,MAE7B,MAAM,UAAU,OAAO,QAAQ,KAAK;AAAA,MACpC,MAAM,QAAQ,QAAQ;AAAA,MACtB,IACE,QAAQ,WAAW,KACnB,UAAU,aACV,MAAM,OAAO,YACb,MAAM,QAAQ,MAAM,EAAE,KACtB,MAAM,GAAG,WAAW,KACpB,OAAO,MAAM,GAAG,OAAO,UACvB;AAAA,QACA,OAAO,aAAa,SAAS,MAAM;AAAA,QACnC,IAAI,CAAC,UAAU,CAAC,WAAW;AAAA,UACzB,OAAO,YAAY,UAAU,aAAa,KAAK,OAAO;AAAA,QACxD;AAAA,QACA,MAAM,iBAAgB,UAAU,OAAO,KAAK;AAAA,QAC5C,MAAM,cAAa,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC7C,OAAO;AAAA,EAAM,qBAAoB,UAAU,aAAa,QAAQ,CAAC;AAAA,EAAM,mBAAkB;AAAA,MAC3F;AAAA,MAEA,IAAI,CAAC,UAAU,CAAC,WAAW;AAAA,QACzB,MAAM,aAAY,QACf,IAAI,EAAE,KAAK,SAAS,GAAG,QAAQ,UAAU,KAAK,KAAK,GAAG,EACtD,KAAK,IAAI;AAAA,QACZ,OAAO,KAAK;AAAA,MACd;AAAA,MAEA,MAAM,gBAAgB,UAAU,OAAO,KAAK;AAAA,MAC5C,MAAM,aAAa,UAAU,OAAO,QAAQ,CAAC;AAAA,MAC7C,MAAM,YAAY,QACf,IACC,EAAE,KAAK,SAAS,GAAG,aAAa,QAAQ,UAAU,KAAK,QAAQ,CAAC,GAClE,EACC,KAAK;AAAA,CAAK;AAAA,MACb,OAAO;AAAA,EAAM;AAAA,EAAc;AAAA,IAC7B;AAAA,IAGA,OAAO,KAAK,UAAU,KAAK;AAAA;AAAA,EAG7B,OAAO,UAAU,MAAM;AAAA;AAGlB,SAAS,wBAAwB,CACtC,OACA,QACA;AAAA,EACA,MAAM,SAAS,YAAY,KAAK;AAAA,EAChC,OAAO,eAAe,QAAQ,MAAM;AAAA;;;AD/MtC,eAAsB,kBAAkB,CACtC,MACA,OACA,SACA,QACqB;AAAA,EACrB,IAAI,CAAC,QAAQ,OAAO;AAAA,IAClB,MAAM,IAAI,mBACR,KAAK,IACL,sBACA,2DACF;AAAA,EACF;AAAA,EACA,QAAQ,UAAU;AAAA,EAElB,MAAM,aAAa,mBACjB,KAAK,OAAO,YACZ,OACA,KAAK,EACP;AAAA,EACA,MAAM,YACJ,OAAO,eAAe,WAClB,aACA,KAAK,UAAU,YAAY,MAAM,CAAC;AAAA,EAIxC,MAAM,aAAa,IAAI,YAAY,EAAE,OAAO,SAAS,EAAE;AAAA,EACvD,IAAI,eAAe,aAAa,OAAO;AAAA,EAIvC,IAAI,gBAAgB,OAAO,eAAe,UAAU;AAAA,IAClD,IAAI;AAAA,MACF,KAAK,MAAM,UAAU;AAAA,MACrB,MAAM;AAAA,MACN,eAAe;AAAA;AAAA,EAEnB;AAAA,EAEA,IAAI,cAAc;AAAA,IAChB,MAAM,iBACJ,OAAO,eAAe,WAAW,KAAK,MAAM,UAAU,IAAI;AAAA,IAC5D,OAAO,wBAAwB,MAAM,gBAAgB,OAAO,MAAM;AAAA,EACpE;AAAA,EAGA,MAAM,SAAS,iBAAiB;AAAA,EAChC,MAAM,QAAQ,IAAI,eAAc;AAAA,IAC9B;AAAA,IACA,OAAO,EAAE,WAAW,OAAO,KAAK;AAAA,IAChC,QAAQ,QAAO,OAAO;AAAA,MACpB,QAAQ,YACN,qBACE,KAAK,OAAO,YACd,CACF;AAAA,IACF,CAAC;AAAA,IACD,UAAU,CAAC,MAAM,OAAO,UAAU,MAAM,WAAW,aAAY,CAAC,CAAC;AAAA,EACnE,CAAC;AAAA,EACD,MAAM,SAAS;AAAA;AAAA;AAAA,EAA2P;AAAA,EAC1Q,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAAA,IAC9C,MAAM,QAAsB,OAAO,MAAM,IAAI,CAAC,OAAO;AAAA,MACnD,MAAM;AAAA,MACN,MAAM;AAAA,IACR,EAAE;AAAA,IAEF,IAAI,OAAO,UAAU,MAAM,WAAW;AAAA,MACpC,MAAM,IAAI,gBACR,KAAK,IACL,iDAAiD,OAAO,UAAU,KAClE,OAAO,UAAU,CACnB;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,QAAQ,OAAO,QAAQ,MAAM;AAAA,IACtC,OAAO,GAAG;AAAA,IACV,IAAI,aAAa;AAAA,MAAoB,MAAM;AAAA,IAC3C,MAAM,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAIrC,eAAe,uBAAuB,CACpC,MACA,YACA,OACA,QACqB;AAAA,EACrB,MAAM,mBAAmB,yBAAyB,YAAsB,CAAC;AAAA,EAGzE,IAAI;AAAA,EAEJ,MAAM,eAAe,YACnB,qBACE,KAAK,OAAO,YACd,CACF;AAAA,EAEA,MAAM,gBAAgB,oBAAoB,YAAY,MAAM;AAAA,EAC5D,MAAM,SAAS,iBAAiB;AAAA,EAEhC,MAAM,mBAAmB,MAAK;AAAA,IAC5B,aACE;AAAA,IACF,aAAa,YAAoD;AAAA,MAC/D,MAAM;AAAA,MACN,YAAY;AAAA,QACV,MAAM,EAAE,aAAa,qCAAqC;AAAA,QAC1D,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,SAAS,OAAO,UAAU;AAAA,MACxB,IAAI;AAAA,MAEJ,IAAI,MAAM,eAAe,WAAW;AAAA,QAClC,IAAI;AAAA,UACF,UAAS,QACP,YACA,MAAM,UACR;AAAA,UACA,OAAO,GAAG;AAAA,UACV,MAAM,IAAI,MACR,mBAAmB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,sCAC9D;AAAA;AAAA,MAEJ,EAAO,SAAI,MAAM,SAAS,WAAW;AAAA,QACnC,UAAS,MAAM;AAAA,MACjB,EAAO;AAAA,QACL,MAAM,IAAI,MACR,2DACF;AAAA;AAAA,MAIF,MAAM,aAAa,MAAM,kBAAkB;AAAA,QACzC,OAAO;AAAA,QACP,QAAQ;AAAA,MACV,CAAC;AAAA,MACD,IAAI,CAAC,WAAW,SAAS;AAAA,QACvB,MAAM,IAAI,MACR,mDAAmD,WAAW,MAAM,oDACtE;AAAA,MACF;AAAA,MAEA,kBAAkB,WAAW;AAAA,MAC7B,OAAO,EAAE,SAAS,KAAK;AAAA;AAAA,EAE3B,CAAC;AAAA,EAED,MAAM,QAAQ,IAAI,eAAc;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,MACL,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW,OAAO;AAAA,IACpB;AAAA,IACA,UAAU;AAAA,MACR,MAAM,oBAAoB,aAAa,OAAO,UAAU,MAAM;AAAA,MAC9D,aAAY,OAAO,aAAa;AAAA,IAClC;AAAA,EACF,CAAC;AAAA,EAED,MAAM,YAAY,KAAK,UAAU,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EAClE,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAAA,IACxC,OAAO,GAAG;AAAA,IACV,IAAI,aAAa;AAAA,MAAoB,MAAM;AAAA,IAC3C,MAAM,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA,EAGnC,MAAM,QAAsB,OAAO,MAAM,IAAI,CAAC,OAAO;AAAA,IACnD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,EAAE;AAAA,EAEF,IAAI,oBAAoB,WAAW;AAAA,IACjC,OAAO,EAAE,QAAQ,iBAAiB,MAAM;AAAA,EAC1C;AAAA,EAEA,IAAI,OAAO,UAAU,MAAM,WAAW;AAAA,IACpC,MAAM,IAAI,gBACR,KAAK,IACL,iDAAiD,OAAO,UAAU,KAClE,OAAO,UAAU,CACnB;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBACR,KAAK,IACL,0BACA,2EACA,SACF;AAAA;AAGK,SAAS,wBAAwB,CACtC,MACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,OAAO;AAAA,MACL,YAAY,mBACV,KAAK,OAAO,YACZ,OACA,KAAK,EACP;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN;AAAA;AAAA;;;AElQJ,eAAsB,cAAc,CAClC,MACA,OACA,WACA,aACA,UACA,SACA,SACA,cACA,UACA,cACoB;AAAA,EACpB,MAAM,SAAS,mBACb,KAAK,OAAO,QACZ,OACA,KAAK,EACP;AAAA,EAEA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,IAC1B,MAAM,IAAI,gBACR,KAAK,IACL,4BACA,yCAAyC,OAAO,UAChD,MACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAqB,CAAC;AAAA,EAC5B,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,IACtC,MAAM,OAAO,OAAO;AAAA,IACpB,MAAM,gBAAwC;AAAA,MAC5C,GAAG;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,KAAK;AAAA,QACb,gBAAgB;AAAA,QAChB,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,gBAAgB,KAAK,WAAW,KAAK,OAAO,WAAW,KAAK;AAAA,IAClE,MAAM,aAAa,MAAM,aACvB,KAAK,OAAO,gBACZ,WACA,aACA,eACA,SACA,SACA,WACA,cACA,aACF;AAAA,IACA,QAAQ,KAAK,UAAU;AAAA,EACzB;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,oBAAoB,CAClC,MACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,OAAO;AAAA,MACL,QAAQ,mBACN,KAAK,OAAO,QACZ,OACA,KAAK,EACP;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN;AAAA;AAAA;;;ACjFJ,uBAAS,uBAAY,wBAAQ,+BAAa;AAQ1C,eAAsB,gBAAgB,CACpC,MACA,OACA,SACoD;AAAA,EACpD,IAAI,CAAC,QAAQ,OAAO;AAAA,IAClB,MAAM,IAAI,mBACR,KAAK,IACL,sBACA,yDACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,oBAAoB,KAAK,OAAO,QAAQ,OAAO,KAAK,EAAE;AAAA,EAErE,MAAM,QAAQ,IAAI,eAAc;AAAA,IAC9B,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAO,OAAO;AAAA,MACpB,QAAQ,YACN,qBACE,KAAK,OAAO,YACd,CACF;AAAA,IACF,CAAC;AAAA,IACD,UAAU,aAAY,CAAC;AAAA,EACzB,CAAC;AAAA,EAED,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAAA,IAC9C,MAAM,QAAsB,OAAO,MAAM,IAAI,CAAC,OAAO;AAAA,MACnD,MAAM;AAAA,MACN,MAAM;AAAA,IACR,EAAE;AAAA,IACF,OAAO,EAAE,QAAQ,OAAO,QAAQ,MAAM;AAAA,IACtC,OAAO,GAAG;AAAA,IACV,IAAI,aAAa;AAAA,MAAoB,MAAM;AAAA,IAC3C,MAAM,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAI9B,SAAS,sBAAsB,CACpC,MACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,OAAO;AAAA,MACL,QAAQ,oBAAoB,KAAK,OAAO,QAAQ,OAAO,KAAK,EAAE;AAAA,IAChE;AAAA,IACA,MAAM;AAAA,IACN,OAAO,EAAE,QAAQ,KAAK,OAAO,OAAO;AAAA;AAAA;;;ACnDxC,eAAsB,YAAY,CAChC,MACA,OACA,SACA,OACe;AAAA,EACf,MAAM,aAAa,mBACjB,KAAK,OAAO,YACZ,OACA,KAAK,EACP;AAAA,EACA,IAAI,OAAO,eAAe,YAAY,aAAa,GAAG;AAAA,IACpD,MAAM,IAAI,gBACR,KAAK,IACL,0BACA,uDAAuD,OAAO,eAAe,WAAW,aAAa,OAAO,cAC5G,UACF;AAAA,EACF;AAAA,EACA,MAAM,UAAU,KAAK,IAAI,YAAY,MAAM,eAAe,UAAU;AAAA,EACpE,MAAM,QAAQ,MAAM,KAAK,IAAI,OAAO;AAAA;;;AC1B/B,SAAS,YAAY,GAAc;AAAA,EACxC;AAAA;;;ACUF,eAAsB,iBAAiB,CACrC,MACA,OACA,WACA,aACA,UACA,SACA,SACA,cACA,UACA,cACkB;AAAA,EAClB,MAAM,cAAc,mBAClB,KAAK,OAAO,UACZ,OACA,KAAK,EACP;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,mBAAmB;AAAA,EAEvB,SAAS,IAAI,EAAG,IAAI,KAAK,OAAO,MAAM,QAAQ,KAAK;AAAA,IACjD,MAAM,IAAI,KAAK,OAAO,MAAM;AAAA,IAC5B,IAAI,EAAE,MAAM,SAAS,WAAW;AAAA,MAC9B,kBAAkB,EAAE;AAAA,MACpB,IAAI,qBAAqB;AAAA,QAAI,mBAAmB;AAAA,IAClD,EAAO;AAAA,MACL,MAAM,YAAY,mBAChB,EAAE,OACF,OACA,KAAK,EACP;AAAA,MACA,IAAI,cAAc,aAAa;AAAA,QAC7B,kBAAkB,EAAE;AAAA,QACpB,mBAAmB;AAAA,QACnB;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA,EAEA,MAAM,mBAAmB,mBAAmB;AAAA,EAC5C,IAAI,CAAC,kBAAkB;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,MAAM,aAAqC;AAAA,IACzC,GAAG;AAAA,IACH;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,aACX,kBACA,WACA,aACA,UACA,SACA,SACA,WACA,cACA,UACF;AAAA;AAGK,SAAS,uBAAuB,CACrC,MACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,OAAO;AAAA,MACL,UAAU,mBACR,KAAK,OAAO,UACZ,OACA,KAAK,EACP;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN;AAAA;AAAA;;;AC7FJ,8BAAS;AAWT,eAAsB,eAAe,CACnC,MACA,OACA,OACkB;AAAA,EAElB,MAAM,UAAU,MAAM,KAAK,OAAO;AAAA,EAClC,IAAI,CAAC,SAAS,SAAS;AAAA,IACrB,MAAM,IAAI,mBACR,KAAK,IACL,kBACA,SAAS,KAAK,OAAO,gDACvB;AAAA,EACF;AAAA,EAEA,MAAM,gBAAyC,CAAC;AAAA,EAChD,YAAY,KAAK,SAAS,OAAO,QAAQ,KAAK,OAAO,SAAS,GAAG;AAAA,IAC/D,cAAc,OAAO,mBAAmB,MAAoB,OAAO,KAAK,EAAE;AAAA,EAC5E;AAAA,EAEA,IAAI,QAAQ,aAAa;AAAA,IACvB,MAAM,aAAa,MAAM,mBAAkB;AAAA,MACzC,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,IACD,IAAI,CAAC,WAAW,SAAS;AAAA,MACvB,MAAM,IAAI,gBACR,KAAK,IACL,gCACA,SAAS,KAAK,OAAO,sCAAsC,WAAW,MAAM,WAC5E,eACA,WAAW,KACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,MAAM,QAAQ,QAAQ,eAAe;AAAA,MAC1C,YAAY,KAAK;AAAA,MACjB,UAAU,CAAC;AAAA,IACb,CAAC;AAAA,IACD,OAAO,GAAG;AAAA,IACV,MAAM,IAAI,qBACR,KAAK,IACL,yBACA,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GACzC,CACF;AAAA;AAAA;AAIG,SAAS,qBAAqB,CACnC,MACA,OACS;AAAA,EACT,MAAM,WAAoC,CAAC;AAAA,EAC3C,YAAY,KAAK,SAAS,OAAO,QAAQ,KAAK,OAAO,SAAS,GAAG;AAAA,IAC/D,IAAI;AAAA,MACF,SAAS,OAAO,mBAAmB,MAAoB,OAAO,KAAK,EAAE;AAAA,MACrE,MAAM;AAAA,MACN,SAAS,OAAO,oBAAoB;AAAA;AAAA,EAExC;AAAA,EACA,OAAO;AAAA;;;AC9DT,eAAsB,uBAAuB,CAC3C,MACA,OACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,UACA,cACkB;AAAA,EAClB,MAAM,SAAS,MAAM;AAAA,EAErB,MAAM,cAAc,KAAK,IACvB,KAAK,OAAO,cACP,mBACC,KAAK,OAAO,aACZ,OACA,KAAK,EACP,IACA,IACJ,OAAO,WACT;AAAA,EACA,MAAM,aAAa,KAAK,IACtB,KAAK,OAAO,aACP,mBACC,KAAK,OAAO,YACZ,OACA,KAAK,EACP,IACA,MACJ,OAAO,UACT;AAAA,EACA,MAAM,aAAa,KAAK,OAAO,oBAC1B,mBACC,KAAK,OAAO,mBACZ,OACA,KAAK,EACP,IACA;AAAA,EACJ,MAAM,oBAAoB,KAAK,IAC7B,OAAO,sBACP,KAAK,IAAI,YAAY,OAAO,oBAAoB,CAClD;AAAA,EACA,MAAM,YAAY,KAAK,OAAO,YAC1B,KAAK,IACH,mBACE,KAAK,OAAO,WACZ,OACA,KAAK,EACP,GACA,OAAO,YACT,IACA;AAAA,EAEJ,IAAI,cAAc;AAAA,EAClB,OAAO,QAAQ,iBACb,KAAK,IACL,YAAY;AAAA,IACV,MAAM,WAAmC;AAAA,MACvC,GAAG;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,KAAK;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,MAAM,YAAY;AAAA,IAClB,IAAI;AAAA,MACF,MAAM,aACJ,KAAK,OAAO,iBACZ,WACA,aACA,UACA,SACA,SACA,WACA,cACA,QACF;AAAA,MACA,MAAM,eAAe,KAAK,gBAAgB,SAAS;AAAA,MACnD,OAAO,mBACL,KAAK,OAAO,WACZ,cACA,KAAK,EACP;AAAA,cACA;AAAA,MACA,MAAM,UAAU,KAAK,EAAE;AAAA;AAAA,KAG3B,EAAE,aAAa,YAAY,mBAAmB,UAAU,CAC1D;AAAA;;;AC/CK,IAAM,8BAA8B;AACpC,IAAM,+BAA+B;AACrC,IAAM,sCAAsC;AAC5C,IAAM,mCAAmC;AAOhD,eAAe,gBAAgB,CAC7B,QACA,QACA,SACA,SACA,cACA,WAAmC,CAAC,GACrB;AAAA,EACf,MAAM,WAAW,QAAQ;AAAA,EACzB,IAAI,CAAC,YAAY,SAAS,WAAW;AAAA,IAAG;AAAA,EAExC,MAAM,mBAAmB,QAAQ,oBAAoB,CAAC;AAAA,EAEtD,WAAW,UAAU,UAAU;AAAA,IAC7B,MAAM,WAAW,MAAM,OAAO,QAAQ,kBAAkB,MAAM;AAAA,IAC9D,MAAM,iBAAiB,OAAO;AAAA,IAE9B,QAAQ,SAAS;AAAA,WACV;AAAA,QACH;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,mBACR,QACA,6BACA,cACF;AAAA,WAEG;AAAA,QACH;AAAA,WAEG,WAAW;AAAA,QACd,MAAM,cAAc,qBAClB,QACA,UACA,cACF;AAAA,QAEA,MAAM,YACJ,QAAQ,qBAAqB;AAAA,QAC/B,MAAM,aACJ,QAAQ,sBAAsB;AAAA,QAChC,MAAM,oBACJ,QAAQ,6BACR;AAAA,QACF,MAAM,gBACJ,QAAQ,yBAAyB;AAAA,QAKnC,MAAM,sBAAsB,YAAY,cAAc,aAAa,SAAS,aAAa;AAAA,QAEzF,MAAM,iBAAiB,CAAC,CAAC,SAAS;AAAA,QAClC,MAAM,eAAe,CAAC,CAAC,SAAS;AAAA,QAGhC,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,iBAAiB;AAAA,UAC/D,MAAM,IAAI,mBACR,QACA,qGACA,cACF;AAAA,QACF;AAAA,QAKA,IAAI,gBAAgB,CAAC,QAAQ,iBAAiB;AAAA,UAC5C,MAAM,SAAS,UAAU,mBAAmB;AAAA,QAC9C;AAAA,QAEA,IAAI;AAAA,QACJ,IAAI;AAAA,UAEF,MAAM,iBAAiB,kBAClB,YAAY;AAAA,YACX,MAAM,WAAW,KAAK,IAAI,IAAI;AAAA,YAC9B,IAAI,QAAQ;AAAA,YAEZ,OAAO,MAAM;AAAA,cAEX,IAAI,SAAS,SAAS;AAAA,gBACpB,MAAM,aAAa,MAAM,SAAS,QAAQ;AAAA,gBAC1C,IAAI,WAAW,OAAO;AAAA,kBACpB,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,QACE,WAAW,UAAU;AAAA,kBACzB;AAAA,gBACF;AAAA,cACF;AAAA,cAEA,MAAM,SAAS,MAAM,SAAS,YAAY;AAAA,cAC1C,IAAI;AAAA,gBAAQ,OAAO;AAAA,cAEnB,IAAI,KAAK,IAAI,IAAI,QAAQ,UAAU;AAAA,gBACjC,MAAM,IAAI,MAAM,SAAS;AAAA,cAC3B;AAAA,cAEA,MAAM,QAAQ,MAAM,YAAY,eAAe,KAAK;AAAA,cACpD,QAAQ,KAAK,IAAI,QAAQ,mBAAmB,aAAa;AAAA,YAC3D;AAAA,aACC,IACH;AAAA,UAGJ,MAAM,kBAAkB,QAAQ,kBAC5B,QAAQ,gBACN,YAAY,UACZ,OAAO,eAAe;AAAA,YACpB,IAAI,cAAc;AAAA,cAChB,MAAM,SAAS,UAAU,UAAU;AAAA,YACrC;AAAA,aAEF,SACF,IACA;AAAA,UAGJ,IAAI,mBAAmB,gBAAgB;AAAA,YACrC,iBAAiB,MAAM,QAAQ,KAAK;AAAA,cAClC;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH,EAAO,SAAI,iBAAiB;AAAA,YAC1B,iBAAiB,MAAM;AAAA,UACzB,EAAO;AAAA,YAEL,iBAAiB,MAAM;AAAA;AAAA,UAEzB,MAAM;AAAA,UAEN,MAAM,cAAc,WAClB,QACA,UACA,gBACA,4BACF;AAAA,UACA,MAAM,IAAI,mBACR,QACA,8BACA,cACF;AAAA;AAAA,QAIF,MAAM,mBAAmB;AAAA,QAMzB,IAAI,SAAS,YAAY;AAAA,UACvB,MAAM,SAAS,WAAW,gBAAgB;AAAA,QAC5C;AAAA,QAEA,IAAI,iBAAiB,UAAU;AAAA,UAC7B,MAAM,cAAc,aAAa,QAAQ,UAAU,cAAc;AAAA,UACjE;AAAA,QACF;AAAA,QAEA,MAAM,cAAc,WAClB,QACA,UACA,gBACA,iBAAiB,MACnB;AAAA,QACA,MAAM,IAAI,mBACR,QACA,iBAAiB,UAAU,mBAC3B,cACF;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA;AAOF,SAAS,sBAAsB,CAC7B,aACA,QACM;AAAA,EACN,IAAI,CAAC,eAAe,OAAO,gBAAgB;AAAA,IAAU;AAAA,EAErD,MAAM,WAAW,YAAY;AAAA,EAC7B,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,IAC3B,MAAM,UAAU,SAAS,OACvB,CAAC,QAAiB,OAAO,QAAQ,YAAY,EAAE,OAAO,OACxD;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,MAAM,IAAI,gBACR,SACA,gCACA,gEAAgE,QAAQ,KAAK,IAAI,KACjF,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,YAAY;AAAA,EAC/B,IAAI,cAAc,OAAO,eAAe,UAAU;AAAA,IAChD,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,MACjD,MAAM,aAAc,WAAuC;AAAA,MAC3D,IACE,cACA,OAAO,eAAe,YACtB,UAAU,YACV;AAAA,QACA,MAAM,eAAgB,WAAgC;AAAA,QACtD,MAAM,aAAa,OAAO;AAAA,QAC1B,IAAI,iBAAiB,aAAa,iBAAiB,UAAU;AAAA,UAC3D,IAAI,eAAe,UAAU;AAAA,YAC3B,MAAM,IAAI,gBACR,SACA,gCACA,4CAA4C,uBAAuB,0BAA0B,eAC7F,MACF;AAAA,UACF;AAAA,QACF,EAAO,SAAI,iBAAiB,SAAS;AAAA,UACnC,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,YACzB,MAAM,IAAI,gBACR,SACA,gCACA,4CAA4C,uCAAuC,eACnF,MACF;AAAA,UACF;AAAA,QACF,EAAO,SAAI,eAAe,cAAc;AAAA,UACtC,MAAM,IAAI,gBACR,SACA,gCACA,4CAA4C,uBAAuB,0BAA0B,eAC7F,MACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAKF,SAAS,sBAAsB,CAC7B,cACA,QACA,WACM;AAAA,EACN,MAAM,eAAe,aAAa;AAAA,EAClC,IAAI,OAAO,iBAAiB,UAAU;AAAA,IACpC,IACE,iBAAiB,aAChB,OAAO,WAAW,YAAY,WAAW,OAC1C;AAAA,MACA,MAAM,IAAI,gBACR,WACA,qCACA,sEAAsE,WAAW,OAAO,SAAS,OAAO,WACxG,MACF;AAAA,IACF;AAAA,IACA,IAAI,iBAAiB,WAAW,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,MACtD,MAAM,IAAI,gBACR,WACA,qCACA,qEAAqE,OAAO,WAC5E,MACF;AAAA,IACF;AAAA,IACA,KACG,iBAAiB,YAAY,iBAAiB,cAC/C,OAAO,WAAW,cAClB;AAAA,MACA,MAAM,IAAI,gBACR,WACA,qCACA,qDAAqD,0BAA0B,OAAO,WACtF,MACF;AAAA,IACF;AAAA,IACA,KACG,iBAAiB,YAAY,iBAAiB,cAC/C,OAAO,WAAW,UAClB;AAAA,MACA,MAAM,IAAI,gBACR,WACA,qCACA,qDAAqD,0BAA0B,OAAO,WACtF,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,IAC3E,MAAM,WAAW,aAAa;AAAA,IAC9B,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC3B,MAAM,UAAU,SAAS,OACvB,CAAC,QACC,OAAO,QAAQ,YACf,EAAE,OAAQ,OACd;AAAA,MACA,IAAI,QAAQ,SAAS,GAAG;AAAA,QACtB,MAAM,IAAI,gBACR,WACA,qCACA,iEAAiE,QAAQ,KAAK,IAAI,KAClF,MACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,aAAa;AAAA,IAChC,IAAI,cAAc,OAAO,eAAe,UAAU;AAAA,MAChD,YAAY,KAAK,UAAU,OAAO,QAChC,MACF,GAAG;AAAA,QACD,MAAM,aAAc,WAAuC;AAAA,QAC3D,IACE,cACA,OAAO,eAAe,YACtB,UAAU,YACV;AAAA,UACA,MAAM,mBAAoB,WAAgC;AAAA,UAC1D,MAAM,aAAa,OAAO;AAAA,UAC1B,IAAI,qBAAqB,aAAa,qBAAqB,UAAU;AAAA,YACnE,IAAI,eAAe,UAAU;AAAA,cAC3B,MAAM,IAAI,gBACR,WACA,qCACA,6CAA6C,uBAAuB,8BAA8B,eAClG,MACF;AAAA,YACF;AAAA,UACF,EAAO,SAAI,qBAAqB,SAAS;AAAA,YACvC,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,cACzB,MAAM,IAAI,gBACR,WACA,qCACA,6CAA6C,uCAAuC,eACpF,MACF;AAAA,YACF;AAAA,UACF,EAAO,SAAI,eAAe,kBAAkB;AAAA,YAC1C,MAAM,IAAI,gBACR,WACA,qCACA,6CAA6C,uBAAuB,8BAA8B,eAClG,MACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAKF,SAAS,iBAAiB,CACxB,MACA,OACS;AAAA,EACT,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO,sBAAsB,MAAM,KAAK;AAAA,SACrC;AAAA,MACH,OAAO,uBAAuB,MAAM,KAAK;AAAA,SACtC;AAAA,MACH,OAAO,yBAAyB,MAAM,KAAK;AAAA,SACxC;AAAA,MACH,OAAO,wBAAwB,MAAM,KAAK;AAAA,SACvC;AAAA,MACH,OAAO,qBAAqB,MAAM,KAAK;AAAA,SACpC;AAAA,MACH,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAAA,MAEzC;AAAA;AAAA;AAYN,eAAe,WAAW,CACxB,MACA,OACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,WAAmC,CAAC,GACf;AAAA,EACrB,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO,iBAAiB,MAAM,OAAO,OAAO;AAAA,SACzC;AAAA,MACH,OAAO,mBAAmB,MAAM,OAAO,SAAS,MAAM,cAAc;AAAA,SACjE;AAAA,MACH,OAAO,iBAAiB,MAAM,OAAO,SAAS,MAAM,cAAc;AAAA,SAC/D;AAAA,MACH,OAAO,EAAE,QAAQ,MAAM,gBAAgB,MAAM,OAAO,QAAQ,KAAK,EAAE;AAAA,SAChE;AAAA,MACH,OAAO;AAAA,QACL,QAAQ,MAAM,kBACZ,MACA,OACA,WACA,aACA,UACA,SACA,SACA,cACA,UACA,YACF;AAAA,MACF;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,QAAQ,MAAM,eACZ,MACA,OACA,WACA,aACA,UACA,SACA,SACA,cACA,UACA,YACF;AAAA,MACF;AAAA,SACG;AAAA,MACH,OAAO,EAAE,QAAQ,MAAM,aAAa,MAAM,OAAO,SAAS,KAAK,EAAE;AAAA,SAC9D;AAAA,MACH,OAAO;AAAA,QACL,QAAQ,MAAM,wBACZ,MACA,OACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,UACA,YACF;AAAA,MACF;AAAA,SACG;AAAA,MACH,OAAO,EAAE,QAAQ,MAAM,aAAa,EAAE;AAAA,SACnC;AAAA,MACH,OAAO,EAAE,QAAQ,MAAM,WAAW,MAAM,KAAK,EAAE;AAAA;AAAA;AAMrD,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAE9B,eAAe,SAAS,CACtB,MACA,WACA,aACA,UACA,SACA,eACA,SACA,OACA,cACA,WAAmC,CAAC,GACf;AAAA,EACrB,MAAM,aAAa,QAAQ,cAAc;AAAA,EACzC,MAAM,YAAY,QAAQ,gBAAgB;AAAA,EAC1C,MAAM,QAAQ,KAAK,gBAAgB,SAAS;AAAA,EAC5C,SAAS,UAAU,EAAG,WAAW,YAAY,WAAW;AAAA,IACtD,MAAM,iBAAiB,IAAI,KAAK,EAAE,YAAY;AAAA,IAC9C,MAAM,QAAQ,MACZ,GAAG,KAAK,YAAY,WACpB,YAAY,MAAM,UAAU,EAC9B;AAAA,IACA,IAAI;AAAA,MACF,OAAO,MAAM,YACX,MACA,OACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,QACF;AAAA,MACA,OAAO,GAAG;AAAA,MACV,MAAM,cAAc,eAAe,KAAK,IAAI,UAAU;AAAA,QACpD;AAAA,QACA,WAAW;AAAA,QACX,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,QACjC,WAAW,aAAa,qBAAqB,EAAE,OAAO;AAAA,QACtD,cAAc,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,MACzD,CAAC;AAAA,MAGD,IAAI,aAAa;AAAA,QAAiB,MAAM;AAAA,MACxC,IAAI,YAAY;AAAA,QAAY,MAAM;AAAA;AAAA,EAEtC;AAAA,EACA,MAAM;AAAA;AAGR,eAAe,gBAAgB,CAC7B,OACA,MACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,WAAmC,CAAC,GACf;AAAA,EACrB,QAAQ,MAAM;AAAA,SACP;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO,UACL,MACA,WACA,aACA,UACA,SACA,OACA,SACA,OACA,cACA,QACF;AAAA,SAEG;AAAA,MACH,IAAI,iBAAiB,wBAAwB,MAAM,aAAa;AAAA,QAC9D,OAAO,UACL,MACA,WACA,aACA,UACA,SACA,OACA,SACA,OACA,cACA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,SAEH;AAAA,MACH,MAAM;AAAA;AAAA,MAGN,MAAM;AAAA;AAAA;AAWZ,IAAM,eAA+B,eAAe,aAAY,CAC9D,aACA,WACA,aACA,UACA,SACA,SACA,OACA,cACA,WAAmC,CAAC,GACpC,iBACkB;AAAA,EAClB,IAAI,gBAAoC;AAAA,EACxC,IAAI;AAAA,EAEJ,OAAO,eAAe;AAAA,IACpB,MAAM,OAAO,UAAU,IAAI,aAAa;AAAA,IACxC,IAAI,CAAC,MAAM;AAAA,MAET,MAAM,IAAI,MAAM,SAAS,0BAA0B;AAAA,IACrD;AAAA,IAGA,IAAI,iBAAiB,IAAI,KAAK,EAAE,GAAG;AAAA,MACjC,aAAa,YAAY,KAAK;AAAA,MAC9B,gBAAgB,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,OAAO,WAAW,KAAK,EAAE;AAAA,IACzB,MAAM,gBAAgB,KAAK,IAAI;AAAA,IAC/B,MAAM,cAAc,YAAY,KAAK,IAAI,QAAQ;AAAA,IACjD,QAAQ,cAAc,KAAK,IAAI,IAAI;AAAA,IAEnC,MAAM,QAAQ,KAAK,gBAAgB,SAAS;AAAA,IAC5C,MAAM,iBAAiB,eACnB,kBAAkB,MAAM,KAAK,IAC7B;AAAA,IAGJ,IAAI,KAAK,SAAS,eAAe,QAAQ,UAAU,QAAQ;AAAA,MACzD,MAAM,SAA2B;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU,KAAK,OAAO;AAAA,UACtB,WAAY,kBAAkB,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,MACA,MAAM,iBACJ,QACA,KAAK,IACL,SACA,SACA,cACA,QACF;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,OAAO,YAAY;AAAA,MACnB,IAAI;AAAA,QACF,aAAc,MAAM,QAAQ,KAAK,KAAK,IAAI,MACxC,YACE,MACA,OACA,WACA,aACA,UACA,SACA,SACA,SAAS,IAAI,gBACb,cACA,QACF,CACF;AAAA,gBACA;AAAA,QACA,OAAO,UAAU,KAAK,EAAE;AAAA;AAAA,MAE1B,OAAO,GAAG;AAAA,MACV,IAAI,EAAE,aAAa,qBAAqB;AAAA,QACtC,MAAM,cAAa,KAAK,IAAI,IAAI;AAAA,QAChC,MAAM,eAAe,IAAI,qBACvB,KAAK,IACL,yBACA,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GACzC,GACA,WACA,KACF;AAAA,QACA,MAAM,cAAc,WAClB,KAAK,IACL,UACA,cACA,aACA,cACF;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,IAAI;AAAA,QACF,aAAa,MAAM,iBACjB,GACA,MACA,WACA,aACA,UACA,SACA,SACA,SAAS,IAAI,gBACb,cACA,QACF;AAAA,QACA,OAAO,eAAe;AAAA,QACtB,MAAM,cAAa,KAAK,IAAI,IAAI;AAAA,QAChC,MAAM,cAAc,WAClB,KAAK,IACL,UACA,GACA,aACA,cACF;AAAA,QACA,MAAM;AAAA;AAAA;AAAA,IAIV,MAAM,aAAa,KAAK,IAAI,IAAI;AAAA,IAChC,YAAY,KAAK,MAAM,WAAW;AAAA,IAClC,aAAa,WAAW;AAAA,IACxB,MAAM,cAAc,cAClB,KAAK,IACL,UACA,WAAW,QACX,YACA,gBACA,WAAW,KACb;AAAA,IACA,QAAQ,iBAAiB,KAAK,IAAI,WAAW,MAAM;AAAA,IAEnD,gBAAgB,KAAK;AAAA,EACvB;AAAA,EAEA,OAAO;AAAA;AAKT,SAAS,sBAAsB,CAC7B,UACA,SACM;AAAA,EACN,MAAM,aAAa,SAAS,MAAM,KAChC,CAAC,MACC,EAAE,SAAS,gBACX,EAAE,SAAS,kBACX,EAAE,SAAS,YACf;AAAA,EACA,IAAI,cAAc,CAAC,QAAQ,OAAO;AAAA,IAChC,MAAM,UAAU,SAAS,MAAM,KAC7B,CAAC,MACC,EAAE,SAAS,gBACX,EAAE,SAAS,kBACX,EAAE,SAAS,YACf;AAAA,IACA,MAAM,IAAI,mBACR,SAAS,MAAM,WACf,sBACA,6DACF;AAAA,EACF;AAAA,EAEA,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,IAAI,KAAK,SAAS,aAAa;AAAA,MAC7B,MAAM,UAAU,QAAQ,MAAM,KAAK,OAAO;AAAA,MAC1C,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,mBACR,KAAK,IACL,kBACA,SAAS,KAAK,OAAO,qBACvB;AAAA,MACF;AAAA,MACA,IAAI,CAAC,QAAQ,SAAS;AAAA,QACpB,MAAM,IAAI,mBACR,KAAK,IACL,wBACA,SAAS,KAAK,OAAO,mCACvB;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,SAAS,gBAAgB,CAAC,QAAQ,OAAO;AAAA,MAGhD,WAAW,YAAY,KAAK,OAAO,OAAO;AAAA,QACxC,MAAM,UAAU,QAAQ,MAAM;AAAA,QAC9B,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,mBACR,KAAK,IACL,kBACA,SAAS,mDACX;AAAA,QACF;AAAA,QACA,IAAI,CAAC,QAAQ,SAAS;AAAA,UACpB,MAAM,IAAI,mBACR,KAAK,IACL,wBACA,SAAS,iEACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAgBF,eAAsB,eAAe,CACnC,UACA,SAC0B;AAAA,EAC1B,MAAM,YAAY,IAAI;AAAA,EACtB,WAAW,QAAQ,SAAS,OAAO;AAAA,IACjC,UAAU,IAAI,KAAK,IAAI,IAAI;AAAA,EAC7B;AAAA,EAEA,MAAM,cAAuC,CAAC;AAAA,EAC9C,MAAM,SAAS,aAAa,QAAQ;AAAA,EAIpC,MAAM,kBAAkB,IAAI;AAAA,EAC5B,MAAM,oBACJ,QAAQ,cAAc,iBAAiB,SACnC,QAAQ,eACR;AAAA,EACN,IAAI,mBAAmB;AAAA,IACrB,WAAW,UAAU,kBAAkB,aAAa;AAAA,MAClD,IACE,OAAO,WAAW,eAClB,OAAO,KAAK,WAAW,KACvB,OAAO,WAAW,WAClB;AAAA,QACA,YAAY,OAAO,UAAU,OAAO;AAAA,QACpC,gBAAgB,IAAI,OAAO,MAAM;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkD;AAAA,EACxD,MAAM,kBAAkB,QAAQ,WAAW,4BAA4B;AAAA,EACvE,MAAM,QAAQ,IAAI,eAAe,QAAQ,MAAM;AAAA,EAG/C,MAAM,sBAAsB,oBACxB;AAAA,OACK;AAAA,IACH,cAAc;AAAA,IACd,aAAa,kBAAkB,YAAY,OACzC,CAAC,MAAM,EAAE,WAAW,WACtB;AAAA,EACF,IACA;AAAA,EACJ,MAAM,mBAAiD,QAAQ,UAC3D,OAAO,OAAO,UAAU;AAAA,IACtB,MAAM,QAAQ,SAAS,QAAQ,KAAK;AAAA,IACpC,MAAM,QAAQ,gBAAgB,OAAO,KAAK;AAAA,MAE5C,QAAQ;AAAA,EAEZ,MAAM,eAAe,IAAI,sBACvB,kBACA,qBACA,MACF;AAAA,EACA,MAAM,aAAa,WAAW;AAAA,EAE9B,IAAI;AAAA,IACF,uBAAuB,UAAU,eAAe;AAAA,IAEhD,MAAM,SAAS,QAAQ,UAAU,CAAC;AAAA,IAClC,uBACE,SAAS,aACT,MACF;AAAA,IACA,YAAY,QAAQ;AAAA,IAEpB,MAAM,cAAc,MAAM,aACxB,SAAS,eACT,WACA,aACA,CAAC,GACD,iBACA,iBACA,OACA,cACA,CAAC,GACD,gBAAgB,OAAO,IAAI,kBAAkB,SAC/C;AAAA,IAEA,IAAI,SAAS,cAAc;AAAA,MAEzB,IAAI,YAAY;AAAA,MAChB,WAAW,QAAQ,SAAS,OAAO;AAAA,QACjC,IAAI,KAAK,SAAS,SAAS,KAAK,MAAM,aAAa;AAAA,UACjD,YAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,MACA,uBACE,SAAS,cACT,aACA,SACF;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,aAAa,WAAW;AAAA,IAC3C,OAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR,gBAAgB,aAAa;AAAA,IAC/B;AAAA,IACA,OAAO,GAAG;AAAA,IACV,MAAM,QACJ,aAAa,qBACT,IACA,IAAI,qBACF,WACA,yBACA,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GACzC,GACA,WACA,KACF;AAAA,IACN,MAAM,aAAa,UAAU,KAAK;AAAA,IAClC,OAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,gBAAgB,aAAa;AAAA,IAC/B;AAAA,YACA;AAAA,IACA,MAAM,QAAQ,SAAS,MAAM;AAAA;AAAA;AAc1B,SAAS,qBAAqB,CACnC,UACA,SAC+B;AAAA,EAC/B,MAAM,UAAU,IAAI;AAAA,EAGpB,gBAAgB,UAAU,KAAK,SAAS,QAAQ,CAAC;AAAA,EAEjD,OAAO,QAAQ,UAAU,EAAE,QAAQ,KAAK,CAAC;AAAA;;ACngC3C,yBAAS,8BAAc,sBAAa;AACpC,iBAAS;;;ACFT,iBAAS;AAET,IAAM,mBAAmB,MAAK;AAAA,EAC5B,MAAM;AAAA,EACN,OAAO;AACT,CAAC,EACE,GAAG;AAAA,EACF,MAAM;AAAA,EACN,YAAY;AACd,CAAC,EACA,GAAG;AAAA,EACF,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,SACC,2kBACF;AAEF,IAAM,uBAAuB,MAAK;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,WAAW;AAAA,MACT;AAAA,QACE,YAAY;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,sGACF;AAEA,IAAM,yBAAyB,MAAK;AAAA,EAClC,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,OAAO,iBAAiB,GAAG,EAAE,MAAM,YAAY,CAAC;AAAA,QAChD,kBAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,uRACF;AAEA,IAAM,sBAAsB,MAAK;AAAA,EAC/B,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,iQACF;AAEA,IAAM,kBAAkB,MAAK;AAAA,EAC3B,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,0FACF;AAEA,IAAM,0BAA0B,MAAK;AAAA,EACnC,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,YAAY,CAAC,kBAAkB,KAAK,sCAAsC;AAAA,IAC1E,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,0LACF;AAEA,IAAM,oBAAoB,MAAK;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,YAAY;AAAA,EACd;AACF,CAAC,EAAE,SACD,iJACF;AAEA,IAAM,+BAA+B,MAAK;AAAA,EACxC,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,iBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,sBAAsB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,wpBACF;AAEA,IAAM,wBAAwB,MAAK;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,CAAC,UAAU,IAAI;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,SACD,6SACF;AAEA,IAAM,oBAAoB,MAAK;AAAA,EAC7B,MAAM;AACR,CAAC,EAAE,SACD,4GACF;AAEA,IAAM,YAAY,MAAK;AAAA,EACrB,MAAM;AAAA,EACN,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AACF,CAAC,EAAE,SACD,wIACF;AAEA,IAAM,qBAAqB,MAAK;AAAA,EAC9B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,eAAe;AACjB,CAAC,EAAE,IACD,qBACG,GAAG,eAAe,EAClB,GAAG,uBAAuB,EAC1B,GAAG,sBAAsB,EACzB,GAAG,mBAAmB,EACtB,GAAG,iBAAiB,EACpB,GAAG,4BAA4B,EAC/B,GAAG,qBAAqB,EACxB,GAAG,iBAAiB,EACpB,GAAG,SAAS,CACjB;AAMO,IAAM,2BAA2B,MAAK;AAAA,EAC3C,eAAe;AAAA,EACf,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,CAAC,oBAAoB,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF,CAAC;;;AC1OD,qBAAS;AAGT,eAAsB,uBAAuB,CAAC,OAAiC;AAAA,EAC7E,OAAO,KAAK,UACV,MAAM,QAAQ,IACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,QAAQ,UAAU,cAAc;AAAA,IACxD,MAAM;AAAA,IACN,aAAa,QAAQ;AAAA,IACrB,aAAa,MAAM,UAAS,QAAQ,WAAW,EAAE;AAAA,IACjD,cAAc,QAAQ,eAClB,MAAM,UAAS,QAAQ,YAAY,EAAE,aACrC;AAAA,EACN,EAAE,CACJ,CACF;AAAA;AAGK,SAAS,6BAA6B,CAC3C,iBACA,wBACQ;AAAA,EACR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8MP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0MA0BwM,yBAAyB;AAAA;AAAA;AAAA;AAAA,EAAqC,2BAA2B;AAAA;AAG5R,SAAS,iBAAiB,CAAC,aAAmC;AAAA,EACnE,MAAM,SAAS,YAAY,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO;AAAA,EAC/D,IAAI,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EAChC,OAAO,OACJ,IAAI,CAAC,MAAM;AAAA,IACV,MAAM,MAAM,EAAE,WACV,aAAa,EAAE,SAAS,SAAS,EAAE,SAAS,QAAQ,WAAW,EAAE,SAAS,UAAU,QACpF;AAAA,IACJ,OAAO,MAAM,EAAE,SAAS,EAAE,UAAU;AAAA,GACrC,EACA,KAAK;AAAA,CAAI;AAAA;;;AF5Md,eAAsB,gBAAgB,CACpC,SACiC;AAAA,EACjC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,MACE;AAAA,EAEJ,MAAM,sBAAsB,OAAO,QAAQ,KAAK,EAC7C,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,YAAY,EAClC,IAAI,EAAE,UAAU,IAAI;AAAA,EACvB,IAAI,oBAAoB,SAAS,GAAG;AAAA,IAClC,MAAM,IAAI,MACR,iDAAiD,oBAAoB,KAAK,IAAI,GAChF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,MAAM,wBAAwB,KAAK;AAAA,EAC3D,MAAM,eAAe,8BACnB,iBACA,sBACF;AAAA,EAEA,IAAI,kBAA6C;AAAA,EACjD,IAAI,kBAAgC,CAAC;AAAA,EACrC,IAAI,WAAW;AAAA,EAEf,MAAM,qBAAqB,MAAK;AAAA,IAC9B,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,OAAO,gBAAgB;AAAA,MAC9B;AAAA,MACA,MAAM,SAAS,MAAM,gBAAgB,aAAa,EAAE,MAAM,CAAC;AAAA,MAC3D,kBAAkB,OAAO;AAAA,MAEzB,MAAM,SAAS,OAAO,YAAY,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO;AAAA,MACtE,IAAI,OAAO,SAAS,GAAG;AAAA,QACrB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,QAAQ,kBAAkB,OAAO,WAAW;AAAA,QAC9C;AAAA,MACF;AAAA,MAEA,kBAAkB,OAAO,YAAY;AAAA,MACrC,OAAO,EAAE,SAAS,KAAK;AAAA;AAAA,EAE3B,CAAC;AAAA,EAED,MAAM,cAAa;AAAA,IACjB;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,EAA0D;AAAA,IAClE,OAAO,EAAE,gBAAgB,mBAAmB;AAAA,IAC5C,YAAY,EAAE,MAAM,QAAQ,UAAU,iBAAiB;AAAA,IACvD,UAAU,CAAC,aAAY,aAAa,CAAC,GAAG,MAAM,oBAAoB,IAAI;AAAA,EACxE,CAAC;AAAA,EAED,OAAO;AAAA,IACL,UAAU;AAAA,IACV,aAAa;AAAA,IACb;AAAA,EACF;AAAA;AAaK,SAAS,2BAA2B,CACzC,SACA;AAAA,EACA;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,MACE;AAAA,EAEJ,OAAO,MAAK;AAAA,IACV,aACE;AAAA,IACF,aAAa,SAAQ,EAAE,MAAM,SAAS,CAAC;AAAA,IACvC,SAAS,SAAS,WAAW;AAAA,MAC3B,OAAO,iBAAiB;AAAA,QACtB;AAAA,QACA,OAAO,aAAa,CAAC;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA;AAAA,EAEL,CAAC;AAAA;",
45
+ "debugId": "BAD6C301D3B992F364756E2164756E21",
46
46
  "names": []
47
47
  }