judgeval 1.1.0 → 1.2.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/env.ts", "../src/internal/api/client.ts", "../src/utils/logger.ts", "../src/utils/sleep.ts", "../src/utils/retry.ts", "../src/utils/resolve-project-id.ts", "../node_modules/picocolors/picocolors.js", "../src/data/Example.ts", "../src/utils/serializer.ts", "../src/version.ts", "../src/utils/dont-throw.ts", "../src/utils/wrappers/immutable-wrap-sync.ts", "../src/utils/wrappers/immutable-wrap-async.ts", "../src/utils/wrappers/immutable-wrap-sync-iterator.ts", "../src/utils/wrappers/immutable-wrap-async-iterator.ts", "../src/utils/wrappers/proxy-async-iterable.ts", "../src/utils/wrappers/index.ts", "../src/instrumentation/llm/openai/utils.ts", "../src/instrumentation/llm/openai/beta-chat-completions.ts", "../src/instrumentation/llm/openai/chat-completions.ts", "../src/instrumentation/llm/openai/images.ts", "../src/instrumentation/llm/openai/responses.ts", "../src/instrumentation/llm/openai/index.ts", "../src/instrumentation/index.ts", "../src/utils/annotate.ts", "../src/trace/instrumentation/OtelContextBridge.ts", "../src/trace/JudgmentTracerProvider.ts", "../src/trace/baggage/constants.ts", "../src/trace/baggage/utils.ts", "../src/trace/baggage/JudgmentBaggagePropagator.ts", "../src/trace/baggage/index.ts", "../src/trace/propagation/index.ts", "../src/trace/BaseTracer.ts", "../src/trace/exporters/JudgmentSpanExporter.ts", "../src/trace/exporters/NoOpSpanExporter.ts", "../src/trace/processors/JudgmentBaggageSpanProcessor.ts", "../src/trace/processors/JudgmentSpanProcessor.ts", "../src/trace/processors/NoOpSpanProcessor.ts", "../src/trace/Tracer.ts", "../src/trace/processors/OfflineJudgmentSpanProcessor.ts", "../src/trace/OfflineTracer.ts", "../src/Judgeval.ts", "../src/judges/Judge.ts", "../src/evaluation/Evaluation.ts", "../src/evaluation/LocalEvaluatorRunner.ts", "../src/evaluation/EvaluatorRunner.ts", "../src/evaluation/HostedEvaluatorRunner.ts", "../src/evaluation/EvaluationFactory.ts", "../src/datasets/DatasetFactory.ts", "../src/datasets/Dataset.ts", "../src/datasets/schema.ts", "../src/agent-judges/AgentJudgeFactory.ts", "../src/offline-tests/OfflineTestsFactory.ts", "../src/offline-tests/OfflineTestRunner.ts", "../src/offline-tests/types.ts", "../src/offline-tests/utils.ts", "../src/trace/index.ts", "../src/index.ts", "../src/data/index.ts"],
3
+ "sources": ["../src/env.ts", "../src/internal/api/client.ts", "../src/utils/logger.ts", "../src/utils/sleep.ts", "../src/utils/retry.ts", "../src/utils/resolve-project-id.ts", "../node_modules/picocolors/picocolors.js", "../src/data/Example.ts", "../src/utils/serializer.ts", "../src/version.ts", "../src/utils/dont-throw.ts", "../src/utils/wrappers/immutable-wrap-sync.ts", "../src/utils/wrappers/immutable-wrap-async.ts", "../src/utils/wrappers/immutable-wrap-sync-iterator.ts", "../src/utils/wrappers/immutable-wrap-async-iterator.ts", "../src/utils/wrappers/proxy-async-iterable.ts", "../src/utils/wrappers/index.ts", "../src/instrumentation/llm/openai/utils.ts", "../src/instrumentation/llm/openai/beta-chat-completions.ts", "../src/instrumentation/llm/openai/chat-completions.ts", "../src/instrumentation/llm/openai/images.ts", "../src/instrumentation/llm/openai/responses.ts", "../src/instrumentation/llm/openai/index.ts", "../src/instrumentation/index.ts", "../src/utils/annotate.ts", "../src/trace/NoOpTracer.ts", "../src/trace/runtime.ts", "../src/trace/baggage/constants.ts", "../src/trace/baggage/utils.ts", "../src/trace/baggage/JudgmentBaggagePropagator.ts", "../src/trace/baggage/index.ts", "../src/trace/propagation/index.ts", "../src/trace/BaseTracer.ts", "../src/trace/instrumentation/OtelContextBridge.ts", "../src/trace/JudgmentTracerProvider.ts", "../src/trace/exporters/JudgmentSpanExporter.ts", "../src/trace/exporters/NoOpSpanExporter.ts", "../src/trace/processors/JudgmentBaggageSpanProcessor.ts", "../src/trace/processors/JudgmentSpanProcessor.ts", "../src/trace/processors/NoOpSpanProcessor.ts", "../src/trace/Tracer.ts", "../src/trace/processors/OfflineJudgmentSpanProcessor.ts", "../src/trace/OfflineTracer.ts", "../src/Judgeval.ts", "../src/judges/Judge.ts", "../src/evaluation/Evaluation.ts", "../src/evaluation/LocalEvaluatorRunner.ts", "../src/evaluation/EvaluatorRunner.ts", "../src/evaluation/HostedEvaluatorRunner.ts", "../src/evaluation/EvaluationFactory.ts", "../src/datasets/DatasetFactory.ts", "../src/datasets/Dataset.ts", "../src/datasets/schema.ts", "../src/agent-judges/AgentJudgeFactory.ts", "../src/offline-tests/OfflineTestsFactory.ts", "../src/offline-tests/OfflineTestRunner.ts", "../src/offline-tests/types.ts", "../src/offline-tests/utils.ts", "../src/trace/index.ts", "../src/index.ts", "../src/data/index.ts"],
4
4
  "sourcesContent": [
5
5
  "function getEnvVar(varName: string): string | null;\nfunction getEnvVar(varName: string, defaultValue: string): string;\nfunction getEnvVar(varName: string, defaultValue?: string): string | null {\n const value = process.env[varName];\n if (!value) {\n return defaultValue ?? null;\n }\n return value;\n}\n\nexport const JUDGMENT_API_KEY = getEnvVar(\"JUDGMENT_API_KEY\");\nexport const JUDGMENT_ORG_ID = getEnvVar(\"JUDGMENT_ORG_ID\");\nexport const JUDGMENT_API_URL = getEnvVar(\n \"JUDGMENT_API_URL\",\n \"https://api.judgmentlabs.ai\",\n);\nexport const JUDGMENT_LOG_LEVEL = getEnvVar(\"JUDGMENT_LOG_LEVEL\", \"warn\");\n",
6
6
  "// Auto-generated by scripts/generate-client.ts\n// DO NOT EDIT MANUALLY\n\nimport type {\n AddDatasetItemsResponse,\n AddProjectRequest,\n AddProjectResponse,\n AddToRunEvalQueueExamplesResponse,\n AddToRunEvalQueueTracesResponse,\n AddTraceTagsRequest,\n AddTraceTagsResponse,\n ApplyTestRunSuccessRequest,\n ApplyTestRunSuccessResponse,\n CreateOfflineDatasetRequest,\n CreateOfflineDatasetResponse,\n CreateTestConfigRequest,\n CreateTestRunRequest,\n CustomScorerExistsResponse,\n DeleteOfflineDatasetResponse,\n DeleteProjectResponse,\n DeleteTestConfigResponse,\n E2EFetchSpanScoreRequest,\n E2EFetchSpanScoreResponse,\n E2EFetchTraceResponse,\n ExampleEvaluationRun,\n FetchPromptResponse,\n FetchPromptScorersResponse,\n FetchTestRunViaExperimentAliasResponse,\n GetPromptVersionsResponse,\n InsertOfflineDatasetExamplesRequest,\n InsertPromptRequest,\n InsertPromptResponse,\n OfflineDatasetPageResponse,\n OfflineDatasetVersionsResponse,\n OfflineTestsLogEvalResultsExamplesRequest,\n OfflineTestsLogEvalResultsExamplesResponse,\n OfflineTestsLogEvalResultsRequest,\n OfflineTestsLogEvalResultsResponse,\n PreparedTestRunResponse,\n PullAllOfflineDatasetsResponse,\n PullOfflineDatasetResponse,\n ResolveProjectRequest,\n ResolveProjectResponse,\n SDKCreateAgentJudgeRequest,\n SDKCreateAgentJudgeResponse,\n SDKUpdateAgentJudgeRequest,\n SDKUpdateAgentJudgeResponse,\n ScorerExistsResponse,\n TagPromptRequest,\n TagPromptResponse,\n TestConfigResponse,\n TestConfigsResponse,\n TestRunGraphResponse,\n TestRunItemsResponse,\n TestRunResponse,\n TestRunsResponse,\n TraceEvaluationRun,\n UntagPromptRequest,\n UntagPromptResponse,\n UpdateTestConfigRequest,\n UpdateTestRunStatusRequest,\n UploadCustomScorerResponse,\n} from \"./models\";\n\nexport class JudgmentApiClient {\n private baseUrl: string;\n private apiKey: string;\n private organizationId: string;\n\n constructor(baseUrl: string, apiKey: string, organizationId: string) {\n this.baseUrl = baseUrl;\n this.apiKey = apiKey;\n this.organizationId = organizationId;\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n getApiKey(): string {\n return this.apiKey;\n }\n getOrganizationId(): string {\n return this.organizationId;\n }\n\n private async request<T>(\n method: string,\n url: string,\n body?: unknown,\n ): Promise<T> {\n const response = await fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n \"X-Organization-Id\": this.organizationId,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`HTTP ${response.status}: ${text}`);\n }\n return response.json() as T;\n }\n\n async postOtelV1traces(): Promise<unknown> {\n const url = this.baseUrl + \"/otel/v1/traces\";\n return this.request(\"POST\", url, {});\n }\n\n async postOtelV1offlineTraces(): Promise<unknown> {\n const url = this.baseUrl + \"/otel/v1/offline-traces\";\n return this.request(\"POST\", url, {});\n }\n\n async postV1projectsResolve(\n payload: ResolveProjectRequest,\n ): Promise<ResolveProjectResponse> {\n const url = this.baseUrl + \"/v1/projects/resolve/\";\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projects(\n payload: AddProjectRequest,\n ): Promise<AddProjectResponse> {\n const url = this.baseUrl + \"/v1/projects\";\n return this.request(\"POST\", url, payload);\n }\n\n async deleteV1projects(projectId: string): Promise<DeleteProjectResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}`;\n return this.request(\"DELETE\", url, {});\n }\n\n async postV1projectsDatasets(\n projectId: string,\n payload: CreateOfflineDatasetRequest,\n ): Promise<CreateOfflineDatasetResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/datasets`;\n return this.request(\"POST\", url, payload);\n }\n\n async getV1projectsDatasets(\n projectId: string,\n ): Promise<PullAllOfflineDatasetsResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/datasets`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsDatasetsByDatasetIdentifierVersions(\n projectId: string,\n datasetIdentifier: string,\n ): Promise<OfflineDatasetVersionsResponse> {\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/datasets/${datasetIdentifier}/versions`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsDatasetsByDatasetIdentifierPage(\n projectId: string,\n datasetIdentifier: string,\n version?: string,\n limit?: string,\n cursor_created_at?: string,\n cursor_example_id?: string,\n ): Promise<OfflineDatasetPageResponse> {\n const params = new URLSearchParams();\n if (version !== undefined) params.set(\"version\", version);\n if (limit !== undefined) params.set(\"limit\", limit);\n if (cursor_created_at !== undefined)\n params.set(\"cursor_created_at\", cursor_created_at);\n if (cursor_example_id !== undefined)\n params.set(\"cursor_example_id\", cursor_example_id);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/datasets/${datasetIdentifier}/page` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsDatasetsByDatasetIdentifierExamples(\n projectId: string,\n datasetIdentifier: string,\n payload: InsertOfflineDatasetExamplesRequest,\n ): Promise<AddDatasetItemsResponse> {\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/datasets/${datasetIdentifier}/examples`;\n return this.request(\"POST\", url, payload);\n }\n\n async deleteV1projectsDatasetsByDatasetIdentifier(\n projectId: string,\n datasetIdentifier: string,\n ): Promise<DeleteOfflineDatasetResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/datasets/${datasetIdentifier}`;\n return this.request(\"DELETE\", url, {});\n }\n\n async getV1projectsDatasetsByDatasetIdentifier(\n projectId: string,\n datasetIdentifier: string,\n ): Promise<PullOfflineDatasetResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/datasets/${datasetIdentifier}`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsTestConfigs(\n projectId: string,\n dataset_id?: string,\n ): Promise<TestConfigsResponse> {\n const params = new URLSearchParams();\n if (dataset_id !== undefined) params.set(\"dataset_id\", dataset_id);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/test-configs` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsTestConfigs(\n projectId: string,\n payload: CreateTestConfigRequest,\n ): Promise<TestConfigResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/test-configs`;\n return this.request(\"POST\", url, payload);\n }\n\n async getV1projectsTestConfigsByTestConfigId(\n projectId: string,\n testConfigId: string,\n ): Promise<TestConfigResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-configs/${testConfigId}`;\n return this.request(\"GET\", url, undefined);\n }\n\n async patchV1projectsTestConfigsByTestConfigId(\n projectId: string,\n testConfigId: string,\n payload: UpdateTestConfigRequest,\n ): Promise<TestConfigResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-configs/${testConfigId}`;\n return this.request(\"PATCH\", url, payload);\n }\n\n async deleteV1projectsTestConfigsByTestConfigId(\n projectId: string,\n testConfigId: string,\n ): Promise<DeleteTestConfigResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-configs/${testConfigId}`;\n return this.request(\"DELETE\", url, {});\n }\n\n async getV1projectsTestRuns(\n projectId: string,\n test_config_id?: string,\n dataset_id?: string,\n status?: string,\n limit?: string,\n ): Promise<TestRunsResponse> {\n const params = new URLSearchParams();\n if (test_config_id !== undefined)\n params.set(\"test_config_id\", test_config_id);\n if (dataset_id !== undefined) params.set(\"dataset_id\", dataset_id);\n if (status !== undefined) params.set(\"status\", status);\n if (limit !== undefined) params.set(\"limit\", limit);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/test-runs` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsTestRuns(\n projectId: string,\n payload: CreateTestRunRequest,\n ): Promise<PreparedTestRunResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/test-runs`;\n return this.request(\"POST\", url, payload);\n }\n\n async getV1projectsTestRunsByTestRunId(\n projectId: string,\n testRunId: string,\n ): Promise<TestRunResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-runs/${testRunId}`;\n return this.request(\"GET\", url, undefined);\n }\n\n async patchV1projectsTestRunsByTestRunIdStatus(\n projectId: string,\n testRunId: string,\n payload: UpdateTestRunStatusRequest,\n ): Promise<TestRunResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-runs/${testRunId}/status`;\n return this.request(\"PATCH\", url, payload);\n }\n\n async patchV1projectsTestRunsByTestRunIdSuccess(\n projectId: string,\n testRunId: string,\n payload: ApplyTestRunSuccessRequest,\n ): Promise<ApplyTestRunSuccessResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-runs/${testRunId}/success`;\n return this.request(\"PATCH\", url, payload);\n }\n\n async getV1projectsTestRunsByTestRunIdItems(\n projectId: string,\n testRunId: string,\n limit?: string,\n cursor?: string,\n ): Promise<TestRunItemsResponse> {\n const params = new URLSearchParams();\n if (limit !== undefined) params.set(\"limit\", limit);\n if (cursor !== undefined) params.set(\"cursor\", cursor);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/test-runs/${testRunId}/items` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsTestRunsByTestRunIdResults(\n projectId: string,\n testRunId: string,\n limit?: string,\n cursor?: string,\n ): Promise<TestRunItemsResponse> {\n const params = new URLSearchParams();\n if (limit !== undefined) params.set(\"limit\", limit);\n if (cursor !== undefined) params.set(\"cursor\", cursor);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/test-runs/${testRunId}/results` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsTestRunsByTestRunIdGraph(\n projectId: string,\n testRunId: string,\n ): Promise<TestRunGraphResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/test-runs/${testRunId}/graph`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsExperimentsByRunId(\n projectId: string,\n runId: string,\n limit?: string,\n cursor?: string,\n ): Promise<FetchTestRunViaExperimentAliasResponse> {\n const params = new URLSearchParams();\n if (limit !== undefined) params.set(\"limit\", limit);\n if (cursor !== undefined) params.set(\"cursor\", cursor);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/experiments/${runId}` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsEvalResults(\n projectId: string,\n payload: OfflineTestsLogEvalResultsRequest,\n ): Promise<OfflineTestsLogEvalResultsResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/eval-results`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsEvalResultsExamples(\n projectId: string,\n payload: OfflineTestsLogEvalResultsExamplesRequest,\n ): Promise<OfflineTestsLogEvalResultsExamplesResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/eval-results/examples`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsEvaluateExamples(\n projectId: string,\n payload: ExampleEvaluationRun,\n ): Promise<unknown> {\n const url = this.baseUrl + `/v1/projects/${projectId}/evaluate/examples`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsEvaluateTraces(\n projectId: string,\n payload: TraceEvaluationRun,\n ): Promise<unknown> {\n const url = this.baseUrl + `/v1/projects/${projectId}/evaluate/traces`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsEvalQueueExamples(\n projectId: string,\n payload: ExampleEvaluationRun,\n ): Promise<AddToRunEvalQueueExamplesResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/eval-queue/examples`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsEvalQueueTraces(\n projectId: string,\n payload: TraceEvaluationRun,\n ): Promise<AddToRunEvalQueueTracesResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/eval-queue/traces`;\n return this.request(\"POST\", url, payload);\n }\n\n async getV1projectsPromptsByName(\n projectId: string,\n name: string,\n commit_id?: string,\n tag?: string,\n ): Promise<FetchPromptResponse> {\n const params = new URLSearchParams();\n if (commit_id !== undefined) params.set(\"commit_id\", commit_id);\n if (tag !== undefined) params.set(\"tag\", tag);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/prompts/${name}` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsPrompts(\n projectId: string,\n payload: InsertPromptRequest,\n ): Promise<InsertPromptResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/prompts`;\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsPromptsByNameTags(\n projectId: string,\n name: string,\n payload: TagPromptRequest,\n ): Promise<TagPromptResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/prompts/${name}/tags`;\n return this.request(\"POST\", url, payload);\n }\n\n async deleteV1projectsPromptsByNameTags(\n projectId: string,\n name: string,\n payload: UntagPromptRequest,\n ): Promise<UntagPromptResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/prompts/${name}/tags`;\n return this.request(\"DELETE\", url, payload);\n }\n\n async getV1projectsPromptsByNameVersions(\n projectId: string,\n name: string,\n ): Promise<GetPromptVersionsResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/prompts/${name}/versions`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsScorers(\n projectId: string,\n names?: string,\n is_trace?: string,\n ): Promise<FetchPromptScorersResponse> {\n const params = new URLSearchParams();\n if (names !== undefined) params.set(\"names\", names);\n if (is_trace !== undefined) params.set(\"is_trace\", is_trace);\n const url =\n this.baseUrl +\n `/v1/projects/${projectId}/scorers` +\n (params.toString() ? \"?\" + params.toString() : \"\");\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1projectsScorersByNameExists(\n projectId: string,\n name: string,\n ): Promise<ScorerExistsResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/scorers/${name}/exists`;\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsScorersCustom(projectId: string): Promise<unknown> {\n const url = this.baseUrl + `/v1/projects/${projectId}/scorers/custom`;\n return this.request(\"POST\", url, {});\n }\n\n async postV1projectsScorersCustomBundle(\n projectId: string,\n ): Promise<UploadCustomScorerResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/scorers/custom/bundle`;\n return this.request(\"POST\", url, {});\n }\n\n async getV1projectsScorersCustomByNameExists(\n projectId: string,\n name: string,\n ): Promise<CustomScorerExistsResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/scorers/custom/${name}/exists`;\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1projectsTracesByTraceIdTags(\n projectId: string,\n traceId: string,\n payload: AddTraceTagsRequest,\n ): Promise<AddTraceTagsResponse> {\n const url =\n this.baseUrl + `/v1/projects/${projectId}/traces/${traceId}/tags`;\n return this.request(\"POST\", url, payload);\n }\n\n async getV1e2eFetchTraceByProjectNameByTraceId(\n projectName: string,\n traceId: string,\n ): Promise<E2EFetchTraceResponse> {\n const url = this.baseUrl + `/v1/e2e_fetch_trace/${projectName}/${traceId}`;\n return this.request(\"GET\", url, undefined);\n }\n\n async getV1e2eTracesPerProject(projectId: string): Promise<unknown> {\n const url = this.baseUrl + `/v1/e2e_traces_per_project/${projectId}`;\n return this.request(\"GET\", url, undefined);\n }\n\n async postV1e2eFetchSpanScore(\n payload: E2EFetchSpanScoreRequest,\n ): Promise<E2EFetchSpanScoreResponse> {\n const url = this.baseUrl + \"/v1/e2e_fetch_span_score/\";\n return this.request(\"POST\", url, payload);\n }\n\n async postV1projectsJudges(\n projectId: string,\n payload: SDKCreateAgentJudgeRequest,\n ): Promise<SDKCreateAgentJudgeResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/judges`;\n return this.request(\"POST\", url, payload);\n }\n\n async patchV1projectsJudgesByJudgeId(\n projectId: string,\n judgeId: string,\n payload: SDKUpdateAgentJudgeRequest,\n ): Promise<SDKUpdateAgentJudgeResponse> {\n const url = this.baseUrl + `/v1/projects/${projectId}/judges/${judgeId}`;\n return this.request(\"PATCH\", url, payload);\n }\n}\n",
@@ -27,18 +27,20 @@
27
27
  "import type { OpenAI } from \"openai\";\nimport { dontThrow } from \"../../../utils/dont-throw\";\nimport { wrapChatCompletionsParse } from \"./beta-chat-completions\";\nimport { wrapChatCompletionsCreate } from \"./chat-completions\";\nimport { wrapImagesGenerate } from \"./images\";\nimport { wrapResponsesCreate } from \"./responses\";\n\n/**\n * Instrument an OpenAI client instance to emit Judgment spans.\n *\n * Patches the following methods in-place:\n * - `client.chat.completions.create` (streaming + non-streaming)\n * - `client.chat.completions.parse` (non-streaming)\n * - `client.responses.create` (streaming + non-streaming)\n * - `client.images.generate` (streaming + non-streaming)\n *\n * @returns The same client instance (mutated).\n */\nexport function wrapOpenAI<T extends OpenAI>(client: T): T {\n dontThrow(\"wrapOpenAI\", () => {\n wrapChatCompletionsCreate(client);\n wrapChatCompletionsParse(client);\n wrapResponsesCreate(client);\n wrapImagesGenerate(client);\n });\n return client;\n}\n",
28
28
  "import type { OpenAI } from \"openai\";\nimport { wrapOpenAI } from \"./llm/openai\";\n\nexport { wrapOpenAI };\n\n/**\n * Wrap a supported LLM client to add automatic tracing.\n *\n * Currently supports OpenAI clients. Detects the client type\n * automatically and applies the appropriate instrumentation.\n *\n * @param client - An OpenAI client instance.\n * @returns The same client instance, instrumented in-place.\n *\n * @example\n * ```typescript\n * import OpenAI from \"openai\";\n * import { wrap } from \"judgeval\";\n *\n * const client = wrap(new OpenAI());\n * ```\n */\nexport function wrap<T extends OpenAI>(client: T): T {\n return wrapOpenAI(client);\n}\n",
29
29
  "/* eslint-disable */\n/// Adopted from https://github.com/angular/angular.js/blob/master/src/auto/injector.js\n\nconst ARROW_ARG = /^([^(]+?)=>/;\nconst FN_ARGS = /^[^(]*\\(\\s*([^)]*)\\)/m;\nconst FN_ARG_SPLIT = /,/;\nconst FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\n\nfunction stringifyFn(fn: Function): string {\n return Function.prototype.toString.call(fn);\n}\n\nfunction extractArgs(fn: Function): RegExpMatchArray | null {\n const fnText = stringifyFn(fn).replace(STRIP_COMMENTS, \"\");\n return fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);\n}\n\nexport function parseFunctionArgs(fn: Function): string[] {\n const args = extractArgs(fn);\n if (!args || !args[1]) {\n return [];\n }\n\n return args[1]\n .split(FN_ARG_SPLIT)\n .map((arg) => {\n const match = arg.replace(FN_ARG, (all, underscore, name) => name);\n return match.trim();\n })\n .filter((name) => name.length > 0);\n}\n",
30
- "import {\n ROOT_CONTEXT,\n context as otelContext,\n type Context,\n} from \"@opentelemetry/api\";\nimport { AsyncLocalStorage } from \"async_hooks\";\n\ntype OTelContextApi = typeof otelContext;\n\nlet installed = false;\nlet getJudgmentContext: (() => Context) | null = null;\n\nconst gateStorage = new AsyncLocalStorage<boolean>();\nconst bridgeContextStorage = new AsyncLocalStorage<Context>();\n\nconst originalActive = otelContext.active.bind(otelContext);\nconst originalWith = otelContext.with.bind(otelContext);\nconst originalBind = otelContext.bind.bind(otelContext);\n\nfunction isGateEnabled(): boolean {\n return gateStorage.getStore() === true;\n}\n\nexport function installOtelContextBridge(\n getCurrentJudgmentContext: () => Context,\n): void {\n getJudgmentContext = getCurrentJudgmentContext;\n if (installed) return;\n\n const api = otelContext as OTelContextApi & {\n active: () => Context;\n with: <A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ) => ReturnType<F>;\n bind: <T>(context: Context, target: T) => T;\n };\n\n api.active = (): Context => {\n if (!isGateEnabled()) return originalActive();\n const bridged = bridgeContextStorage.getStore();\n if (bridged) return bridged;\n return getJudgmentContext ? getJudgmentContext() : ROOT_CONTEXT;\n };\n\n api.with = (contextValue, fn, thisArg, ...args) => {\n if (!isGateEnabled())\n return originalWith(contextValue, fn, thisArg, ...args);\n return bridgeContextStorage.run(contextValue, () =>\n fn.apply(thisArg, args),\n );\n };\n\n api.bind = (contextValue, target) => {\n if (!isGateEnabled()) return originalBind(contextValue, target);\n if (typeof target !== \"function\") return target;\n const fn = target as unknown as (...args: unknown[]) => unknown;\n return ((...args: unknown[]) =>\n bridgeContextStorage.run(contextValue, () =>\n fn(...args),\n )) as typeof target;\n };\n\n installed = true;\n}\n\nexport function runWithOtelBridgeGate<T>(ctx: Context, fn: () => T): T {\n return gateStorage.run(true, () => bridgeContextStorage.run(ctx, fn));\n}\n",
31
- "import {\n INVALID_SPAN_CONTEXT,\n ROOT_CONTEXT,\n SpanStatusCode,\n trace,\n type Context,\n type Span,\n type SpanContext,\n type SpanOptions,\n type Tracer,\n type TracerProvider,\n} from \"@opentelemetry/api\";\nimport {\n registerInstrumentations,\n type Instrumentation,\n} from \"@opentelemetry/instrumentation\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { Logger } from \"../utils/logger\";\nimport type { BaseTracer } from \"./BaseTracer\";\nimport {\n installOtelContextBridge,\n runWithOtelBridgeGate,\n} from \"./instrumentation/OtelContextBridge\";\n\nconst TRACER_NAME = \"judgeval\";\n\nconst _contextStorage = new AsyncLocalStorage<Context>();\n\nclass ProxyTracer implements Tracer {\n private _provider: JudgmentTracerProvider;\n\n constructor(provider: JudgmentTracerProvider) {\n this._provider = provider;\n }\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n const ctx = context ?? this._provider.getCurrentContext();\n const delegate = this._provider._getDelegateTracer();\n return delegate.startSpan(name, options, ctx);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n ...args: [F] | [SpanOptions, F] | [SpanOptions, Context, F]\n ): ReturnType<F> {\n let options: SpanOptions = {};\n let context: Context = this._provider.getCurrentContext();\n let fn: F;\n\n if (args.length === 1) {\n fn = args[0];\n } else if (args.length === 2) {\n options = args[0];\n fn = args[1];\n } else {\n options = args[0];\n context = args[1];\n fn = args[2];\n }\n\n const span = this.startSpan(name, options, context);\n return this._provider.useSpan(span, false, false, false, () =>\n fn(span),\n ) as ReturnType<F>;\n }\n}\n\nclass NoOpTracer implements Tracer {\n startSpan(): Span {\n return trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n _name: string,\n ...args: [F] | [SpanOptions, F] | [SpanOptions, Context, F]\n ): ReturnType<F> {\n const fn =\n args.length === 1 ? args[0] : args.length === 2 ? args[1] : args[2];\n return fn(this.startSpan()) as ReturnType<F>;\n }\n}\n\n/**\n * Global singleton that manages tracer registration and context propagation.\n *\n * Acts as a proxy TracerProvider that delegates to the currently active\n * tracer's underlying OpenTelemetry provider.\n */\nexport class JudgmentTracerProvider implements TracerProvider {\n private static _instance: JudgmentTracerProvider | null = null;\n\n private _activeTracer: BaseTracer | null = null;\n private _instrumentations: Instrumentation[] = [];\n private _noOpTracer: NoOpTracer;\n private _proxyTracer: ProxyTracer;\n private _tracers = new Set<BaseTracer>();\n\n private constructor() {\n this._noOpTracer = new NoOpTracer();\n this._proxyTracer = new ProxyTracer(this);\n installOtelContextBridge(() => this.getCurrentContext());\n }\n\n /**\n * Get the singleton JudgmentTracerProvider instance.\n *\n * @returns The global provider instance.\n */\n static getInstance(): JudgmentTracerProvider {\n JudgmentTracerProvider._instance ??= new JudgmentTracerProvider();\n return JudgmentTracerProvider._instance;\n }\n\n /**\n * Install the JudgmentTracerProvider as the global tracer provider.\n * This generally does not need to be called - Judgeval automatically uses this for all its observability functionality.\n * Only use this if you specifically want to override the global tracer provider, which will enable all Opentelemetry captured instrumentations to flow through judgeval.\n * @returns True if the installation was successful, false otherwise.\n */\n static installAsGlobalTracerProvider(): boolean {\n const instance = JudgmentTracerProvider.getInstance();\n return trace.setGlobalTracerProvider(instance);\n }\n\n /**\n * Register a tracer with the provider.\n *\n * @param tracer - The tracer to register.\n */\n register(tracer: BaseTracer): void {\n this._tracers.add(tracer);\n }\n\n /**\n * Remove a tracer from the provider.\n *\n * @param tracer - The tracer to deregister.\n */\n deregister(tracer: BaseTracer): void {\n this._tracers.delete(tracer);\n }\n\n /**\n * Set a tracer as the active tracer.\n *\n * Cannot be called while a root span is active.\n *\n * @param tracer - The tracer to activate.\n * @returns `true` if activation succeeded.\n */\n setActive(tracer: BaseTracer): boolean {\n const currentSpan = this.getCurrentSpan();\n if (currentSpan?.isRecording()) {\n if (trace.getSpan(this.getCurrentContext()) === currentSpan) {\n Logger.error(\n \"Cannot set_active() while a root span is active. Keeping existing tracer provider.\",\n );\n return false;\n }\n }\n this.register(tracer);\n this._activeTracer = tracer;\n return true;\n }\n\n /**\n * Get the currently active tracer.\n *\n * @returns The active tracer, or `null` if none.\n */\n getActiveTracer(): BaseTracer | null {\n return this._activeTracer;\n }\n\n /**\n * Get the current OpenTelemetry context.\n *\n * @returns The current context.\n */\n getCurrentContext(): Context {\n return _contextStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n /**\n * Set a span on a context, returning a new context.\n */\n setSpan(ctx: Context, span: Span): Context {\n return trace.setSpan(ctx, span);\n }\n\n /**\n * Wrap a SpanContext into a non-recording Span.\n */\n wrapSpanContext(spanContext: SpanContext): Span {\n return trace.wrapSpanContext(spanContext);\n }\n\n /**\n * Get the span from the current context.\n *\n * @returns The current span, or `undefined` if none.\n */\n getCurrentSpan(): Span | undefined {\n const ctx = this.getCurrentContext();\n return trace.getSpan(ctx);\n }\n\n /**\n * Check whether there is an active root span.\n *\n * @returns `true` if a root span is currently recording.\n */\n hasActiveRootSpan(): boolean {\n const currentSpan = this.getCurrentSpan();\n if (!currentSpan?.isRecording()) return false;\n return true;\n }\n\n _getDelegateTracer(): Tracer {\n const tracer = this._activeTracer;\n if (!tracer) {\n Logger.debug(\"No active tracer, returning NoOpTracer\");\n return this._noOpTracer;\n }\n return tracer._tracerProvider.getTracer(TRACER_NAME);\n }\n\n getTracer(\n _instrumentingModuleName: string,\n _instrumentingLibraryVersion?: string,\n _options?: { schemaUrl?: string },\n ): Tracer {\n return this._proxyTracer;\n }\n\n /**\n * Register an OpenTelemetry instrumentation.\n *\n * @param instrumentor - The instrumentation to add.\n */\n addInstrumentation(instrumentor: Instrumentation): void {\n try {\n registerInstrumentations({\n tracerProvider: this,\n instrumentations: [instrumentor],\n });\n this._instrumentations.push(instrumentor);\n } catch (err: unknown) {\n Logger.error(`Failed to add instrumentation: ${String(err)}`);\n }\n }\n\n useSpan<T>(\n span: Span,\n endOnExit: boolean,\n recordException: boolean,\n setStatusOnException: boolean,\n fn: () => T,\n ): T {\n const prevCtx = this.getCurrentContext();\n const ctx = trace.setSpan(prevCtx, span);\n return _contextStorage.run(ctx, () =>\n runWithOtelBridgeGate(ctx, () => {\n try {\n const result = fn();\n if (result instanceof Promise) {\n return result\n .catch((exc: unknown) => {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n throw exc;\n })\n .finally(() => {\n if (endOnExit) span.end();\n }) as T;\n }\n if (endOnExit) span.end();\n return result;\n } catch (exc) {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n if (endOnExit) span.end();\n throw exc;\n }\n }),\n );\n }\n\n attachContext(ctx: Context): void {\n _contextStorage.enterWith(ctx);\n }\n\n /**\n * Run `fn` with `ctx` installed as the active context for the\n * duration of the callback. Sync or async.\n */\n withContext<T>(ctx: Context, fn: () => T): T {\n return _contextStorage.run(ctx, () => runWithOtelBridgeGate(ctx, fn));\n }\n\n /**\n * Flush all registered tracers.\n */\n async forceFlush(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.forceFlush()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`forceFlush failed: ${String(r.reason)}`);\n }\n }\n }\n\n /**\n * Shut down all registered tracers and clear state.\n */\n async shutdown(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.shutdown()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`shutdown failed: ${String(r.reason)}`);\n }\n }\n this._activeTracer = null;\n this._tracers.clear();\n }\n}\n",
30
+ "import {\n INVALID_SPAN_CONTEXT,\n trace,\n type Context,\n type Span,\n type SpanOptions,\n type Tracer,\n} from \"@opentelemetry/api\";\n\nexport class NoOpTracer implements Tracer {\n startSpan(): Span {\n return trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n _name: string,\n ...args: [F] | [SpanOptions, F] | [SpanOptions, Context, F]\n ): ReturnType<F> {\n const fn =\n args.length === 1 ? args[0] : args.length === 2 ? args[1] : args[2];\n return fn(this.startSpan()) as ReturnType<F>;\n }\n}\n\n/**\n * Shared, stateless no-op tracer. Reused by the runtime fallback and by each\n * provider's \"no active tracer\" path, so there is a single instance rather\n * than one per provider.\n */\nexport const noOpTracer = new NoOpTracer();\n",
31
+ "import {\n ROOT_CONTEXT,\n trace,\n type Context,\n type Span,\n type SpanContext,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type { BasicTracerProvider } from \"@opentelemetry/sdk-trace-base\";\nimport type { JudgmentApiClient } from \"../internal/api\";\nimport { Logger } from \"../utils/logger\";\nimport type { Serializer } from \"../utils/serializer\";\nimport type { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport { noOpTracer } from \"./NoOpTracer\";\nimport type { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\n\nexport interface TraceRuntimeTracer {\n projectName: string | null;\n projectId: string | null;\n apiKey: string | null;\n organizationId: string | null;\n apiUrl: string | null;\n environment: string | null;\n serializer: Serializer;\n _tracerProvider: BasicTracerProvider;\n _client: JudgmentApiClient | null;\n _enableMonitoring: boolean;\n supportsLiveInstrumentation: boolean;\n getSpanExporter(): JudgmentSpanExporter;\n getSpanProcessor(): JudgmentSpanProcessor;\n}\n\n/**\n * Runtime indirection that decouples {@link BaseTracer} from the concrete\n * tracer provider.\n *\n * `BaseTracer` is shared by both the Node and Workers entrypoints, so it must\n * not import a specific provider: `JudgmentTracerProvider` pulls in Node-only\n * `async_hooks`, which would break the Workers bundle. Instead `BaseTracer`\n * talks to this `TraceRuntime` interface. Each provider installs itself via\n * {@link setTraceRuntime} from its constructor (`JudgmentTracerProvider` on\n * Node, `WorkerTracerProvider` on Workers). Until one does, {@link getTraceRuntime}\n * returns {@link noOpRuntime} — a fallback that still runs user code but does\n * not record, register instrumentation, or export spans.\n */\nexport interface TraceRuntime {\n register(tracer: TraceRuntimeTracer): void;\n deregister(tracer: TraceRuntimeTracer): void;\n setActive(tracer: TraceRuntimeTracer): boolean;\n getActiveTracer(): TraceRuntimeTracer | null;\n getCurrentContext(): Context;\n setSpan(ctx: Context, span: Span): Context;\n wrapSpanContext(spanContext: SpanContext): Span;\n getCurrentSpan(): Span | undefined;\n getTracer(\n instrumentingModuleName: string,\n instrumentingLibraryVersion?: string,\n options?: { schemaUrl?: string },\n ): Tracer;\n addInstrumentation(instrumentor: Instrumentation): void;\n useSpan<T>(\n span: Span,\n endOnExit: boolean,\n recordException: boolean,\n setStatusOnException: boolean,\n fn: () => T,\n ): T;\n attachContext(ctx: Context): void;\n withContext<T>(ctx: Context, fn: () => T): T;\n forceFlush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\n// Fallback runtime used before init; it preserves helper semantics without\n// recording, registering instrumentation, or exporting spans.\nconst noOpRuntime: TraceRuntime = {\n register() {\n /* empty */\n },\n deregister() {\n /* empty */\n },\n setActive() {\n return false;\n },\n getActiveTracer() {\n return null;\n },\n getCurrentContext() {\n return ROOT_CONTEXT;\n },\n // setSpan/wrapSpanContext delegate to the stateless @opentelemetry/api\n // helpers, which need no provider or ambient state. This lets the fallback\n // still produce valid contexts and (non-recording) spans before init().\n setSpan(ctx, span) {\n return trace.setSpan(ctx, span);\n },\n wrapSpanContext(spanContext) {\n return trace.wrapSpanContext(spanContext);\n },\n getCurrentSpan() {\n return undefined;\n },\n getTracer() {\n Logger.debug(\"No active tracer provider, returning NoOpTracer\");\n return noOpTracer;\n },\n addInstrumentation() {\n Logger.warning(\n \"No active tracer provider. Instrumentation was not registered.\",\n );\n },\n // No active provider yet: there is no recording span and no context to\n // isolate, so the endOnExit/record/setStatus flags are no-ops here. Just run\n // the callback — real span lifecycle handling lives in the concrete providers.\n useSpan(_span, _endOnExit, _recordException, _setStatusOnException, fn) {\n return fn();\n },\n attachContext() {\n /* empty */\n },\n withContext(_ctx, fn) {\n return fn();\n },\n forceFlush() {\n return Promise.resolve();\n },\n shutdown() {\n return Promise.resolve();\n },\n};\n\nlet runtime: TraceRuntime | null = null;\n\nexport function setTraceRuntime(nextRuntime: TraceRuntime): void {\n runtime = nextRuntime;\n}\n\nexport function getTraceRuntime(): TraceRuntime {\n return runtime ?? noOpRuntime;\n}\n",
32
32
  "export const BAGGAGE_KEY_PAIR_SEPARATOR = \"=\";\nexport const BAGGAGE_PROPERTIES_SEPARATOR = \";\";\nexport const BAGGAGE_ITEMS_SEPARATOR = \",\";\n\n/** Name of the HTTP header used to propagate baggage. */\nexport const BAGGAGE_HEADER = \"baggage\";\n\n/** Maximum number of name-value pairs allowed by the W3C Baggage spec. */\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n\n/** Maximum number of bytes per a single name-value pair allowed by the W3C Baggage spec. */\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n\n/** Maximum total length of all name-value pairs allowed by the W3C Baggage spec. */\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n",
33
33
  "import {\n type Baggage,\n type BaggageEntryMetadata,\n baggageEntryMetadataFromString,\n} from \"@opentelemetry/api\";\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n BAGGAGE_PROPERTIES_SEPARATOR,\n} from \"./constants\";\n\n/**\n * Serialize an array of key=value pairs into a baggage header string,\n * capping the result at {@link BAGGAGE_MAX_TOTAL_LENGTH}.\n */\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== \"\" ? BAGGAGE_ITEMS_SEPARATOR : \"\"}${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, \"\");\n}\n\n/**\n * Convert a {@link Baggage} into an array of `key=value;metadata` strings,\n * URI-encoding each key and value.\n */\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n if (value.metadata !== undefined) {\n entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\n\n/** Parse a single `key=value;metadata` baggage list-member. */\nexport function parsePairKeyValue(\n entry: string,\n): { key: string; value: string; metadata?: BaggageEntryMetadata } | undefined {\n const valueProps = entry.split(BAGGAGE_PROPERTIES_SEPARATOR);\n if (valueProps.length <= 0) return;\n const keyPairPart = valueProps.shift();\n if (!keyPairPart) return;\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n const key = decodeURIComponent(\n keyPairPart.substring(0, separatorIndex).trim(),\n );\n const value = decodeURIComponent(\n keyPairPart.substring(separatorIndex + 1).trim(),\n );\n let metadata: BaggageEntryMetadata | undefined;\n if (valueProps.length > 0) {\n metadata = baggageEntryMetadataFromString(\n valueProps.join(BAGGAGE_PROPERTIES_SEPARATOR),\n );\n }\n return { key, value, metadata };\n}\n",
34
34
  "import {\n type BaggageEntry,\n type Context,\n type TextMapGetter,\n type TextMapPropagator,\n type TextMapSetter,\n} from \"@opentelemetry/api\";\nimport { isTracingSuppressed } from \"@opentelemetry/core\";\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from \"./constants\";\nimport { createBaggage, getBaggage, setBaggage } from \"./index\";\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from \"./utils\";\n\n/**\n * Propagates {@link Baggage} through the W3C `baggage` header.\n *\n * Implements the W3C Baggage specification: https://w3c.github.io/baggage/\n */\nexport class JudgmentBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair) => pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS)\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record<string, BaggageEntry> = {};\n if (baggageString.length === 0) return context;\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach((entry) => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: BaggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return setBaggage(context, createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n",
35
- "import {\n type Baggage,\n type Context,\n createContextKey,\n propagation,\n} from \"@opentelemetry/api\";\nimport { JudgmentTracerProvider } from \"../JudgmentTracerProvider\";\n\n/**\n * Judgment baggage store. Baggage is a set of key-value pairs attached\n * to a {@link Context} and automatically propagated to child spans and\n * to downstream services through the `baggage` HTTP header.\n */\n\n/** Create a new {@link Baggage}, optionally pre-populated with entries. */\nexport const createBaggage = propagation.createBaggage.bind(propagation);\n\nconst BAGGAGE_KEY = createContextKey(\"baggage\");\n\n/** Retrieve the baggage attached to the given context. */\nexport function getBaggage(context: Context): Baggage | undefined {\n return context.getValue(BAGGAGE_KEY) as Baggage | undefined;\n}\n\n/** Retrieve the baggage attached to the active context. */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(JudgmentTracerProvider.getInstance().getCurrentContext());\n}\n\n/** Attach a baggage to the given context, returning a new context. */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/** Remove the baggage attached to the given context, returning a new context. */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n\nexport { baggageEntryMetadataFromString } from \"@opentelemetry/api\";\nexport type {\n Baggage,\n BaggageEntry,\n BaggageEntryMetadata,\n} from \"@opentelemetry/api\";\n\nexport { JudgmentBaggagePropagator } from \"./JudgmentBaggagePropagator\";\n",
36
- "import {\n type Context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n type TextMapGetter,\n type TextMapPropagator,\n type TextMapSetter,\n} from \"@opentelemetry/api\";\nimport {\n CompositePropagator,\n W3CTraceContextPropagator,\n} from \"@opentelemetry/core\";\nimport { dontThrow } from \"../../utils/dont-throw\";\nimport { JudgmentBaggagePropagator } from \"../baggage/JudgmentBaggagePropagator\";\nimport { JudgmentTracerProvider } from \"../JudgmentTracerProvider\";\n\n/**\n * Inject and extract trace context and baggage across service\n * boundaries through a composite W3C TraceContext + Baggage propagator.\n */\n\nlet _globalTextmap: TextMapPropagator = new CompositePropagator({\n propagators: [\n new W3CTraceContextPropagator(),\n new JudgmentBaggagePropagator(),\n ],\n});\n\n/** Return the active composite propagator (W3C TraceContext + Judgment Baggage). */\nexport function getGlobalTextmap(): TextMapPropagator {\n return _globalTextmap;\n}\n\n/** Replace the global text-map propagator. */\nexport function setGlobalTextmap(propagator: TextMapPropagator): void {\n _globalTextmap = propagator;\n}\n\nfunction _resolveContext(context?: Context): Context {\n if (context !== undefined) return context;\n return JudgmentTracerProvider.getInstance().getCurrentContext();\n}\n\n/**\n * Inject trace context and baggage into an outgoing carrier (e.g. HTTP\n * headers).\n *\n * Call this before making an outbound HTTP request to propagate the\n * current trace across service boundaries.\n *\n * @param carrier - A mutable object to write propagation headers into.\n * @param context - The context to inject. Defaults to the current\n * Judgment context.\n * @param setter - Strategy for writing values into the carrier.\n *\n * @example\n * ```typescript\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(\"https://api.example.com\", { headers });\n * ```\n */\nexport function inject<Carrier>(\n carrier: Carrier,\n context?: Context,\n setter: TextMapSetter<Carrier> = defaultTextMapSetter as TextMapSetter<Carrier>,\n): void {\n dontThrow(\"propagation.inject\", () => {\n getGlobalTextmap().inject(_resolveContext(context), carrier, setter);\n });\n}\n\n/**\n * Extract trace context and baggage from an incoming carrier.\n *\n * Low-level primitive — most callers should use\n * {@link Tracer.continueTrace} instead, which extracts and installs the\n * context in one step.\n *\n * @param carrier - A mapping containing propagation headers (e.g.\n * `request.headers`).\n * @param context - Base context to merge into. Defaults to the current\n * active context.\n * @param getter - Strategy for reading values from the carrier.\n * @returns A new {@link Context} with the extracted trace and baggage\n * data.\n */\nexport function extract<Carrier>(\n carrier: Carrier,\n context?: Context,\n getter: TextMapGetter<Carrier> = defaultTextMapGetter as TextMapGetter<Carrier>,\n): Context {\n const base = _resolveContext(context);\n return dontThrow<Context>(\n \"propagation.extract\",\n () => getGlobalTextmap().extract(base, carrier, getter),\n base,\n );\n}\n",
37
- "import {\n type Attributes,\n type Context,\n INVALID_SPAN_CONTEXT,\n type Span,\n SpanStatusCode,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type {\n BasicTracerProvider,\n Sampler,\n SpanLimits,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { randomUUID } from \"crypto\";\nimport type { OpenAI } from \"openai\";\nimport { AttributeKeys, InternalAttributeKeys } from \"../JudgmentAttributeKeys\";\nimport { wrap } from \"../instrumentation\";\nimport { JudgmentApiClient } from \"../internal/api\";\nimport type { PendingEvalPayload } from \"../internal/api/models/PendingEvalPayload\";\nimport { parseFunctionArgs } from \"../utils/annotate\";\nimport { dontThrow } from \"../utils/dont-throw\";\nimport { Logger } from \"../utils/logger\";\nimport {\n safeStringify,\n serializeAttribute,\n Serializer,\n} from \"../utils/serializer\";\nimport { Maybe } from \"../utils/type-helpers\";\nimport { createBaggage, getBaggage, setBaggage } from \"./baggage\";\nimport { JudgmentTracerProvider } from \"./JudgmentTracerProvider\";\nimport { extract } from \"./propagation\";\nimport type { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport type { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\n\nconst TRACER_NAME = \"judgeval\";\n\n/**\n * Metadata about an LLM call to record on a span.\n */\nexport interface LLMMetadata {\n /** Model name (e.g. \"gpt-4o\"). */\n model?: Maybe<string>;\n /** Provider name (e.g. \"openai\"). */\n provider?: Maybe<string>;\n /** Number of non-cached input tokens. */\n non_cached_input_tokens?: Maybe<number>;\n /** Number of output tokens. */\n output_tokens?: Maybe<number>;\n /** Number of cache-read input tokens. */\n cache_read_input_tokens?: Maybe<number>;\n /** Number of cache-creation input tokens. */\n cache_creation_input_tokens?: Maybe<number>;\n /** Total cost in USD. */\n total_cost_usd?: Maybe<number>;\n}\n\n/**\n * Options for {@link BaseTracer.observe}.\n */\nexport interface ObserveOptions {\n /** The span kind (e.g. `\"llm\"`, `\"tool\"`, `\"span\"`). Defaults to `\"span\"`. */\n spanType?: string;\n /** Custom span name. Defaults to the wrapped function's name. */\n spanName?: string;\n /** Whether to record function inputs as a span attribute. Defaults to `true`. */\n recordInput?: boolean;\n /** Whether to record function outputs as a span attribute. Defaults to `true`. */\n recordOutput?: boolean;\n /**\n * If `true`, run the function in a fresh linked trace instead of as a\n * child of the current trace, when an active parent span exists.\n * Defaults to `false`.\n */\n fork?: boolean;\n}\n\n/**\n * Options for {@link BaseTracer.asyncEvaluate}.\n */\nexport interface AsyncEvaluateOptions {\n /**\n * Name of the hosted judge/scorer (e.g. `\"faithfulness\"`,\n * `\"answer_relevancy\"`).\n */\n judge: string;\n /**\n * Optional dict with evaluation data. Keys like `input`, `actual_output`,\n * `expected_output`, and `retrieval_context` are commonly used.\n */\n example?: Record<string, unknown>;\n}\n\n/**\n * Configuration options for initializing a Tracer.\n *\n * Credentials are resolved in order: explicit arguments first, then\n * environment variables.\n */\nexport interface TracerConfig {\n /** Your Judgment project name. Required for span export. */\n projectName?: string;\n /** Judgment API key. Defaults to `JUDGMENT_API_KEY` env var. */\n apiKey?: string;\n /** Judgment organization ID. Defaults to `JUDGMENT_ORG_ID` env var. */\n organizationId?: string;\n /** Judgment API URL. Defaults to `JUDGMENT_API_URL` env var. */\n apiUrl?: string;\n /** Deployment environment name (e.g. \"production\"). */\n environment?: string;\n /** Whether to automatically set this tracer as active. Defaults to `true`. */\n setActive?: boolean;\n /** Custom serialization function for span attribute values. */\n serializer?: (value: unknown) => string;\n /** Additional OpenTelemetry resource attributes. */\n resourceAttributes?: Record<string, string>;\n /** Custom OpenTelemetry sampler. Defaults to the SDK's default. */\n sampler?: Sampler;\n /** Custom OpenTelemetry span limits (attribute/event/link caps). */\n spanLimits?: SpanLimits;\n /** Additional span processors to register alongside Judgment's own processor. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Abstract base for all Judgment tracers.\n *\n * Provides the core tracing surface: span creation, attribute recording,\n * the `observe` decorator, context propagation for customer/session IDs,\n * tagging, and async evaluation dispatch.\n * Concrete subclasses supply the OTel TracerProvider, exporter, and\n * processor wiring.\n */\nexport abstract class BaseTracer {\n projectName: string | null;\n projectId: string | null;\n apiKey: string | null;\n organizationId: string | null;\n apiUrl: string | null;\n environment: string | null;\n serializer: Serializer;\n _tracerProvider: BasicTracerProvider;\n _client: JudgmentApiClient | null;\n _enableMonitoring: boolean;\n\n readonly supportsLiveInstrumentation: boolean = true;\n\n // ------------------------------------------------------------------ //\n // Initialization //\n // ------------------------------------------------------------------ //\n\n protected constructor(\n projectName: string | null,\n projectId: string | null,\n apiKey: string | null,\n organizationId: string | null,\n apiUrl: string | null,\n environment: string | null,\n serializer: Serializer,\n tracerProvider: BasicTracerProvider,\n client: JudgmentApiClient | null,\n enableMonitoring: boolean,\n ) {\n this.projectName = projectName;\n this.projectId = projectId;\n this.apiKey = apiKey;\n this.organizationId = organizationId;\n this.apiUrl = apiUrl;\n this.environment = environment;\n this.serializer = serializer;\n this._tracerProvider = tracerProvider;\n this._client = client;\n this._enableMonitoring = enableMonitoring;\n }\n\n /**\n * Set this tracer as the active tracer in the global provider.\n *\n * @returns `true` if activation succeeded, `false` if a root span is active.\n */\n setActive(): boolean {\n return JudgmentTracerProvider.getInstance().setActive(this);\n }\n\n // ------------------------------------------------------------------ //\n // Abstract Lifecycle //\n // ------------------------------------------------------------------ //\n\n abstract getSpanProcessor(): JudgmentSpanProcessor;\n abstract getSpanExporter(): JudgmentSpanExporter;\n\n // ------------------------------------------------------------------ //\n // Internal Helpers //\n // ------------------------------------------------------------------ //\n\n private static _getProxyProvider(): JudgmentTracerProvider {\n return JudgmentTracerProvider.getInstance();\n }\n\n private static _getSerializer(): Serializer {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n return tracer?.serializer ?? safeStringify;\n }\n\n private static _getCurrentTraceAndSpanId(): [string, string] | null {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return null;\n const ctx = currentSpan.spanContext();\n if (!ctx.traceId || !(ctx.traceFlags & 0x01)) return null;\n return [ctx.traceId, ctx.spanId];\n }\n\n private static _emitPartial(): void {\n dontThrow(\"BaseTracer._emitPartial\", () => {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n if (!tracer || !tracer.supportsLiveInstrumentation) return;\n tracer.getSpanProcessor().emitPartial();\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Span Access & Lifecycle //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the currently active span.\n *\n * @returns The active span, or `undefined` if none.\n */\n static getCurrentSpan(): Span | undefined {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getCurrentSpan();\n }\n\n /**\n * Flush all pending spans to the export endpoint.\n *\n * Call this before your process exits to ensure all spans are sent.\n *\n * @example\n * ```typescript\n * await Tracer.forceFlush();\n * ```\n */\n static async forceFlush(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.forceFlush();\n }\n\n /**\n * Shut down the tracer and flush any pending data.\n *\n * @example\n * ```typescript\n * await Tracer.shutdown();\n * ```\n */\n static async shutdown(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.shutdown();\n }\n\n /**\n * Register an OpenTelemetry instrumentation to capture spans automatically.\n *\n * @param instrumentor - The OpenTelemetry instrumentation to register.\n *\n * @example\n * ```typescript\n * import { OpenAIInstrumentation } from \"@opentelemetry/instrumentation-openai\";\n * Tracer.registerOTELInstrumentation(new OpenAIInstrumentation());\n * ```\n */\n static registerOTELInstrumentation(instrumentor: Instrumentation): void {\n dontThrow(\"BaseTracer.registerOTELInstrumentation\", () => {\n const proxy = BaseTracer._getProxyProvider();\n proxy.addInstrumentation(instrumentor);\n });\n }\n\n /**\n * Wrap a supported LLM client to add automatic tracing.\n *\n * Currently supports OpenAI clients. The client is instrumented\n * in-place and returned.\n *\n * @param client - An LLM client instance (e.g. `new OpenAI()`).\n * @returns The same client instance, instrumented.\n *\n * @example\n * ```typescript\n * import OpenAI from \"openai\";\n *\n * const client = Tracer.wrap(new OpenAI());\n * ```\n */\n static wrap<T extends OpenAI>(client: T): T {\n return wrap(client);\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Creation (OTEL-like signatures) //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the underlying OpenTelemetry Tracer instance.\n *\n * @returns The OpenTelemetry `Tracer`.\n */\n static getOTELTracer(): Tracer {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getTracer(TRACER_NAME);\n }\n\n /**\n * Start a new span without setting it as active.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * handle activation, error recording, and span ending automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param name - The span name.\n * @param attributes - Optional span attributes.\n * @returns The created span.\n */\n static startSpan(name: string, attributes?: Attributes): Span {\n const span = BaseTracer.getOTELTracer().startSpan(name, { attributes });\n BaseTracer._emitPartial();\n return span;\n }\n\n /**\n * Start a new active span and run a function within it.\n *\n * The span is automatically ended when the function completes.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * additionally record inputs/outputs and capture errors automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param options - Span options. `name` is required; `attributes` is optional.\n * @param fn - Function to execute within the span context.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * Tracer.startActiveSpan({ name: \"fetch-user\" }, (span) => {\n * // ...\n * });\n * ```\n */\n static startActiveSpan<T>(\n options: { name: string; attributes?: Attributes },\n fn: (span: Span) => T,\n ): T {\n const { name, attributes } = options;\n return BaseTracer.getOTELTracer().startActiveSpan(\n name,\n { attributes },\n (span) => {\n BaseTracer._emitPartial();\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return (result as Promise<unknown>).finally(() => {\n span.end();\n }) as T;\n }\n span.end();\n return result;\n } catch (e) {\n span.end();\n throw e;\n }\n },\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Helpers //\n // ------------------------------------------------------------------ //\n\n /**\n * Create a named span, execute a function, and handle errors.\n *\n * Errors are recorded on the span and re-thrown.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static span<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.startActiveSpan({ name: spanName }, (span) => {\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return result.catch((e: unknown) => {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }) as T;\n }\n return result;\n } catch (e) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }\n });\n }\n\n /**\n * Alias for {@link span}. Create a named span and execute a function within it.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static with<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.span(spanName, fn);\n }\n\n /**\n * Continue a distributed trace from an upstream service.\n *\n * Extracts W3C trace context and baggage from `carrier` and installs\n * it as the active context for the duration of `fn`. Any span started\n * inside — including `@Tracer.observe`-wrapped functions and\n * `Tracer.with` blocks — becomes a child of the upstream parent,\n * stitching your service into the caller's trace.\n *\n * Use this at the entry point of an inbound request (HTTP handler,\n * message queue consumer, RPC dispatcher, etc.) to join a trace\n * started by the upstream caller. If the carrier contains no trace\n * context, `fn` still runs normally with a fresh context.\n *\n * @param carrier - A mapping containing propagation headers. Typically\n * `req.headers` from Node's `http`/Express/Fastify, but any dict-shaped\n * object with lowercase keys works (queue attributes, Lambda event\n * headers, RPC metadata, etc.).\n * @param fn - Function to run inside the extracted context. Receives\n * the extracted {@link Context} as its argument; most callers ignore\n * it. Sync or async.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * import { Tracer } from \"judgeval\";\n *\n * const handle = Tracer.observe(async (payload: unknown) => {\n * // ... your agent logic ...\n * });\n *\n * // Express / Node http handler:\n * app.post(\"/run\", async (req, res) => {\n * await Tracer.continueTrace(req.headers, async () => {\n * const result = await handle(req.body);\n * res.json(result);\n * });\n * });\n * ```\n *\n * Propagating in the opposite direction (outbound):\n *\n * @example\n * ```typescript\n * import { propagation } from \"judgeval\";\n *\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(downstreamUrl, { headers, method: \"POST\", body });\n * ```\n */\n static continueTrace<T>(carrier: object, fn: (ctx: Context) => T): T {\n const proxy = BaseTracer._getProxyProvider();\n const ctx = extract(carrier);\n return proxy.withContext(ctx, () => fn(ctx));\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Observation Decorator //\n // ------------------------------------------------------------------ //\n\n /**\n * Wrap a function to automatically create spans and record inputs/outputs.\n *\n * Can be called with a function to wrap it directly, or with just options\n * to get a decorator (e.g. for TC39 decorator syntax).\n *\n * @param func - The function to wrap. Omit to get a decorator.\n * @param options - Optional observation options.\n * @returns The wrapped function, or a decorator if `func` is omitted.\n *\n * @example\n * ```typescript\n * // Direct wrapping\n * const traced = Tracer.observe(\n * async (query: string) => search(query),\n * { spanType: \"tool\" },\n * );\n *\n * // Decorator form\n * class Agent {\n * \\@Tracer.observe({ spanType: \"llm\" })\n * async chat(input: string) { ... }\n * }\n *\n * // Fork into a linked trace\n * const delegate = Tracer.observe(runSubsystem, {\n * spanType: \"agent\",\n * fork: true,\n * });\n * ```\n */\n static observe<TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n options?: ObserveOptions,\n ): (...args: TArgs) => TReturn;\n static observe(\n options?: ObserveOptions,\n ): <TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n context?: unknown,\n ) => (...args: TArgs) => TReturn;\n static observe<TArgs extends unknown[], TReturn>(\n funcOrOptions?: ((...args: TArgs) => TReturn) | ObserveOptions,\n options?: ObserveOptions,\n ):\n | ((...args: TArgs) => TReturn)\n | ((func: (...args: TArgs) => TReturn) => (...args: TArgs) => TReturn) {\n let func: ((...args: TArgs) => TReturn) | undefined;\n if (typeof funcOrOptions === \"function\") {\n func = funcOrOptions;\n } else {\n options = funcOrOptions;\n }\n const {\n spanType = \"span\",\n spanName,\n recordInput = true,\n recordOutput = true,\n fork = false,\n } = options ?? {};\n const proxy = BaseTracer._getProxyProvider();\n const decorator = (\n innerFunc: (...args: TArgs) => TReturn,\n ): ((...args: TArgs) => TReturn) => {\n const name = spanName ?? innerFunc.name;\n return function (this: unknown, ...args: TArgs): TReturn {\n const otelTracer = proxy.getTracer(TRACER_NAME);\n\n const shouldFork =\n fork &&\n proxy.getActiveTracer() !== null &&\n proxy.getCurrentSpan()?.isRecording() === true;\n\n if (shouldFork) {\n const serializer = BaseTracer._getSerializer();\n\n // Invocation span — child of current trace\n const invocationSpan = otelTracer.startSpan(name);\n const invocationCtx = invocationSpan.spanContext();\n if (spanType) {\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_SPAN_KIND,\n spanType,\n );\n }\n\n // Linked-root span — root of a new trace\n const linkedRootAttrs: Attributes = {\n [AttributeKeys.JUDGMENT_LINK_SOURCE_TRACE_ID]:\n invocationCtx.traceId,\n [AttributeKeys.JUDGMENT_LINK_SOURCE_SPAN_ID]: invocationCtx.spanId,\n };\n if (spanType) {\n linkedRootAttrs[AttributeKeys.JUDGMENT_SPAN_KIND] = spanType;\n }\n\n const parentlessCtx = proxy.setSpan(\n proxy.getCurrentContext(),\n proxy.wrapSpanContext(INVALID_SPAN_CONTEXT),\n );\n const linkedRoot = otelTracer.startSpan(\n name,\n { attributes: linkedRootAttrs },\n parentlessCtx,\n );\n const linkedRootCtx = linkedRoot.spanContext();\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_TRACE_ID,\n linkedRootCtx.traceId,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_SPAN_ID,\n linkedRootCtx.spanId,\n );\n\n const endBoth = (): void => {\n linkedRoot.end();\n invocationSpan.end();\n };\n const recordErrorOnBoth = (e: unknown): void => {\n for (const s of [linkedRoot, invocationSpan]) {\n s.recordException(e as Error);\n s.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n }\n };\n const recordOutputOnBoth = (value: unknown): void => {\n const serialized = serializeAttribute(value, serializer);\n linkedRoot.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, serialized);\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serialized,\n );\n };\n\n if (recordInput) {\n const serializedInput = serializeAttribute(\n getInputs(innerFunc, args),\n serializer,\n );\n linkedRoot.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n }\n BaseTracer._emitPartial();\n\n return proxy.useSpan(linkedRoot, false, false, false, (): TReturn => {\n try {\n const result = innerFunc.call(this, ...args);\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) recordOutputOnBoth(res);\n return res as TReturn;\n })\n .catch((e: unknown) => {\n recordErrorOnBoth(e);\n throw e;\n })\n .finally(endBoth) as TReturn;\n }\n if (recordOutput) recordOutputOnBoth(result);\n endBoth();\n return result;\n } catch (e) {\n recordErrorOnBoth(e);\n endBoth();\n throw e;\n }\n });\n }\n\n return otelTracer.startActiveSpan(name, (span) => {\n if (spanType) {\n span.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, spanType);\n }\n try {\n if (recordInput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializeAttribute(\n getInputs(innerFunc, args),\n BaseTracer._getSerializer(),\n ),\n );\n }\n BaseTracer._emitPartial();\n const result = innerFunc.call(this, ...args);\n\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(res, BaseTracer._getSerializer()),\n );\n }\n return res as TReturn;\n })\n .catch((e: unknown) => {\n span.recordException(e as Error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n throw e;\n })\n .finally(() => {\n span.end();\n }) as TReturn;\n }\n\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(result, BaseTracer._getSerializer()),\n );\n }\n span.end();\n return result;\n } catch (e) {\n span.recordException(e as Error);\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.end();\n throw e;\n }\n });\n };\n };\n\n if (!func) return decorator;\n return decorator(func);\n }\n\n // ------------------------------------------------------------------ //\n // Internal: resolve target span //\n // ------------------------------------------------------------------ //\n\n private static _resolveSpan(span?: Span): Span | undefined {\n if (span) return span;\n return BaseTracer._getProxyProvider().getCurrentSpan();\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Kind //\n // ------------------------------------------------------------------ //\n\n /**\n * Set the kind of a span.\n *\n * @param kind - The span kind (e.g. \"llm\", \"tool\", \"span\").\n * @param span - Target span. Defaults to the current active span.\n */\n static setSpanKind(kind: string): void;\n static setSpanKind(kind: string, span: Span): void;\n static setSpanKind(kind: string, span?: Span): void {\n dontThrow(\"BaseTracer.setSpanKind\", () => {\n if (!kind) return;\n const target = BaseTracer._resolveSpan(span);\n if (target?.isRecording()) {\n target.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, kind);\n }\n });\n }\n\n /**\n * Set the current span kind to \"llm\".\n */\n static setLLMSpan(): void {\n BaseTracer.setSpanKind(\"llm\");\n }\n\n /**\n * Set the current span kind to \"tool\".\n */\n static setToolSpan(): void {\n BaseTracer.setSpanKind(\"tool\");\n }\n\n /**\n * Set the current span kind to \"span\".\n */\n static setGeneralSpan(): void {\n BaseTracer.setSpanKind(\"span\");\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Attribute Operations //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a single attribute on a span.\n *\n * @param key - The attribute key.\n * @param value - The attribute value (will be serialized).\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttribute(key: string, value: unknown): void;\n static setAttribute(key: string, value: unknown, span: Span): void;\n static setAttribute(key: string, value: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setAttribute\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n if (!key || value == null) return;\n target.setAttribute(\n key,\n serializeAttribute(value, BaseTracer._getSerializer()),\n );\n });\n }\n\n /**\n * Set multiple attributes on a span.\n *\n * @param attributes - Key-value pairs to set.\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttributes(attributes: Record<string, unknown>): void;\n static setAttributes(attributes: Record<string, unknown>, span: Span): void;\n static setAttributes(attributes: Record<string, unknown>, span?: Span): void {\n for (const [key, value] of Object.entries(attributes)) {\n if (span) BaseTracer.setAttribute(key, value, span);\n else BaseTracer.setAttribute(key, value);\n }\n }\n\n /**\n * Set the input data on a span.\n *\n * @param inputData - The input data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setInput(inputData: unknown): void;\n static setInput(inputData: unknown, span: Span): void;\n static setInput(inputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData);\n }\n\n /**\n * Set the output data on a span.\n *\n * @param outputData - The output data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setOutput(outputData: unknown): void;\n static setOutput(outputData: unknown, span: Span): void;\n static setOutput(outputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData);\n }\n\n /**\n * Record an error on a span.\n *\n * Sets the span status to ERROR and records the exception.\n *\n * @param error - The error to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setError(error: unknown): void;\n static setError(error: unknown, span: Span): void;\n static setError(error: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setError\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n target.recordException(error as Error);\n target.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });\n });\n }\n\n /**\n * Record LLM usage metadata on a span.\n *\n * @param metadata - LLM metadata including model, provider, and token counts.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.recordLLMMetadata({\n * model: \"gpt-4o\",\n * provider: \"openai\",\n * output_tokens: 150,\n * });\n * ```\n */\n static recordLLMMetadata(metadata: LLMMetadata): void;\n static recordLLMMetadata(metadata: LLMMetadata, span: Span): void;\n static recordLLMMetadata(metadata: LLMMetadata, span?: Span): void {\n dontThrow(\"BaseTracer.recordLLMMetadata\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n if (typeof metadata.model === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_MODEL_NAME,\n metadata.model,\n );\n }\n\n if (typeof metadata.provider === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_PROVIDER,\n metadata.provider,\n );\n }\n\n if (typeof metadata.non_cached_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS,\n metadata.non_cached_input_tokens,\n );\n }\n if (typeof metadata.output_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_OUTPUT_TOKENS,\n metadata.output_tokens,\n );\n }\n if (typeof metadata.cache_read_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS,\n metadata.cache_read_input_tokens,\n );\n }\n if (typeof metadata.cache_creation_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS,\n metadata.cache_creation_input_tokens,\n );\n }\n if (typeof metadata.total_cost_usd === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_TOTAL_COST_USD,\n metadata.total_cost_usd,\n );\n }\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static: Context Propagation //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a key on the current span and on baggage so it propagates to all\n * child spans. Also reattaches the current context to the updated one.\n */\n private static _setPropagatingBaggageKey(key: string, value: string): void {\n dontThrow(\"BaseTracer._setPropagatingBaggageKey\", () => {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return;\n currentSpan.setAttribute(key, value);\n const ctx = proxy.getCurrentContext();\n const baggage = (getBaggage(ctx) ?? createBaggage()).setEntry(key, {\n value,\n });\n proxy.attachContext(setBaggage(ctx, baggage));\n });\n }\n\n /**\n * Set the customer ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerId - The customer identifier.\n */\n static setCustomerId(customerId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_ID,\n customerId,\n );\n }\n\n /**\n * Set the customer user ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerUserId - The customer user identifier.\n */\n static setCustomerUserId(customerUserId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_USER_ID,\n customerUserId,\n );\n }\n\n /**\n * Set the session ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param sessionId - The session identifier.\n */\n static setSessionId(sessionId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_SESSION_ID,\n sessionId,\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Tags //\n // ------------------------------------------------------------------ //\n\n /**\n * Add tags to the current trace.\n *\n * @param tags - A single tag string or an array of tag strings.\n *\n * @example\n * ```typescript\n * Tracer.tag(\"production\");\n * Tracer.tag([\"important\", \"customer-facing\"]);\n * ```\n */\n static tag(tags: string | string[]): void {\n dontThrow(\"BaseTracer.tag\", () => {\n if (!tags || (Array.isArray(tags) && tags.length === 0)) return;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId || !tracer._client) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const ids = BaseTracer._getCurrentTraceAndSpanId();\n if (!ids) return;\n const [traceId] = ids;\n const tagArray = Array.isArray(tags) ? tags : [tags];\n tracer._client\n .postV1projectsTracesByTraceIdTags(tracer.projectId, traceId, {\n tags: tagArray,\n })\n .catch((err: unknown) => {\n Logger.error(`tag failed: ${String(err)}`);\n });\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Async Evaluation //\n // ------------------------------------------------------------------ //\n\n /**\n * Trigger an asynchronous server-side evaluation on a span.\n *\n * The evaluation is queued and processed server-side by the Judgment\n * platform after the span ends. Use this to score live traffic\n * without blocking your application.\n *\n * @param options - Evaluation options. `judge` is required; `example`\n * is optional evaluation data.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.asyncEvaluate({\n * judge: \"answer_relevancy\",\n * example: {\n * input: \"What is AI?\",\n * actual_output: response,\n * },\n * });\n * ```\n */\n static asyncEvaluate(options: AsyncEvaluateOptions): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span: Span): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span?: Span): void {\n dontThrow(\"BaseTracer.asyncEvaluate\", () => {\n const { judge, example } = options;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n const processor = tracer.getSpanProcessor();\n const ctx = target.spanContext();\n\n const idx = processor.stateIncr(\n ctx,\n InternalAttributeKeys.PENDING_EVALS_COUNT,\n );\n const payload: PendingEvalPayload = {\n project_id: tracer.projectId,\n eval_name: `async_evaluate_${judge}_${idx}`,\n judges: [{ name: judge }],\n examples: [\n {\n ...example,\n example_id: randomUUID(),\n created_at: new Date().toISOString(),\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n },\n ],\n is_offline: false,\n is_behavior: false,\n };\n const updated = processor.stateAppend<PendingEvalPayload>(\n ctx,\n InternalAttributeKeys.PENDING_EVALS,\n payload,\n );\n\n // Raw setAttribute — value is already JSON-stringified, BaseTracer.setAttribute would double-serialize.\n target.setAttribute(\n AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL,\n JSON.stringify(updated),\n );\n });\n }\n}\n\nfunction getInputs<TArgs extends unknown[]>(\n f: (...args: TArgs) => unknown,\n args: TArgs,\n): Record<string, unknown> {\n try {\n const paramNames = parseFunctionArgs(f)\n .map((param) =>\n param\n .replace(/^\\.\\.\\./, \"\")\n .split(\"=\")[0]\n .trim(),\n )\n .filter((param) => param.length > 0);\n const inputs: Record<string, unknown> = {};\n paramNames.forEach((name, index) => {\n if (index < args.length) {\n inputs[name] = args[index];\n }\n });\n return inputs;\n } catch {\n return {};\n }\n}\n",
35
+ "import {\n type Baggage,\n type Context,\n createContextKey,\n propagation,\n} from \"@opentelemetry/api\";\nimport { getTraceRuntime } from \"../runtime\";\n\n/**\n * Judgment baggage store. Baggage is a set of key-value pairs attached\n * to a {@link Context} and automatically propagated to child spans and\n * to downstream services through the `baggage` HTTP header.\n */\n\n/** Create a new {@link Baggage}, optionally pre-populated with entries. */\nexport const createBaggage = propagation.createBaggage.bind(propagation);\n\nconst BAGGAGE_KEY = createContextKey(\"baggage\");\n\n/** Retrieve the baggage attached to the given context. */\nexport function getBaggage(context: Context): Baggage | undefined {\n return context.getValue(BAGGAGE_KEY) as Baggage | undefined;\n}\n\n/** Retrieve the baggage attached to the active context. */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(getTraceRuntime().getCurrentContext());\n}\n\n/** Attach a baggage to the given context, returning a new context. */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/** Remove the baggage attached to the given context, returning a new context. */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n\nexport { baggageEntryMetadataFromString } from \"@opentelemetry/api\";\nexport type {\n Baggage,\n BaggageEntry,\n BaggageEntryMetadata,\n} from \"@opentelemetry/api\";\n\nexport { JudgmentBaggagePropagator } from \"./JudgmentBaggagePropagator\";\n",
36
+ "import {\n type Context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n type TextMapGetter,\n type TextMapPropagator,\n type TextMapSetter,\n} from \"@opentelemetry/api\";\nimport {\n CompositePropagator,\n W3CTraceContextPropagator,\n} from \"@opentelemetry/core\";\nimport { dontThrow } from \"../../utils/dont-throw\";\nimport { JudgmentBaggagePropagator } from \"../baggage/JudgmentBaggagePropagator\";\nimport { getTraceRuntime } from \"../runtime\";\n\n/**\n * Inject and extract trace context and baggage across service\n * boundaries through a composite W3C TraceContext + Baggage propagator.\n */\n\nlet _globalTextmap: TextMapPropagator = new CompositePropagator({\n propagators: [\n new W3CTraceContextPropagator(),\n new JudgmentBaggagePropagator(),\n ],\n});\n\n/** Return the active composite propagator (W3C TraceContext + Judgment Baggage). */\nexport function getGlobalTextmap(): TextMapPropagator {\n return _globalTextmap;\n}\n\n/** Replace the global text-map propagator. */\nexport function setGlobalTextmap(propagator: TextMapPropagator): void {\n _globalTextmap = propagator;\n}\n\nfunction _resolveContext(context?: Context): Context {\n if (context !== undefined) return context;\n return getTraceRuntime().getCurrentContext();\n}\n\n/**\n * Inject trace context and baggage into an outgoing carrier (e.g. HTTP\n * headers).\n *\n * Call this before making an outbound HTTP request to propagate the\n * current trace across service boundaries.\n *\n * @param carrier - A mutable object to write propagation headers into.\n * @param context - The context to inject. Defaults to the current\n * Judgment context.\n * @param setter - Strategy for writing values into the carrier.\n *\n * @example\n * ```typescript\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(\"https://api.example.com\", { headers });\n * ```\n */\nexport function inject<Carrier>(\n carrier: Carrier,\n context?: Context,\n setter: TextMapSetter<Carrier> = defaultTextMapSetter as TextMapSetter<Carrier>,\n): void {\n dontThrow(\"propagation.inject\", () => {\n getGlobalTextmap().inject(_resolveContext(context), carrier, setter);\n });\n}\n\n/**\n * Extract trace context and baggage from an incoming carrier.\n *\n * Low-level primitive — most callers should use\n * {@link Tracer.continueTrace} instead, which extracts and installs the\n * context in one step.\n *\n * @param carrier - A mapping containing propagation headers (e.g.\n * `request.headers`).\n * @param context - Base context to merge into. Defaults to the current\n * active context.\n * @param getter - Strategy for reading values from the carrier.\n * @returns A new {@link Context} with the extracted trace and baggage\n * data.\n */\nexport function extract<Carrier>(\n carrier: Carrier,\n context?: Context,\n getter: TextMapGetter<Carrier> = defaultTextMapGetter as TextMapGetter<Carrier>,\n): Context {\n const base = _resolveContext(context);\n return dontThrow<Context>(\n \"propagation.extract\",\n () => getGlobalTextmap().extract(base, carrier, getter),\n base,\n );\n}\n",
37
+ "import {\n type Attributes,\n type Context,\n INVALID_SPAN_CONTEXT,\n type Span,\n SpanStatusCode,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type {\n BasicTracerProvider,\n Sampler,\n SpanLimits,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport type { OpenAI } from \"openai\";\nimport { AttributeKeys, InternalAttributeKeys } from \"../JudgmentAttributeKeys\";\nimport { wrap } from \"../instrumentation\";\nimport { JudgmentApiClient } from \"../internal/api\";\nimport type { PendingEvalPayload } from \"../internal/api/models/PendingEvalPayload\";\nimport { parseFunctionArgs } from \"../utils/annotate\";\nimport { dontThrow } from \"../utils/dont-throw\";\nimport { Logger } from \"../utils/logger\";\nimport {\n safeStringify,\n serializeAttribute,\n Serializer,\n} from \"../utils/serializer\";\nimport { Maybe } from \"../utils/type-helpers\";\nimport { createBaggage, getBaggage, setBaggage } from \"./baggage\";\nimport { extract } from \"./propagation\";\nimport type { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport type { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\nimport { getTraceRuntime, type TraceRuntime } from \"./runtime\";\n\nconst TRACER_NAME = \"judgeval\";\n\n/**\n * Metadata about an LLM call to record on a span.\n */\nexport interface LLMMetadata {\n /** Model name (e.g. \"gpt-4o\"). */\n model?: Maybe<string>;\n /** Provider name (e.g. \"openai\"). */\n provider?: Maybe<string>;\n /** Number of non-cached input tokens. */\n non_cached_input_tokens?: Maybe<number>;\n /** Number of output tokens. */\n output_tokens?: Maybe<number>;\n /** Number of cache-read input tokens. */\n cache_read_input_tokens?: Maybe<number>;\n /** Number of cache-creation input tokens. */\n cache_creation_input_tokens?: Maybe<number>;\n /** Total cost in USD. */\n total_cost_usd?: Maybe<number>;\n}\n\n/**\n * Options for {@link BaseTracer.observe}.\n */\nexport interface ObserveOptions {\n /** The span kind (e.g. `\"llm\"`, `\"tool\"`, `\"span\"`). Defaults to `\"span\"`. */\n spanType?: string;\n /** Custom span name. Defaults to the wrapped function's name. */\n spanName?: string;\n /** Whether to record function inputs as a span attribute. Defaults to `true`. */\n recordInput?: boolean;\n /** Whether to record function outputs as a span attribute. Defaults to `true`. */\n recordOutput?: boolean;\n /**\n * If `true`, run the function in a fresh linked trace instead of as a\n * child of the current trace, when an active parent span exists.\n * Defaults to `false`.\n */\n fork?: boolean;\n}\n\n/**\n * Options for {@link BaseTracer.asyncEvaluate}.\n */\nexport interface AsyncEvaluateOptions {\n /**\n * Name of the hosted judge/scorer (e.g. `\"faithfulness\"`,\n * `\"answer_relevancy\"`).\n */\n judge: string;\n /**\n * Optional dict with evaluation data. Keys like `input`, `actual_output`,\n * `expected_output`, and `retrieval_context` are commonly used.\n */\n example?: Record<string, unknown>;\n}\n\n/**\n * Configuration options for initializing a Tracer.\n *\n * Credentials are resolved in order: explicit arguments first, then\n * environment variables.\n */\nexport interface TracerConfig {\n /** Your Judgment project name. Required for span export. */\n projectName?: string;\n /** Judgment API key. Defaults to `JUDGMENT_API_KEY` env var. */\n apiKey?: string;\n /** Judgment organization ID. Defaults to `JUDGMENT_ORG_ID` env var. */\n organizationId?: string;\n /** Judgment API URL. Defaults to `JUDGMENT_API_URL` env var. */\n apiUrl?: string;\n /** Deployment environment name (e.g. \"production\"). */\n environment?: string;\n /** Whether to automatically set this tracer as active. Defaults to `true`. */\n setActive?: boolean;\n /** Custom serialization function for span attribute values. */\n serializer?: (value: unknown) => string;\n /** Additional OpenTelemetry resource attributes. */\n resourceAttributes?: Record<string, string>;\n /** Custom OpenTelemetry sampler. Defaults to the SDK's default. */\n sampler?: Sampler;\n /** Custom OpenTelemetry span limits (attribute/event/link caps). */\n spanLimits?: SpanLimits;\n /** Additional span processors to register alongside Judgment's own processor. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Abstract base for all Judgment tracers.\n *\n * Provides the core tracing surface: span creation, attribute recording,\n * the `observe` decorator, context propagation for customer/session IDs,\n * tagging, and async evaluation dispatch.\n * Concrete subclasses supply the OTel TracerProvider, exporter, and\n * processor wiring.\n */\nexport abstract class BaseTracer {\n projectName: string | null;\n projectId: string | null;\n apiKey: string | null;\n organizationId: string | null;\n apiUrl: string | null;\n environment: string | null;\n serializer: Serializer;\n _tracerProvider: BasicTracerProvider;\n _client: JudgmentApiClient | null;\n _enableMonitoring: boolean;\n\n readonly supportsLiveInstrumentation: boolean = true;\n\n // ------------------------------------------------------------------ //\n // Initialization //\n // ------------------------------------------------------------------ //\n\n protected constructor(\n projectName: string | null,\n projectId: string | null,\n apiKey: string | null,\n organizationId: string | null,\n apiUrl: string | null,\n environment: string | null,\n serializer: Serializer,\n tracerProvider: BasicTracerProvider,\n client: JudgmentApiClient | null,\n enableMonitoring: boolean,\n ) {\n this.projectName = projectName;\n this.projectId = projectId;\n this.apiKey = apiKey;\n this.organizationId = organizationId;\n this.apiUrl = apiUrl;\n this.environment = environment;\n this.serializer = serializer;\n this._tracerProvider = tracerProvider;\n this._client = client;\n this._enableMonitoring = enableMonitoring;\n }\n\n /**\n * Set this tracer as the active tracer in the global provider.\n *\n * @returns `true` if activation succeeded, `false` if a root span is active.\n */\n setActive(): boolean {\n return getTraceRuntime().setActive(this);\n }\n\n // ------------------------------------------------------------------ //\n // Abstract Lifecycle //\n // ------------------------------------------------------------------ //\n\n abstract getSpanProcessor(): JudgmentSpanProcessor;\n abstract getSpanExporter(): JudgmentSpanExporter;\n\n // ------------------------------------------------------------------ //\n // Internal Helpers //\n // ------------------------------------------------------------------ //\n\n private static _getProxyProvider(): TraceRuntime {\n return getTraceRuntime();\n }\n\n private static _getSerializer(): Serializer {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n return tracer?.serializer ?? safeStringify;\n }\n\n private static _getCurrentTraceAndSpanId(): [string, string] | null {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return null;\n const ctx = currentSpan.spanContext();\n if (!ctx.traceId || !(ctx.traceFlags & 0x01)) return null;\n return [ctx.traceId, ctx.spanId];\n }\n\n private static _emitPartial(): void {\n dontThrow(\"BaseTracer._emitPartial\", () => {\n const tracer = BaseTracer._getProxyProvider().getActiveTracer();\n if (!tracer || !tracer.supportsLiveInstrumentation) return;\n tracer.getSpanProcessor().emitPartial();\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Span Access & Lifecycle //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the currently active span.\n *\n * @returns The active span, or `undefined` if none.\n */\n static getCurrentSpan(): Span | undefined {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getCurrentSpan();\n }\n\n /**\n * Flush all pending spans to the export endpoint.\n *\n * Call this before your process exits to ensure all spans are sent.\n *\n * @example\n * ```typescript\n * await Tracer.forceFlush();\n * ```\n */\n static async forceFlush(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.forceFlush();\n }\n\n /**\n * Shut down the tracer and flush any pending data.\n *\n * @example\n * ```typescript\n * await Tracer.shutdown();\n * ```\n */\n static async shutdown(): Promise<void> {\n const proxy = BaseTracer._getProxyProvider();\n await proxy.shutdown();\n }\n\n /**\n * Register an OpenTelemetry instrumentation to capture spans automatically.\n *\n * @param instrumentor - The OpenTelemetry instrumentation to register.\n *\n * @example\n * ```typescript\n * import { OpenAIInstrumentation } from \"@opentelemetry/instrumentation-openai\";\n * Tracer.registerOTELInstrumentation(new OpenAIInstrumentation());\n * ```\n */\n static registerOTELInstrumentation(instrumentor: Instrumentation): void {\n dontThrow(\"BaseTracer.registerOTELInstrumentation\", () => {\n const proxy = BaseTracer._getProxyProvider();\n proxy.addInstrumentation(instrumentor);\n });\n }\n\n /**\n * Wrap a supported LLM client to add automatic tracing.\n *\n * Currently supports OpenAI clients. The client is instrumented\n * in-place and returned.\n *\n * Lives on `BaseTracer` (rather than a runtime-specific subclass) because\n * the OpenAI wrapper relies only on fetch-based method interception — the\n * `openai` import is types-only and it uses no Node built-ins — so it is\n * safe in both the Node and Workers runtimes.\n *\n * @param client - An LLM client instance (e.g. `new OpenAI()`).\n * @returns The same client instance, instrumented.\n *\n * @example\n * ```typescript\n * import OpenAI from \"openai\";\n *\n * const client = Tracer.wrap(new OpenAI());\n * ```\n */\n static wrap<T extends OpenAI>(client: T): T {\n return wrap(client);\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Creation (OTEL-like signatures) //\n // ------------------------------------------------------------------ //\n\n /**\n * Get the underlying OpenTelemetry Tracer instance.\n *\n * @returns The OpenTelemetry `Tracer`.\n */\n static getOTELTracer(): Tracer {\n const proxy = BaseTracer._getProxyProvider();\n return proxy.getTracer(TRACER_NAME);\n }\n\n /**\n * Start a new span without setting it as active.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * handle activation, error recording, and span ending automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param name - The span name.\n * @param attributes - Optional span attributes.\n * @returns The created span.\n */\n static startSpan(name: string, attributes?: Attributes): Span {\n const span = BaseTracer.getOTELTracer().startSpan(name, { attributes });\n BaseTracer._emitPartial();\n return span;\n }\n\n /**\n * Start a new active span and run a function within it.\n *\n * The span is automatically ended when the function completes.\n *\n * **Most users should prefer {@link observe} or {@link with}**, which\n * additionally record inputs/outputs and capture errors automatically.\n * Use this only when you need low-level control over the span lifecycle.\n *\n * @param options - Span options. `name` is required; `attributes` is optional.\n * @param fn - Function to execute within the span context.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * Tracer.startActiveSpan({ name: \"fetch-user\" }, (span) => {\n * // ...\n * });\n * ```\n */\n static startActiveSpan<T>(\n options: { name: string; attributes?: Attributes },\n fn: (span: Span) => T,\n ): T {\n const { name, attributes } = options;\n return BaseTracer.getOTELTracer().startActiveSpan(\n name,\n { attributes },\n (span) => {\n BaseTracer._emitPartial();\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return (result as Promise<unknown>).finally(() => {\n span.end();\n }) as T;\n }\n span.end();\n return result;\n } catch (e) {\n span.end();\n throw e;\n }\n },\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Helpers //\n // ------------------------------------------------------------------ //\n\n /**\n * Create a named span, execute a function, and handle errors.\n *\n * Errors are recorded on the span and re-thrown.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static span<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.startActiveSpan({ name: spanName }, (span) => {\n try {\n const result = fn(span);\n if (result instanceof Promise) {\n return result.catch((e: unknown) => {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }) as T;\n }\n return result;\n } catch (e) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.recordException(e as Error);\n throw e;\n }\n });\n }\n\n /**\n * Alias for {@link span}. Create a named span and execute a function within it.\n *\n * @param spanName - The span name.\n * @param fn - Function to execute within the span.\n * @returns The return value of `fn`.\n */\n static with<T>(spanName: string, fn: (span: Span) => T): T {\n return BaseTracer.span(spanName, fn);\n }\n\n /**\n * Continue a distributed trace from an upstream service.\n *\n * Extracts W3C trace context and baggage from `carrier` and installs\n * it as the active context for the duration of `fn`. Any span started\n * inside — including `@Tracer.observe`-wrapped functions and\n * `Tracer.with` blocks — becomes a child of the upstream parent,\n * stitching your service into the caller's trace.\n *\n * Use this at the entry point of an inbound request (HTTP handler,\n * message queue consumer, RPC dispatcher, etc.) to join a trace\n * started by the upstream caller. If the carrier contains no trace\n * context, `fn` still runs normally with a fresh context.\n *\n * @param carrier - A mapping containing propagation headers. Typically\n * `req.headers` from Node's `http`/Express/Fastify, but any dict-shaped\n * object with lowercase keys works (queue attributes, Lambda event\n * headers, RPC metadata, etc.).\n * @param fn - Function to run inside the extracted context. Receives\n * the extracted {@link Context} as its argument; most callers ignore\n * it. Sync or async.\n * @returns The return value of `fn`.\n *\n * @example\n * ```typescript\n * import { Tracer } from \"judgeval\";\n *\n * const handle = Tracer.observe(async (payload: unknown) => {\n * // ... your agent logic ...\n * });\n *\n * // Express / Node http handler:\n * app.post(\"/run\", async (req, res) => {\n * await Tracer.continueTrace(req.headers, async () => {\n * const result = await handle(req.body);\n * res.json(result);\n * });\n * });\n * ```\n *\n * Propagating in the opposite direction (outbound):\n *\n * @example\n * ```typescript\n * import { propagation } from \"judgeval\";\n *\n * const headers: Record<string, string> = {};\n * propagation.inject(headers);\n * await fetch(downstreamUrl, { headers, method: \"POST\", body });\n * ```\n */\n static continueTrace<T>(carrier: object, fn: (ctx: Context) => T): T {\n const proxy = BaseTracer._getProxyProvider();\n const ctx = extract(carrier);\n return proxy.withContext(ctx, () => fn(ctx));\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Observation Decorator //\n // ------------------------------------------------------------------ //\n\n /**\n * Wrap a function to automatically create spans and record inputs/outputs.\n *\n * Can be called with a function to wrap it directly, or with just options\n * to get a decorator (e.g. for TC39 decorator syntax).\n *\n * @param func - The function to wrap. Omit to get a decorator.\n * @param options - Optional observation options.\n * @returns The wrapped function, or a decorator if `func` is omitted.\n *\n * @example\n * ```typescript\n * // Direct wrapping\n * const traced = Tracer.observe(\n * async (query: string) => search(query),\n * { spanType: \"tool\" },\n * );\n *\n * // Decorator form\n * class Agent {\n * \\@Tracer.observe({ spanType: \"llm\" })\n * async chat(input: string) { ... }\n * }\n *\n * // Fork into a linked trace\n * const delegate = Tracer.observe(runSubsystem, {\n * spanType: \"agent\",\n * fork: true,\n * });\n * ```\n */\n static observe<TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n options?: ObserveOptions,\n ): (...args: TArgs) => TReturn;\n static observe(\n options?: ObserveOptions,\n ): <TArgs extends unknown[], TReturn>(\n func: (...args: TArgs) => TReturn,\n context?: unknown,\n ) => (...args: TArgs) => TReturn;\n static observe<TArgs extends unknown[], TReturn>(\n funcOrOptions?: ((...args: TArgs) => TReturn) | ObserveOptions,\n options?: ObserveOptions,\n ):\n | ((...args: TArgs) => TReturn)\n | ((func: (...args: TArgs) => TReturn) => (...args: TArgs) => TReturn) {\n let func: ((...args: TArgs) => TReturn) | undefined;\n if (typeof funcOrOptions === \"function\") {\n func = funcOrOptions;\n } else {\n options = funcOrOptions;\n }\n const {\n spanType = \"span\",\n spanName,\n recordInput = true,\n recordOutput = true,\n fork = false,\n } = options ?? {};\n const proxy = BaseTracer._getProxyProvider();\n const decorator = (\n innerFunc: (...args: TArgs) => TReturn,\n ): ((...args: TArgs) => TReturn) => {\n const name = spanName ?? innerFunc.name;\n return function (this: unknown, ...args: TArgs): TReturn {\n const otelTracer = proxy.getTracer(TRACER_NAME);\n\n const shouldFork =\n fork &&\n proxy.getActiveTracer() !== null &&\n proxy.getCurrentSpan()?.isRecording() === true;\n\n if (shouldFork) {\n const serializer = BaseTracer._getSerializer();\n\n // Invocation span — child of current trace\n const invocationSpan = otelTracer.startSpan(name);\n const invocationCtx = invocationSpan.spanContext();\n if (spanType) {\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_SPAN_KIND,\n spanType,\n );\n }\n\n // Linked-root span — root of a new trace\n const linkedRootAttrs: Attributes = {\n [AttributeKeys.JUDGMENT_LINK_SOURCE_TRACE_ID]:\n invocationCtx.traceId,\n [AttributeKeys.JUDGMENT_LINK_SOURCE_SPAN_ID]: invocationCtx.spanId,\n };\n if (spanType) {\n linkedRootAttrs[AttributeKeys.JUDGMENT_SPAN_KIND] = spanType;\n }\n\n const parentlessCtx = proxy.setSpan(\n proxy.getCurrentContext(),\n proxy.wrapSpanContext(INVALID_SPAN_CONTEXT),\n );\n const linkedRoot = otelTracer.startSpan(\n name,\n { attributes: linkedRootAttrs },\n parentlessCtx,\n );\n const linkedRootCtx = linkedRoot.spanContext();\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_TRACE_ID,\n linkedRootCtx.traceId,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_LINK_TARGET_SPAN_ID,\n linkedRootCtx.spanId,\n );\n\n const endBoth = (): void => {\n linkedRoot.end();\n invocationSpan.end();\n };\n const recordErrorOnBoth = (e: unknown): void => {\n for (const s of [linkedRoot, invocationSpan]) {\n s.recordException(e as Error);\n s.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n }\n };\n const recordOutputOnBoth = (value: unknown): void => {\n const serialized = serializeAttribute(value, serializer);\n linkedRoot.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, serialized);\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serialized,\n );\n };\n\n if (recordInput) {\n const serializedInput = serializeAttribute(\n getInputs(innerFunc, args),\n serializer,\n );\n linkedRoot.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n invocationSpan.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializedInput,\n );\n }\n BaseTracer._emitPartial();\n\n return proxy.useSpan(linkedRoot, false, false, false, (): TReturn => {\n try {\n const result = innerFunc.call(this, ...args);\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) recordOutputOnBoth(res);\n return res as TReturn;\n })\n .catch((e: unknown) => {\n recordErrorOnBoth(e);\n throw e;\n })\n .finally(endBoth) as TReturn;\n }\n if (recordOutput) recordOutputOnBoth(result);\n endBoth();\n return result;\n } catch (e) {\n recordErrorOnBoth(e);\n endBoth();\n throw e;\n }\n });\n }\n\n return otelTracer.startActiveSpan(name, (span) => {\n if (spanType) {\n span.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, spanType);\n }\n try {\n if (recordInput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_INPUT,\n serializeAttribute(\n getInputs(innerFunc, args),\n BaseTracer._getSerializer(),\n ),\n );\n }\n BaseTracer._emitPartial();\n const result = innerFunc.call(this, ...args);\n\n if (result instanceof Promise) {\n return (result as Promise<unknown>)\n .then((res) => {\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(res, BaseTracer._getSerializer()),\n );\n }\n return res as TReturn;\n })\n .catch((e: unknown) => {\n span.recordException(e as Error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: String(e),\n });\n throw e;\n })\n .finally(() => {\n span.end();\n }) as TReturn;\n }\n\n if (recordOutput) {\n span.setAttribute(\n AttributeKeys.JUDGMENT_OUTPUT,\n serializeAttribute(result, BaseTracer._getSerializer()),\n );\n }\n span.end();\n return result;\n } catch (e) {\n span.recordException(e as Error);\n span.setStatus({ code: SpanStatusCode.ERROR, message: String(e) });\n span.end();\n throw e;\n }\n });\n };\n };\n\n if (!func) return decorator;\n return decorator(func);\n }\n\n // ------------------------------------------------------------------ //\n // Internal: resolve target span //\n // ------------------------------------------------------------------ //\n\n private static _resolveSpan(span?: Span): Span | undefined {\n if (span) return span;\n return BaseTracer._getProxyProvider().getCurrentSpan();\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Kind //\n // ------------------------------------------------------------------ //\n\n /**\n * Set the kind of a span.\n *\n * @param kind - The span kind (e.g. \"llm\", \"tool\", \"span\").\n * @param span - Target span. Defaults to the current active span.\n */\n static setSpanKind(kind: string): void;\n static setSpanKind(kind: string, span: Span): void;\n static setSpanKind(kind: string, span?: Span): void {\n dontThrow(\"BaseTracer.setSpanKind\", () => {\n if (!kind) return;\n const target = BaseTracer._resolveSpan(span);\n if (target?.isRecording()) {\n target.setAttribute(AttributeKeys.JUDGMENT_SPAN_KIND, kind);\n }\n });\n }\n\n /**\n * Set the current span kind to \"llm\".\n */\n static setLLMSpan(): void {\n BaseTracer.setSpanKind(\"llm\");\n }\n\n /**\n * Set the current span kind to \"tool\".\n */\n static setToolSpan(): void {\n BaseTracer.setSpanKind(\"tool\");\n }\n\n /**\n * Set the current span kind to \"span\".\n */\n static setGeneralSpan(): void {\n BaseTracer.setSpanKind(\"span\");\n }\n\n // ------------------------------------------------------------------ //\n // Static: Span Attribute Operations //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a single attribute on a span.\n *\n * @param key - The attribute key.\n * @param value - The attribute value (will be serialized).\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttribute(key: string, value: unknown): void;\n static setAttribute(key: string, value: unknown, span: Span): void;\n static setAttribute(key: string, value: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setAttribute\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n if (!key || value == null) return;\n target.setAttribute(\n key,\n serializeAttribute(value, BaseTracer._getSerializer()),\n );\n });\n }\n\n /**\n * Set multiple attributes on a span.\n *\n * @param attributes - Key-value pairs to set.\n * @param span - Target span. Defaults to the current active span.\n */\n static setAttributes(attributes: Record<string, unknown>): void;\n static setAttributes(attributes: Record<string, unknown>, span: Span): void;\n static setAttributes(attributes: Record<string, unknown>, span?: Span): void {\n for (const [key, value] of Object.entries(attributes)) {\n if (span) BaseTracer.setAttribute(key, value, span);\n else BaseTracer.setAttribute(key, value);\n }\n }\n\n /**\n * Set the input data on a span.\n *\n * @param inputData - The input data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setInput(inputData: unknown): void;\n static setInput(inputData: unknown, span: Span): void;\n static setInput(inputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_INPUT, inputData);\n }\n\n /**\n * Set the output data on a span.\n *\n * @param outputData - The output data to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setOutput(outputData: unknown): void;\n static setOutput(outputData: unknown, span: Span): void;\n static setOutput(outputData: unknown, span?: Span): void {\n if (span)\n BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData, span);\n else BaseTracer.setAttribute(AttributeKeys.JUDGMENT_OUTPUT, outputData);\n }\n\n /**\n * Record an error on a span.\n *\n * Sets the span status to ERROR and records the exception.\n *\n * @param error - The error to record.\n * @param span - Target span. Defaults to the current active span.\n */\n static setError(error: unknown): void;\n static setError(error: unknown, span: Span): void;\n static setError(error: unknown, span?: Span): void {\n dontThrow(\"BaseTracer.setError\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n target.recordException(error as Error);\n target.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });\n });\n }\n\n /**\n * Record LLM usage metadata on a span.\n *\n * @param metadata - LLM metadata including model, provider, and token counts.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.recordLLMMetadata({\n * model: \"gpt-4o\",\n * provider: \"openai\",\n * output_tokens: 150,\n * });\n * ```\n */\n static recordLLMMetadata(metadata: LLMMetadata): void;\n static recordLLMMetadata(metadata: LLMMetadata, span: Span): void;\n static recordLLMMetadata(metadata: LLMMetadata, span?: Span): void {\n dontThrow(\"BaseTracer.recordLLMMetadata\", () => {\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n if (typeof metadata.model === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_MODEL_NAME,\n metadata.model,\n );\n }\n\n if (typeof metadata.provider === \"string\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_LLM_PROVIDER,\n metadata.provider,\n );\n }\n\n if (typeof metadata.non_cached_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS,\n metadata.non_cached_input_tokens,\n );\n }\n if (typeof metadata.output_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_OUTPUT_TOKENS,\n metadata.output_tokens,\n );\n }\n if (typeof metadata.cache_read_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS,\n metadata.cache_read_input_tokens,\n );\n }\n if (typeof metadata.cache_creation_input_tokens === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS,\n metadata.cache_creation_input_tokens,\n );\n }\n if (typeof metadata.total_cost_usd === \"number\") {\n target.setAttribute(\n AttributeKeys.JUDGMENT_USAGE_TOTAL_COST_USD,\n metadata.total_cost_usd,\n );\n }\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static: Context Propagation //\n // ------------------------------------------------------------------ //\n\n /**\n * Set a key on the current span and on baggage so it propagates to all\n * child spans. Also reattaches the current context to the updated one.\n */\n private static _setPropagatingBaggageKey(key: string, value: string): void {\n dontThrow(\"BaseTracer._setPropagatingBaggageKey\", () => {\n const proxy = BaseTracer._getProxyProvider();\n const currentSpan = proxy.getCurrentSpan();\n if (!currentSpan?.isRecording()) return;\n currentSpan.setAttribute(key, value);\n const ctx = proxy.getCurrentContext();\n const baggage = (getBaggage(ctx) ?? createBaggage()).setEntry(key, {\n value,\n });\n proxy.attachContext(setBaggage(ctx, baggage));\n });\n }\n\n /**\n * Set the customer ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerId - The customer identifier.\n */\n static setCustomerId(customerId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_ID,\n customerId,\n );\n }\n\n /**\n * Set the customer user ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param customerUserId - The customer user identifier.\n */\n static setCustomerUserId(customerUserId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_CUSTOMER_USER_ID,\n customerUserId,\n );\n }\n\n /**\n * Set the session ID on the current active span.\n *\n * The ID is automatically propagated to all child spans via baggage.\n * This method always targets the active span because it modifies\n * the active context's baggage for propagation.\n *\n * @param sessionId - The session identifier.\n */\n static setSessionId(sessionId: string): void {\n BaseTracer._setPropagatingBaggageKey(\n AttributeKeys.JUDGMENT_SESSION_ID,\n sessionId,\n );\n }\n\n // ------------------------------------------------------------------ //\n // Static: Tags //\n // ------------------------------------------------------------------ //\n\n /**\n * Add tags to the current trace.\n *\n * @param tags - A single tag string or an array of tag strings.\n *\n * @example\n * ```typescript\n * Tracer.tag(\"production\");\n * Tracer.tag([\"important\", \"customer-facing\"]);\n * ```\n */\n static tag(tags: string | string[]): void {\n dontThrow(\"BaseTracer.tag\", () => {\n if (!tags || (Array.isArray(tags) && tags.length === 0)) return;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId || !tracer._client) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const ids = BaseTracer._getCurrentTraceAndSpanId();\n if (!ids) return;\n const [traceId] = ids;\n const tagArray = Array.isArray(tags) ? tags : [tags];\n tracer._client\n .postV1projectsTracesByTraceIdTags(tracer.projectId, traceId, {\n tags: tagArray,\n })\n .catch((err: unknown) => {\n Logger.error(`tag failed: ${String(err)}`);\n });\n });\n }\n\n // ------------------------------------------------------------------ //\n // Static API: Async Evaluation //\n // ------------------------------------------------------------------ //\n\n /**\n * Trigger an asynchronous server-side evaluation on a span.\n *\n * The evaluation is queued and processed server-side by the Judgment\n * platform after the span ends. Use this to score live traffic\n * without blocking your application.\n *\n * @param options - Evaluation options. `judge` is required; `example`\n * is optional evaluation data.\n * @param span - Target span. Defaults to the current active span.\n *\n * @example\n * ```typescript\n * Tracer.asyncEvaluate({\n * judge: \"answer_relevancy\",\n * example: {\n * input: \"What is AI?\",\n * actual_output: response,\n * },\n * });\n * ```\n */\n static asyncEvaluate(options: AsyncEvaluateOptions): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span: Span): void;\n static asyncEvaluate(options: AsyncEvaluateOptions, span?: Span): void {\n dontThrow(\"BaseTracer.asyncEvaluate\", () => {\n const { judge, example } = options;\n const proxy = BaseTracer._getProxyProvider();\n const tracer = proxy.getActiveTracer();\n if (!tracer?.projectId) return;\n if (!tracer.supportsLiveInstrumentation) return;\n const target = BaseTracer._resolveSpan(span);\n if (!target?.isRecording()) return;\n\n const processor = tracer.getSpanProcessor();\n const ctx = target.spanContext();\n\n const idx = processor.stateIncr(\n ctx,\n InternalAttributeKeys.PENDING_EVALS_COUNT,\n );\n const payload: PendingEvalPayload = {\n project_id: tracer.projectId,\n eval_name: `async_evaluate_${judge}_${idx}`,\n judges: [{ name: judge }],\n examples: [\n {\n ...example,\n example_id: crypto.randomUUID(),\n created_at: new Date().toISOString(),\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n },\n ],\n is_offline: false,\n is_behavior: false,\n };\n const updated = processor.stateAppend<PendingEvalPayload>(\n ctx,\n InternalAttributeKeys.PENDING_EVALS,\n payload,\n );\n\n // Raw setAttribute — value is already JSON-stringified, BaseTracer.setAttribute would double-serialize.\n target.setAttribute(\n AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL,\n JSON.stringify(updated),\n );\n });\n }\n}\n\nfunction getInputs<TArgs extends unknown[]>(\n f: (...args: TArgs) => unknown,\n args: TArgs,\n): Record<string, unknown> {\n try {\n const paramNames = parseFunctionArgs(f)\n .map((param) =>\n param\n .replace(/^\\.\\.\\./, \"\")\n .split(\"=\")[0]\n .trim(),\n )\n .filter((param) => param.length > 0);\n const inputs: Record<string, unknown> = {};\n paramNames.forEach((name, index) => {\n if (index < args.length) {\n inputs[name] = args[index];\n }\n });\n return inputs;\n } catch {\n return {};\n }\n}\n",
38
+ "import {\n ROOT_CONTEXT,\n context as otelContext,\n type Context,\n} from \"@opentelemetry/api\";\nimport { AsyncLocalStorage } from \"async_hooks\";\n\ntype OTelContextApi = typeof otelContext;\n\nlet installed = false;\nlet getJudgmentContext: (() => Context) | null = null;\n\nconst gateStorage = new AsyncLocalStorage<boolean>();\nconst bridgeContextStorage = new AsyncLocalStorage<Context>();\n\nconst originalActive = otelContext.active.bind(otelContext);\nconst originalWith = otelContext.with.bind(otelContext);\nconst originalBind = otelContext.bind.bind(otelContext);\n\nfunction isGateEnabled(): boolean {\n return gateStorage.getStore() === true;\n}\n\nexport function installOtelContextBridge(\n getCurrentJudgmentContext: () => Context,\n): void {\n getJudgmentContext = getCurrentJudgmentContext;\n if (installed) return;\n\n const api = otelContext as OTelContextApi & {\n active: () => Context;\n with: <A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ) => ReturnType<F>;\n bind: <T>(context: Context, target: T) => T;\n };\n\n api.active = (): Context => {\n if (!isGateEnabled()) return originalActive();\n const bridged = bridgeContextStorage.getStore();\n if (bridged) return bridged;\n return getJudgmentContext ? getJudgmentContext() : ROOT_CONTEXT;\n };\n\n api.with = (contextValue, fn, thisArg, ...args) => {\n if (!isGateEnabled())\n return originalWith(contextValue, fn, thisArg, ...args);\n return bridgeContextStorage.run(contextValue, () =>\n fn.apply(thisArg, args),\n );\n };\n\n api.bind = (contextValue, target) => {\n if (!isGateEnabled()) return originalBind(contextValue, target);\n if (typeof target !== \"function\") return target;\n const fn = target as unknown as (...args: unknown[]) => unknown;\n return ((...args: unknown[]) =>\n bridgeContextStorage.run(contextValue, () =>\n fn(...args),\n )) as typeof target;\n };\n\n installed = true;\n}\n\nexport function runWithOtelBridgeGate<T>(ctx: Context, fn: () => T): T {\n return gateStorage.run(true, () => bridgeContextStorage.run(ctx, fn));\n}\n",
39
+ "import {\n ROOT_CONTEXT,\n SpanStatusCode,\n trace,\n type Context,\n type Span,\n type SpanContext,\n type SpanOptions,\n type Tracer,\n type TracerProvider,\n} from \"@opentelemetry/api\";\nimport {\n registerInstrumentations,\n type Instrumentation,\n} from \"@opentelemetry/instrumentation\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { Logger } from \"../utils/logger\";\nimport type { BaseTracer } from \"./BaseTracer\";\nimport {\n installOtelContextBridge,\n runWithOtelBridgeGate,\n} from \"./instrumentation/OtelContextBridge\";\nimport { noOpTracer } from \"./NoOpTracer\";\nimport { setTraceRuntime } from \"./runtime\";\n\nconst TRACER_NAME = \"judgeval\";\n\nconst _contextStorage = new AsyncLocalStorage<Context>();\n\nclass ProxyTracer implements Tracer {\n private _provider: JudgmentTracerProvider;\n\n constructor(provider: JudgmentTracerProvider) {\n this._provider = provider;\n }\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n const ctx = context ?? this._provider.getCurrentContext();\n const delegate = this._provider._getDelegateTracer();\n return delegate.startSpan(name, options, ctx);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n ...args: [F] | [SpanOptions, F] | [SpanOptions, Context, F]\n ): ReturnType<F> {\n let options: SpanOptions = {};\n let context: Context = this._provider.getCurrentContext();\n let fn: F;\n\n if (args.length === 1) {\n fn = args[0];\n } else if (args.length === 2) {\n options = args[0];\n fn = args[1];\n } else {\n options = args[0];\n context = args[1];\n fn = args[2];\n }\n\n const span = this.startSpan(name, options, context);\n return this._provider.useSpan(span, false, false, false, () =>\n fn(span),\n ) as ReturnType<F>;\n }\n}\n\n/**\n * Global singleton that manages tracer registration and context propagation.\n *\n * Acts as a proxy TracerProvider that delegates to the currently active\n * tracer's underlying OpenTelemetry provider.\n */\nexport class JudgmentTracerProvider implements TracerProvider {\n private static _instance: JudgmentTracerProvider | null = null;\n\n private _activeTracer: BaseTracer | null = null;\n private _instrumentations: Instrumentation[] = [];\n private _proxyTracer: ProxyTracer;\n private _tracers = new Set<BaseTracer>();\n\n private constructor() {\n this._proxyTracer = new ProxyTracer(this);\n setTraceRuntime(this);\n installOtelContextBridge(() => this.getCurrentContext());\n }\n\n /**\n * Get the singleton JudgmentTracerProvider instance.\n *\n * @returns The global provider instance.\n */\n static getInstance(): JudgmentTracerProvider {\n JudgmentTracerProvider._instance ??= new JudgmentTracerProvider();\n return JudgmentTracerProvider._instance;\n }\n\n /**\n * Install the JudgmentTracerProvider as the global tracer provider.\n * This generally does not need to be called - Judgeval automatically uses this for all its observability functionality.\n * Only use this if you specifically want to override the global tracer provider, which will enable all Opentelemetry captured instrumentations to flow through judgeval.\n * @returns True if the installation was successful, false otherwise.\n */\n static installAsGlobalTracerProvider(): boolean {\n const instance = JudgmentTracerProvider.getInstance();\n return trace.setGlobalTracerProvider(instance);\n }\n\n /**\n * Register a tracer with the provider.\n *\n * @param tracer - The tracer to register.\n */\n register(tracer: BaseTracer): void {\n this._tracers.add(tracer);\n }\n\n /**\n * Remove a tracer from the provider.\n *\n * @param tracer - The tracer to deregister.\n */\n deregister(tracer: BaseTracer): void {\n this._tracers.delete(tracer);\n }\n\n /**\n * Set a tracer as the active tracer.\n *\n * Cannot be called while a root span is active.\n *\n * @param tracer - The tracer to activate.\n * @returns `true` if activation succeeded.\n */\n setActive(tracer: BaseTracer): boolean {\n const currentSpan = this.getCurrentSpan();\n if (currentSpan?.isRecording()) {\n if (trace.getSpan(this.getCurrentContext()) === currentSpan) {\n Logger.error(\n \"Cannot set_active() while a root span is active. Keeping existing tracer provider.\",\n );\n return false;\n }\n }\n this.register(tracer);\n this._activeTracer = tracer;\n return true;\n }\n\n /**\n * Get the currently active tracer.\n *\n * @returns The active tracer, or `null` if none.\n */\n getActiveTracer(): BaseTracer | null {\n return this._activeTracer;\n }\n\n /**\n * Get the current OpenTelemetry context.\n *\n * @returns The current context.\n */\n getCurrentContext(): Context {\n return _contextStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n /**\n * Set a span on a context, returning a new context.\n */\n setSpan(ctx: Context, span: Span): Context {\n return trace.setSpan(ctx, span);\n }\n\n /**\n * Wrap a SpanContext into a non-recording Span.\n */\n wrapSpanContext(spanContext: SpanContext): Span {\n return trace.wrapSpanContext(spanContext);\n }\n\n /**\n * Get the span from the current context.\n *\n * @returns The current span, or `undefined` if none.\n */\n getCurrentSpan(): Span | undefined {\n const ctx = this.getCurrentContext();\n return trace.getSpan(ctx);\n }\n\n /**\n * Check whether there is an active root span.\n *\n * @returns `true` if a root span is currently recording.\n */\n hasActiveRootSpan(): boolean {\n const currentSpan = this.getCurrentSpan();\n if (!currentSpan?.isRecording()) return false;\n return true;\n }\n\n _getDelegateTracer(): Tracer {\n const tracer = this._activeTracer;\n if (!tracer) {\n Logger.debug(\"No active tracer, returning NoOpTracer\");\n return noOpTracer;\n }\n return tracer._tracerProvider.getTracer(TRACER_NAME);\n }\n\n getTracer(\n _instrumentingModuleName: string,\n _instrumentingLibraryVersion?: string,\n _options?: { schemaUrl?: string },\n ): Tracer {\n return this._proxyTracer;\n }\n\n /**\n * Register an OpenTelemetry instrumentation.\n *\n * @param instrumentor - The instrumentation to add.\n */\n addInstrumentation(instrumentor: Instrumentation): void {\n try {\n registerInstrumentations({\n tracerProvider: this,\n instrumentations: [instrumentor],\n });\n this._instrumentations.push(instrumentor);\n } catch (err: unknown) {\n Logger.error(`Failed to add instrumentation: ${String(err)}`);\n }\n }\n\n useSpan<T>(\n span: Span,\n endOnExit: boolean,\n recordException: boolean,\n setStatusOnException: boolean,\n fn: () => T,\n ): T {\n const prevCtx = this.getCurrentContext();\n const ctx = trace.setSpan(prevCtx, span);\n return _contextStorage.run(ctx, () =>\n runWithOtelBridgeGate(ctx, () => {\n try {\n const result = fn();\n if (result instanceof Promise) {\n return result\n .catch((exc: unknown) => {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n throw exc;\n })\n .finally(() => {\n if (endOnExit) span.end();\n }) as T;\n }\n if (endOnExit) span.end();\n return result;\n } catch (exc) {\n if (span.isRecording()) {\n if (recordException) span.recordException(exc as Error);\n if (setStatusOnException) {\n const err = exc as Error;\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${err.name}: ${err.message}`,\n });\n }\n }\n if (endOnExit) span.end();\n throw exc;\n }\n }),\n );\n }\n\n attachContext(ctx: Context): void {\n _contextStorage.enterWith(ctx);\n }\n\n /**\n * Run `fn` with `ctx` installed as the active context for the\n * duration of the callback. Sync or async.\n */\n withContext<T>(ctx: Context, fn: () => T): T {\n return _contextStorage.run(ctx, () => runWithOtelBridgeGate(ctx, fn));\n }\n\n /**\n * Flush all registered tracers.\n */\n async forceFlush(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.forceFlush()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`forceFlush failed: ${String(r.reason)}`);\n }\n }\n }\n\n /**\n * Shut down all registered tracers and clear state.\n */\n async shutdown(): Promise<void> {\n const results = await Promise.allSettled(\n Array.from(this._tracers).map((t) => t._tracerProvider.shutdown()),\n );\n for (const r of results) {\n if (r.status === \"rejected\") {\n Logger.error(`shutdown failed: ${String(r.reason)}`);\n }\n }\n this._activeTracer = null;\n this._tracers.clear();\n }\n}\n",
38
40
  "import type { ExportResult } from \"@opentelemetry/core\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport type { ReadableSpan, SpanExporter } from \"@opentelemetry/sdk-trace-base\";\nimport { Logger } from \"../../utils/logger\";\n\n/**\n * Span exporter that sends traces to the Judgment platform via OTLP HTTP.\n *\n * Wraps the OpenTelemetry OTLP trace exporter with Judgment-specific\n * authentication headers.\n */\nexport class JudgmentSpanExporter implements SpanExporter {\n protected _delegate: OTLPTraceExporter | null;\n\n /**\n * Create a new JudgmentSpanExporter.\n *\n * @param endpoint - The OTLP HTTP endpoint URL.\n * @param apiKey - Judgment API key for authentication.\n * @param organizationId - Judgment organization ID.\n * @param projectId - Judgment project ID.\n */\n constructor(\n endpoint: string,\n apiKey: string,\n organizationId: string,\n projectId: string,\n ) {\n if (!endpoint) {\n this._delegate = null;\n return;\n }\n this._delegate = new OTLPTraceExporter({\n url: endpoint,\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"X-Organization-Id\": organizationId,\n \"X-Project-Id\": projectId,\n },\n });\n }\n\n /**\n * Export a batch of spans.\n *\n * @param spans - The spans to export.\n * @param resultCallback - Callback invoked with the export result.\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n Logger.info(`Exported ${spans.length} spans`);\n this._delegate?.export(spans, resultCallback);\n }\n\n /**\n * Shut down the exporter.\n */\n shutdown(): Promise<void> {\n return this._delegate?.shutdown() ?? Promise.resolve();\n }\n\n /**\n * Flush any pending exports.\n */\n forceFlush(): Promise<void> {\n return this._delegate?.forceFlush() ?? Promise.resolve();\n }\n}\n",
39
41
  "import { ExportResultCode, type ExportResult } from \"@opentelemetry/core\";\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport { JudgmentSpanExporter } from \"./JudgmentSpanExporter\";\n\n/**\n * A no-op span exporter that discards all spans.\n *\n * Used when monitoring is disabled or credentials are missing.\n */\nexport class NoOpSpanExporter extends JudgmentSpanExporter {\n constructor() {\n super(\"\", \"\", \"\", \"\");\n }\n\n override export(\n _spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n\n override shutdown(): Promise<void> {\n return Promise.resolve();\n }\n\n override forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n",
40
42
  "import type { Context } from \"@opentelemetry/api\";\nimport type {\n ReadableSpan,\n Span,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { getBaggage } from \"../baggage\";\n\n/**\n * Predicate that decides which baggage keys are propagated to span\n * attributes.\n */\nexport type BaggageKeyPredicate = (baggageKey: string) => boolean;\n\n/** Default predicate that allows every baggage key. */\nexport const ALLOW_ALL_BAGGAGE_KEYS: BaggageKeyPredicate = () => true;\n\n/**\n * Span processor that copies baggage entries onto span attributes at\n * span start. Use `keyPredicate` to control which keys are propagated.\n *\n * @example\n * ```typescript\n * const processor = new JudgmentBaggageSpanProcessor(\n * (key) => key.startsWith(\"judgment.\"),\n * );\n * ```\n */\nexport class JudgmentBaggageSpanProcessor implements SpanProcessor {\n private _keyPredicate: BaggageKeyPredicate;\n\n constructor(keyPredicate: BaggageKeyPredicate = ALLOW_ALL_BAGGAGE_KEYS) {\n this._keyPredicate = keyPredicate;\n }\n\n /** Copy matching baggage entries from the parent context onto the span. */\n onStart(span: Span, parentContext: Context): void {\n const entries = getBaggage(parentContext)?.getAllEntries() ?? [];\n for (const [key, entry] of entries) {\n if (this._keyPredicate(key)) {\n span.setAttribute(key, entry.value);\n }\n }\n }\n\n /** No-op. */\n onEnd(_span: ReadableSpan): void {\n /* no-op */\n }\n\n /** No-op. */\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n /** No-op. */\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n",
41
- "import type {\n Attributes,\n Context,\n HrTime,\n SpanContext,\n} from \"@opentelemetry/api\";\nimport {\n BatchSpanProcessor,\n type ReadableSpan,\n type Span,\n type SpanExporter,\n} from \"@opentelemetry/sdk-trace-base\";\nimport {\n AttributeKeys,\n InternalAttributeKeys,\n} from \"../../JudgmentAttributeKeys\";\nimport { dontThrow } from \"../../utils/dont-throw\";\nimport type { BaseTracer } from \"../BaseTracer\";\nimport { JudgmentTracerProvider } from \"../JudgmentTracerProvider\";\nimport { JudgmentBaggageSpanProcessor } from \"./JudgmentBaggageSpanProcessor\";\n\ntype SpanKey = `${string}:${string}`;\n\nfunction makeSpanKey(ctx: SpanContext): SpanKey {\n return `${ctx.traceId}:${ctx.spanId}`;\n}\n\nfunction isZeroHrTime(hrTime: HrTime): boolean {\n return hrTime[0] === 0 && hrTime[1] === 0;\n}\n\n/**\n * Span processor that manages span lifecycle, state, and batched export\n * to the Judgment platform. Supports per-span state (counters, lists),\n * partial-span emission for streaming updates, and baggage propagation\n * onto child spans.\n *\n * Created automatically by `Tracer.init()`. Use it directly only when\n * building a custom tracing pipeline.\n */\nexport class JudgmentSpanProcessor extends BatchSpanProcessor {\n tracer: BaseTracer | null;\n private _state = new Map<SpanKey, Map<string, unknown>>();\n private _spanFinalizers: FinalizationRegistry<SpanKey>;\n private _baggageProcessor: JudgmentBaggageSpanProcessor;\n\n constructor(\n tracer: BaseTracer | null,\n exporter: SpanExporter,\n config?: {\n maxQueueSize?: number;\n scheduledDelayMillis?: number;\n maxExportBatchSize?: number;\n exportTimeoutMillis?: number;\n },\n ) {\n super(exporter, config);\n this.tracer = tracer;\n this._spanFinalizers = new FinalizationRegistry<SpanKey>((spanKey) => {\n this._cleanupSpanState(spanKey);\n });\n this._baggageProcessor = new JudgmentBaggageSpanProcessor();\n }\n\n private _cleanupSpanState(spanKey: SpanKey): void {\n this._state.delete(spanKey);\n }\n\n private _registerSpan(span: Span): void {\n const ctx = span.spanContext();\n if (!ctx.traceId || !ctx.spanId) return;\n const spanKey = makeSpanKey(ctx);\n // Registers the live Span object with the GC; if it is ever\n // collected without going through `onEnd`, cleanup still runs.\n this._spanFinalizers.register(span, spanKey);\n }\n\n /** Store a value in the mutable state for a span. */\n stateSet(spanContext: SpanContext, key: string, value: unknown): void {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n attrs.set(key, value);\n }\n\n /** Retrieve a value from the mutable state for a span. */\n stateGet<T>(spanContext: SpanContext, key: string, defaultValue: T): T {\n const spanKey = makeSpanKey(spanContext);\n const attrs = this._state.get(spanKey);\n if (!attrs?.has(key)) return defaultValue;\n return attrs.get(key) as T;\n }\n\n /** Atomically increment a counter. Returns the value before increment. */\n stateIncr(spanContext: SpanContext, key: string): number {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n const stored = attrs.get(key);\n const prev = typeof stored === \"number\" ? stored : 0;\n attrs.set(key, prev + 1);\n return prev;\n }\n\n /** Atomically append to a list. Returns the new list. */\n stateAppend<T>(spanContext: SpanContext, key: string, item: T): T[] {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n const stored = attrs.get(key);\n const list: T[] = Array.isArray(stored)\n ? [...(stored as T[]), item]\n : [item];\n attrs.set(key, list);\n return list;\n }\n\n private _emitSpan(span: ReadableSpan, isPartial = false): void {\n const ctx = span.spanContext();\n if (!ctx.traceId) return;\n const currId = this.stateIncr(ctx, AttributeKeys.JUDGMENT_UPDATE_ID);\n const attributes: Attributes = {\n ...span.attributes,\n [AttributeKeys.JUDGMENT_UPDATE_ID]: currId,\n };\n\n if (isPartial) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL];\n }\n\n const emittedSpan = Object.create(span) as ReadableSpan;\n Object.defineProperty(emittedSpan, \"attributes\", {\n value: attributes,\n writable: false,\n });\n const endTime = isZeroHrTime(span.endTime) ? span.startTime : span.endTime;\n Object.defineProperty(emittedSpan, \"endTime\", {\n value: endTime,\n writable: false,\n });\n\n super.onEnd(emittedSpan);\n }\n\n /** Export the current span's in-progress state for streaming updates. */\n emitPartial(): void {\n dontThrow(\"JudgmentSpanProcessor.emitPartial\", () => {\n const proxy = JudgmentTracerProvider.getInstance();\n const span = proxy.getCurrentSpan();\n if (!span?.isRecording()) return;\n const ctx = span.spanContext();\n if (!ctx.traceId) return;\n if (\n this.stateGet<boolean>(\n ctx,\n InternalAttributeKeys.DISABLE_PARTIAL_EMIT,\n false,\n )\n ) {\n return;\n }\n this._emitSpan(span as unknown as ReadableSpan, true);\n });\n }\n\n onStart(span: Span, parentContext: Context): void {\n dontThrow(\"JudgmentSpanProcessor.onStart\", () => {\n this._baggageProcessor.onStart(span, parentContext);\n this._registerSpan(span);\n });\n }\n\n onEnd(span: ReadableSpan): void {\n dontThrow(\"JudgmentSpanProcessor.onEnd\", () => {\n const ctx = span.spanContext();\n if (!ctx.traceId) {\n super.onEnd(span);\n return;\n }\n const spanKey = makeSpanKey(ctx);\n try {\n const isCancelled = this.stateGet<boolean>(\n ctx,\n InternalAttributeKeys.CANCELLED,\n false,\n );\n if (!isCancelled) {\n this._emitSpan(span);\n }\n } finally {\n this._cleanupSpanState(spanKey);\n }\n });\n }\n}\n",
43
+ "import type {\n Attributes,\n Context,\n HrTime,\n SpanContext,\n} from \"@opentelemetry/api\";\nimport {\n BatchSpanProcessor,\n type ReadableSpan,\n type Span,\n type SpanExporter,\n} from \"@opentelemetry/sdk-trace-base\";\nimport {\n AttributeKeys,\n InternalAttributeKeys,\n} from \"../../JudgmentAttributeKeys\";\nimport { dontThrow } from \"../../utils/dont-throw\";\nimport type { BaseTracer } from \"../BaseTracer\";\nimport { getTraceRuntime } from \"../runtime\";\nimport { JudgmentBaggageSpanProcessor } from \"./JudgmentBaggageSpanProcessor\";\n\ntype SpanKey = `${string}:${string}`;\n\nfunction makeSpanKey(ctx: SpanContext): SpanKey {\n return `${ctx.traceId}:${ctx.spanId}`;\n}\n\nfunction isZeroHrTime(hrTime: HrTime): boolean {\n return hrTime[0] === 0 && hrTime[1] === 0;\n}\n\n/**\n * Span processor that manages span lifecycle, state, and batched export\n * to the Judgment platform. Supports per-span state (counters, lists),\n * partial-span emission for streaming updates, and baggage propagation\n * onto child spans.\n *\n * Created automatically by `Tracer.init()`. Use it directly only when\n * building a custom tracing pipeline.\n */\nexport class JudgmentSpanProcessor extends BatchSpanProcessor {\n tracer: BaseTracer | null;\n private _state = new Map<SpanKey, Map<string, unknown>>();\n private _spanFinalizers: FinalizationRegistry<SpanKey>;\n private _baggageProcessor: JudgmentBaggageSpanProcessor;\n\n constructor(\n tracer: BaseTracer | null,\n exporter: SpanExporter,\n config?: {\n maxQueueSize?: number;\n scheduledDelayMillis?: number;\n maxExportBatchSize?: number;\n exportTimeoutMillis?: number;\n },\n ) {\n super(exporter, config);\n this.tracer = tracer;\n this._spanFinalizers = new FinalizationRegistry<SpanKey>((spanKey) => {\n this._cleanupSpanState(spanKey);\n });\n this._baggageProcessor = new JudgmentBaggageSpanProcessor();\n }\n\n private _cleanupSpanState(spanKey: SpanKey): void {\n this._state.delete(spanKey);\n }\n\n private _registerSpan(span: Span): void {\n const ctx = span.spanContext();\n if (!ctx.traceId || !ctx.spanId) return;\n const spanKey = makeSpanKey(ctx);\n // Registers the live Span object with the GC; if it is ever\n // collected without going through `onEnd`, cleanup still runs.\n this._spanFinalizers.register(span, spanKey);\n }\n\n /** Store a value in the mutable state for a span. */\n stateSet(spanContext: SpanContext, key: string, value: unknown): void {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n attrs.set(key, value);\n }\n\n /** Retrieve a value from the mutable state for a span. */\n stateGet<T>(spanContext: SpanContext, key: string, defaultValue: T): T {\n const spanKey = makeSpanKey(spanContext);\n const attrs = this._state.get(spanKey);\n if (!attrs?.has(key)) return defaultValue;\n return attrs.get(key) as T;\n }\n\n /** Atomically increment a counter. Returns the value before increment. */\n stateIncr(spanContext: SpanContext, key: string): number {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n const stored = attrs.get(key);\n const prev = typeof stored === \"number\" ? stored : 0;\n attrs.set(key, prev + 1);\n return prev;\n }\n\n /** Atomically append to a list. Returns the new list. */\n stateAppend<T>(spanContext: SpanContext, key: string, item: T): T[] {\n const spanKey = makeSpanKey(spanContext);\n let attrs = this._state.get(spanKey);\n if (!attrs) {\n attrs = new Map();\n this._state.set(spanKey, attrs);\n }\n const stored = attrs.get(key);\n const list: T[] = Array.isArray(stored)\n ? [...(stored as T[]), item]\n : [item];\n attrs.set(key, list);\n return list;\n }\n\n private _emitSpan(span: ReadableSpan, isPartial = false): void {\n const ctx = span.spanContext();\n if (!ctx.traceId) return;\n const currId = this.stateIncr(ctx, AttributeKeys.JUDGMENT_UPDATE_ID);\n const attributes: Attributes = {\n ...span.attributes,\n [AttributeKeys.JUDGMENT_UPDATE_ID]: currId,\n };\n\n if (isPartial) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AttributeKeys.JUDGMENT_PENDING_TRACE_EVAL];\n }\n\n const emittedSpan = Object.create(span) as ReadableSpan;\n Object.defineProperty(emittedSpan, \"attributes\", {\n value: attributes,\n writable: false,\n });\n const endTime = isZeroHrTime(span.endTime) ? span.startTime : span.endTime;\n Object.defineProperty(emittedSpan, \"endTime\", {\n value: endTime,\n writable: false,\n });\n\n super.onEnd(emittedSpan);\n }\n\n /** Export the current span's in-progress state for streaming updates. */\n emitPartial(): void {\n dontThrow(\"JudgmentSpanProcessor.emitPartial\", () => {\n const span = getTraceRuntime().getCurrentSpan();\n if (!span?.isRecording()) return;\n const ctx = span.spanContext();\n if (!ctx.traceId) return;\n if (\n this.stateGet<boolean>(\n ctx,\n InternalAttributeKeys.DISABLE_PARTIAL_EMIT,\n false,\n )\n ) {\n return;\n }\n this._emitSpan(span as unknown as ReadableSpan, true);\n });\n }\n\n onStart(span: Span, parentContext: Context): void {\n dontThrow(\"JudgmentSpanProcessor.onStart\", () => {\n this._baggageProcessor.onStart(span, parentContext);\n this._registerSpan(span);\n });\n }\n\n onEnd(span: ReadableSpan): void {\n dontThrow(\"JudgmentSpanProcessor.onEnd\", () => {\n const ctx = span.spanContext();\n if (!ctx.traceId) {\n super.onEnd(span);\n return;\n }\n const spanKey = makeSpanKey(ctx);\n try {\n const isCancelled = this.stateGet<boolean>(\n ctx,\n InternalAttributeKeys.CANCELLED,\n false,\n );\n if (!isCancelled) {\n this._emitSpan(span);\n }\n } finally {\n this._cleanupSpanState(spanKey);\n }\n });\n }\n}\n",
42
44
  "import type { Context, SpanContext } from \"@opentelemetry/api\";\nimport type { ReadableSpan, Span } from \"@opentelemetry/sdk-trace-base\";\nimport { NoOpSpanExporter } from \"../exporters/NoOpSpanExporter\";\nimport { JudgmentSpanProcessor } from \"./JudgmentSpanProcessor\";\n\n/**\n * A no-op span processor that discards all spans.\n *\n * Used when monitoring is disabled or credentials are missing.\n */\nexport class NoOpSpanProcessor extends JudgmentSpanProcessor {\n constructor() {\n super(null, new NoOpSpanExporter());\n }\n\n onStart(_span: Span, _parentContext: Context): void {\n /* empty */\n }\n\n onEnd(_span: ReadableSpan): void {\n /* empty */\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n emitPartial(): void {\n /* empty */\n }\n\n stateSet(_spanContext: SpanContext, _key: string, _value: unknown): void {\n /* empty */\n }\n\n stateGet<T>(_spanContext: SpanContext, _key: string, defaultValue: T): T {\n return defaultValue;\n }\n\n stateIncr(_spanContext: SpanContext, _key: string): number {\n return 0;\n }\n\n stateAppend<T>(_spanContext: SpanContext, _key: string, item: T): T[] {\n return [item];\n }\n}\n",
43
45
  "import {\n defaultResource,\n resourceFromAttributes,\n} from \"@opentelemetry/resources\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\nimport { JUDGMENT_API_KEY, JUDGMENT_API_URL, JUDGMENT_ORG_ID } from \"../env\";\nimport { JudgmentApiClient } from \"../internal/api\";\nimport { Logger } from \"../utils/logger\";\nimport { resolveProjectId } from \"../utils/resolve-project-id\";\nimport { safeStringify } from \"../utils/serializer\";\nimport { VERSION } from \"../version\";\nimport type { TracerConfig } from \"./BaseTracer\";\nimport { BaseTracer } from \"./BaseTracer\";\nimport { JudgmentTracerProvider } from \"./JudgmentTracerProvider\";\nimport { JudgmentSpanExporter } from \"./exporters/JudgmentSpanExporter\";\nimport { NoOpSpanExporter } from \"./exporters/NoOpSpanExporter\";\nimport { JudgmentSpanProcessor } from \"./processors/JudgmentSpanProcessor\";\nimport { NoOpSpanProcessor } from \"./processors/NoOpSpanProcessor\";\n\n/**\n * Concrete tracer implementation for Node.js applications.\n *\n * Use `Tracer.init()` to create and activate a new tracer. This sets up\n * OpenTelemetry span processing and export to the Judgment platform.\n *\n * @example\n * ```typescript\n * import { Tracer } from \"judgeval\";\n *\n * const tracer = await Tracer.init({ projectName: \"my-project\" });\n *\n * const traced = Tracer.observe(async (input: string) => {\n * return await processInput(input);\n * });\n *\n * await traced(\"hello\");\n * await Tracer.forceFlush();\n * await Tracer.shutdown();\n * ```\n */\nexport class Tracer extends BaseTracer {\n private _spanExporter: JudgmentSpanExporter | null = null;\n private _spanProcessor: JudgmentSpanProcessor | null = null;\n\n protected constructor(\n projectName: string | null,\n projectId: string | null,\n apiKey: string | null,\n organizationId: string | null,\n apiUrl: string | null,\n environment: string | null,\n serializer: (v: unknown) => string,\n tracerProvider: NodeTracerProvider,\n client: JudgmentApiClient | null,\n enableMonitoring: boolean,\n ) {\n super(\n projectName,\n projectId,\n apiKey,\n organizationId,\n apiUrl,\n environment,\n serializer,\n tracerProvider,\n client,\n enableMonitoring,\n );\n }\n\n /**\n * Create and activate a new Tracer.\n *\n * This is the recommended way to initialize tracing. Credentials are\n * read from environment variables if not provided explicitly.\n *\n * @param config - Tracer configuration options.\n * @returns A configured and activated `Tracer` instance.\n *\n * @example\n * ```typescript\n * const tracer = await Tracer.init({\n * projectName: \"my-project\",\n * environment: \"production\",\n * });\n * ```\n */\n static async init(config: TracerConfig = {}): Promise<Tracer> {\n const apiKey = config.apiKey ?? JUDGMENT_API_KEY;\n const organizationId = config.organizationId ?? JUDGMENT_ORG_ID;\n const apiUrl = config.apiUrl ?? JUDGMENT_API_URL;\n const projectName = config.projectName ?? null;\n const serializer = config.serializer ?? safeStringify;\n\n let enableMonitoring = true;\n\n if (!projectName) {\n Logger.warning(\n \"project_name not provided. Tracer will not export spans.\",\n );\n enableMonitoring = false;\n }\n if (!apiKey) {\n Logger.warning(\"api_key not provided. Tracer will not export spans.\");\n enableMonitoring = false;\n }\n if (!organizationId) {\n Logger.warning(\n \"organization_id not provided. Tracer will not export spans.\",\n );\n enableMonitoring = false;\n }\n if (!apiUrl) {\n Logger.warning(\"api_url not provided. Tracer will not export spans.\");\n enableMonitoring = false;\n }\n\n let client: JudgmentApiClient | null = null;\n let projectId: string | null = null;\n\n if (enableMonitoring && projectName && apiKey && organizationId && apiUrl) {\n client = new JudgmentApiClient(apiUrl, apiKey, organizationId);\n projectId = await resolveProjectId(client, projectName).catch(() => null);\n if (!projectId) {\n Logger.warning(\n `Project '${projectName}' not found. Tracer will not export spans.`,\n );\n enableMonitoring = false;\n }\n }\n\n const resourceAttrs: Record<string, string> = {\n \"service.name\": projectName ?? \"unknown\",\n \"telemetry.sdk.name\": \"judgeval\",\n \"telemetry.sdk.version\": VERSION,\n };\n if (config.environment) {\n resourceAttrs[\"deployment.environment\"] = config.environment;\n }\n if (config.resourceAttributes) {\n Object.assign(resourceAttrs, config.resourceAttributes);\n }\n\n const resource = defaultResource().merge(\n resourceFromAttributes(resourceAttrs),\n );\n\n const tracerProvider = new NodeTracerProvider({\n resource,\n sampler: config.sampler,\n spanLimits: config.spanLimits,\n });\n\n const tracer = new Tracer(\n projectName,\n projectId,\n apiKey,\n organizationId,\n apiUrl,\n config.environment ?? null,\n serializer,\n tracerProvider,\n client,\n enableMonitoring,\n );\n\n if (enableMonitoring) {\n const providerWithProcessor = new NodeTracerProvider({\n resource,\n sampler: config.sampler,\n spanLimits: config.spanLimits,\n spanProcessors: [\n tracer.getSpanProcessor(),\n ...(config.spanProcessors ?? []),\n ],\n });\n tracer._tracerProvider = providerWithProcessor;\n }\n\n const proxy = JudgmentTracerProvider.getInstance();\n proxy.register(tracer);\n\n if (config.setActive ?? true) {\n tracer.setActive();\n }\n\n return tracer;\n }\n\n /**\n * Get or create the span exporter for this tracer.\n *\n * @returns The span exporter instance.\n */\n getSpanExporter(): JudgmentSpanExporter {\n if (this._spanExporter) return this._spanExporter;\n\n if (\n !this._enableMonitoring ||\n !this.projectId ||\n !this.apiKey ||\n !this.organizationId ||\n !this.apiUrl\n ) {\n this._spanExporter = new NoOpSpanExporter();\n } else {\n const endpoint = this.apiUrl.endsWith(\"/\")\n ? this.apiUrl + \"otel/v1/traces\"\n : this.apiUrl + \"/otel/v1/traces\";\n this._spanExporter = new JudgmentSpanExporter(\n endpoint,\n this.apiKey,\n this.organizationId,\n this.projectId,\n );\n }\n return this._spanExporter;\n }\n\n /**\n * Get or create the span processor for this tracer.\n *\n * @returns The span processor instance.\n */\n getSpanProcessor(): JudgmentSpanProcessor {\n if (this._spanProcessor) return this._spanProcessor;\n\n if (!this._enableMonitoring) {\n this._spanProcessor = new NoOpSpanProcessor();\n } else {\n this._spanProcessor = new JudgmentSpanProcessor(\n this,\n this.getSpanExporter(),\n );\n }\n return this._spanProcessor;\n }\n}\n",
44
46
  "import type { ReadableSpan, SpanExporter } from \"@opentelemetry/sdk-trace-base\";\nimport { Example } from \"../../data/Example\";\nimport type { BaseTracer } from \"../BaseTracer\";\nimport { JudgmentSpanProcessor } from \"./JudgmentSpanProcessor\";\n\n/**\n * Span processor used by `OfflineTracer`.\n *\n * Extends `JudgmentSpanProcessor` (so it inherits batched export, span\n * state, and partial-emit support) and additionally appends a new\n * `Example` to the caller-supplied `dataset` list whenever a *root*\n * span ends. Each emitted example carries the `offline_trace_id` of\n * the trace plus any static `exampleFields` configured at init time.\n */\nexport class OfflineJudgmentSpanProcessor extends JudgmentSpanProcessor {\n private readonly _dataset: Example[];\n private readonly _exampleFields: Record<string, unknown>;\n private readonly _seenTraceIds = new Set<string>();\n\n constructor(\n tracer: BaseTracer,\n exporter: SpanExporter,\n options: {\n dataset: Example[];\n exampleFields?: Record<string, unknown>;\n },\n ) {\n super(tracer, exporter);\n this._dataset = options.dataset;\n this._exampleFields = { ...(options.exampleFields ?? {}) };\n }\n\n private _maybeCreateExample(span: ReadableSpan): void {\n if (span.parentSpanContext) return;\n const ctx = span.spanContext();\n if (!ctx?.traceId) return;\n\n if (this._seenTraceIds.has(ctx.traceId)) return;\n this._seenTraceIds.add(ctx.traceId);\n\n const example = Example.create({\n ...this._exampleFields,\n offline_trace_id: ctx.traceId,\n });\n this._dataset.push(example);\n }\n\n onEnd(span: ReadableSpan): void {\n try {\n this._maybeCreateExample(span);\n } finally {\n super.onEnd(span);\n }\n }\n}\n",
@@ -62,7 +64,7 @@
62
64
  "export {\n Judgeval,\n type JudgevalConfig,\n type JudgevalOfflineTracerOptions,\n} from \"./Judgeval\";\n\nexport {\n BaseTracer,\n JudgmentBaggagePropagator,\n JudgmentBaggageSpanProcessor,\n JudgmentSpanExporter,\n JudgmentTracerProvider,\n Tracer,\n OfflineTracer,\n type OfflineTracerConfig,\n NoOpSpanExporter,\n NoOpSpanProcessor,\n OfflineJudgmentSpanProcessor,\n ALLOW_ALL_BAGGAGE_KEYS,\n type BaggageKeyPredicate,\n baggage,\n propagation,\n} from \"./trace\";\n\nexport { wrap, wrapOpenAI } from \"./instrumentation\";\n\nexport { Example } from \"./data\";\nexport type { ScoringResult } from \"./data\";\n\nexport { Judge } from \"./judges\";\nexport type {\n BinaryResponse,\n NumericResponse,\n CategoricalResponse,\n ScorerResponse,\n Citation,\n} from \"./judges\";\n\nexport { Evaluation, type EvaluationRunOptions } from \"./evaluation\";\n\nexport { Dataset } from \"./datasets\";\nexport type { DatasetInfo } from \"./internal/api/models/DatasetInfo\";\nexport type { ExperimentScorer } from \"./internal/api/models/ExperimentScorer\";\nexport {\n validateDatasetSchema,\n inferSchemaFromExamples,\n type DatasetSchema,\n type DatasetSchemaProperty,\n type DatasetColumnType,\n} from \"./datasets/schema\";\n\nexport { AgentJudgeFactory } from \"./agent-judges\";\nexport type { AgentJudge, ScoreType } from \"./agent-judges\";\n\nexport {\n OfflineTestsFactory,\n OfflineTestRunner,\n type JudgeRef,\n type OfflineRunOptions,\n type TestConfig,\n type JudgeVersionPin,\n type OfflineScorerData,\n type OfflineExampleResult,\n type OfflineTestResult,\n type AgentFunction,\n type PassConditionFn,\n} from \"./offline-tests\";\n",
63
65
  "export { Example, type ExampleDict } from \"./Example\";\nexport type { ScoringResult } from \"./ScoringResult\";\n"
64
66
  ],
65
- "mappings": "ilBAEA,SAAS,EAAS,CAAC,EAAiB,EAAsC,CACxE,IAAM,EAAQ,QAAQ,IAAI,GAC1B,GAAI,CAAC,EACH,OAAO,GAAgB,KAEzB,OAAO,MAGI,GACA,GACA,GAIA,iBANA,GAAmB,GAAU,kBAAkB,EAC/C,GAAkB,GAAU,iBAAiB,EAC7C,GAAmB,GAC9B,mBACA,6BACF,EACa,GAAqB,GAAU,qBAAsB,MAAM,ICgDjE,MAAM,CAAkB,CACrB,QACA,OACA,eAER,WAAW,CAAC,EAAiB,EAAgB,EAAwB,CACnE,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,eAAiB,EAGxB,UAAU,EAAW,CACnB,OAAO,KAAK,QAEd,SAAS,EAAW,CAClB,OAAO,KAAK,OAEd,iBAAiB,EAAW,CAC1B,OAAO,KAAK,oBAGA,QAAU,CACtB,EACA,EACA,EACY,CACZ,IAAM,EAAW,MAAM,MAAM,EAAK,CAChC,SACA,QAAS,CACP,eAAgB,mBAChB,cAAe,UAAU,KAAK,SAC9B,oBAAqB,KAAK,cAC5B,EACA,KAAM,IAAS,OAAY,KAAK,UAAU,CAAI,EAAI,MACpD,CAAC,EACD,GAAI,CAAC,EAAS,GAAI,CAChB,IAAM,EAAO,MAAM,EAAS,KAAK,EACjC,MAAU,MAAM,QAAQ,EAAS,WAAW,GAAM,EAEpD,OAAO,EAAS,KAAK,OAGjB,iBAAgB,EAAqB,CACzC,IAAM,EAAM,KAAK,QAAU,kBAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,wBAAuB,EAAqB,CAChD,IAAM,EAAM,KAAK,QAAU,0BAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,sBAAqB,CACzB,EACiC,CACjC,IAAM,EAAM,KAAK,QAAU,wBAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,eAAc,CAClB,EAC6B,CAC7B,IAAM,EAAM,KAAK,QAAU,eAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,iBAAgB,CAAC,EAAmD,CACxE,IAAM,EAAM,KAAK,QAAU,gBAAgB,IAC3C,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,uBAAsB,CAC1B,EACA,EACuC,CACvC,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,sBAAqB,CACzB,EACyC,CACzC,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAC3C,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,iDAAgD,CACpD,EACA,EACyC,CACzC,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,aACxC,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,6CAA4C,CAChD,EACA,EACA,EACA,EACA,EACA,EACqC,CACrC,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAY,OAAW,EAAO,IAAI,UAAW,CAAO,EACxD,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAsB,OACxB,EAAO,IAAI,oBAAqB,CAAiB,EACnD,GAAI,IAAsB,OACxB,EAAO,IAAI,oBAAqB,CAAiB,EACnD,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,UACrC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,kDAAiD,CACrD,EACA,EACA,EACkC,CAClC,IAAM,EACJ,KAAK,QACL,gBAAgB,cAAsB,aACxC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,4CAA2C,CAC/C,EACA,EACuC,CACvC,IAAM,EACJ,KAAK,QAAU,gBAAgB,cAAsB,IACvD,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,yCAAwC,CAC5C,EACA,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,cAAsB,IACvD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yBAAwB,CAC5B,EACA,EAC8B,CAC9B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAe,OAAW,EAAO,IAAI,aAAc,CAAU,EACjE,IAAM,EACJ,KAAK,QACL,gBAAgB,kBACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,0BAAyB,CAC7B,EACA,EAC6B,CAC7B,IAAM,EAAM,KAAK,QAAU,gBAAgB,iBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,uCAAsC,CAC1C,EACA,EAC6B,CAC7B,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yCAAwC,CAC5C,EACA,EACA,EAC6B,CAC7B,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,0CAAyC,CAC7C,EACA,EACmC,CACnC,IAAM,EACJ,KAAK,QAAU,gBAAgB,kBAA0B,IAC3D,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAC,CAAC,OAGjC,sBAAqB,CACzB,EACA,EACA,EACA,EACA,EAC2B,CAC3B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAmB,OACrB,EAAO,IAAI,iBAAkB,CAAc,EAC7C,GAAI,IAAe,OAAW,EAAO,IAAI,aAAc,CAAU,EACjE,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,IAAM,EACJ,KAAK,QACL,gBAAgB,eACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,uBAAsB,CAC1B,EACA,EACkC,CAClC,IAAM,EAAM,KAAK,QAAU,gBAAgB,cAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,iCAAgC,CACpC,EACA,EAC0B,CAC1B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,IACxD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yCAAwC,CAC5C,EACA,EACA,EAC0B,CAC1B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,WACxD,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,0CAAyC,CAC7C,EACA,EACA,EACsC,CACtC,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,YACxD,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,OAGrC,sCAAqC,CACzC,EACA,EACA,EACA,EAC+B,CAC/B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,eAAuB,WACtC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,wCAAuC,CAC3C,EACA,EACA,EACA,EAC+B,CAC/B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,eAAuB,aACtC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,sCAAqC,CACzC,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,eAAuB,UACxD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,gCAA+B,CACnC,EACA,EACA,EACA,EACiD,CACjD,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAW,OAAW,EAAO,IAAI,SAAU,CAAM,EACrD,IAAM,EACJ,KAAK,QACL,gBAAgB,iBAAyB,KACxC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,0BAAyB,CAC7B,EACA,EAC6C,CAC7C,IAAM,EAAM,KAAK,QAAU,gBAAgB,iBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,kCAAiC,CACrC,EACA,EACqD,CACrD,IAAM,EACJ,KAAK,QAAU,gBAAgB,0BACjC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,+BAA8B,CAClC,EACA,EACkB,CAClB,IAAM,EAAM,KAAK,QAAU,gBAAgB,sBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,6BAA4B,CAChC,EACA,EACkB,CAClB,IAAM,EAAM,KAAK,QAAU,gBAAgB,oBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,gCAA+B,CACnC,EACA,EAC4C,CAC5C,IAAM,EAAM,KAAK,QAAU,gBAAgB,wBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,8BAA6B,CACjC,EACA,EAC0C,CAC1C,IAAM,EAAM,KAAK,QAAU,gBAAgB,sBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,2BAA0B,CAC9B,EACA,EACA,EACA,EAC8B,CAC9B,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAc,OAAW,EAAO,IAAI,YAAa,CAAS,EAC9D,GAAI,IAAQ,OAAW,EAAO,IAAI,MAAO,CAAG,EAC5C,IAAM,EACJ,KAAK,QACL,gBAAgB,aAAqB,KACpC,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,sBAAqB,CACzB,EACA,EAC+B,CAC/B,IAAM,EAAM,KAAK,QAAU,gBAAgB,YAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,gCAA+B,CACnC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAAqB,SAChE,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,kCAAiC,CACrC,EACA,EACA,EAC8B,CAC9B,IAAM,EAAM,KAAK,QAAU,gBAAgB,aAAqB,SAChE,OAAO,KAAK,QAAQ,SAAU,EAAK,CAAO,OAGtC,mCAAkC,CACtC,EACA,EACoC,CACpC,IAAM,EACJ,KAAK,QAAU,gBAAgB,aAAqB,aACtD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,qBAAoB,CACxB,EACA,EACA,EACqC,CACrC,IAAM,EAAS,IAAI,gBACnB,GAAI,IAAU,OAAW,EAAO,IAAI,QAAS,CAAK,EAClD,GAAI,IAAa,OAAW,EAAO,IAAI,WAAY,CAAQ,EAC3D,IAAM,EACJ,KAAK,QACL,gBAAgB,aACf,EAAO,SAAS,EAAI,IAAM,EAAO,SAAS,EAAI,IACjD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,iCAAgC,CACpC,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,aAAqB,WACtD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,4BAA2B,CAAC,EAAqC,CACrE,IAAM,EAAM,KAAK,QAAU,gBAAgB,mBAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,kCAAiC,CACrC,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,0BACjC,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAC,CAAC,OAG/B,uCAAsC,CAC1C,EACA,EACqC,CACrC,IAAM,EACJ,KAAK,QAAU,gBAAgB,oBAA4B,WAC7D,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,kCAAiC,CACrC,EACA,EACA,EAC+B,CAC/B,IAAM,EACJ,KAAK,QAAU,gBAAgB,YAAoB,SACrD,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,yCAAwC,CAC5C,EACA,EACgC,CAChC,IAAM,EAAM,KAAK,QAAU,uBAAuB,KAAe,IACjE,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,yBAAwB,CAAC,EAAqC,CAClE,IAAM,EAAM,KAAK,QAAU,8BAA8B,IACzD,OAAO,KAAK,QAAQ,MAAO,EAAK,MAAS,OAGrC,wBAAuB,CAC3B,EACoC,CACpC,IAAM,EAAM,KAAK,QAAU,4BAC3B,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,qBAAoB,CACxB,EACA,EACsC,CACtC,IAAM,EAAM,KAAK,QAAU,gBAAgB,WAC3C,OAAO,KAAK,QAAQ,OAAQ,EAAK,CAAO,OAGpC,+BAA8B,CAClC,EACA,EACA,EACsC,CACtC,IAAM,EAAM,KAAK,QAAU,gBAAgB,YAAoB,IAC/D,OAAO,KAAK,QAAQ,QAAS,EAAK,CAAO,EAE7C,mBCtiBa,eAhBb,KAgBa,EAAN,MAAM,CAAO,OACM,OAAQ,gBACR,KAAM,iBACN,QAAS,iBACT,MAAO,iBAEjB,OAAQ,CACpB,MAAO,EACP,KAAM,EACN,QAAS,EACT,MAAO,EACP,SAAU,CACZ,QAEe,aAAc,SACd,kBAAmB,SACnB,cAAuB,EAAO,MAAM,cACpC,UAAW,SAEX,WAAU,EAAS,CAChC,GAAI,CAAC,EAAO,YAAa,CACvB,IAAM,EAAU,QAAQ,IAAI,kBAG5B,GAFA,EAAO,SAAW,CAAC,GAAW,QAAQ,OAAO,MAEzC,CAAC,EAAO,iBAAkB,CAC5B,IAAM,EAAW,GAAmB,YAAY,EAChD,GAAI,EAAU,CACZ,IAAM,EAAmC,CACvC,MAAO,EAAO,MAAM,MACpB,KAAM,EAAO,MAAM,KACnB,QAAS,EAAO,MAAM,QACtB,KAAM,EAAO,MAAM,QACnB,MAAO,EAAO,MAAM,MACpB,SAAU,EAAO,MAAM,QACzB,EACA,EAAO,aAAe,EAAS,IAAa,EAAO,MAAM,SAI7D,EAAO,YAAc,UAKX,SAAQ,CAAC,EAAqB,CAC1C,EAAO,aAAe,EACtB,EAAO,iBAAmB,SAId,YAAW,CAAC,EAAyB,CACjD,EAAO,SAAW,QAGL,IAAG,CAAC,EAAe,EAAuB,CAGvD,GAFA,EAAO,WAAW,EAEd,EAAQ,EAAO,aACjB,OAGF,IAAM,EAAY,IAAI,KAAK,EACxB,YAAY,EACZ,QAAQ,IAAK,GAAG,EAChB,UAAU,EAAG,EAAE,EACZ,EACJ,OAAO,KAAK,EAAO,KAAK,EAAE,KACxB,CAAC,IAAQ,EAAO,MAAM,KAAsC,CAC9D,GAAK,UACH,EAAmB,GAAG,kBAA0B,OAAe,IAEnE,GAAI,EAAO,SAOT,EAAmB,GALjB,IAAU,EAAO,MAAM,OAAS,IAAU,EAAO,MAAM,KACnD,EAAO,KACP,IAAU,EAAO,MAAM,QACrB,EAAO,OACP,EAAO,MACe,IAAmB,EAAO,SAIxD,GAAS,EAAO,MAAM,MAAQ,QAAQ,OAAS,QAAQ,QAClD,MAAM,EAAmB;AAAA,CAAI,QAIxB,MAAK,CAAC,EAAuB,CACzC,EAAO,IAAI,EAAO,MAAM,MAAO,CAAO,QAI1B,KAAI,CAAC,EAAuB,CACxC,EAAO,IAAI,EAAO,MAAM,KAAM,CAAO,QAIzB,QAAO,CAAC,EAAuB,CAC3C,EAAO,IAAI,EAAO,MAAM,QAAS,CAAO,QAG5B,KAAI,CAAC,EAAuB,CACxC,EAAO,IAAI,EAAO,MAAM,QAAS,CAAO,QAI5B,MAAK,CAAC,EAAuB,CACzC,EAAO,IAAI,EAAO,MAAM,MAAO,CAAO,QAI1B,SAAQ,CAAC,EAAuB,CAC5C,EAAO,IAAI,EAAO,MAAM,SAAU,CAAO,EAE7C,ICjIO,SAAS,EAAK,CAAC,EAA2B,CAC/C,OAAO,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,CAAE,CAAC,EC0BzD,eAAsB,EAAQ,CAC5B,EACA,EAAsB,CAAC,EACX,CACZ,IAAQ,aAAa,EAAG,UAAU,IAAM,KAAM,WAAY,EAE1D,QAAS,EAAU,EAAG,GAAW,EAAY,IAC3C,GAAI,CACF,OAAO,MAAM,EAAG,EAChB,MAAO,EAAO,CACd,GAAI,IAAY,EACd,MAAM,EAGR,IAAU,EAAS,CAAK,EACxB,MAAM,GAAM,EAAQ,CAAO,CAAC,EAKhC,MAAU,MAAM,+BAA+B,gBCzCjD,eAAsB,EAAgB,CACpC,EACA,EACiB,CACjB,IAAM,EAAW,OAAO,EAAO,kBAAkB,aAAa,IACxD,EAAS,GAAM,IAAI,CAAQ,EACjC,GAAI,EACF,OAAO,EAET,IAAM,EAAU,GAAS,IAAI,CAAQ,EACrC,GAAI,EACF,OAAO,EAET,IAAM,GAAW,SAA6B,CAC5C,EAAO,KAAK,qCAAqC,GAAa,EAC9D,IAAM,EAAY,MAAM,GACtB,SAAY,CAIV,IAAM,GAHW,MAAM,EAAO,sBAAsB,CAClD,aAAc,CAChB,CAAC,GACmB,WACpB,GAAI,CAAC,EACH,MAAU,MAAM,qCAAqC,GAAa,EAEpE,OAAO,GAET,CACE,WAAY,EACZ,QAAS,CAAC,IAAc,EAAY,KACpC,QAAS,CAAC,EAAS,IAAU,CAC3B,EAAO,QACL,qCAAqC,eAAyB,OAAa,OAAO,CAAK,GACzF,EAEJ,CACF,EAGA,OAFA,EAAO,KAAK,wBAAwB,GAAW,EAC/C,GAAM,IAAI,EAAU,CAAS,EACtB,IACN,EACH,GAAS,IAAI,EAAU,CAAO,EAC9B,GAAI,CACF,OAAO,MAAM,SACb,CACA,GAAS,OAAO,CAAQ,OA/CtB,GACA,iBAJN,IACA,KAEM,GAAQ,IAAI,IACZ,GAAW,IAAI,0BCLrB,IAAI,GAAI,SAAW,CAAC,EAAG,GAAO,GAAE,MAAQ,CAAC,EAAG,GAAM,GAAE,KAAO,CAAC,EACxD,GACH,EAAE,CAAC,CAAC,GAAI,UAAY,GAAK,SAAS,YAAY,KAC7C,CAAC,CAAC,GAAI,aAAe,GAAK,SAAS,SAAS,GAAK,GAAE,WAAa,UAAa,GAAE,QAAU,CAAC,GAAG,OAAS,GAAI,OAAS,QAAW,CAAC,CAAC,GAAI,IAElI,GAAY,CAAC,EAAM,EAAO,EAAU,IACvC,KAAS,CACR,IAAI,EAAS,GAAK,EAAO,EAAQ,EAAO,QAAQ,EAAO,EAAK,MAAM,EAClE,MAAO,CAAC,EAAQ,EAAO,GAAa,EAAQ,EAAO,EAAS,CAAK,EAAI,EAAQ,EAAO,EAAS,GAG3F,GAAe,CAAC,EAAQ,EAAO,EAAS,IAAU,CACrD,IAAI,EAAS,GAAI,EAAS,EAC1B,GACC,GAAU,EAAO,UAAU,EAAQ,CAAK,EAAI,EAC5C,EAAS,EAAQ,EAAM,OACvB,EAAQ,EAAO,QAAQ,EAAO,CAAM,QAC5B,CAAC,GACV,OAAO,EAAS,EAAO,UAAU,CAAM,GAGpC,GAAe,CAAC,EAAU,KAAqB,CAClD,IAAI,EAAI,EAAU,GAAY,IAAM,OACpC,MAAO,CACN,iBAAkB,EAClB,MAAO,EAAE,UAAW,SAAS,EAC7B,KAAM,EAAE,UAAW,WAAY,iBAAiB,EAChD,IAAK,EAAE,UAAW,WAAY,iBAAiB,EAC/C,OAAQ,EAAE,UAAW,UAAU,EAC/B,UAAW,EAAE,UAAW,UAAU,EAClC,QAAS,EAAE,UAAW,UAAU,EAChC,OAAQ,EAAE,UAAW,UAAU,EAC/B,cAAe,EAAE,UAAW,UAAU,EAEtC,MAAO,EAAE,WAAY,UAAU,EAC/B,IAAK,EAAE,WAAY,UAAU,EAC7B,MAAO,EAAE,WAAY,UAAU,EAC/B,OAAQ,EAAE,WAAY,UAAU,EAChC,KAAM,EAAE,WAAY,UAAU,EAC9B,QAAS,EAAE,WAAY,UAAU,EACjC,KAAM,EAAE,WAAY,UAAU,EAC9B,MAAO,EAAE,WAAY,UAAU,EAC/B,KAAM,EAAE,WAAY,UAAU,EAE9B,QAAS,EAAE,WAAY,UAAU,EACjC,MAAO,EAAE,WAAY,UAAU,EAC/B,QAAS,EAAE,WAAY,UAAU,EACjC,SAAU,EAAE,WAAY,UAAU,EAClC,OAAQ,EAAE,WAAY,UAAU,EAChC,UAAW,EAAE,WAAY,UAAU,EACnC,OAAQ,EAAE,WAAY,UAAU,EAChC,QAAS,EAAE,WAAY,UAAU,EAEjC,YAAa,EAAE,WAAY,UAAU,EACrC,UAAW,EAAE,WAAY,UAAU,EACnC,YAAa,EAAE,WAAY,UAAU,EACrC,aAAc,EAAE,WAAY,UAAU,EACtC,WAAY,EAAE,WAAY,UAAU,EACpC,cAAe,EAAE,WAAY,UAAU,EACvC,WAAY,EAAE,WAAY,UAAU,EACpC,YAAa,EAAE,WAAY,UAAU,EAErC,cAAe,EAAE,YAAa,UAAU,EACxC,YAAa,EAAE,YAAa,UAAU,EACtC,cAAe,EAAE,YAAa,UAAU,EACxC,eAAgB,EAAE,YAAa,UAAU,EACzC,aAAc,EAAE,YAAa,UAAU,EACvC,gBAAiB,EAAE,YAAa,UAAU,EAC1C,aAAc,EAAE,YAAa,UAAU,EACvC,cAAe,EAAE,YAAa,UAAU,CACzC,GAGD,GAAO,QAAU,GAAa,EAC9B,GAAO,QAAQ,aAAe,SCjDjB,kBAAN,MAAM,CAAQ,CACV,UACA,UACA,KACQ,YAET,WAAW,CACjB,EACA,EACA,EACA,EACA,CACA,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,KAAO,EACZ,KAAK,YAAc,QASd,OAAM,CAAC,EAAiC,CAAC,EAAY,CAC1D,OAAO,IAAI,EAAQ,OAAO,WAAW,EAAG,IAAI,KAAK,EAAE,YAAY,EAAG,KAAM,IACnE,CACL,CAAC,QAIqB,WAAY,IAAI,IAAI,CAC1C,aACA,aACA,OACA,WACA,UACA,mBACA,wBACF,CAAC,QAQM,KAAI,CAAC,EAA4B,CACtC,IAAM,EAAsC,CAAC,EAC7C,QAAW,KAAO,OAAO,KAAK,CAAI,EAChC,GAAI,CAAC,EAAQ,UAAU,IAAI,CAAG,EAC5B,EAAW,GAAQ,EAAiC,GAGxD,OAAO,IAAI,EACT,EAAK,YAAc,GACnB,EAAK,YAAc,GACnB,EAAK,MAAQ,KACb,CACF,EAIF,GAAG,CAAC,EAAsB,CACxB,OAAO,KAAK,YAAY,GAI1B,GAAG,CAAC,EAAsB,CACxB,OAAO,KAAO,KAAK,eAIjB,WAAU,EAA4B,CACxC,MAAO,IAAK,KAAK,WAAY,EAI/B,MAAM,EAAgB,CACpB,IAAM,EAAkC,CACtC,WAAY,KAAK,UACjB,WAAY,KAAK,UACjB,KAAM,KAAK,IACb,EACA,QAAY,EAAK,KAAU,OAAO,QAAQ,KAAK,WAAW,EACxD,EAAO,GAAO,EAIhB,OAAO,EAEX,IChHA,SAAS,EAAsB,EAIlB,CACX,IAAM,EAAO,IAAI,QACjB,OAAO,QAAS,CAAC,EAAc,EAAyB,CACtD,GAAI,OAAO,IAAU,SAAU,OAAO,EAAM,SAAS,EACrD,GAAI,OAAO,IAAU,UAAY,IAAU,KAAM,CAC/C,GAAI,EAAK,IAAI,CAAK,EAAG,MAAO,aAC5B,EAAK,IAAI,CAAK,EAEhB,OAAO,GAIJ,SAAS,CAAa,CAAC,EAAsB,CAClD,GAAI,CACF,IAAM,EAAS,KAAK,UAAU,CAAG,EACjC,GAAI,OAAO,IAAW,SAAU,OAAO,EACvC,OAAO,OAAO,CAAM,EACpB,KAAM,CACN,GAAI,CACF,IAAM,EAAS,KAAK,UAAU,EAAK,GAAuB,CAAC,EAC3D,OAAO,OAAO,IAAW,SAAW,EAAS,OAAO,CAAG,EACvD,MAAO,EAAG,CAEV,OADA,EAAO,MAAM,yBAAyB,GAAG,EAClC,OAAO,CAAG,IAYhB,SAAS,CAAkB,CAChC,EACA,EAC2B,CAC3B,GACE,OAAO,IAAU,UACjB,OAAO,IAAU,UACjB,OAAO,IAAU,UAEjB,OAAO,EACT,OAAO,EAAW,CAAK,eArDzB,uCCEa,iBAFb,KAEa,GAAU,mBCUhB,SAAS,CAAY,CAC1B,EACA,EACA,EACe,CACf,GAAI,CACF,OAAO,EAAG,EACV,MAAO,EAAK,CACZ,IAAM,EAAQ,aAAe,OAAS,EAAI,MAAQ;AAAA,EAAK,EAAI,QAAU,GAIrE,OAHA,EAAO,MACL,uCAAuC,MAAS,OAAO,CAAG,IAAI,GAChE,EACO,gBAxBX,oBCAA,MCGO,SAAS,CAKf,CACC,EACA,EAA2E,CAAC,EACzE,CACH,IACE,IAAK,EACL,KAAM,EACN,MAAO,EACP,QAAS,GACP,EAEJ,OAAO,cAAsB,IAExB,EAC8B,CACjC,IAAM,EAAO,EACT,EAAU,yBAA0B,IAAM,EAAM,GAAG,CAAI,CAAC,EACxD,OAEA,EACJ,GAAI,CAEF,IAAM,EAAiC,MAAM,EAAG,MAAM,KAAM,CAAI,EAChE,GAAI,EACF,EAAW,EAAU,0BAA2B,IAC9C,EAAO,EAAM,EAAQ,CAAI,CAC3B,EAEF,OAAO,EACP,MAAO,EAAK,CACZ,GAAI,EACF,EAAW,EAAU,2BAA4B,IAC/C,EAAQ,EAAM,EAAK,CAAI,CACzB,EAEF,MAAM,SACN,CACA,GAAI,EACF,EAAU,6BAA8B,IAAM,CAC5C,EAAU,CAAQ,EACnB,kBAhDT,oBCAA,MCGO,SAAS,EAMf,CACC,EACA,EAAkD,CAAC,EAChB,CACnC,IACE,IAAK,EACL,MAAO,EACP,KAAM,EACN,MAAO,EACP,QAAS,GACP,EAEJ,OAAO,eAAuB,IAAI,EAA4B,CAC5D,IAAM,EAAO,EACT,EAAU,iCAAkC,IAAM,EAAM,GAAG,CAAI,CAAC,EAChE,OAEA,EACJ,GAAI,CACF,cAAiB,KAAS,EAAG,GAAG,CAAI,EAAG,CACrC,GAAI,EACF,EAAU,mCAAoC,IAAM,CAClD,EAAQ,EAAM,CAAK,EACpB,EAEH,MAAM,EAER,GAAI,EACF,EAAW,EAAU,kCAAmC,IACtD,EAAO,CAAI,CACb,EAEF,MAAO,EAAK,CACZ,GAAI,EACF,EAAW,EAAU,mCAAoC,IACvD,EAAQ,EAAM,CAAG,CACnB,EAEF,MAAM,SACN,CACA,GAAI,EACF,EAAU,qCAAsC,IAAM,CACpD,EAAU,CAAQ,EACnB,kBApDT,MCQO,SAAS,CAAqB,CACnC,EACA,EAMM,CACN,IAAM,EAAW,EAAO,OAAO,eAAe,KAAK,CAAM,EAEnD,EAAU,GACd,KAAO,EAAG,OAAO,eAAgB,CAAS,GAC1C,CACE,MAAO,CAAC,EAAM,IAAU,CACtB,EAAM,QAAQ,CAAK,GAErB,KAAM,IAAM,CACV,EAAM,OAAO,GAEf,MAAO,CAAC,EAAM,IAAQ,CACpB,EAAM,QAAQ,CAAG,GAEnB,QAAS,IAAM,CACb,EAAM,UAAU,EAEpB,CACF,EAEC,EACC,OAAO,eACL,IAAM,EAAQ,gBAvCpB,qBCAA,KACA,KACA,KACA,KACA,OCGO,SAAS,EAAe,CAAC,EAAY,EAA8B,CACxE,EAAU,kBAAmB,IAAM,CACjC,IAAM,EAAY,EAAM,uBAAuB,eAAiB,EAC1D,EAAM,EAAM,cAAgB,EAAM,kBAAoB,EAC5D,EAAW,kBACT,CACE,wBACE,EAAM,EAAM,aACR,EAAM,cAAgB,EACtB,EAAM,cACZ,cAAe,EAAM,mBAAqB,OAC1C,wBAAyB,GAAa,MACxC,EACA,CACF,EACA,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,gBAzBH,KACA,IACA,IACA,MCKO,SAAS,EAAwB,CAAC,EAAsB,CAC7D,EAAO,KAAK,YAAY,MAAQ,EAC9B,EAAO,KAAK,YAAY,MAAM,KAAK,EAAO,KAAK,WAAW,EAC1D,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,GAGT,KAAM,CAAC,EAAM,IAAW,CACtB,GAAI,CAAC,EAAM,OAEX,GADA,EAAW,UAAU,EAAc,CAAM,EAAG,CAAI,EAC5C,EAAO,MAAO,GAAgB,EAAM,EAAO,KAAK,EAEpD,OADA,EAAW,kBAAkB,CAAE,MAAO,EAAO,KAAM,EAAG,CAAI,EACnD,GAGT,MAAO,CAAC,EAAM,IAAQ,CACpB,GAAI,EAAM,EAAW,SAAS,EAAK,CAAI,EACvC,OAAO,GAGT,QAAS,CAAC,IAAS,CACjB,GAAM,IAAI,EAEd,CACF,gBAtCF,IACA,IACA,KACA,OCcO,SAAS,EAAyB,CAAC,EAAsB,CAC9D,EAAO,KAAK,YAAY,OAAS,EAC/B,EAAO,KAAK,YAAY,OAAO,KAAK,EAAO,KAAK,WAAW,EAC3D,CACE,IAAK,CAAC,IAAS,CACb,GAAI,EAAK,OAAQ,EAAK,iBAAmB,CAAE,cAAe,EAAK,EAC/D,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAAqB,GAoBzB,OAlBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,OAAO,EAAM,QAAQ,IAAI,MAAM,UAAY,SAC7C,GAAsB,EAAM,QAAQ,GAAG,MAAM,QAE/C,GAAI,EAAM,MAAO,GAAgB,EAAM,EAAM,KAAK,GAEpD,MAAM,EAAG,CACP,EAAW,UAAU,EAAoB,CAAI,GAE/C,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAa,EAEnB,GADA,EAAW,UAAU,EAAc,CAAU,EAAG,CAAI,EAChD,EAAW,MAAO,GAAgB,EAAM,EAAW,KAAK,EAE5D,OADA,EAAW,kBAAkB,CAAE,MAAO,EAAW,KAAM,EAAG,CAAI,EACvD,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,gBAvEF,IACA,IACA,KAIA,OCYA,SAAS,EAAW,CAAC,EAAY,EAAyB,CACxD,EAAU,qBAAsB,IAAM,CACpC,IAAM,EACJ,yBAA0B,EAAQ,EAAM,qBAAuB,OAC3D,EAAmB,GAAc,cAAgB,EAUvD,GARA,EAAW,kBACT,CACE,wBAAyB,GAAc,aAAe,EACtD,cAAe,EAAM,eAAiB,MACxC,EACA,CACF,EAEI,EACF,EAAW,4DAET,EACA,CACF,EAEF,GAAI,EAAM,cACR,EAAW,kDAET,EAAM,cACN,CACF,EAEF,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,EAOI,SAAS,EAAkB,CAAC,EAAsB,CACvD,EAAO,OAAO,SAAW,EACvB,EAAO,OAAO,SAAS,KAAK,EAAO,MAAM,EACzC,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAoBJ,OAlBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,GAAsB,IAAI,EAAM,IAAI,EACtC,EAAiB,EACjB,GAAY,EAAM,EAAe,KAAK,GAG1C,MAAM,EAAG,CACP,EAAW,UAAU,EAAc,GAAkB,CAAC,CAAC,EAAG,CAAI,GAEhE,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAY,EAElB,GADA,EAAW,UAAU,EAAc,CAAS,EAAG,CAAI,EAC/C,EAAU,MAAO,GAAY,EAAM,EAAU,KAAK,EACtD,OAAO,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,MAxGI,iBATN,KACA,IACA,IACA,IACA,KAKM,GAAwB,IAAI,IAAI,CACpC,6BACA,sBACF,CAAC,ICHD,SAAS,EAAW,CAAC,EAAY,EAA4B,CAC3D,EAAU,wBAAyB,IAAM,CACvC,IAAM,EAAY,EAAM,qBAAqB,cACvC,EAAM,EAAM,aAAe,EAAM,cAAgB,EACvD,EAAW,kBACT,CACE,wBACE,EAAM,EAAM,aACR,EAAM,aAAe,EACrB,EAAM,aACZ,cAAe,EAAM,eAAiB,OACtC,wBAAyB,GAAa,MACxC,EACA,CACF,EACA,EAAW,uCAET,EAAc,CAAK,EACnB,CACF,EACD,EAOI,SAAS,EAAmB,CAAC,EAAsB,CACxD,EAAO,UAAU,OAAS,EACxB,EAAO,UAAU,OAAO,KAAK,EAAO,SAAS,EAC7C,CACE,IAAK,CAAC,IAAS,CACb,IAAM,EAAO,EAAW,UAAU,iBAAiB,EAInD,OAHA,EAAW,YAAY,MAAO,CAAI,EAClC,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EACxD,EAAW,SAAS,EAAM,CAAI,EACvB,CAAE,OAAM,QAAS,EAAM,GAGhC,KAAM,CAAC,EAAK,EAAQ,IAAS,CAC3B,GAAI,CAAC,EAAK,OACV,IAAQ,QAAS,EAEjB,GAAI,EAAK,GAAG,OAAQ,CAClB,IAAM,EAAS,EACX,EAAqB,GAwBzB,OAtBA,EAAmB,EAAQ,CACzB,OAAO,CAAC,EAAO,CACb,GAAI,EAAM,OAAS,6BACjB,GAAsB,EAAM,MAE9B,GAAI,EAAM,OAAS,qBAAsB,CACvC,IAAM,EAAO,EAAM,SACnB,GAAI,EAAK,MAAO,GAAY,EAAM,EAAK,KAAK,EAC5C,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,IAG5D,MAAM,EAAG,CACP,EAAW,UAAU,EAAoB,CAAI,GAE/C,OAAO,CAAC,EAAK,CACX,EAAW,SAAS,EAAK,CAAI,GAE/B,SAAS,EAAG,CACV,EAAK,IAAI,EAEb,CAAC,EAEM,CAAE,OAAM,QAAS,EAAK,EAI/B,IAAM,EAAO,EAEb,GADA,EAAW,UAAU,EAAc,CAAI,EAAG,CAAI,EAC1C,EAAK,MAAO,GAAY,EAAM,EAAK,KAAK,EAC5C,GAAI,OAAO,EAAK,QAAU,SACxB,EAAW,kBAAkB,CAAE,MAAO,EAAK,KAAM,EAAG,CAAI,EAE1D,OAAO,GAGT,MAAO,CAAC,EAAK,IAAQ,CACnB,GAAI,EAAK,EAAW,SAAS,EAAK,EAAI,IAAI,EAC1C,OAAO,GAGT,QAAS,CAAC,IAAQ,CAChB,GAAI,GAAO,CAAC,EAAI,QAAS,EAAI,KAAK,IAAI,EAE1C,CACF,gBApGF,KACA,IACA,IACA,IACA,OCMO,SAAS,EAA4B,CAAC,EAAc,CAOzD,OANA,EAAU,aAAc,IAAM,CAC5B,GAA0B,CAAM,EAChC,GAAyB,CAAM,EAC/B,GAAoB,CAAM,EAC1B,GAAmB,CAAM,EAC1B,EACM,gBAxBT,IACA,KACA,KACA,KACA,OCiBO,SAAS,EAAsB,CAAC,EAAc,CACnD,OAAO,GAAW,CAAM,gBAtB1B,OCQA,SAAS,EAAW,CAAC,EAAsB,CACzC,OAAO,SAAS,UAAU,SAAS,KAAK,CAAE,EAG5C,SAAS,EAAW,CAAC,EAAuC,CAC1D,IAAM,EAAS,GAAY,CAAE,EAAE,QAAQ,GAAgB,EAAE,EACzD,OAAO,EAAO,MAAM,EAAS,GAAK,EAAO,MAAM,EAAO,EAGjD,SAAS,EAAiB,CAAC,EAAwB,CACxD,IAAM,EAAO,GAAY,CAAE,EAC3B,GAAI,CAAC,GAAQ,CAAC,EAAK,GACjB,MAAO,CAAC,EAGV,OAAO,EAAK,GACT,MAAM,EAAY,EAClB,IAAI,CAAC,IAAQ,CAEZ,OADc,EAAI,QAAQ,GAAQ,CAAC,EAAK,EAAY,IAAS,CAAI,EACpD,KAAK,EACnB,EACA,OAAO,CAAC,IAAS,EAAK,OAAS,CAAC,MA3B/B,GACA,GACA,GACA,GACA,iBAJA,GAAY,cACZ,GAAU,wBACV,GAAe,IACf,GAAS,uBACT,GAAiB,qCCPvB,uBACE,cACA,2BAGF,4BAAS,qBAcT,SAAS,EAAa,EAAY,CAChC,OAAO,GAAY,SAAS,IAAM,GAG7B,SAAS,EAAwB,CACtC,EACM,CAEN,GADA,GAAqB,EACjB,GAAW,OAEf,IAAM,EAAM,EAWZ,EAAI,OAAS,IAAe,CAC1B,GAAI,CAAC,GAAc,EAAG,OAAO,GAAe,EAC5C,IAAM,EAAU,GAAqB,SAAS,EAC9C,GAAI,EAAS,OAAO,EACpB,OAAO,GAAqB,GAAmB,EAAI,IAGrD,EAAI,KAAO,CAAC,EAAc,EAAI,KAAY,IAAS,CACjD,GAAI,CAAC,GAAc,EACjB,OAAO,GAAa,EAAc,EAAI,EAAS,GAAG,CAAI,EACxD,OAAO,GAAqB,IAAI,EAAc,IAC5C,EAAG,MAAM,EAAS,CAAI,CACxB,GAGF,EAAI,KAAO,CAAC,EAAc,IAAW,CACnC,GAAI,CAAC,GAAc,EAAG,OAAO,GAAa,EAAc,CAAM,EAC9D,GAAI,OAAO,IAAW,WAAY,OAAO,EACzC,IAAM,EAAK,EACX,MAAQ,IAAI,IACV,GAAqB,IAAI,EAAc,IACrC,EAAG,GAAG,CAAI,CACZ,GAGJ,GAAY,GAGP,SAAS,EAAwB,CAAC,EAAc,EAAgB,CACrE,OAAO,GAAY,IAAI,GAAM,IAAM,GAAqB,IAAI,EAAK,CAAE,CAAC,MA5DlE,GAAY,GACZ,GAA6C,KAE3C,GACA,GAEA,GACA,GACA,iBALA,GAAc,IAAI,GAClB,GAAuB,IAAI,GAE3B,GAAiB,EAAY,OAAO,KAAK,CAAW,EACpD,GAAe,EAAY,KAAK,KAAK,CAAW,EAChD,GAAe,EAAY,KAAK,KAAK,CAAW,ICjBtD,+BACE,mBACA,qBACA,YACA,2BAQF,mCACE,wCAGF,4BAAS,qBAYT,MAAM,EAA8B,CAC1B,UAER,WAAW,CAAC,EAAkC,CAC5C,KAAK,UAAY,EAGnB,SAAS,CAAC,EAAc,EAAuB,EAAyB,CACtE,IAAM,EAAM,GAAW,KAAK,UAAU,kBAAkB,EAExD,OADiB,KAAK,UAAU,mBAAmB,EACnC,UAAU,EAAM,EAAS,CAAG,EAkB9C,eAAkD,CAChD,KACG,EACY,CACf,IAAI,EAAuB,CAAC,EACxB,EAAmB,KAAK,UAAU,kBAAkB,EACpD,EAEJ,GAAI,EAAK,SAAW,EAClB,EAAK,EAAK,GACL,QAAI,EAAK,SAAW,EACzB,EAAU,EAAK,GACf,EAAK,EAAK,GAEV,OAAU,EAAK,GACf,EAAU,EAAK,GACf,EAAK,EAAK,GAGZ,IAAM,EAAO,KAAK,UAAU,EAAM,EAAS,CAAO,EAClD,OAAO,KAAK,UAAU,QAAQ,EAAM,GAAO,GAAO,GAAO,IACvD,EAAG,CAAI,CACT,EAEJ,CAEA,MAAM,EAA6B,CACjC,SAAS,EAAS,CAChB,OAAO,EAAM,gBAAgB,EAAoB,EAkBnD,eAAkD,CAChD,KACG,EACY,CAGf,OADE,EAAK,SAAW,EAAI,EAAK,GAAK,EAAK,SAAW,EAAI,EAAK,GAAK,EAAK,IACzD,KAAK,UAAU,CAAC,EAE9B,CAQO,MAAM,CAAiD,OAC7C,WAA2C,KAElD,cAAmC,KACnC,kBAAuC,CAAC,EACxC,YACA,aACA,SAAW,IAAI,IAEf,WAAW,EAAG,CACpB,KAAK,YAAc,IAAI,GACvB,KAAK,aAAe,IAAI,GAAY,IAAI,EACxC,GAAyB,IAAM,KAAK,kBAAkB,CAAC,QAQlD,YAAW,EAA2B,CAE3C,OADA,EAAuB,YAAc,IAAI,EAClC,EAAuB,gBASzB,8BAA6B,EAAY,CAC9C,IAAM,EAAW,EAAuB,YAAY,EACpD,OAAO,EAAM,wBAAwB,CAAQ,EAQ/C,QAAQ,CAAC,EAA0B,CACjC,KAAK,SAAS,IAAI,CAAM,EAQ1B,UAAU,CAAC,EAA0B,CACnC,KAAK,SAAS,OAAO,CAAM,EAW7B,SAAS,CAAC,EAA6B,CACrC,IAAM,EAAc,KAAK,eAAe,EACxC,GAAI,GAAa,YAAY,GAC3B,GAAI,EAAM,QAAQ,KAAK,kBAAkB,CAAC,IAAM,EAI9C,OAHA,EAAO,MACL,oFACF,EACO,GAKX,OAFA,KAAK,SAAS,CAAM,EACpB,KAAK,cAAgB,EACd,GAQT,eAAe,EAAsB,CACnC,OAAO,KAAK,cAQd,iBAAiB,EAAY,CAC3B,OAAO,GAAgB,SAAS,GAAK,GAMvC,OAAO,CAAC,EAAc,EAAqB,CACzC,OAAO,EAAM,QAAQ,EAAK,CAAI,EAMhC,eAAe,CAAC,EAAgC,CAC9C,OAAO,EAAM,gBAAgB,CAAW,EAQ1C,cAAc,EAAqB,CACjC,IAAM,EAAM,KAAK,kBAAkB,EACnC,OAAO,EAAM,QAAQ,CAAG,EAQ1B,iBAAiB,EAAY,CAE3B,GAAI,CADgB,KAAK,eAAe,GACtB,YAAY,EAAG,MAAO,GACxC,MAAO,GAGT,kBAAkB,EAAW,CAC3B,IAAM,EAAS,KAAK,cACpB,GAAI,CAAC,EAEH,OADA,EAAO,MAAM,wCAAwC,EAC9C,KAAK,YAEd,OAAO,EAAO,gBAAgB,UAAU,EAAW,EAGrD,SAAS,CACP,EACA,EACA,EACQ,CACR,OAAO,KAAK,aAQd,kBAAkB,CAAC,EAAqC,CACtD,GAAI,CACF,GAAyB,CACvB,eAAgB,KAChB,iBAAkB,CAAC,CAAY,CACjC,CAAC,EACD,KAAK,kBAAkB,KAAK,CAAY,EACxC,MAAO,EAAc,CACrB,EAAO,MAAM,kCAAkC,OAAO,CAAG,GAAG,GAIhE,OAAU,CACR,EACA,EACA,EACA,EACA,EACG,CACH,IAAM,EAAU,KAAK,kBAAkB,EACjC,EAAM,EAAM,QAAQ,EAAS,CAAI,EACvC,OAAO,GAAgB,IAAI,EAAK,IAC9B,GAAsB,EAAK,IAAM,CAC/B,GAAI,CACF,IAAM,EAAS,EAAG,EAClB,GAAI,aAAkB,QACpB,OAAO,EACJ,MAAM,CAAC,IAAiB,CACvB,GAAI,EAAK,YAAY,EAAG,CACtB,GAAI,EAAiB,EAAK,gBAAgB,CAAY,EACtD,GAAI,EAAsB,CACxB,IAAM,EAAM,EACZ,EAAK,UAAU,CACb,KAAM,GAAe,MACrB,QAAS,GAAG,EAAI,SAAS,EAAI,SAC/B,CAAC,GAGL,MAAM,EACP,EACA,QAAQ,IAAM,CACb,GAAI,EAAW,EAAK,IAAI,EACzB,EAEL,GAAI,EAAW,EAAK,IAAI,EACxB,OAAO,EACP,MAAO,EAAK,CACZ,GAAI,EAAK,YAAY,EAAG,CACtB,GAAI,EAAiB,EAAK,gBAAgB,CAAY,EACtD,GAAI,EAAsB,CACxB,IAAM,EAAM,EACZ,EAAK,UAAU,CACb,KAAM,GAAe,MACrB,QAAS,GAAG,EAAI,SAAS,EAAI,SAC/B,CAAC,GAGL,GAAI,EAAW,EAAK,IAAI,EACxB,MAAM,GAET,CACH,EAGF,aAAa,CAAC,EAAoB,CAChC,GAAgB,UAAU,CAAG,EAO/B,WAAc,CAAC,EAAc,EAAgB,CAC3C,OAAO,GAAgB,IAAI,EAAK,IAAM,GAAsB,EAAK,CAAE,CAAC,OAMhE,WAAU,EAAkB,CAChC,IAAM,EAAU,MAAM,QAAQ,WAC5B,MAAM,KAAK,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAM,EAAE,gBAAgB,WAAW,CAAC,CACrE,EACA,QAAW,KAAK,EACd,GAAI,EAAE,SAAW,WACf,EAAO,MAAM,sBAAsB,OAAO,EAAE,MAAM,GAAG,OAQrD,SAAQ,EAAkB,CAC9B,IAAM,EAAU,MAAM,QAAQ,WAC5B,MAAM,KAAK,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAM,EAAE,gBAAgB,SAAS,CAAC,CACnE,EACA,QAAW,KAAK,EACd,GAAI,EAAE,SAAW,WACf,EAAO,MAAM,oBAAoB,OAAO,EAAE,MAAM,GAAG,EAGvD,KAAK,cAAgB,KACrB,KAAK,SAAS,MAAM,EAExB,KA/VM,GAAc,WAEd,gBATN,IAEA,KAOM,GAAkB,IAAI,SC1Bf,GAA6B,IAC7B,GAA+B,IAC/B,GAA0B,IAG1B,GAAiB,UAGjB,GAA+B,IAG/B,GAAmC,KAGnC,GAA2B,KCdxC,yCAGE,4BAaK,SAAS,EAAiB,CAAC,EAA4B,CAC5D,OAAO,EAAS,OAAO,CAAC,EAAQ,IAAY,CAC1C,IAAM,EAAQ,GAAG,IAAS,IAAW,GAAK,GAA0B,KAAK,IACzE,OAAO,EAAM,OAAS,GAA2B,EAAS,GACzD,EAAE,EAOA,SAAS,EAAW,CAAC,EAA4B,CACtD,OAAO,EAAQ,cAAc,EAAE,IAAI,EAAE,EAAK,KAAW,CACnD,IAAI,EAAQ,GAAG,mBAAmB,CAAG,KAAK,mBAAmB,EAAM,KAAK,IACxE,GAAI,EAAM,WAAa,OACrB,GAAS,GAA+B,EAAM,SAAS,SAAS,EAElE,OAAO,EACR,EAII,SAAS,EAAiB,CAC/B,EAC6E,CAC7E,IAAM,EAAa,EAAM,MAAM,EAA4B,EAC3D,GAAI,EAAW,QAAU,EAAG,OAC5B,IAAM,EAAc,EAAW,MAAM,EACrC,GAAI,CAAC,EAAa,OAClB,IAAM,EAAiB,EAAY,QAAQ,EAA0B,EACrE,GAAI,GAAkB,EAAG,OACzB,IAAM,EAAM,mBACV,EAAY,UAAU,EAAG,CAAc,EAAE,KAAK,CAChD,EACM,EAAQ,mBACZ,EAAY,UAAU,EAAiB,CAAC,EAAE,KAAK,CACjD,EACI,EACJ,GAAI,EAAW,OAAS,EACtB,EAAW,GACT,EAAW,KAAK,EAA4B,CAC9C,EAEF,MAAO,CAAE,MAAK,QAAO,UAAS,gBCpDhC,8BAAS,6BAeF,MAAM,CAAuD,CAClE,MAAM,CAAC,EAAkB,EAAkB,EAA6B,CACtE,IAAM,EAAU,EAAW,CAAO,EAClC,GAAI,CAAC,GAAW,GAAoB,CAAO,EAAG,OAC9C,IAAM,EAAW,GAAY,CAAO,EACjC,OAAO,CAAC,IAAS,EAAK,QAAU,EAAgC,EAChE,MAAM,EAAG,EAA4B,EAClC,EAAc,GAAkB,CAAQ,EAC9C,GAAI,EAAY,OAAS,EACvB,EAAO,IAAI,EAAS,GAAgB,CAAW,EAInD,OAAO,CAAC,EAAkB,EAAkB,EAAgC,CAC1E,IAAM,EAAc,EAAO,IAAI,EAAS,EAAc,EAChD,EAAgB,MAAM,QAAQ,CAAW,EAC3C,EAAY,KAAK,EAAuB,EACxC,EACJ,GAAI,CAAC,EAAe,OAAO,EAC3B,IAAM,EAAwC,CAAC,EAC/C,GAAI,EAAc,SAAW,EAAG,OAAO,EAYvC,GAXc,EAAc,MAAM,EAAuB,EACnD,QAAQ,CAAC,IAAU,CACvB,IAAM,EAAU,GAAkB,CAAK,EACvC,GAAI,EAAS,CACX,IAAM,EAA6B,CAAE,MAAO,EAAQ,KAAM,EAC1D,GAAI,EAAQ,SACV,EAAa,SAAW,EAAQ,SAElC,EAAQ,EAAQ,KAAO,GAE1B,EACG,OAAO,QAAQ,CAAO,EAAE,SAAW,EACrC,OAAO,EAET,OAAO,GAAW,EAAS,GAAc,CAAO,CAAC,EAGnD,MAAM,EAAa,CACjB,MAAO,CAAC,EAAc,EAE1B,eAjDA,KACA,qMCfA,2BAGE,kBACA,4BAmCF,yCAAS,4BAnBF,SAAS,CAAU,CAAC,EAAuC,CAChE,OAAO,EAAQ,SAAS,EAAW,EAI9B,SAAS,EAAgB,EAAwB,CACtD,OAAO,EAAW,EAAuB,YAAY,EAAE,kBAAkB,CAAC,EAIrE,SAAS,EAAU,CAAC,EAAkB,EAA2B,CACtE,OAAO,EAAQ,SAAS,GAAa,CAAO,EAIvC,SAAS,EAAa,CAAC,EAA2B,CACvD,OAAO,EAAQ,YAAY,EAAW,MArB3B,GAEP,iBAXN,IAwCA,KA/Ba,GAAgB,GAAY,cAAc,KAAK,EAAW,EAEjE,GAAc,GAAiB,SAAS,oGCjB9C,+BAEE,2BACA,4BAKF,8BACE,gCACA,6BAmBK,SAAS,EAAgB,EAAsB,CACpD,OAAO,GAIF,SAAS,EAAgB,CAAC,EAAqC,CACpE,GAAiB,EAGnB,SAAS,EAAe,CAAC,EAA4B,CACnD,GAAI,IAAY,OAAW,OAAO,EAClC,OAAO,EAAuB,YAAY,EAAE,kBAAkB,EAsBzD,SAAS,EAAe,CAC7B,EACA,EACA,EAAiC,GAC3B,CACN,EAAU,qBAAsB,IAAM,CACpC,GAAiB,EAAE,OAAO,GAAgB,CAAO,EAAG,EAAS,CAAM,EACpE,EAkBI,SAAS,EAAgB,CAC9B,EACA,EACA,EAAiC,GACxB,CACT,IAAM,EAAO,GAAgB,CAAO,EACpC,OAAO,EACL,sBACA,IAAM,GAAiB,EAAE,QAAQ,EAAM,EAAS,CAAM,EACtD,CACF,MA5EE,iBATJ,IACA,KACA,IAOI,GAAoC,IAAI,GAAoB,CAC9D,YAAa,CACX,IAAI,GACJ,IAAI,CACN,CACF,CAAC,IC1BD,+BAGE,qBAEA,4BAUF,qBAAS,gBAuHF,MAAe,CAAW,CAC/B,YACA,UACA,OACA,eACA,OACA,YACA,WACA,gBACA,QACA,kBAES,4BAAuC,GAMtC,WAAW,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,KAAK,YAAc,EACnB,KAAK,UAAY,EACjB,KAAK,OAAS,EACd,KAAK,eAAiB,EACtB,KAAK,OAAS,EACd,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,gBAAkB,EACvB,KAAK,QAAU,EACf,KAAK,kBAAoB,EAQ3B,SAAS,EAAY,CACnB,OAAO,EAAuB,YAAY,EAAE,UAAU,IAAI,QAc7C,kBAAiB,EAA2B,CACzD,OAAO,EAAuB,YAAY,QAG7B,eAAc,EAAe,CAE1C,OADe,EAAW,kBAAkB,EAAE,gBAAgB,GAC/C,YAAc,QAGhB,0BAAyB,EAA4B,CAElE,IAAM,EADQ,EAAW,kBAAkB,EACjB,eAAe,EACzC,GAAI,CAAC,GAAa,YAAY,EAAG,OAAO,KACxC,IAAM,EAAM,EAAY,YAAY,EACpC,GAAI,CAAC,EAAI,SAAW,EAAE,EAAI,WAAa,GAAO,OAAO,KACrD,MAAO,CAAC,EAAI,QAAS,EAAI,MAAM,QAGlB,aAAY,EAAS,CAClC,EAAU,0BAA2B,IAAM,CACzC,IAAM,EAAS,EAAW,kBAAkB,EAAE,gBAAgB,EAC9D,GAAI,CAAC,GAAU,CAAC,EAAO,4BAA6B,OACpD,EAAO,iBAAiB,EAAE,YAAY,EACvC,QAYI,eAAc,EAAqB,CAExC,OADc,EAAW,kBAAkB,EAC9B,eAAe,cAajB,WAAU,EAAkB,CAEvC,MADc,EAAW,kBAAkB,EAC/B,WAAW,cAWZ,SAAQ,EAAkB,CAErC,MADc,EAAW,kBAAkB,EAC/B,SAAS,QAchB,4BAA2B,CAAC,EAAqC,CACtE,EAAU,yCAA0C,IAAM,CAC1C,EAAW,kBAAkB,EACrC,mBAAmB,CAAY,EACtC,QAmBI,KAAsB,CAAC,EAAc,CAC1C,OAAO,GAAK,CAAM,QAYb,cAAa,EAAW,CAE7B,OADc,EAAW,kBAAkB,EAC9B,UAAU,EAAW,QAc7B,UAAS,CAAC,EAAc,EAA+B,CAC5D,IAAM,EAAO,EAAW,cAAc,EAAE,UAAU,EAAM,CAAE,YAAW,CAAC,EAEtE,OADA,EAAW,aAAa,EACjB,QAuBF,gBAAkB,CACvB,EACA,EACG,CACH,IAAQ,OAAM,cAAe,EAC7B,OAAO,EAAW,cAAc,EAAE,gBAChC,EACA,CAAE,YAAW,EACb,CAAC,IAAS,CACR,EAAW,aAAa,EACxB,GAAI,CACF,IAAM,EAAS,EAAG,CAAI,EACtB,GAAI,aAAkB,QACpB,OAAQ,EAA4B,QAAQ,IAAM,CAChD,EAAK,IAAI,EACV,EAGH,OADA,EAAK,IAAI,EACF,EACP,MAAO,EAAG,CAEV,MADA,EAAK,IAAI,EACH,GAGZ,QAgBK,KAAO,CAAC,EAAkB,EAA0B,CACzD,OAAO,EAAW,gBAAgB,CAAE,KAAM,CAAS,EAAG,CAAC,IAAS,CAC9D,GAAI,CACF,IAAM,EAAS,EAAG,CAAI,EACtB,GAAI,aAAkB,QACpB,OAAO,EAAO,MAAM,CAAC,IAAe,CAGlC,MAFA,EAAK,UAAU,CAAE,KAAM,GAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,gBAAgB,CAAU,EACzB,EACP,EAEH,OAAO,EACP,MAAO,EAAG,CAGV,MAFA,EAAK,UAAU,CAAE,KAAM,GAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,gBAAgB,CAAU,EACzB,GAET,QAUI,KAAO,CAAC,EAAkB,EAA0B,CACzD,OAAO,EAAW,KAAK,EAAU,CAAE,QAsD9B,cAAgB,CAAC,EAAiB,EAA4B,CACnE,IAAM,EAAQ,EAAW,kBAAkB,EACrC,EAAM,GAAQ,CAAO,EAC3B,OAAO,EAAM,YAAY,EAAK,IAAM,EAAG,CAAG,CAAC,QAgDtC,QAAyC,CAC9C,EACA,EAGuE,CACvE,IAAI,EACJ,GAAI,OAAO,IAAkB,WAC3B,EAAO,EAEP,OAAU,EAEZ,IACE,WAAW,OACX,WACA,cAAc,GACd,eAAe,GACf,OAAO,IACL,GAAW,CAAC,EACV,EAAQ,EAAW,kBAAkB,EACrC,EAAY,CAChB,IACkC,CAClC,IAAM,EAAO,GAAY,EAAU,KACnC,OAAO,QAAS,IAAmB,EAAsB,CACvD,IAAM,EAAa,EAAM,UAAU,EAAW,EAO9C,GAJE,GACA,EAAM,gBAAgB,IAAM,MAC5B,EAAM,eAAe,GAAG,YAAY,IAAM,GAE5B,CACd,IAAM,EAAa,EAAW,eAAe,EAGvC,EAAiB,EAAW,UAAU,CAAI,EAC1C,EAAgB,EAAe,YAAY,EACjD,GAAI,EACF,EAAe,kCAEb,CACF,EAIF,IAAM,GAA8B,CACjC,gCACC,EAAc,QACf,+BAA6C,EAAc,MAC9D,EACA,GAAI,EACF,GAAgB,sBAAoC,EAGtD,IAAM,GAAgB,EAAM,QAC1B,EAAM,kBAAkB,EACxB,EAAM,gBAAgB,EAAoB,CAC5C,EACM,EAAa,EAAW,UAC5B,EACA,CAAE,WAAY,EAAgB,EAC9B,EACF,EACM,EAAgB,EAAW,YAAY,EAC7C,EAAe,6CAEb,EAAc,OAChB,EACA,EAAe,4CAEb,EAAc,MAChB,EAEA,IAAM,EAAU,IAAY,CAC1B,EAAW,IAAI,EACf,EAAe,IAAI,GAEf,GAAoB,CAAC,IAAqB,CAC9C,QAAW,IAAK,CAAC,EAAY,CAAc,EACzC,EAAE,gBAAgB,CAAU,EAC5B,EAAE,UAAU,CACV,KAAM,GAAe,MACrB,QAAS,OAAO,CAAC,CACnB,CAAC,GAGC,GAAqB,CAAC,IAAyB,CACnD,IAAM,EAAa,EAAmB,EAAO,CAAU,EACvD,EAAW,+BAA4C,CAAU,EACjE,EAAe,+BAEb,CACF,GAGF,GAAI,EAAa,CACf,IAAM,EAAkB,EACtB,GAAU,EAAW,CAAI,EACzB,CACF,EACA,EAAW,8BAET,CACF,EACA,EAAe,8BAEb,CACF,EAIF,OAFA,EAAW,aAAa,EAEjB,EAAM,QAAQ,EAAY,GAAO,GAAO,GAAO,IAAe,CACnE,GAAI,CACF,IAAM,EAAS,EAAU,KAAK,KAAM,GAAG,CAAI,EAC3C,GAAI,aAAkB,QACpB,OAAQ,EACL,KAAK,CAAC,IAAQ,CACb,GAAI,EAAc,GAAmB,CAAG,EACxC,OAAO,EACR,EACA,MAAM,CAAC,IAAe,CAErB,MADA,GAAkB,CAAC,EACb,EACP,EACA,QAAQ,CAAO,EAEpB,GAAI,EAAc,GAAmB,CAAM,EAE3C,OADA,EAAQ,EACD,EACP,MAAO,EAAG,CAGV,MAFA,GAAkB,CAAC,EACnB,EAAQ,EACF,GAET,EAGH,OAAO,EAAW,gBAAgB,EAAM,CAAC,IAAS,CAChD,GAAI,EACF,EAAK,kCAA+C,CAAQ,EAE9D,GAAI,CACF,GAAI,EACF,EAAK,8BAEH,EACE,GAAU,EAAW,CAAI,EACzB,EAAW,eAAe,CAC5B,CACF,EAEF,EAAW,aAAa,EACxB,IAAM,EAAS,EAAU,KAAK,KAAM,GAAG,CAAI,EAE3C,GAAI,aAAkB,QACpB,OAAQ,EACL,KAAK,CAAC,IAAQ,CACb,GAAI,EACF,EAAK,+BAEH,EAAmB,EAAK,EAAW,eAAe,CAAC,CACrD,EAEF,OAAO,EACR,EACA,MAAM,CAAC,IAAe,CAMrB,MALA,EAAK,gBAAgB,CAAU,EAC/B,EAAK,UAAU,CACb,KAAM,GAAe,MACrB,QAAS,OAAO,CAAC,CACnB,CAAC,EACK,EACP,EACA,QAAQ,IAAM,CACb,EAAK,IAAI,EACV,EAGL,GAAI,EACF,EAAK,+BAEH,EAAmB,EAAQ,EAAW,eAAe,CAAC,CACxD,EAGF,OADA,EAAK,IAAI,EACF,EACP,MAAO,EAAG,CAIV,MAHA,EAAK,gBAAgB,CAAU,EAC/B,EAAK,UAAU,CAAE,KAAM,GAAe,MAAO,QAAS,OAAO,CAAC,CAAE,CAAC,EACjE,EAAK,IAAI,EACH,GAET,IAIL,GAAI,CAAC,EAAM,OAAO,EAClB,OAAO,EAAU,CAAI,QAOR,aAAY,CAAC,EAA+B,CACzD,GAAI,EAAM,OAAO,EACjB,OAAO,EAAW,kBAAkB,EAAE,eAAe,QAehD,YAAW,CAAC,EAAc,EAAmB,CAClD,EAAU,yBAA0B,IAAM,CACxC,GAAI,CAAC,EAAM,OACX,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,GAAQ,YAAY,EACtB,EAAO,kCAA+C,CAAI,EAE7D,QAMI,WAAU,EAAS,CACxB,EAAW,YAAY,KAAK,QAMvB,YAAW,EAAS,CACzB,EAAW,YAAY,MAAM,QAMxB,eAAc,EAAS,CAC5B,EAAW,YAAY,MAAM,QAgBxB,aAAY,CAAC,EAAa,EAAgB,EAAmB,CAClE,EAAU,0BAA2B,IAAM,CACzC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAC5B,GAAI,CAAC,GAAO,GAAS,KAAM,OAC3B,EAAO,aACL,EACA,EAAmB,EAAO,EAAW,eAAe,CAAC,CACvD,EACD,QAWI,cAAa,CAAC,EAAqC,EAAmB,CAC3E,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAU,EAClD,GAAI,EAAM,EAAW,aAAa,EAAK,EAAO,CAAI,EAC7C,OAAW,aAAa,EAAK,CAAK,QAYpC,SAAQ,CAAC,EAAoB,EAAmB,CACrD,GAAI,EACF,EAAW,8BAA2C,EAAW,CAAI,EAClE,OAAW,8BAA2C,CAAS,QAW/D,UAAS,CAAC,EAAqB,EAAmB,CACvD,GAAI,EACF,EAAW,+BAA4C,EAAY,CAAI,EACpE,OAAW,+BAA4C,CAAU,QAajE,SAAQ,CAAC,EAAgB,EAAmB,CACjD,EAAU,sBAAuB,IAAM,CACrC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAC5B,EAAO,gBAAgB,CAAc,EACrC,EAAO,UAAU,CAAE,KAAM,GAAe,MAAO,QAAS,OAAO,CAAK,CAAE,CAAC,EACxE,QAoBI,kBAAiB,CAAC,EAAuB,EAAmB,CACjE,EAAU,+BAAgC,IAAM,CAC9C,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAE5B,GAAI,OAAO,EAAS,QAAU,SAC5B,EAAO,kCAEL,EAAS,KACX,EAGF,GAAI,OAAO,EAAS,WAAa,SAC/B,EAAO,qCAEL,EAAS,QACX,EAGF,GAAI,OAAO,EAAS,0BAA4B,SAC9C,EAAO,sDAEL,EAAS,uBACX,EAEF,GAAI,OAAO,EAAS,gBAAkB,SACpC,EAAO,4CAEL,EAAS,aACX,EAEF,GAAI,OAAO,EAAS,0BAA4B,SAC9C,EAAO,sDAEL,EAAS,uBACX,EAEF,GAAI,OAAO,EAAS,8BAAgC,SAClD,EAAO,0DAEL,EAAS,2BACX,EAEF,GAAI,OAAO,EAAS,iBAAmB,SACrC,EAAO,6CAEL,EAAS,cACX,EAEH,QAWY,0BAAyB,CAAC,EAAa,EAAqB,CACzE,EAAU,uCAAwC,IAAM,CACtD,IAAM,EAAQ,EAAW,kBAAkB,EACrC,EAAc,EAAM,eAAe,EACzC,GAAI,CAAC,GAAa,YAAY,EAAG,OACjC,EAAY,aAAa,EAAK,CAAK,EACnC,IAAM,EAAM,EAAM,kBAAkB,EAC9B,GAAW,EAAW,CAAG,GAAK,GAAc,GAAG,SAAS,EAAK,CACjE,OACF,CAAC,EACD,EAAM,cAAc,GAAW,EAAK,CAAO,CAAC,EAC7C,QAYI,cAAa,CAAC,EAA0B,CAC7C,EAAW,iDAET,CACF,QAYK,kBAAiB,CAAC,EAA8B,CACrD,EAAW,sDAET,CACF,QAYK,aAAY,CAAC,EAAyB,CAC3C,EAAW,gDAET,CACF,QAkBK,IAAG,CAAC,EAA+B,CACxC,EAAU,iBAAkB,IAAM,CAChC,GAAI,CAAC,GAAS,MAAM,QAAQ,CAAI,GAAK,EAAK,SAAW,EAAI,OAEzD,IAAM,EADQ,EAAW,kBAAkB,EACtB,gBAAgB,EACrC,GAAI,CAAC,GAAQ,WAAa,CAAC,EAAO,QAAS,OAC3C,GAAI,CAAC,EAAO,4BAA6B,OACzC,IAAM,EAAM,EAAW,0BAA0B,EACjD,GAAI,CAAC,EAAK,OACV,IAAO,GAAW,EACZ,EAAW,MAAM,QAAQ,CAAI,EAAI,EAAO,CAAC,CAAI,EACnD,EAAO,QACJ,kCAAkC,EAAO,UAAW,EAAS,CAC5D,KAAM,CACR,CAAC,EACA,MAAM,CAAC,IAAiB,CACvB,EAAO,MAAM,eAAe,OAAO,CAAG,GAAG,EAC1C,EACJ,QA+BI,cAAa,CAAC,EAA+B,EAAmB,CACrE,EAAU,2BAA4B,IAAM,CAC1C,IAAQ,QAAO,WAAY,EAErB,EADQ,EAAW,kBAAkB,EACtB,gBAAgB,EACrC,GAAI,CAAC,GAAQ,UAAW,OACxB,GAAI,CAAC,EAAO,4BAA6B,OACzC,IAAM,EAAS,EAAW,aAAa,CAAI,EAC3C,GAAI,CAAC,GAAQ,YAAY,EAAG,OAE5B,IAAM,EAAY,EAAO,iBAAiB,EACpC,EAAM,EAAO,YAAY,EAEzB,EAAM,EAAU,UACpB,uBAEF,EACM,EAA8B,CAClC,WAAY,EAAO,UACnB,UAAW,kBAAkB,KAAS,IACtC,OAAQ,CAAC,CAAE,KAAM,CAAM,CAAC,EACxB,SAAU,CACR,IACK,EACH,WAAY,GAAW,EACvB,WAAY,IAAI,KAAK,EAAE,YAAY,EACnC,SAAU,EAAI,QACd,QAAS,EAAI,MACf,CACF,EACA,WAAY,GACZ,YAAa,EACf,EACM,EAAU,EAAU,YACxB,kBAEA,CACF,EAGA,EAAO,2CAEL,KAAK,UAAU,CAAO,CACxB,EACD,EAEL,CAEA,SAAS,EAAkC,CACzC,EACA,EACyB,CACzB,GAAI,CACF,IAAM,EAAa,GAAkB,CAAC,EACnC,IAAI,CAAC,IACJ,EACG,QAAQ,UAAW,EAAE,EACrB,MAAM,GAAG,EAAE,GACX,KAAK,CACV,EACC,OAAO,CAAC,IAAU,EAAM,OAAS,CAAC,EAC/B,EAAkC,CAAC,EAMzC,OALA,EAAW,QAAQ,CAAC,EAAM,IAAU,CAClC,GAAI,EAAQ,EAAK,OACf,EAAO,GAAQ,EAAK,GAEvB,EACM,EACP,KAAM,CACN,MAAO,CAAC,OA9kCN,GAAc,wBAnBpB,KACA,KAGA,KACA,IACA,IACA,IAMA,KACA,IACA,OC/BA,4BAAS,iDAUF,MAAM,CAA6C,CAC9C,UAUV,WAAW,CACT,EACA,EACA,EACA,EACA,CACA,GAAI,CAAC,EAAU,CACb,KAAK,UAAY,KACjB,OAEF,KAAK,UAAY,IAAI,GAAkB,CACrC,IAAK,EACL,QAAS,CACP,cAAe,UAAU,IACzB,oBAAqB,EACrB,eAAgB,CAClB,CACF,CAAC,EASH,MAAM,CACJ,EACA,EACM,CACN,EAAO,KAAK,YAAY,EAAM,cAAc,EAC5C,KAAK,WAAW,OAAO,EAAO,CAAc,EAM9C,QAAQ,EAAkB,CACxB,OAAO,KAAK,WAAW,SAAS,GAAK,QAAQ,QAAQ,EAMvD,UAAU,EAAkB,CAC1B,OAAO,KAAK,WAAW,WAAW,GAAK,QAAQ,QAAQ,EAE3D,eAlEA,MCHA,2BAAS,iCASI,gBAPb,KAOa,EAAN,MAAM,UAAyB,CAAqB,CACzD,WAAW,EAAG,CACZ,MAAM,GAAI,GAAI,GAAI,EAAE,EAGb,MAAM,CACb,EACA,EACM,CACN,EAAe,CAAE,KAAM,GAAiB,OAAQ,CAAC,EAG1C,QAAQ,EAAkB,CACjC,OAAO,QAAQ,QAAQ,EAGhB,UAAU,EAAkB,CACnC,OAAO,QAAQ,QAAQ,EAE3B,ICAO,MAAM,EAAsD,CACzD,cAER,WAAW,CAAC,EAAoC,GAAwB,CACtE,KAAK,cAAgB,EAIvB,OAAO,CAAC,EAAY,EAA8B,CAChD,IAAM,EAAU,EAAW,CAAa,GAAG,cAAc,GAAK,CAAC,EAC/D,QAAY,EAAK,KAAU,EACzB,GAAI,KAAK,cAAc,CAAG,EACxB,EAAK,aAAa,EAAK,EAAM,KAAK,EAMxC,KAAK,CAAC,EAA2B,EAKjC,UAAU,EAAkB,CAC1B,OAAO,QAAQ,QAAQ,EAIzB,QAAQ,EAAkB,CACxB,OAAO,QAAQ,QAAQ,EAE3B,KA5Ca,GAA8C,IAAM,iBATjE,OCAA,6BACE,uCAgBF,SAAS,EAAW,CAAC,EAA2B,CAC9C,MAAO,GAAG,EAAI,WAAW,EAAI,SAG/B,SAAS,EAAY,CAAC,EAAyB,CAC7C,OAAO,EAAO,KAAO,GAAK,EAAO,KAAO,MAY7B,gBA5Bb,KAIA,IAEA,IACA,KAqBa,EAAN,MAAM,UAA8B,EAAmB,CAC5D,OACQ,OAAS,IAAI,IACb,gBACA,kBAER,WAAW,CACT,EACA,EACA,EAMA,CACA,MAAM,EAAU,CAAM,EACtB,KAAK,OAAS,EACd,KAAK,gBAAkB,IAAI,qBAA8B,CAAC,IAAY,CACpE,KAAK,kBAAkB,CAAO,EAC/B,EACD,KAAK,kBAAoB,IAAI,GAGvB,iBAAiB,CAAC,EAAwB,CAChD,KAAK,OAAO,OAAO,CAAO,EAGpB,aAAa,CAAC,EAAkB,CACtC,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,SAAW,CAAC,EAAI,OAAQ,OACjC,IAAM,EAAU,GAAY,CAAG,EAG/B,KAAK,gBAAgB,SAAS,EAAM,CAAO,EAI7C,QAAQ,CAAC,EAA0B,EAAa,EAAsB,CACpE,IAAM,EAAU,GAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,EAAM,IAAI,EAAK,CAAK,EAItB,QAAW,CAAC,EAA0B,EAAa,EAAoB,CACrE,IAAM,EAAU,GAAY,CAAW,EACjC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACrC,GAAI,CAAC,GAAO,IAAI,CAAG,EAAG,OAAO,EAC7B,OAAO,EAAM,IAAI,CAAG,EAItB,SAAS,CAAC,EAA0B,EAAqB,CACvD,IAAM,EAAU,GAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,IAAM,EAAS,EAAM,IAAI,CAAG,EACtB,EAAO,OAAO,IAAW,SAAW,EAAS,EAEnD,OADA,EAAM,IAAI,EAAK,EAAO,CAAC,EAChB,EAIT,WAAc,CAAC,EAA0B,EAAa,EAAc,CAClE,IAAM,EAAU,GAAY,CAAW,EACnC,EAAQ,KAAK,OAAO,IAAI,CAAO,EACnC,GAAI,CAAC,EACH,EAAQ,IAAI,IACZ,KAAK,OAAO,IAAI,EAAS,CAAK,EAEhC,IAAM,EAAS,EAAM,IAAI,CAAG,EACtB,EAAY,MAAM,QAAQ,CAAM,EAClC,CAAC,GAAI,EAAgB,CAAI,EACzB,CAAC,CAAI,EAET,OADA,EAAM,IAAI,EAAK,CAAI,EACZ,EAGD,SAAS,CAAC,EAAoB,EAAY,GAAa,CAC7D,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,OAClB,IAAM,EAAS,KAAK,UAAU,sBAAqC,EAC7D,EAAyB,IAC1B,EAAK,WACP,qBAAmC,CACtC,EAEA,GAAI,EAEF,OAAO,EAAW,+BAGpB,IAAM,EAAc,OAAO,OAAO,CAAI,EACtC,OAAO,eAAe,EAAa,aAAc,CAC/C,MAAO,EACP,SAAU,EACZ,CAAC,EACD,IAAM,EAAU,GAAa,EAAK,OAAO,EAAI,EAAK,UAAY,EAAK,QACnE,OAAO,eAAe,EAAa,UAAW,CAC5C,MAAO,EACP,SAAU,EACZ,CAAC,EAED,MAAM,MAAM,CAAW,EAIzB,WAAW,EAAS,CAClB,EAAU,oCAAqC,IAAM,CAEnD,IAAM,EADQ,EAAuB,YAAY,EAC9B,eAAe,EAClC,GAAI,CAAC,GAAM,YAAY,EAAG,OAC1B,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,OAClB,GACE,KAAK,SACH,yBAEA,EACF,EAEA,OAEF,KAAK,UAAU,EAAiC,EAAI,EACrD,EAGH,OAAO,CAAC,EAAY,EAA8B,CAChD,EAAU,gCAAiC,IAAM,CAC/C,KAAK,kBAAkB,QAAQ,EAAM,CAAa,EAClD,KAAK,cAAc,CAAI,EACxB,EAGH,KAAK,CAAC,EAA0B,CAC9B,EAAU,8BAA+B,IAAM,CAC7C,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,EAAI,QAAS,CAChB,MAAM,MAAM,CAAI,EAChB,OAEF,IAAM,EAAU,GAAY,CAAG,EAC/B,GAAI,CAMF,GAAI,CALgB,KAAK,SACvB,cAEA,EACF,EAEE,KAAK,UAAU,CAAI,SAErB,CACA,KAAK,kBAAkB,CAAO,GAEjC,EAEL,QClMa,iBARb,KACA,KAOa,GAAN,MAAM,WAA0B,CAAsB,CAC3D,WAAW,EAAG,CACZ,MAAM,KAAM,IAAI,CAAkB,EAGpC,OAAO,CAAC,EAAa,EAA+B,EAIpD,KAAK,CAAC,EAA2B,EAIjC,QAAQ,EAAkB,CACxB,OAAO,QAAQ,QAAQ,EAGzB,UAAU,EAAkB,CAC1B,OAAO,QAAQ,QAAQ,EAGzB,WAAW,EAAS,EAIpB,QAAQ,CAAC,EAA2B,EAAc,EAAuB,EAIzE,QAAW,CAAC,EAA2B,EAAc,EAAoB,CACvE,OAAO,EAGT,SAAS,CAAC,EAA2B,EAAsB,CACzD,MAAO,GAGT,WAAc,CAAC,EAA2B,EAAc,EAAc,CACpE,MAAO,CAAC,CAAI,EAEhB,IClDA,0BACE,6BACA,kCAEF,6BAAS,2CAoCI,gBAnCb,KACA,KACA,IACA,KACA,IACA,KAEA,IACA,IACA,KACA,KACA,KACA,KAuBa,EAAN,MAAM,UAAe,CAAW,CAC7B,cAA6C,KAC7C,eAA+C,KAE7C,WAAW,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,MACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,cAoBW,KAAI,CAAC,EAAuB,CAAC,EAAoB,CAC5D,IAAM,EAAS,EAAO,QAAU,GAC1B,EAAiB,EAAO,gBAAkB,GAC1C,EAAS,EAAO,QAAU,GAC1B,EAAc,EAAO,aAAe,KACpC,EAAa,EAAO,YAAc,EAEpC,EAAmB,GAEvB,GAAI,CAAC,EACH,EAAO,QACL,0DACF,EACA,EAAmB,GAErB,GAAI,CAAC,EACH,EAAO,QAAQ,qDAAqD,EACpE,EAAmB,GAErB,GAAI,CAAC,EACH,EAAO,QACL,6DACF,EACA,EAAmB,GAErB,GAAI,CAAC,EACH,EAAO,QAAQ,qDAAqD,EACpE,EAAmB,GAGrB,IAAI,EAAmC,KACnC,EAA2B,KAE/B,GAAI,GAAoB,GAAe,GAAU,GAAkB,GAGjE,GAFA,EAAS,IAAI,EAAkB,EAAQ,EAAQ,CAAc,EAC7D,EAAY,MAAM,GAAiB,EAAQ,CAAW,EAAE,MAAM,IAAM,IAAI,EACpE,CAAC,EACH,EAAO,QACL,YAAY,6CACd,EACA,EAAmB,GAIvB,IAAM,EAAwC,CAC5C,eAAgB,GAAe,UAC/B,qBAAsB,WACtB,wBAAyB,EAC3B,EACA,GAAI,EAAO,YACT,EAAc,0BAA4B,EAAO,YAEnD,GAAI,EAAO,mBACT,OAAO,OAAO,EAAe,EAAO,kBAAkB,EAGxD,IAAM,EAAW,GAAgB,EAAE,MACjC,GAAuB,CAAa,CACtC,EAEM,EAAiB,IAAI,GAAmB,CAC5C,WACA,QAAS,EAAO,QAChB,WAAY,EAAO,UACrB,CAAC,EAEK,EAAS,IAAI,EACjB,EACA,EACA,EACA,EACA,EACA,EAAO,aAAe,KACtB,EACA,EACA,EACA,CACF,EAEA,GAAI,EAAkB,CACpB,IAAM,EAAwB,IAAI,GAAmB,CACnD,WACA,QAAS,EAAO,QAChB,WAAY,EAAO,WACnB,eAAgB,CACd,EAAO,iBAAiB,EACxB,GAAI,EAAO,gBAAkB,CAAC,CAChC,CACF,CAAC,EACD,EAAO,gBAAkB,EAM3B,GAHc,EAAuB,YAAY,EAC3C,SAAS,CAAM,EAEjB,EAAO,WAAa,GACtB,EAAO,UAAU,EAGnB,OAAO,EAQT,eAAe,EAAyB,CACtC,GAAI,KAAK,cAAe,OAAO,KAAK,cAEpC,GACE,CAAC,KAAK,mBACN,CAAC,KAAK,WACN,CAAC,KAAK,QACN,CAAC,KAAK,gBACN,CAAC,KAAK,OAEN,KAAK,cAAgB,IAAI,EACpB,KACL,IAAM,EAAW,KAAK,OAAO,SAAS,GAAG,EACrC,KAAK,OAAS,iBACd,KAAK,OAAS,kBAClB,KAAK,cAAgB,IAAI,EACvB,EACA,KAAK,OACL,KAAK,eACL,KAAK,SACP,EAEF,OAAO,KAAK,cAQd,gBAAgB,EAA0B,CACxC,GAAI,KAAK,eAAgB,OAAO,KAAK,eAErC,GAAI,CAAC,KAAK,kBACR,KAAK,eAAiB,IAAI,GAE1B,UAAK,eAAiB,IAAI,EACxB,KACA,KAAK,gBAAgB,CACvB,EAEF,OAAO,KAAK,eAEhB,QC/Na,iBAbb,KAEA,KAWa,GAAN,MAAM,WAAqC,CAAsB,CACrD,SACA,eACA,cAAgB,IAAI,IAErC,WAAW,CACT,EACA,EACA,EAIA,CACA,MAAM,EAAQ,CAAQ,EACtB,KAAK,SAAW,EAAQ,QACxB,KAAK,eAAiB,IAAM,EAAQ,eAAiB,CAAC,CAAG,EAGnD,mBAAmB,CAAC,EAA0B,CACpD,GAAI,EAAK,kBAAmB,OAC5B,IAAM,EAAM,EAAK,YAAY,EAC7B,GAAI,CAAC,GAAK,QAAS,OAEnB,GAAI,KAAK,cAAc,IAAI,EAAI,OAAO,EAAG,OACzC,KAAK,cAAc,IAAI,EAAI,OAAO,EAElC,IAAM,EAAU,EAAQ,OAAO,IAC1B,KAAK,eACR,iBAAkB,EAAI,OACxB,CAAC,EACD,KAAK,SAAS,KAAK,CAAO,EAG5B,KAAK,CAAC,EAA0B,CAC9B,GAAI,CACF,KAAK,oBAAoB,CAAI,SAC7B,CACA,MAAM,MAAM,CAAI,GAGtB,2CCtDA,0BACE,6BACA,kCAIF,6BAAS,2CAYH,GAAsB,yBAoEf,gBA9Eb,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KAsEa,EAAN,MAAM,UAAsB,CAAO,CAC/B,4BAAuC,GAE/B,eACA,eACA,uBACA,kBAEA,SACA,eAET,qBAAoD,KACpD,sBAA6D,KAE7D,WAAW,CAAC,EAYjB,CACD,MACE,EAAK,YACL,EAAK,UACL,EAAK,OACL,EAAK,eACL,EAAK,OACL,EAAK,YACL,EAAK,WACL,EAAK,eACL,EAAK,OACL,EACF,EACA,KAAK,eAAiB,EAAK,OAC3B,KAAK,eAAiB,EAAK,OAC3B,KAAK,uBAAyB,EAAK,eACnC,KAAK,kBAAoB,EAAK,UAC9B,KAAK,SAAW,EAAK,QACrB,KAAK,eAAiB,EAAK,0BAUhB,OAAM,CAAC,EAAqD,CACvE,IAAM,EAAS,EAAO,QAAU,GAC1B,EAAiB,EAAO,gBAAkB,GAC1C,EAAS,EAAO,QAAU,GAC1B,EAAc,EAAO,YACrB,EAAa,EAAO,YAAc,EAExC,GAAI,CAAC,EACH,MAAU,MAAM,2CAA2C,EAE7D,GAAI,CAAC,EACH,MAAU,MAAM,sCAAsC,EAExD,GAAI,CAAC,EACH,MAAU,MAAM,8CAA8C,EAEhE,GAAI,CAAC,EACH,MAAU,MAAM,sCAAsC,EAGxD,IAAM,EAAS,IAAI,EAAkB,EAAQ,EAAQ,CAAc,EAC/D,EACJ,GAAI,CACF,EAAY,MAAM,GAAiB,EAAQ,CAAW,EACtD,MAAO,EAAK,CACZ,MAAU,MACR,YAAY,6CAAuD,OAAO,CAAG,GAC/E,EAGF,IAAM,EAAwC,CAC5C,eAAgB,EAChB,qBAAsB,WACtB,wBAAyB,GACzB,mBAAoB,MACtB,EACA,GAAI,EAAO,YACT,EAAc,0BAA4B,EAAO,YAEnD,GAAI,EAAO,mBACT,OAAO,OAAO,EAAe,EAAO,kBAAkB,EAGxD,IAAM,EAAW,GAAgB,EAAE,MACjC,GAAuB,CAAa,CACtC,EAEM,EAAS,IAAI,EAAc,CAC/B,cACA,YACA,SACA,iBACA,SACA,YAAa,EAAO,aAAe,KACnC,aACA,eAAgB,IAAI,GAAmB,CAAE,UAAS,CAAC,EACnD,SACA,QAAS,EAAO,QAChB,cAAe,IAAM,EAAO,eAAiB,CAAC,CAAG,CACnD,CAAC,EAEK,EAAwB,IAAI,GAAmB,CACnD,WACA,QAAS,EAAO,QAChB,WAAY,EAAO,WACnB,eAAgB,CACd,EAAO,iBAAiB,EACxB,GAAI,EAAO,gBAAkB,CAAC,CAChC,CACF,CAAC,EAMD,GALA,EAAO,gBAAkB,EAEX,EAAuB,YAAY,EAC3C,SAAS,CAAM,EAEjB,EAAO,WAAa,GACtB,EAAO,UAAU,EAGnB,OAAO,EAST,eAAe,EAAyB,CACtC,GAAI,KAAK,qBAAsB,OAAO,KAAK,qBAC3C,IAAM,EAAO,KAAK,eAAe,SAAS,GAAG,EACzC,KAAK,eAAiB,GACtB,KAAK,eAAiB,IAAM,GAOhC,OANA,KAAK,qBAAuB,IAAI,EAC9B,EACA,KAAK,eACL,KAAK,uBACL,KAAK,iBACP,EACO,KAAK,qBAId,gBAAgB,EAAiC,CAC/C,GAAI,KAAK,sBAAuB,OAAO,KAAK,sBAS5C,OARA,KAAK,sBAAwB,IAAI,GAC/B,KACA,KAAK,gBAAgB,EACrB,CACE,QAAS,KAAK,SACd,cAAe,KAAK,cACtB,CACF,EACO,KAAK,sBAEhB,IC/PA,KACA,KACA,KACA,ICoBO,MAAe,EAA6C,CAGnE,CCtBA,ICJA,kBCOA,IAPA,iBASM,GAAmB,KAQlB,MAAe,EAA0C,CAC3C,QACA,WACA,aAEnB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,OAoBN,MAAK,CACnB,EACA,EACA,EACA,EACwD,CACxD,IAAM,EAAY,KAAK,IAAI,EAE3B,MAAO,GAAM,CACX,IAAM,GAAW,KAAK,IAAI,EAAI,GAAa,KAC3C,GAAI,EAAU,EACZ,MAAU,MAAM,8BAA8B,IAAiB,EAGjE,IAAM,EAAW,MAAM,KAAK,QAAQ,gCAClC,EACA,CACF,EACM,EAAc,EAAS,SAAW,CAAC,EAGzC,GAFkB,EAAY,QAEb,EAAe,CAC9B,IAAM,EAAM,EAAS,gBAAkB,+BAOvC,OANA,QAAQ,IACN,GAAG,UAAG,MAAM,GAAQ,kCAAkC,UAAG,KAAK,GAAG,EAAQ,QAAQ,CAAC,IAAI,GACxF,EAIO,CAAE,QAAS,EAAoC,KAAI,EAG5D,MAAM,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,EAAgB,CAAC,GAI9D,eAAe,CACvB,EACA,EACA,EACA,EACiB,CACjB,IAAM,EAA2B,CAAC,EAC9B,EAAS,EACT,EAAS,EAEb,QAAQ,IAAI,EAEZ,QAAS,EAAI,EAAG,EAAI,EAAY,OAAQ,IAAK,CAC3C,IAAM,EAAM,EAAY,GAClB,EAAU,EAAI,QAAQ,MAAM,CAAC,IAAM,QAAQ,EAAE,OAAO,CAAC,EAE3D,GAAI,EACF,IACA,QAAQ,IACN,GAAG,UAAG,MAAM,GAAQ,aAAa,EAAI,MAAM,UAAG,MAAM,QAAQ,GAC9D,EAEA,SACA,QAAQ,IACN,GAAG,UAAG,IAAI,GAAQ,aAAa,EAAI,MAAM,UAAG,IAAI,QAAQ,GAC1D,EAGF,QAAW,KAAK,EAAI,QAAS,CAC3B,IAAM,EAAW,EAAE,QAAU,KAAO,EAAE,MAAM,QAAQ,CAAC,EAAI,MACnD,EAAU,EAAE,QAAU,UAAG,MAAM,CAAQ,EAAI,UAAG,IAAI,CAAQ,EAChE,QAAQ,IACN,KAAK,UAAG,IAAI,GAAG,EAAE,OAAO,KAAK,KAAW,UAAG,IAAI,eAAe,EAAE,YAAY,GAC9E,EAGF,EAAQ,KAAK,CAAE,UAAS,QAAS,EAAI,QAAS,QAAS,EAAS,EAAG,CAAC,EAItE,GADA,QAAQ,IAAI,EACR,IAAW,EAAQ,OACrB,QAAQ,IACN,GAAG,UAAG,KAAK,UAAG,MAAM,qBAA0B,CAAC,MAAM,KAAU,EAAQ,SACzE,EAEA,aAAQ,IACN,GAAG,UAAG,KAAK,UAAG,OAAO,YAAiB,CAAC,KAAK,UAAG,MAAM,GAAG,UAAe,OAAO,UAAG,IAAI,GAAG,UAAe,GACzG,EAKF,GAHA,QAAQ,IAAI,GAAG,UAAG,IAAI,oBAAoB,KAAK,UAAG,UAAU,CAAG,GAAG,EAClE,QAAQ,IAAI,EAER,GAAc,EAAQ,KAAK,CAAC,IAAM,CAAC,EAAE,OAAO,EAAG,CACjD,IAAM,EAAQ,CACZ,sBAAsB,KAAU,EAAQ,wBAC1C,EACA,QAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,GAAI,CAAC,EAAQ,GAAG,QAAS,CACvB,EAAM,KAAK,aAAa,EAAI,IAAI,EAChC,QAAW,KAAK,EAAQ,GAAG,QACzB,GAAI,CAAC,EAAE,SAIL,GAHA,EAAM,KACJ,OAAO,EAAE,SAAS,EAAE,QAAU,KAAO,EAAE,MAAM,QAAQ,CAAC,EAAI,qBAAqB,EAAE,YACnF,EACI,EAAE,OAAQ,EAAM,KAAK,SAAS,EAAE,QAAQ,GAKpD,MAAU,MAAM,EAAM,KAAK;AAAA,CAAI,CAAC,EAGlC,OAAO,OAGH,IAAG,CACP,EACA,EACA,EACA,EAAsB,GACtB,EAAyB,IACC,CAC1B,GAAI,CAAC,KAAK,WAIR,OAHA,EAAO,MACL,kEACF,EACO,CAAC,EAEV,IAAM,EAAY,KAAK,WACjB,EAAS,OAAO,WAAW,EAC3B,EAAY,IAAI,KAAK,EAAE,YAAY,EAEzC,QAAQ,IAAI,EACZ,QAAQ,IAAI,UAAG,KAAK,UAAG,KAAK,qBAAqB,CAAC,CAAC,EACnD,QAAQ,IAAI,GAAG,UAAG,IAAI,MAAM,KAAK,GAAa,EAC9C,QAAQ,IAAI,GAAG,UAAG,IAAI,UAAU,KAAK,KAAK,cAAc,EACxD,QAAQ,IACN,GAAG,UAAG,IAAI,WAAW,KAAK,EAAS,YAAY,UAAG,IAAI,UAAU,KAAK,EAAQ,QAC/E,EACA,QAAQ,IAAI,EAEZ,IAAM,EAAU,KAAK,cACnB,EACA,EACA,EACA,EACA,EACA,CACF,EAEM,EAAgB,MAAM,KAAK,QAC/B,EACA,EACA,EACA,EACA,CACF,GAEQ,QAAS,EAAa,OAAQ,MAAM,KAAK,MAC/C,EACA,EACA,EACA,CACF,EAEA,OAAO,KAAK,gBAAgB,EAAU,EAAa,EAAK,CAAU,EAEtE,CD9LO,MAAM,WAA6B,EAAuB,CACrD,aAAa,CACrB,EACA,EACA,EACA,EACA,EACA,EACsB,CACtB,MAAO,CACL,GAAI,EACJ,WAAY,EACZ,UAAW,EACX,WAAY,EACZ,SAAU,EAAS,IAAI,CAAC,IAAM,EAAE,OAAO,CAAC,EACxC,iBAAkB,CAAC,EACnB,eAAgB,CAAC,CACnB,OAGc,QAAO,CACrB,EACA,EACA,EACA,EACA,EACiB,CACjB,IAAM,EAAY,KAAK,IAAI,EAErB,EAAmC,EAAS,QAChD,CAAC,EAAS,IACR,EAAQ,IAAI,CAAC,IACX,EACG,MAAM,CAAO,EACb,KACC,CAAC,KAA6B,CAC5B,aACA,SACA,SACA,MAAO,IACT,EACF,EACC,MACC,CAAC,KAAmC,CAClC,aACA,SACA,OAAQ,KACR,MAAO,OAAO,CAAG,CACnB,EACF,CACJ,CACJ,EAEM,EAAa,MAAM,QAAQ,IAAI,CAAI,EACnC,IAAY,KAAK,IAAI,EAAI,GAAa,MAAM,QAAQ,CAAC,EAC3D,QAAQ,IACN,GAAG,WAAG,MAAM,GAAQ,0BAA0B,WAAG,KAAK,GAAG,IAAU,GACrE,EAGA,IAAM,EAAY,IAAI,IACtB,QAAW,KAAM,EAAY,CAC3B,IAAI,EAAO,EAAU,IAAI,EAAG,UAAU,EACtC,GAAI,CAAC,EACH,EAAO,CAAC,EACR,EAAU,IAAI,EAAG,WAAY,CAAI,EAEnC,EAAK,KAAK,CAAE,EAGd,IAAM,EAAkC,EAAS,IAAI,CAAC,EAAS,IAAM,CAEnE,MAAO,CACL,cAFc,EAAU,IAAI,CAAC,GAAK,CAAC,GAEb,IAAI,CAAC,IAAO,CAChC,GAAI,EAAG,QAAU,KACf,MAAO,CACL,YAAa,EAAG,OAAO,YAAY,KACnC,MAAO,EACP,OAAQ,GACR,MAAO,EAAG,KACZ,EAEF,IAAM,EAAI,EAAG,OACb,MAAO,CACL,YAAa,EAAG,OAAO,YAAY,KACnC,MAAO,EAAE,MACT,OAAQ,EAAE,UACN,EAAE,WAAa,CACjB,UAAW,EAAE,UAAU,IAAI,CAAC,KAAO,CACjC,QAAS,EAAE,OACX,eAAgB,EAAE,aACpB,EAAE,CACJ,CACF,EACD,EACD,YAAa,EAAQ,OAAO,CAC9B,EACD,EAOD,OALA,MAAM,KAAK,QAAQ,kCAAkC,EAAW,CAC9D,QAAS,EACT,IAAK,CACP,CAAC,EAEM,EAAS,OAEpB,CEhIA,kBAWO,MAAM,WAA8B,EAAwB,CACvD,aAAa,CACrB,EACA,EACA,EACA,EACA,EACA,EACsB,CACtB,MAAO,CACL,GAAI,EACJ,WAAY,EACZ,UAAW,EACX,WAAY,EACZ,SAAU,EAAS,IAAI,CAAC,IAAM,EAAE,OAAO,CAAC,EACxC,iBAAkB,EAAQ,IAAI,CAAC,KAAU,CAAE,MAAK,EAAE,EAClD,eAAgB,CAAC,CACnB,OAGc,QAAO,CACrB,EACA,EACA,EACA,EACA,EACiB,CAGjB,OAFA,MAAM,KAAK,QAAQ,gCAAgC,EAAW,CAAO,EACrE,QAAQ,IAAI,GAAG,WAAG,MAAM,GAAQ,wBAAwB,EACjD,EAAS,OAEpB,CHYO,MAAM,EAAW,CACL,OACA,QAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,OAAS,IAAI,GAAqB,EAAQ,EAAW,CAAW,EACrE,KAAK,QAAU,IAAI,GAAsB,EAAQ,EAAW,CAAW,EAYzE,GAAG,CAAC,EAAyD,CAC3D,IACE,WACA,UACA,cACA,aAAa,GACb,iBAAiB,KACf,EAEE,EAAgB,EAAQ,OAC5B,CAAC,IAAmB,OAAO,IAAM,QACnC,EACM,EAAe,EAAQ,OAAO,CAAC,IAAkB,aAAa,EAAK,EAEzE,GAAI,EAAa,OAAS,GAAK,EAAc,OAAS,EAKpD,OAJA,EAAO,MACL,uIAEF,EACO,QAAQ,QAAQ,CAAC,CAAC,EAE3B,GAAI,EAAa,SAAW,GAAK,EAAc,SAAW,EAKxD,OAJA,EAAO,MACL,gGAEF,EACO,QAAQ,QAAQ,CAAC,CAAC,EAG3B,GAAI,EAAa,OAAS,EACxB,OAAO,KAAK,OAAO,IACjB,EACA,EACA,EACA,EACA,CACF,EAGF,OAAO,KAAK,QAAQ,IAClB,EACA,EACA,EACA,EACA,CACF,EAEJ,CI7GO,MAAM,EAAkB,CACZ,QACA,WACA,aAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,EAItB,MAAM,EAAe,CACnB,OAAO,IAAI,GAAW,KAAK,QAAS,KAAK,WAAY,KAAK,YAAY,EAE1E,CC/BA,KACA,ICFA,KAiBO,MAAM,EAAQ,CACV,KACA,UACA,YACA,YACA,SACQ,QAEjB,WAAW,CAAC,EAOT,CACD,KAAK,KAAO,EAAK,KACjB,KAAK,UAAY,EAAK,UACtB,KAAK,YAAc,EAAK,YACxB,KAAK,YAAc,EAAK,aAAe,UACvC,KAAK,SAAW,EAAK,UAAY,CAAC,EAClC,KAAK,QAAU,EAAK,QAAU,UAS1B,YAAW,CACf,EACA,EAAoB,IACL,CACf,GAAI,CAAC,KAAK,QAAS,OAEnB,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EAAW,CACnD,IAAM,EAAQ,EAAS,MAAM,EAAG,EAAI,CAAS,EAC7C,MAAM,KAAK,QAAQ,kDACjB,KAAK,UACL,KAAK,KACL,CAAE,SAAU,EAAM,IAAI,CAAC,IAAM,EAAE,OAAO,CAAC,CAAE,CAC3C,QAaE,YAAW,CAAC,EAAkB,EAAoB,IAAoB,CAC1E,IAAQ,YAAa,KAAa,uBAC5B,EAAM,MAAM,EAAS,EAAU,OAAO,EAGtC,EAFkB,KAAK,MAAM,CAAG,EAEL,IAAI,CAAC,IAAS,CAC7C,GAAI,OAAO,IAAS,UAAY,IAAS,KACvC,MAAU,MAAM,+CAA+C,EAEjE,OAAO,EAAQ,OAAO,CAA+B,EACtD,EAED,MAAM,KAAK,YAAY,EAAU,CAAS,KAIxC,OAAM,EAAW,CACnB,OAAO,KAAK,SAAS,QAItB,OAAO,SAAS,EAAsB,CACrC,OAAO,KAAK,SAAS,OAAO,UAAU,EAGxC,QAAQ,EAAW,CACjB,MAAO,gBAAgB,KAAK,kBAAkB,KAAK,SAAS,UAEhE,CCvEA,IAAM,GAAa,QAWZ,SAAS,EAAqB,CAAC,EAAuB,CAC3D,GAAI,OAAO,IAAW,UAAY,IAAW,MAAQ,MAAM,QAAQ,CAAM,EACvE,MAAU,MAAM,uCAAuC,EAGzD,IAAM,EAAI,EACV,GAAI,EAAE,OAAS,SACb,MAAU,MAAM,sDAAsD,EAExE,IAAM,EAAa,EAAE,WACrB,GACE,OAAO,IAAe,UACtB,IAAe,MACf,MAAM,QAAQ,CAAU,EAExB,MAAU,MAAM,oDAAoD,EAEtE,IAAM,EAAY,OAAO,QAAQ,CAAqC,EACnE,OACC,GAAI,KACF,OAAO,IAAS,UAChB,IAAS,MACR,EAAiC,OAAS,EAC/C,EACC,IAAI,EAAE,KAAU,CAAI,EACvB,GAAI,EAAU,OAAS,EACrB,MAAU,MACR,yDAAyD,EAAU,WAAW,EAAU,KAAK,IAAI,IACnG,EAIJ,SAAS,EAAc,CAAC,EAAmC,CACzD,GAAI,OAAO,IAAU,UAAW,MAAO,UACvC,GAAI,OAAO,IAAU,SACnB,OAAO,OAAO,UAAU,CAAK,EAAI,UAAY,SAE/C,GAAI,OAAO,IAAU,SAAU,MAAO,SACtC,GAAI,MAAM,QAAQ,CAAK,EAAG,MAAO,QACjC,GAAI,OAAO,IAAU,UAAY,IAAU,KAAM,MAAO,SACxD,MAAO,SAWF,SAAS,EAAuB,CAAC,EAAoC,CAC1E,GAAI,EAAS,SAAW,EACtB,MAAU,MACR,wGACF,EAGF,IAAM,EAAoD,CAAC,EACvD,EAA8B,KAElC,QAAW,KAAW,EAAU,CAC9B,IAAM,EAAO,IAAI,IACjB,QAAY,EAAK,KAAU,OAAO,QAAQ,EAAQ,UAAU,EAAG,CAC7D,GAAI,IAAU,MAAQ,IAAU,OAAW,SAE3C,GADA,EAAK,IAAI,CAAG,EACR,EAAE,KAAO,GACX,EAAW,GAAO,CAAE,KAAM,GAAe,CAAK,CAAE,EAGpD,GAAI,IAAY,KACd,EAAU,EACL,QACL,EAAQ,OAAS,EAAK,MACtB,CAAC,CAAC,GAAG,CAAO,EAAE,MAAM,CAAC,IAAM,EAAK,IAAI,CAAC,CAAC,EAEtC,MAAU,MACR,+JACF,EAIJ,MAAO,CAAE,KAAM,SAAU,YAAW,EFrG/B,MAAM,EAAe,CACT,QACA,WACA,aAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,OAShB,IAAG,CAAC,EAAuC,CAC/C,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EACJ,MAAM,KAAK,QAAQ,yCACjB,EACA,CACF,EAEI,EAAc,EAAS,cAAgB,UAMvC,GAAY,EAAS,UAAY,CAAC,GAAG,IAAI,CAAC,IAC9C,EAAQ,KAAK,IACP,EAAE,MAAQ,CAAC,EACf,WAAY,EAAE,WACd,WAAY,EAAE,YAAc,EAC9B,CAAgB,CAClB,EAEA,OAAO,IAAI,GAAQ,CACjB,OACA,YACA,YAAa,KAAK,aAClB,cACA,WACA,OAAQ,KAAK,OACf,CAAC,OAYG,OAAM,CACV,EACA,EAKI,CAAC,EACoB,CACzB,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IACE,WAAW,CAAC,EACZ,YAAY,GACZ,YAAY,IACZ,UACE,EAEA,EACJ,GAAI,IAAW,OACb,GAAsB,CAAM,EAC5B,EAAiB,EACZ,KACL,GAAI,EAAS,SAAW,EACtB,MAAU,MACR,gGACF,EAEF,EAAiB,GAAwB,CAAQ,EAGnD,MAAM,KAAK,QAAQ,uBAAuB,EAAW,CACnD,OACA,SAAU,CAAC,EACX,aAAc,UACd,YACA,OAAQ,CACV,CAAC,EAED,IAAM,EAAU,IAAI,GAAQ,CAC1B,OACA,YACA,YAAa,KAAK,aAClB,WACA,OAAQ,KAAK,OACf,CAAC,EAED,GAAI,EAAS,OAAS,EACpB,MAAM,EAAQ,YAAY,EAAU,CAAS,EAG/C,OAAO,EAQT,IAAI,EAAmD,CACrD,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,QAAQ,QAAQ,IAAI,EAE3C,OAAO,KAAK,QAAQ,sBAAsB,CAAS,EAG7C,gBAAgB,EAAkB,CACxC,GAAI,CAAC,KAAK,WAIR,OAHA,EAAO,MACL,yEACF,EACO,KAET,OAAO,KAAK,WAEhB,CG9JA,IAuBO,MAAM,EAAkB,CACZ,QACA,WACA,aAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,OAiBhB,OAAM,CAAC,EAUkB,CAC7B,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EAAsC,CAC1C,KAAM,EAAQ,KACd,OAAQ,EAAQ,OAChB,MAAO,EAAQ,MACf,WAAY,EAAQ,SACtB,EACA,GAAI,EAAQ,cAAgB,OAC1B,EAAQ,YAAc,EAAQ,YAChC,GAAI,EAAQ,mBAAqB,OAC/B,EAAQ,kBAAoB,EAAQ,iBACtC,GAAI,EAAQ,aAAe,OACzB,EAAQ,WAAa,EAAQ,WAC/B,GAAI,EAAQ,WAAa,OAAW,EAAQ,UAAY,EAAQ,SAChE,GAAI,EAAQ,WAAa,OAAW,EAAQ,UAAY,EAAQ,SAOhE,MAAO,CACL,SANe,MAAM,KAAK,QAAQ,qBAClC,EACA,CACF,GAGoB,SAClB,KAAM,EAAQ,KACd,OAAQ,EAAQ,OAChB,MAAO,EAAQ,MACf,UAAW,EAAQ,UACnB,YAAa,EAAQ,aAAe,KACpC,iBAAkB,EAAQ,kBAAoB,KAC9C,WAAY,EAAQ,YAAc,KAClC,SAAU,EAAQ,UAAY,KAC9B,SAAU,EAAQ,UAAY,KAC9B,aAAc,EACd,aAAc,CAChB,OA2BI,OAAM,CAAC,EAckB,CAC7B,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EAAsC,CAAC,EAC7C,GAAI,EAAQ,SAAW,OAAW,EAAQ,OAAS,EAAQ,OAC3D,GAAI,EAAQ,QAAU,OAAW,EAAQ,MAAQ,EAAQ,MACzD,GAAI,EAAQ,YAAc,OAAW,EAAQ,WAAa,EAAQ,UAClE,GAAI,EAAQ,cAAgB,OAC1B,EAAQ,YAAc,EAAQ,YAChC,GAAI,EAAQ,mBAAqB,OAC/B,EAAQ,kBAAoB,EAAQ,iBACtC,GAAI,EAAQ,aAAe,OACzB,EAAQ,WAAa,EAAQ,WAC/B,GAAI,EAAQ,WAAa,OAAW,EAAQ,UAAY,EAAQ,SAChE,GAAI,EAAQ,WAAa,OAAW,EAAQ,UAAY,EAAQ,SAChE,GAAI,EAAQ,qBAAuB,OACjC,EAAQ,qBAAuB,EAAQ,mBACzC,GAAI,EAAQ,qBAAuB,OACjC,EAAQ,qBAAuB,EAAQ,mBACzC,GAAI,EAAQ,qBAAuB,OACjC,EAAQ,qBAAuB,EAAQ,mBACzC,GAAI,EAAQ,qBAAuB,OACjC,EAAQ,qBAAuB,EAAQ,mBAEzC,IAAM,EAAW,MAAM,KAAK,QAAQ,+BAClC,EACA,EAAQ,QACR,CACF,EAEA,OAAO,GAAqB,CAAQ,EAG9B,gBAAgB,EAAkB,CACxC,GAAI,CAAC,KAAK,WAIR,OAHA,EAAO,MACL,6EACF,EACO,KAET,OAAO,KAAK,WAEhB,CAEA,SAAS,EAAoB,CAC3B,EACY,CACZ,IAAM,EAAQ,EAAS,MACvB,MAAO,CACL,QAAS,EAAM,GACf,KAAM,EAAM,KACZ,OAAQ,EAAM,QAAU,GACxB,MAAO,EAAM,OAAS,GACtB,UAAW,EAAM,WACjB,YAAa,EAAM,aAAe,KAClC,iBAAkB,EAAM,mBAAqB,KAC7C,WAAY,EAAM,YAAc,KAChC,SAAU,EAAM,WAAa,KAC7B,SAAU,EAAM,WAAa,KAC7B,aAAc,EAAM,eAAiB,KACrC,aAAc,EAAM,eAAiB,IACvC,EC5MF,ICIA,IAEA,KACA,KACA,ICeO,SAAS,EAAkB,CAAC,EAA2C,CAC5E,IAAM,EAAS,MAAM,QAAQ,EAAK,MAAM,EACnC,EAAK,OAAO,OAAO,CAAC,IAAM,OAAO,IAAM,UAAY,IAAM,IAAI,EAI9D,CAAC,EACL,MAAO,CACL,GAAI,OAAO,EAAK,KAAO,SAAW,EAAK,GAAK,GAC5C,KAAM,OAAO,EAAK,OAAS,SAAW,EAAK,KAAO,GAClD,UAAW,OAAO,EAAK,aAAe,SAAW,EAAK,WAAa,GACnE,YAAa,OAAO,EAAK,cAAgB,SAAW,EAAK,YAAc,KACvE,UAAW,OAAO,EAAK,aAAe,SAAW,EAAK,WAAa,KACnE,QACF,EA8EK,SAAS,EAAa,CAAC,EAAiD,CAC7E,IAAM,EAAuB,CAAC,EAC9B,QAAW,KAAU,EACnB,QAAW,KAAU,EAAO,QAC1B,GAAI,EAAO,UAAY,MAAQ,EAAO,UAAY,OAChD,EAAU,KAAK,EAAO,OAAO,EAInC,GAAI,EAAU,SAAW,EAAG,OAAO,KACnC,OAAO,EAAU,MAAM,CAAC,IAAM,CAAC,EC/HjC,iBASO,SAAS,CAAQ,CAAC,EAAyC,CAChE,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,CAAC,MAAM,QAAQ,CAAK,EACrE,EACD,CAAC,EAGA,SAAS,CAAO,CAAC,EAA2B,CACjD,OAAO,MAAM,QAAQ,CAAK,EAAI,EAAQ,CAAC,EAGlC,SAAS,CAAQ,CAAC,EAAwB,CAC/C,OAAO,OAAO,IAAU,SAAW,EAAQ,GAG7C,SAAS,EAAW,CAAC,EAAwB,CAC3C,OAAO,EAAQ,MAAQ,KAKlB,SAAS,EAAW,CACzB,EACwB,CACxB,IAAyB,WAAnB,EACc,WAAd,EACa,UAAb,EACa,UAAb,GAFO,EAGb,GAAI,IAAc,SAChB,OAAO,OAAO,IAAS,UAAY,GAAY,CAAI,EAAI,KAEzD,GAAI,IAAc,cAChB,OAAO,OAAO,IAAQ,SAAW,EAAM,KAEzC,GAAI,IAAc,UAChB,OAAO,OAAO,IAAQ,SAAW,EAAM,KAEzC,GAAI,OAAO,IAAS,UAAW,OAAO,GAAY,CAAI,EACtD,GAAI,OAAO,IAAQ,SAAU,OAAO,EACpC,GAAI,OAAO,IAAQ,SAAU,OAAO,EACpC,OAAO,KAGT,SAAS,EAAU,CAAC,EAA6B,CAC/C,GAAI,OAAO,IAAQ,UAAY,IAAQ,KAAM,CAC3C,IAAM,EAAQ,EAAgC,KAC9C,OAAO,OAAO,IAAS,UAAY,EAAO,EAAO,KAEnD,GAAI,OAAO,IAAQ,SAAU,CAC3B,GAAI,CACF,IAAM,EAAkB,KAAK,MAAM,CAAG,EACtC,GAAI,OAAO,IAAW,UAAY,IAAW,KAAM,CACjD,IAAM,EAAQ,EAAmC,KACjD,GAAI,OAAO,IAAS,SAAU,OAAO,GAAQ,MAE/C,KAAM,EAGR,OAAO,GAAO,KAEhB,OAAO,KAIF,SAAS,EAAsB,CACpC,EACuC,CACvC,GAAI,CAAC,GAAQ,EAAK,SAAW,EAAG,OAChC,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAO,EAAM,CACtB,GAAI,CAAC,EAAI,MAAQ,CAAC,EAAI,QACpB,MAAU,MACR,2DACF,EAEF,IAAM,EAAiC,CAAC,EACxC,GAAI,EAAI,UAAY,OAAW,EAAM,SAAW,EAAI,QACpD,GAAI,EAAI,OAAS,OAAW,EAAM,KAAO,EAAI,KAC7C,GAAI,EAAI,MAAQ,OAAW,EAAM,IAAM,EAAI,IAC3C,GAAI,EAAI,UAAY,OAAW,EAAM,QAAU,EAAI,QACnD,GAAI,EAAI,eAAiB,OAAW,EAAM,cAAgB,EAAI,aAC9D,GAAI,EAAI,eAAiB,OAAW,EAAM,cAAgB,EAAI,aAC9D,EAAI,KAAK,CAAK,EAEhB,OAAO,EAKF,SAAS,EAAY,CAC1B,EACA,EACA,EACwB,CACxB,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAY,EAAS,EAAK,UAAU,EACpC,EAAO,EAAS,EAAK,IAAI,EAEzB,EAA+B,CAAC,EACtC,QAAW,KAAO,EAAQ,EAAK,OAAO,EAAG,CACvC,IAAM,EAAS,EAAS,CAAG,EACrB,EAAoC,CACxC,SAAU,EAAO,SACjB,oBAAqB,EAAO,oBAC5B,oBAAqB,EAAO,mBAC9B,EACM,EAAS,GAAW,EAAO,MAAM,EACvC,GAAI,EAAQ,EAAS,OAAS,EAC9B,EAAQ,KAAK,CACX,KAAM,EAAS,EAAO,UAAU,EAChC,MAAO,GAAY,CAAM,EACzB,UACE,OAAO,EAAO,aAAe,SAAW,EAAO,WAAa,KAC9D,MAAO,OAAO,EAAO,QAAU,SAAW,EAAO,MAAQ,KACzD,QAAS,OAAO,EAAO,UAAY,UAAY,EAAO,QAAU,KAChE,UACF,CAAC,EAGH,GAAI,EAAiB,CACnB,IAAM,EAAS,QAAQ,EAAgB,IAAK,CAAK,EAAG,CAAO,CAAC,EAC5D,QAAW,KAAU,EAAS,EAAO,QAAU,EAGjD,EAAQ,KAAK,CACX,YACA,OACA,UACA,oBAAqB,EAAY,EACnC,CAAC,EAEH,OAAO,EAIF,SAAS,EAAe,CAAC,EAAkC,CAChE,GAAI,EAAQ,SAAW,YACrB,MAAU,MACR,YAAY,EAAQ,mCAAmC,EAAQ,SACjE,EAEF,IAAM,EAAS,EAAQ,QACpB,OAAO,CAAC,IACP,EAAO,QAAQ,KAAK,CAAC,IAAW,EAAO,UAAY,EAAK,CAC1D,EACC,IAAI,CAAC,IAAW,EAAO,SAAS,EACnC,GAAI,EAAO,OAAS,GAAK,EAAQ,SAAW,GAC1C,MAAU,MACR,YAAY,EAAQ,2CAA2C,EAAO,sBAAsB,KAAK,UAAU,CAAM,GACnH,EAKG,SAAS,EAAY,CAC1B,EACA,EACA,EACM,CACN,QAAQ,IAAI,EACZ,QAAQ,IAAI,UAAG,KAAK,UAAG,KAAK,uBAAuB,CAAC,CAAC,EACrD,QAAQ,IAAI,GAAG,UAAG,IAAI,SAAS,KAAK,GAAY,EAChD,QAAQ,IAAI,GAAG,UAAG,IAAI,UAAU,KAAK,GAAa,EAClD,QAAQ,IAAI,GAAG,UAAG,IAAI,WAAW,KAAK,GAAc,EACpD,QAAQ,IAAI,EAIP,SAAS,EAAc,CAC5B,EACA,EACM,CAgCN,GA/BA,QAAQ,IAAI,EACZ,EAAQ,QAAQ,CAAC,EAAQ,IAAM,CAI7B,GAHmB,EAAO,QAAQ,KAChC,CAAC,IAAM,EAAE,UAAY,MAAQ,EAAE,UAAY,MAC7C,EACgB,CACd,IAAM,EAAS,EAAO,QAAQ,MAAM,CAAC,IAAM,EAAE,UAAY,EAAI,EAC7D,QAAQ,IACN,EACI,GAAG,UAAG,MAAM,GAAE,aAAa,EAAI,MAAM,UAAG,MAAM,QAAQ,IACtD,GAAG,UAAG,IAAI,GAAE,aAAa,EAAI,MAAM,UAAG,IAAI,QAAQ,GACxD,EAEA,aAAQ,IAAI,GAAG,UAAG,KAAK,GAAE,aAAa,EAAI,IAAI,EAEhD,QAAW,KAAK,EAAO,QAAS,CAC9B,GAAI,EAAE,MAAO,CACX,QAAQ,IAAI,KAAK,UAAG,IAAI,GAAG,EAAE,OAAO,KAAK,UAAG,IAAI,UAAU,EAAE,OAAO,GAAG,EACtE,SAEF,IAAM,EAAW,EAAE,QAAU,KAAO,MAAQ,OAAO,EAAE,KAAK,EACpD,EACJ,EAAE,UAAY,GACV,UAAG,MAAM,CAAQ,EACjB,EAAE,UAAY,GACZ,UAAG,IAAI,CAAQ,EACf,EACR,QAAQ,IAAI,KAAK,UAAG,IAAI,GAAG,EAAE,OAAO,KAAK,GAAS,GAErD,EACD,QAAQ,IAAI,EACR,EACF,QAAQ,IACN,GAAG,UAAG,IAAI,oBAAoB,KAAK,UAAG,UAAU,CAAY,GAC9D,EACA,QAAQ,IAAI,EFxLhB,IAAM,GAAoB,IAAI,IAAI,CAAC,YAAa,QAAS,WAAW,CAAC,EAC/D,GAAqB,IACrB,GAAkB,IAClB,GAAmB,KACnB,GAAY,IA2BX,MAAM,EAAkB,CACZ,QACA,WACA,aAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,OAGhB,sBAAqB,CACzB,EACA,EACkC,CAClC,IAAM,EACJ,MAAM,KAAK,QAAQ,iDACjB,KAAK,WACL,EAAW,SACb,EACI,EAAW,EAAQ,EAAS,QAAQ,EACvC,OAAO,CAAC,IAAM,OAAO,IAAM,UAAY,IAAM,IAAI,EACjD,IAAI,CAAC,IAAM,CAA4B,EAE1C,GAAI,IAAmB,OAAW,CAChC,GAAI,EAAS,SAAW,EACtB,MAAU,MACR,2BAA2B,EAAW,uBACxC,EAEF,OAAO,EAAS,OAAO,CAAC,EAAM,IAC5B,OAAO,EAAE,gBAAkB,CAAC,EAAI,OAAO,EAAK,gBAAkB,CAAC,EAC3D,EACA,CACN,EAGF,GAAI,OAAO,IAAmB,SAAU,CACtC,IAAM,EAAQ,EAAS,KACrB,CAAC,IAAM,OAAO,EAAE,gBAAkB,CAAC,IAAM,CAC3C,EACA,GAAI,EAAO,OAAO,EACb,KACL,IAAM,EAAQ,EAAS,KAAK,CAAC,IAAM,EAAE,aAAe,CAAc,EAClE,GAAI,EAAO,OAAO,EAEpB,MAAU,MACR,mBAAmB,KAAK,UAAU,CAAc,oDAAoD,EAAW,OACjH,OAGI,cAAa,CACjB,EACA,EACuB,CACvB,IAAM,EAAyB,CAAC,EAC5B,EACA,EACA,EAAY,EAEhB,OAAS,CACP,GAAI,GAAa,GACf,MAAU,MACR,0BAA0B,wCAA+C,EAAW,OACtF,EAEF,IAAM,EACJ,MAAM,KAAK,QAAQ,6CACjB,KAAK,WACL,EAAW,UACX,OAAO,CAAa,EACpB,OAAO,EAAkB,EACzB,EACA,CACF,EACF,GAAa,EAEb,QAAW,KAAS,EAAQ,EAAK,OAAO,EAAG,CACzC,IAAM,EAAU,EAAS,EAAS,CAAK,EAAE,OAAO,EAC5C,EAAO,EAAQ,KACnB,GAAI,OAAO,IAAS,SAClB,GAAI,CACF,EAAO,KAAK,MAAM,CAAI,EACtB,KAAM,CACN,EAAO,CAAC,EAGZ,EAAS,KAAK,CACZ,UAAW,EAAS,EAAQ,UAAU,EACtC,KAAM,EAAS,CAAI,EACnB,eACE,OAAO,EAAQ,mBAAqB,SAChC,EAAQ,iBACR,KACN,UACE,OAAO,EAAQ,aAAe,SAAW,EAAQ,WAAa,IAClE,CAAC,EAGH,IAAM,EAAW,EAAS,EAAK,QAAQ,EACjC,EAAa,EAAS,EAAS,UAAU,EAC/C,GAAI,CAAC,EAAS,SAAW,OAAO,KAAK,CAAU,EAAE,SAAW,EAAG,MAC/D,EAAkB,EAAS,EAAW,UAAU,EAChD,EAAkB,EAAS,EAAW,UAAU,EAGlD,OAAO,EAGT,aAAa,CACX,EACA,EAMI,CAAC,EAC6B,CAClC,IAAM,EAAgC,CACpC,eAAgB,EAAW,GAC3B,OAAQ,EAAQ,QAAU,KAC5B,EACA,GAAI,EAAQ,KACV,EAAQ,KAAO,EAAQ,KAEzB,GAAI,OAAO,EAAQ,iBAAmB,SACpC,EAAQ,uBAAyB,EAAQ,eACpC,QAAI,OAAO,EAAQ,iBAAmB,SAC3C,EAAQ,mBAAqB,EAAQ,eAEvC,IAAM,EAAa,GAAuB,EAAQ,aAAa,EAC/D,GAAI,EACF,EAAQ,eACN,EAGJ,IAAM,EAAc,EAAQ,aAAe,CAAC,EAC5C,GAAI,OAAO,KAAK,CAAW,EAAE,OAAS,EACpC,EAAQ,aAAe,OAAO,QAAQ,CAAW,EAAE,IACjD,EAAE,EAAW,MAAc,CACzB,WAAY,EACZ,uBAAwB,CAC1B,EACF,EAGF,OAAO,KAAK,QAAQ,uBAAuB,KAAK,WAAY,CAAO,OAU/D,SAAQ,CACZ,EACA,EACiC,CACjC,IAAM,EAAsB,CAAC,EAGvB,EACJ,EAAuB,YAAY,EAAE,gBAAgB,EACvD,MAAM,EAAc,OAAO,CACzB,YAAa,KAAK,aAClB,OAAQ,KAAK,QAAQ,UAAU,EAC/B,eAAgB,KAAK,QAAQ,kBAAkB,EAC/C,OAAQ,KAAK,QAAQ,WAAW,EAChC,QAAS,EACT,UAAW,EACb,CAAC,EAED,IAAM,EAAsC,CAAC,EAC7C,GAAI,CACF,IAAM,EAAU,EAAO,QAAQ,EAAe,CAAE,SAAU,OAAQ,CAAC,EACnE,QAAW,KAAW,EAAU,CAC9B,IAAM,EAAS,EAAS,OACxB,GAAI,CACF,MAAM,EAAQ,EAAQ,IAAI,EAC1B,MAAO,EAAO,CACd,EAAO,MACL,uCAAuC,EAAQ,cAAc,OAAO,CAAK,GAC3E,EAEF,QAAW,KAAY,EAAS,MAAM,CAAM,EAAG,CAC7C,IAAM,EAAU,EAAS,IAAI,kBAAkB,EAC/C,GAAI,EAAQ,WAAa,OAAO,IAAY,SAAU,CACpD,EAAY,EAAQ,WAAa,EACjC,gBAIN,CAEA,GADA,MAAM,EAAO,WAAW,EACpB,EAAgB,EAAe,UAAU,EAG/C,OAAO,OAGH,kBAAiB,CACrB,EACA,EACiB,CACjB,IAAM,EAAQ,KAAK,IAAI,EACvB,OAAS,CACP,IAAK,KAAK,IAAI,EAAI,GAAS,KAAO,EAChC,MAAU,MACR,YAAY,6BAAqC,IACnD,EAEF,IAAM,EAAW,MAAM,KAAK,QAAQ,iCAClC,KAAK,WACL,CACF,EACM,EAAS,EAAS,EAAS,EAAS,QAAQ,EAAE,MAAM,EAC1D,GAAI,GAAkB,IAAI,CAAM,EAAG,OAAO,EAC1C,MAAM,GAAM,EAAgB,QAI1B,WAAU,CACd,EACqE,CACrE,IAAM,EAAmC,CAAC,EACtC,EAAe,GACf,EACA,EAAY,EAEhB,OAAS,CACP,GAAI,GAAa,GACf,MAAU,MACR,uBAAuB,yBAAgC,GACzD,EAEF,IAAM,EAAW,MAAM,KAAK,QAAQ,sCAClC,KAAK,WACL,EACA,OAAO,EAAe,EACtB,CACF,EACA,GAAa,EAEb,QAAW,KAAQ,EAAQ,EAAS,OAAO,EACzC,EAAM,KAAK,EAAS,CAAI,CAAC,EAE3B,GAAI,CAAC,EAAc,EAAe,EAAS,EAAS,cAAc,EAElE,IAAM,EAAa,EAAS,YAC5B,GAAI,CAAC,EAAS,UAAY,OAAO,IAAe,UAAY,CAAC,EAC3D,MAEF,EAAS,EAGX,MAAO,CAAE,QAAO,cAAa,OAGzB,cAAa,CACjB,EACA,EACA,EACA,EACe,CACf,IAAM,EAAgB,IAAI,IACpB,EAAa,IAAI,IACjB,EAAa,CACjB,EACA,EACA,EACA,IACW,GAAG,QAAa,QAAW,QAAS,IAC3C,EAAU,CAAC,EAAmB,IAClC,GAAG,QAAa,IAElB,QAAW,KAAU,EAAQ,EAAS,eAAe,EAAG,CACtD,IAAM,EAAM,EAAS,CAAM,EACrB,EAAQ,EAAI,OAClB,GAAI,OAAO,IAAU,UAAY,CAAC,EAAO,SACzC,EAAc,IACZ,EACE,EAAS,EAAI,UAAU,EACvB,EAAS,EAAI,QAAQ,EACrB,OAAO,EAAI,qBAAuB,CAAC,EACnC,OAAO,EAAI,qBAAuB,CAAC,CACrC,EACA,CACF,EACA,EAAW,IACT,EAAQ,EAAS,EAAI,UAAU,EAAG,EAAS,EAAI,UAAU,CAAC,EAC1D,CACF,EAGF,IAAM,EAAmB,IAAI,IAC7B,QAAW,KAAU,EACnB,EAAiB,IAAI,EAAO,UAAW,CAAM,EAE/C,IAAM,EAAqD,CAAC,EAC5D,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAY,EAAS,EAAK,UAAU,EACpC,EAAS,EAAiB,IAAI,CAAS,EACvC,EAAiB,EACnB,EAAO,QAAQ,IAAI,CAAC,IAAM,EAAE,SAAW,IAAI,EAC3C,CAAC,EAEC,EAAa,EAAQ,EAAK,OAAO,EACvC,QAAS,EAAQ,EAAG,EAAQ,EAAW,OAAQ,GAAS,EAAG,CACzD,IAAM,EAAS,EAAS,EAAW,EAAM,EACnC,EACJ,EAAc,IACZ,EACE,EACA,EAAS,EAAO,QAAQ,EACxB,OAAO,EAAO,qBAAuB,CAAC,EACtC,OAAO,EAAO,qBAAuB,CAAC,CACxC,CACF,GAAK,EAAW,IAAI,EAAQ,EAAW,EAAS,EAAO,UAAU,CAAC,CAAC,EACrE,GAAI,CAAC,EAAiB,CACpB,EAAO,QACL,oCAAoC,EAAS,EAAO,UAAU,gBAAgB,gCAChF,EACA,SAEF,EAAU,KAAK,CACb,kBAAmB,EACnB,QAAS,EAAQ,EAAe,OAAS,EAAe,GAAS,IACnE,CAAC,GAIL,GAAI,EAAU,SAAW,EAAG,OAC5B,MAAM,KAAK,QAAQ,0CACjB,KAAK,WACL,EACA,CAAE,WAAU,CACd,OAGI,IAAG,CACP,EACA,EAA6B,CAAC,EACF,CAC5B,IACE,gBACA,gBACA,iBACA,kBACA,aAAa,GACb,iBAAiB,IACjB,WACE,EAEJ,GAAI,GAAc,CAAC,EACjB,MAAU,MACR,+EACF,EAGF,IAAM,EAAU,MAAM,KAAK,sBACzB,EACA,CACF,EACM,EAAgB,OAAO,EAAQ,gBAAkB,CAAC,EAClD,EAAW,MAAM,KAAK,cAAc,EAAY,CAAa,EACnE,GAAa,EAAW,KAAM,KAAK,aAAc,EAAS,MAAM,EAChE,EAAO,KACL,mBAAmB,MAAkB,EAAS,mBAChD,EAGA,IAAM,EACJ,OAAO,IAAmB,SAAW,EAAiB,EAEpD,EAAsC,CAAC,EAC3C,GAAI,GAAiB,EAAS,OAAS,EACrC,EAAc,MAAM,KAAK,SAAS,EAAe,CAAQ,EAG3D,IAAM,EAAW,MAAM,KAAK,cAAc,EAAY,CACpD,eAAgB,EAChB,gBACA,cACA,KAAM,CACR,CAAC,EACK,EAAU,EAAS,EAAS,QAAQ,EACpC,EAAY,EAAS,EAAQ,EAAE,EACjC,EAAe,EAAS,EAAS,cAAc,EACnD,EAAO,KACL,oBAAoB,UAAkB,EAAS,iBACjD,EAEA,IAAM,GAAS,MAAM,KAAK,kBAAkB,EAAW,CAAc,GAE7D,SAAO,aAAc,GAAa,MAAM,KAAK,WAAW,CAAS,EACzE,GAAI,EAAU,EAAe,EAE7B,IAAM,EAAU,GAAa,GAAO,EAAa,CAAe,EAChE,GAAI,EACF,MAAM,KAAK,cAAc,EAAW,EAAU,GAAO,CAAO,EAG9D,GAAe,EAAS,GAAgB,MAAS,EAEjD,IAAM,EAA6B,CACjC,YACA,UACA,aAAc,GAAgB,OAC9B,UACA,qBAAsB,EACtB,OAAQ,GAAc,CAAO,CAC/B,EAEA,GAAI,EAAY,GAAgB,CAAO,EACvC,OAAO,EAEX,CD5dA,IAAM,GACJ,kEAEF,SAAS,EAAM,CAAC,EAAwB,CACtC,OAAO,GAAQ,KAAK,CAAK,EAsBpB,MAAM,EAAoB,CACd,QACA,WACA,aAEjB,WAAW,CACT,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,aAAe,OAWhB,aAAY,CAChB,EACA,EACA,EACA,EAC4B,CAC5B,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EAAuD,CAAC,EAC9D,QAAW,KAAS,EAClB,GAAI,OAAO,IAAU,SACnB,EAAa,KACX,GAAO,CAAK,EAAI,CAAE,SAAU,CAAM,EAAI,CAAE,KAAM,CAAM,CACtD,EACK,QAAI,EAAM,QACf,EAAa,KAAK,CAAE,SAAU,EAAM,OAAQ,CAAC,EACxC,QAAI,EAAM,KACf,EAAa,KAAK,CAAE,KAAM,EAAM,IAAK,CAAC,EAEtC,WAAU,MACR,0EACF,EAIJ,IAAM,EAAmC,CAAE,OAAM,OAAQ,CAAa,EACtE,GAAI,IAAgB,OAAW,EAAQ,YAAc,EACrD,GAAI,GAAO,CAAO,EAChB,EAAQ,WAAa,EAErB,OAAQ,aAAe,EAGzB,IAAM,EAAW,MAAM,KAAK,QAAQ,0BAClC,EACA,CACF,EAEA,OADA,EAAO,KAAK,uBAAuB,GAAM,EAClC,GACJ,EAAS,aAAuD,CAAC,CACpE,OAII,UAAS,CAAC,EAAgD,CAC9D,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,GAAI,GAAO,CAAU,EAAG,CACtB,IAAM,EACJ,MAAM,KAAK,QAAQ,uCACjB,EACA,CACF,EACF,OAAO,GACJ,EAAS,aAAuD,CAAC,CACpE,EAIF,IAAM,GADW,MAAM,KAAK,YAAY,GAAM,CAAC,GACzB,KAAK,CAAC,IAAW,EAAO,OAAS,CAAU,EACjE,GAAI,CAAC,EAEH,OADA,EAAO,MAAM,gBAAgB,cAAuB,EAC7C,KAET,OAAO,OAIH,YAAW,CAAC,EAAkD,CAClE,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EAAW,MAAM,KAAK,QAAQ,yBAClC,EACA,CACF,EAIA,OAHa,MAAM,QAAQ,EAAS,YAAY,EAC5C,EAAS,aACT,CAAC,GACO,IAAI,CAAC,IACf,GAAmB,CAA8B,CACnD,OAII,aAAY,CAAC,EAAwC,CACzD,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,MAAO,GAOvB,OALA,MAAM,KAAK,QAAQ,0CACjB,EACA,CACF,EACA,EAAO,KAAK,uBAAuB,GAAc,EAC1C,QAcH,IAAG,CACP,EACA,EAA6B,CAAC,EACK,CACnC,IAAM,EAAY,KAAK,iBAAiB,EACxC,GAAI,CAAC,EAAW,OAAO,KAEvB,IAAM,EACJ,OAAO,IAAe,SAClB,MAAM,KAAK,UAAU,CAAU,EAC/B,EACN,GAAI,CAAC,GAAU,CAAC,EAAO,GAAI,OAAO,KAOlC,OALe,IAAI,GACjB,KAAK,QACL,EACA,KAAK,YACP,EACc,IAAI,EAAQ,CAAO,EAG3B,gBAAgB,EAAkB,CACxC,GAAI,CAAC,KAAK,WAIR,OAHA,EAAO,MACL,8EACF,EACO,KAET,OAAO,KAAK,WAEhB,CXnJO,MAAM,EAAS,CACH,QACA,aACA,WAET,WAAW,CACjB,EACA,EACA,EACA,CACA,KAAK,QAAU,EACf,KAAK,aAAe,EACpB,KAAK,WAAa,cAoBP,OAAM,CAAC,EAA2C,CAC7D,IAAM,EAAS,EAAO,QAAU,GAC1B,EAAiB,EAAO,gBAAkB,GAC1C,EAAS,EAAO,QAAU,GAEhC,GAAI,CAAC,EACH,MAAU,MAAM,qBAAqB,EAEvC,GAAI,CAAC,EACH,MAAU,MAAM,6BAA6B,EAE/C,GAAI,CAAC,EACH,MAAU,MAAM,qBAAqB,EAEvC,GAAI,CAAC,EAAO,YACV,MAAU,MAAM,0BAA0B,EAG5C,IAAM,EAAS,IAAI,EAAkB,EAAQ,EAAQ,CAAc,EAC/D,EAA2B,KAC/B,GAAI,CACF,EAAY,MAAM,GAAiB,EAAQ,EAAO,WAAW,EAC7D,KAAM,CACN,EAAO,QACL,YAAY,EAAO,+EAErB,EAGF,OAAO,IAAI,GAAS,EAAQ,EAAO,YAAa,CAAS,OAoBrD,cAAa,CACjB,EACwB,CACxB,IAAQ,iBAAkB,8CAC1B,OAAO,EAAc,OAAO,IACvB,EACH,YAAa,KAAK,aAClB,OAAQ,KAAK,QAAQ,UAAU,EAC/B,eAAgB,KAAK,QAAQ,kBAAkB,EAC/C,OAAQ,KAAK,QAAQ,WAAW,CAClC,CAAC,KAIC,SAAQ,EAAmB,CAC7B,OAAO,IAAI,GAAe,KAAK,QAAS,KAAK,WAAY,KAAK,YAAY,KAIxE,WAAU,EAAsB,CAClC,OAAO,IAAI,GACT,KAAK,QACL,KAAK,WACL,KAAK,YACP,KAIE,YAAW,EAAsB,CACnC,OAAO,IAAI,GACT,KAAK,QACL,KAAK,WACL,KAAK,YACP,KAIE,aAAY,EAAwB,CACtC,OAAO,IAAI,GACT,KAAK,QACL,KAAK,WACL,KAAK,YACP,EAEJ,CejLA,IAOA,KACA,KACA,IACA,KACA,KACA,KACA,KAKA,KACA,KACA,KACA,KACA,KCEA,KCxBA",
66
- "debugId": "B736D4C79A323AD864756E2164756E21",
67
+ "mappings": "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",
68
+ "debugId": "FDFFE9AE8A0D021B64756E2164756E21",
67
69
  "names": []
68
70
  }