@ai-sdk/xai 5.0.4 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/docs/01-xai.mdx +17 -17
- package/package.json +1 -1
- package/src/responses/xai-responses-language-model-options.ts +1 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-image-model.ts","../src/xai-error.ts","../src/xai-image-model-options.ts","../src/xai-batch.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/files/xai-files-api.ts","../src/responses/xai-responses-language-model.ts","../src/supports-reasoning-effort.ts","../src/responses/convert-to-xai-responses-input.ts","../src/xai-file-part-options.ts","../src/responses/convert-xai-responses-usage.ts","../src/responses/map-xai-responses-finish-reason.ts","../src/responses/xai-responses-api.ts","../src/responses/xai-responses-language-model-options.ts","../src/responses/xai-responses-prepare-tools.ts","../src/tool/file-search.ts","../src/tool/image-generation.ts","../src/tool/mcp-server.ts","../src/tool/web-search.ts","../src/tool/x-search.ts","../src/realtime/xai-realtime-event-mapper.ts","../src/realtime/xai-realtime-model.ts","../src/tool/code-execution.ts","../src/tool/view-image.ts","../src/tool/view-x-video.ts","../src/tool/index.ts","../src/version.ts","../src/files/xai-files.ts","../src/files/xai-files-options.ts","../src/xai-video-model.ts","../src/xai-video-model-options.ts","../src/xai-speech-model.ts","../src/xai-speech-model-options.ts","../src/xai-transcription-model.ts","../src/xai-transcription-model-options.ts"],"sourcesContent":["import {\n type Experimental_RealtimeFactoryV4 as RealtimeFactoryV4,\n type Experimental_RealtimeFactoryV4GetTokenOptions as RealtimeFactoryV4GetTokenOptions,\n type Experimental_VideoModelV4,\n type Experimental_BatchV4 as BatchV4,\n type FilesV4,\n type ImageModelV4,\n type LanguageModelV4,\n NoSuchModelError,\n type ProviderV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n type WebSocketConstructor,\n} from '@ai-sdk/provider-utils';\nimport { XaiImageModel } from './xai-image-model';\nimport type { XaiImageModelId } from './xai-image-settings';\nimport { XaiBatch } from './xai-batch';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport type { XaiResponsesModelId } from './responses/xai-responses-language-model-options';\nimport { XaiRealtimeModel } from './realtime/xai-realtime-model';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\nimport { XaiFiles } from './files/xai-files';\nimport { XaiVideoModel } from './xai-video-model';\nimport type { XaiVideoModelId } from './xai-video-settings';\nimport { XaiSpeechModel } from './xai-speech-model';\nimport { XaiTranscriptionModel } from './xai-transcription-model';\n\nexport interface XaiProvider extends ProviderV4 {\n (modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai language model for text generation.\n */\n languageModel(modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai responses model for text generation.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV4;\n\n /**\n * Returns a BatchV4 interface for processing batches with xAI.\n */\n experimental_batch(): BatchV4<{\n text: XaiResponsesModelId;\n image: XaiImageModelId;\n }>;\n\n /**\n * Creates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n video(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n videoModel(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n experimental_realtime: RealtimeFactoryV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speech(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speechModel(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcription(): TranscriptionModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcriptionModel(): TranscriptionModelV4;\n\n /**\n * Returns the xAI files interface for uploading files.\n */\n files(): FilesV4;\n\n /**\n * Server-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface XaiProviderSettings {\n /**\n * Base URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Custom WebSocket implementation. Required in runtimes whose native\n * WebSocket constructor does not support headers for xAI streaming STT.\n */\n webSocket?: WebSocketConstructor;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new XaiImageModel(modelId, {\n provider: 'xai.image',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createVideoModel = (modelId: XaiVideoModelId) => {\n return new XaiVideoModel(modelId, {\n provider: 'xai.video',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createRealtimeModel = (modelId: string) => {\n return new XaiRealtimeModel(modelId, {\n provider: 'xai.realtime',\n baseURL: baseURL ?? 'https://api.x.ai/v1',\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createSpeechModel = () => {\n return new XaiSpeechModel('', {\n provider: 'xai.speech',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createTranscriptionModel = () => {\n return new XaiTranscriptionModel('', {\n provider: 'xai.transcription',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n webSocket: options.webSocket,\n });\n };\n\n const experimentalRealtimeFactory = Object.assign(\n (modelId: string) => createRealtimeModel(modelId),\n {\n getToken: async (tokenOptions: RealtimeFactoryV4GetTokenOptions) => {\n const model = createRealtimeModel(tokenOptions.model);\n const secret = await model.doCreateClientSecret({\n sessionConfig: tokenOptions.sessionConfig,\n expiresAfterSeconds: tokenOptions.expiresAfterSeconds,\n });\n\n return {\n token: secret.token,\n url: secret.url,\n expiresAt: secret.expiresAt,\n };\n },\n },\n ) as RealtimeFactoryV4;\n\n const createFiles = () =>\n new XaiFiles({\n provider: 'xai.files',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createBatch = () =>\n new XaiBatch({\n provider: 'xai.batch',\n config: {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n },\n });\n\n const provider = (modelId: XaiResponsesModelId) =>\n createResponsesLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createResponsesLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.videoModel = createVideoModel;\n provider.video = createVideoModel;\n provider.experimental_realtime = experimentalRealtimeFactory;\n provider.speechModel = createSpeechModel;\n provider.speech = createSpeechModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.transcription = createTranscriptionModel;\n provider.files = createFiles;\n provider.experimental_batch = createBatch;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiImageModelOptions } from './xai-image-model-options';\nimport type { XaiImageModelId } from './xai-image-settings';\n\ninterface XaiImageModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class XaiImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 3;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: XaiImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiImageModelId;\n config: XaiImageModelConfig;\n }) {\n return new XaiImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: XaiImageModelId,\n private config: XaiImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n });\n }\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n\n const hasFiles = files != null && files.length > 0;\n const imageUrls = hasFiles\n ? files.map(file => convertImageModelFileToDataUri(file))\n : [];\n\n const endpoint = hasFiles ? '/images/edits' : '/images/generations';\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n\n if (aspectRatio != null) {\n body.aspect_ratio = aspectRatio;\n }\n\n if (xaiOptions?.output_format != null) {\n body.output_format = xaiOptions.output_format;\n }\n\n if (xaiOptions?.sync_mode != null) {\n body.sync_mode = xaiOptions.sync_mode;\n }\n\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null) {\n body.aspect_ratio = xaiOptions.aspect_ratio;\n }\n\n if (xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n }\n\n if (xaiOptions?.quality != null) {\n body.quality = xaiOptions.quality;\n }\n\n if (xaiOptions?.user != null) {\n body.user = xaiOptions.user;\n }\n\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${baseURL}${endpoint}`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.data.some(image => image.respect_moderation === false)) {\n throw new Error(\n 'Image generation was blocked due to a content policy violation.',\n );\n }\n\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(image =>\n this.downloadImage(image.url!, abortSignal),\n ),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n images: response.data.map(item => ({\n ...(item.revised_prompt\n ? { revisedPrompt: item.revised_prompt }\n : {}),\n })),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private async downloadImage(\n url: string,\n abortSignal: AbortSignal | undefined,\n ): Promise<Uint8Array> {\n const { value } = await getFromApi({\n url,\n // url is a generated-image URL from the provider response; validate it.\n validateUrl: true,\n trustedOrigin: this.config.baseURL,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n return value;\n }\n}\n\nconst xaiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n respect_moderation: z.boolean().nullish(),\n }),\n ),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst apiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nconst responsesErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\n// Text to Speech error shape, e.g. {\"error\":\"speed must be between 0.7 and 1.5\"}\nconst speechErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const xaiErrorDataSchema = z.union([\n apiErrorSchema,\n responsesErrorSchema,\n speechErrorSchema,\n]);\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => {\n if (typeof data.error === 'string') {\n return 'code' in data ? `${data.code}: ${data.error}` : data.error;\n }\n return data.error.message;\n },\n});\n","import { z } from 'zod/v4';\n\nexport const xaiImageModelOptions = z.object({\n aspect_ratio: z.string().optional(),\n output_format: z.string().optional(),\n sync_mode: z.boolean().optional(),\n resolution: z.enum(['1k', '2k']).optional(),\n quality: z.enum(['low', 'medium', 'high']).optional(),\n user: z.string().optional(),\n});\n\nexport type XaiImageModelOptions = z.infer<typeof xaiImageModelOptions>;\n","import {\n InvalidArgumentError,\n UnsupportedFunctionalityError,\n type Experimental_BatchV4 as BatchV4,\n type Experimental_BatchV4CancelResult as BatchV4CancelResult,\n type Experimental_BatchV4Error as BatchV4Error,\n type Experimental_BatchV4ItemResult as BatchV4ItemResult,\n type Experimental_BatchV4ListOptions as BatchV4ListOptions,\n type Experimental_BatchV4ListResult as BatchV4ListResult,\n type Experimental_BatchV4OperationOptions as BatchV4OperationOptions,\n type Experimental_BatchV4StartResult as BatchV4StartResult,\n type Experimental_BatchV4Status as BatchV4Status,\n type Experimental_TextBatchV4Request as TextBatchV4Request,\n type Experimental_ImageBatchV4Request as ImageBatchV4Request,\n type Experimental_ImageBatchV4ItemResult as ImageBatchV4ItemResult,\n type Experimental_TextBatchV4ItemResult as TextBatchV4ItemResult,\n type Experimental_BatchV4StartOptions as BatchV4StartOptions,\n type LanguageModelV4Content,\n type LanguageModelV4GenerateResult,\n type SharedV4ProviderMetadata,\n type SharedV4Warning,\n type ImageModelV4Result,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n convertBase64ToUint8Array,\n convertAsyncIteratorToReadableStream,\n createJsonResponseHandler,\n createBinaryResponseHandler,\n createNullLanguageModelUsage,\n getFromApi,\n lazySchema,\n normalizeBatchRequestCounts,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n safeValidateTypes,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiFilesResponseSchema } from './files/xai-files-api';\nimport {\n XaiResponsesLanguageModel,\n xaiResponsesSupportedUrls,\n type XaiResponsesConfig,\n} from './responses/xai-responses-language-model';\nimport type { XaiResponsesModelId } from './responses/xai-responses-language-model-options';\nimport type { XaiImageModelId } from './xai-image-settings';\nimport { xaiImageModelOptions } from './xai-image-model-options';\n\nconst xaiBatchEndpoint = '/v1/responses';\nconst xaiBatchName = 'ai-sdk-text-batch';\nconst xaiBatchResultsPageSize = 1000;\n\nconst xaiBatchProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * TTL in seconds for the uploaded batch input file, measured from\n * upload time. xAI accepts integers between 3600 (1 hour) and\n * 2592000 (30 days) inclusive. Without it the file has no expiry.\n */\n inputFileExpiresAfter: z\n .number()\n .int()\n .min(3600)\n .max(2_592_000)\n .optional(),\n }),\n ),\n);\n\ntype XaiBatchModelIds = {\n readonly text: XaiResponsesModelId;\n readonly image: XaiImageModelId;\n};\ntype XaiBatchRequest = TextBatchV4Request<XaiResponsesModelId>;\ntype XaiImageBatchRequest = ImageBatchV4Request<XaiImageModelId>;\n\nfunction assertSupportedBatchRequests(\n requests: BatchV4StartOptions<XaiBatchModelIds>['requests'],\n) {\n for (const request of requests) {\n const requestType = request.type;\n if (requestType !== 'text' && requestType !== 'image') {\n throw new UnsupportedFunctionalityError({\n functionality: `batch request type: ${requestType}`,\n message: `The xAI Batch API does not support batch requests with type \"${requestType}\".`,\n });\n }\n }\n}\n\ntype XaiBatchPreparedRequest = {\n endpoint: string;\n body: unknown;\n warnings: SharedV4Warning[];\n};\n\nconst xaiBatchImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n respect_moderation: z.boolean().nullish(),\n }),\n ),\n usage: z.object({ cost_in_usd_ticks: z.number().nullish() }).nullish(),\n});\n\ntype XaiBatchResponseConversion =\n | { success: true; result: LanguageModelV4GenerateResult }\n | { success: false; error: BatchV4Error };\n\nconst xaiBatchResponseZodSchema = () =>\n z.object({\n batch_id: z.string(),\n name: z.string().nullish(),\n create_time: z.string().nullish(),\n expire_time: z.string().nullish(),\n cancel_time: z.string().nullish(),\n cancel_by_xai_message: z.string().nullish(),\n state: z\n .object({\n num_requests: z.number().nullish(),\n num_pending: z.number().nullish(),\n num_success: z.number().nullish(),\n num_error: z.number().nullish(),\n num_cancelled: z.number().nullish(),\n })\n .nullish(),\n });\n\nconst xaiBatchResponseSchema = lazySchema(() =>\n zodSchema(xaiBatchResponseZodSchema()),\n);\n\ntype XaiBatchResponse = InferSchema<typeof xaiBatchResponseSchema>;\n\nconst xaiBatchErrorSchema = z.object({\n code: z.union([z.string(), z.number()]).nullish(),\n message: z.string().nullish(),\n});\n\nconst xaiBatchResultSchema = z.object({\n batch_request_id: z.string(),\n batch_result: z\n .object({\n response: z\n .object({\n chat_get_completion: z.unknown().nullish(),\n image_generation: z.unknown().nullish(),\n })\n .nullish(),\n error: xaiBatchErrorSchema.nullish(),\n })\n .nullish(),\n error_message: z.string().nullish(),\n});\n\ntype XaiBatchResult = z.infer<typeof xaiBatchResultSchema>;\n\n// xAI returns text batch results in Chat Completions API shape even when the\n// request was submitted to the Responses API endpoint.\nconst xaiBatchTextResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .array(\n z.object({\n message: z.object({\n role: z.enum(['assistant', 'tool']),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n cost_in_usd_ticks: z.number().nullish(),\n prompt_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n completion_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .nullish(),\n citations: z.array(z.string().url()).nullish(),\n service_tier: z.string().nullish(),\n code: z.string().nullish(),\n error: z.string().nullish(),\n});\n\ntype XaiBatchTextResponse = z.infer<typeof xaiBatchTextResponseSchema>;\n\nconst xaiBatchResultsPageSchema = lazySchema(() =>\n zodSchema(\n z.object({\n results: z.array(xaiBatchResultSchema),\n pagination_token: z.string().nullish(),\n }),\n ),\n);\n\nconst xaiBatchListResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n batches: z.array(xaiBatchResponseZodSchema()),\n pagination_token: z.string().nullish(),\n }),\n ),\n);\n\nexport class XaiBatch implements BatchV4<XaiBatchModelIds> {\n readonly specificationVersion = 'v4' as const;\n readonly provider: string;\n readonly supportedUrls = xaiResponsesSupportedUrls;\n\n constructor(\n private readonly options: {\n provider: string;\n config: XaiResponsesConfig;\n },\n ) {\n this.provider = options.provider;\n }\n\n async doStartBatch(\n options: BatchV4StartOptions<XaiBatchModelIds>,\n ): Promise<BatchV4StartResult> {\n assertSupportedBatchRequests(options.requests);\n const fileParts: string[] = [];\n const warnings: BatchV4StartResult['warnings'] =\n options.webhookUrl == null\n ? []\n : [\n {\n warning: {\n type: 'unsupported',\n feature: 'webhookUrl',\n details:\n 'The xAI Batch API does not support per-batch webhook URLs.',\n },\n },\n ];\n\n const batchOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiBatchProviderOptionsSchema,\n });\n\n for (const request of options.requests) {\n const preparedRequest = await this.prepareRequest(request);\n\n fileParts.push(\n JSON.stringify({\n custom_id: request.id,\n method: 'POST',\n url: preparedRequest.endpoint,\n body: preparedRequest.body,\n }),\n '\\n',\n );\n\n for (const warning of preparedRequest.warnings) {\n warnings.push({ requestId: request.id, warning });\n }\n }\n\n const filename = 'batch.jsonl';\n const file = new Blob(fileParts, { type: 'application/jsonl' });\n fileParts.length = 0;\n const formData = new FormData();\n // xAI rejects uploads where expires_after arrives after the file part,\n // so all fields precede the file.\n if (batchOptions?.inputFileExpiresAfter != null) {\n formData.append(\n 'expires_after',\n String(batchOptions.inputFileExpiresAfter),\n );\n }\n formData.append('file', file, filename);\n\n const headers = combineHeaders(\n this.options.config.headers?.(),\n options.headers,\n );\n\n const { value: uploadedFile } = await postFormDataToApi({\n url: this.getUrl('/files'),\n headers,\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n const { value: batch } = await postJsonToApi({\n url: this.getUrl('/batches'),\n headers,\n body: {\n name: xaiBatchName,\n input_file_id: uploadedFile.id,\n },\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n return {\n batchId: batch.batch_id,\n ...convertXaiBatchStatus(batch),\n providerMetadata: {\n xai: {\n inputFileId: uploadedFile.id,\n ...(uploadedFile.expires_at != null\n ? {\n inputFileExpiresAt: new Date(\n uploadedFile.expires_at * 1000,\n ).toISOString(),\n }\n : {}),\n },\n },\n warnings,\n };\n }\n\n async doGetBatchStatus(\n options: BatchV4OperationOptions,\n ): Promise<BatchV4Status> {\n return convertXaiBatchStatus(await this.retrieveBatch(options));\n }\n\n async doCancelBatch(\n options: BatchV4OperationOptions,\n ): Promise<BatchV4CancelResult> {\n await postJsonToApi({\n url: this.getUrl(\n `/batches/${encodeURIComponent(options.batchId)}:cancel`,\n ),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n body: {},\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n return {};\n }\n\n async doListBatches(options: BatchV4ListOptions): Promise<BatchV4ListResult> {\n const url = new URL(this.getUrl('/batches'));\n if (options.limit != null) {\n url.searchParams.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n url.searchParams.set('pagination_token', options.cursor);\n }\n\n const { value: page } = await getFromApi({\n url: url.toString(),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchListResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n return {\n batches: page.batches.map(batch => ({\n batchId: batch.batch_id,\n ...convertXaiBatchStatus(batch),\n })),\n ...(page.pagination_token != null\n ? { nextCursor: page.pagination_token }\n : {}),\n };\n }\n\n async doGetBatchResults(\n options: BatchV4OperationOptions,\n ): Promise<ReadableStream<BatchV4ItemResult>> {\n const batch = await this.retrieveBatch(options);\n if (convertXaiBatchStatus(batch).status === 'pending') {\n throw new InvalidArgumentError({\n argument: 'batchId',\n message: `xAI batch \"${options.batchId}\" is not complete.`,\n });\n }\n\n return convertAsyncIteratorToReadableStream(\n this.iterateBatchResults(options),\n );\n }\n\n private async retrieveBatch(\n options: BatchV4OperationOptions,\n ): Promise<XaiBatchResponse> {\n const { value: batch } = await getFromApi({\n url: this.getUrl(`/batches/${encodeURIComponent(options.batchId)}`),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n return batch;\n }\n\n private async *iterateBatchResults(\n options: BatchV4OperationOptions,\n ): AsyncGenerator<BatchV4ItemResult> {\n let paginationToken: string | undefined;\n\n do {\n const query = new URLSearchParams({\n limit: String(xaiBatchResultsPageSize),\n });\n if (paginationToken != null) {\n query.set('pagination_token', paginationToken);\n }\n\n const { value: page } = await getFromApi({\n url: this.getUrl(\n `/batches/${encodeURIComponent(options.batchId)}/results?${query}`,\n ),\n headers: combineHeaders(\n this.options.config.headers?.(),\n options.headers,\n ),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResultsPageSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n for (const result of page.results) {\n yield await this.convertBatchResult(result, options.abortSignal);\n }\n\n paginationToken = page.pagination_token ?? undefined;\n } while (paginationToken != null);\n }\n\n private async convertBatchResult(\n result: XaiBatchResult,\n abortSignal: AbortSignal | undefined,\n ): Promise<TextBatchV4ItemResult | ImageBatchV4ItemResult> {\n const error = result.batch_result?.error;\n if (\n (result.error_message?.length ?? 0) > 0 ||\n (error?.code != null && error.code !== 0 && error.code !== '0') ||\n (error?.code == null && (error?.message?.length ?? 0) > 0)\n ) {\n const convertedError = convertXaiBatchError(result);\n return {\n type: 'text',\n id: result.batch_request_id,\n status: isXaiCancellationError(error?.code) ? 'cancelled' : 'failed',\n error: convertedError,\n };\n }\n\n const response = result.batch_result?.response;\n if (response?.chat_get_completion != null) {\n const validation = await safeValidateTypes({\n value: response.chat_get_completion,\n schema: zodSchema(xaiBatchTextResponseSchema),\n });\n if (!validation.success) {\n return invalidXaiBatchResult(result.batch_request_id);\n }\n\n const conversion = convertXaiBatchTextResponse(validation.value);\n return conversion.success\n ? {\n type: 'text',\n id: result.batch_request_id,\n status: 'succeeded',\n result: conversion.result,\n }\n : {\n type: 'text',\n id: result.batch_request_id,\n status: 'failed',\n error: conversion.error,\n };\n }\n\n if (response?.image_generation != null) {\n const validation = await safeValidateTypes({\n value: response.image_generation,\n schema: zodSchema(xaiBatchImageResponseSchema),\n });\n if (!validation.success) {\n return invalidXaiImageBatchResult(result.batch_request_id);\n }\n if (\n validation.value.data.some(image => image.respect_moderation === false)\n ) {\n return {\n type: 'image',\n id: result.batch_request_id,\n status: 'failed',\n error: {\n message:\n 'Image generation was blocked due to a content policy violation.',\n },\n };\n }\n const imageResult = await this.convertImageBatchResponse(\n validation.value,\n abortSignal,\n );\n return {\n type: 'image',\n id: result.batch_request_id,\n status: 'succeeded',\n result: imageResult,\n };\n }\n\n return invalidXaiBatchResult(result.batch_request_id);\n }\n\n private async prepareRequest(\n request: XaiBatchRequest | XaiImageBatchRequest,\n ): Promise<XaiBatchPreparedRequest> {\n if (request.type === 'text') {\n const { args: body, warnings } =\n await XaiResponsesLanguageModel.prepareRequest({\n modelId: request.modelId,\n options: request.options,\n });\n return { endpoint: xaiBatchEndpoint, body, warnings };\n }\n\n const { prompt, n, size, aspectRatio, seed, files, mask, providerOptions } =\n request.options;\n const warnings: SharedV4Warning[] = [];\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n if (seed != null) warnings.push({ type: 'unsupported', feature: 'seed' });\n if (mask != null) warnings.push({ type: 'unsupported', feature: 'mask' });\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n const imageUrls = (files ?? []).map(convertImageModelFileToDataUri);\n const body: Record<string, unknown> = {\n model: request.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n if (aspectRatio != null) body.aspect_ratio = aspectRatio;\n if (xaiOptions?.output_format != null)\n body.output_format = xaiOptions.output_format;\n if (xaiOptions?.sync_mode != null) body.sync_mode = xaiOptions.sync_mode;\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null)\n body.aspect_ratio = xaiOptions.aspect_ratio;\n if (xaiOptions?.resolution != null) body.resolution = xaiOptions.resolution;\n if (xaiOptions?.quality != null) body.quality = xaiOptions.quality;\n if (xaiOptions?.user != null) body.user = xaiOptions.user;\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n return {\n endpoint: files?.length ? '/v1/images/edits' : '/v1/images/generations',\n body,\n warnings,\n };\n }\n\n private async convertImageBatchResponse(\n response: z.infer<typeof xaiBatchImageResponseSchema>,\n abortSignal: AbortSignal | undefined,\n ): Promise<ImageModelV4Result> {\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(async image => {\n if (image.b64_json != null) {\n return convertBase64ToUint8Array(image.b64_json);\n }\n if (image.url == null) {\n throw new InvalidArgumentError({\n argument: 'batchResult',\n message: 'xAI returned an image without data or a URL.',\n });\n }\n const { value } = await getFromApi({\n url: image.url,\n validateUrl: true,\n trustedOrigin: this.options.config.baseURL,\n abortSignal,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.options.config.fetch,\n });\n return value;\n }),\n );\n return {\n images,\n warnings: [],\n response: { timestamp: new Date(), modelId: '', headers: undefined },\n providerMetadata: {\n xai: {\n images: response.data.map(item =>\n item.revised_prompt != null\n ? { revisedPrompt: item.revised_prompt }\n : {},\n ),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private getUrl(path: string) {\n return `${this.options.config.baseURL ?? 'https://api.x.ai/v1'}${path}`;\n }\n}\n\nfunction convertXaiBatchStatus(batch: XaiBatchResponse): BatchV4Status {\n const requestCounts = normalizeBatchRequestCounts({\n total: batch.state?.num_requests,\n pending: batch.state?.num_pending,\n completed: batch.state?.num_success,\n failed:\n batch.state?.num_error != null && batch.state?.num_cancelled != null\n ? batch.state.num_error + batch.state.num_cancelled\n : undefined,\n });\n const isCancelled =\n batch.cancel_time != null || batch.cancel_by_xai_message != null;\n const isExpired = isPastDate(batch.expire_time);\n const status: BatchV4Status['status'] =\n isCancelled || isExpired\n ? 'failed'\n : requestCounts != null &&\n requestCounts.total > 0 &&\n requestCounts.pending === 0\n ? 'completed'\n : 'pending';\n\n return {\n status,\n ...(requestCounts != null ? { requestCounts } : {}),\n ...(isCancelled\n ? {\n error: {\n message:\n batch.cancel_by_xai_message ??\n `xAI batch \"${batch.batch_id}\" was cancelled.`,\n code: 'batch_cancelled',\n },\n }\n : isExpired\n ? {\n error: {\n message: `xAI batch \"${batch.batch_id}\" expired.`,\n code: 'batch_expired',\n },\n }\n : {}),\n ...(batch.create_time != null ? { createdAt: batch.create_time } : {}),\n ...(batch.expire_time != null ? { expiresAt: batch.expire_time } : {}),\n };\n}\n\nfunction isPastDate(value: string | null | undefined) {\n if (value == null) {\n return false;\n }\n const timestamp = Date.parse(value);\n return !Number.isNaN(timestamp) && timestamp <= Date.now();\n}\n\nfunction convertXaiBatchError(result: XaiBatchResult): BatchV4Error {\n const error = result.batch_result?.error;\n return {\n message:\n result.error_message || error?.message || 'xAI batch request failed.',\n ...(error?.code != null && error.code !== 0 && error.code !== '0'\n ? { code: String(error.code) }\n : {}),\n };\n}\n\nfunction isXaiCancellationError(code: string | number | null | undefined) {\n const normalizedCode = String(code).toLowerCase();\n return (\n code === 1 ||\n normalizedCode === '1' ||\n normalizedCode === 'cancelled' ||\n normalizedCode === 'batch_cancelled'\n );\n}\n\nfunction invalidXaiBatchResult(id: string): TextBatchV4ItemResult {\n return {\n type: 'text',\n id,\n status: 'failed',\n error: {\n message: 'xAI returned an invalid Responses batch result.',\n code: 'invalid_response',\n },\n };\n}\n\nfunction invalidXaiImageBatchResult(id: string): ImageBatchV4ItemResult {\n return {\n type: 'image',\n id,\n status: 'failed',\n error: {\n message: 'xAI returned an invalid image batch result.',\n code: 'invalid_response',\n },\n };\n}\n\nfunction convertXaiBatchTextResponse(\n response: XaiBatchTextResponse,\n): XaiBatchResponseConversion {\n if (response.error != null) {\n return {\n success: false,\n error: {\n message: response.error,\n ...(response.code != null ? { code: response.code } : {}),\n },\n };\n }\n\n const choices = response.choices;\n if (choices == null || choices.length === 0) {\n return {\n success: false,\n error: {\n message: 'xAI returned a batch response without any choices.',\n code: 'invalid_response',\n },\n };\n }\n\n const content: LanguageModelV4Content[] = [];\n const providerExecutedToolCallIds = new Set(\n choices\n .filter(choice => choice.message.role === 'tool')\n .flatMap(choice =>\n (choice.message.tool_calls ?? []).map(toolCall => toolCall.id),\n ),\n );\n let lastAssistantChoice: (typeof choices)[number] | undefined;\n\n for (const choice of choices) {\n if (choice.message.role === 'tool') {\n if (choice.message.content != null) {\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-result',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n result: choice.message.content,\n dynamic: true,\n });\n }\n }\n continue;\n }\n\n lastAssistantChoice = choice;\n\n if (choice.message.content) {\n content.push({ type: 'text', text: choice.message.content });\n }\n if (choice.message.reasoning_content) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n ...(providerExecutedToolCallIds.has(toolCall.id)\n ? { providerExecuted: true, dynamic: true }\n : {}),\n });\n }\n }\n for (const url of response.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: url,\n url,\n });\n }\n\n return {\n success: true,\n result: {\n content,\n finishReason: {\n unified: mapXaiFinishReason(lastAssistantChoice?.finish_reason),\n raw: lastAssistantChoice?.finish_reason ?? undefined,\n },\n usage: response.usage\n ? convertXaiBatchTextUsage(response.usage)\n : createNullLanguageModelUsage(),\n response: getResponseMetadata(response),\n warnings: [],\n ...((response.usage?.cost_in_usd_ticks != null ||\n response.service_tier != null) && {\n providerMetadata: {\n xai: {\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n ...(response.service_tier != null\n ? { serviceTier: response.service_tier }\n : {}),\n },\n } satisfies SharedV4ProviderMetadata,\n }),\n },\n };\n}\n\nfunction convertXaiBatchTextUsage(\n usage: NonNullable<XaiBatchTextResponse['usage']>,\n) {\n const cacheReadTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n const promptTokensIncludesCached = cacheReadTokens <= usage.prompt_tokens;\n\n return {\n inputTokens: {\n total: promptTokensIncludesCached\n ? usage.prompt_tokens\n : usage.prompt_tokens + cacheReadTokens,\n noCache: promptTokensIncludesCached\n ? usage.prompt_tokens - cacheReadTokens\n : usage.prompt_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.completion_tokens + reasoningTokens,\n text: usage.completion_tokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import { createLanguageModelResponseMetadata } from '@ai-sdk/provider-utils';\n\nexport function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return createLanguageModelResponseMetadata({\n id,\n model,\n created: created ?? created_at,\n });\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'other';\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n bytes: z.number().nullish(),\n created_at: z.number().nullish(),\n expires_at: z.number().nullish(),\n filename: z.string().nullish(),\n purpose: z.string().nullish(),\n status: z.string().nullish(),\n }),\n ),\n);\n\nexport const xaiFileDeleteResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n deleted: z.boolean(),\n }),\n ),\n);\n","import type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n createProviderStreamError,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport type { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport { supportsReasoningEffort } from '../supports-reasoning-effort';\nimport type { webSearchOutputSchema } from '../tool/web-search';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { convertXaiResponsesUsage } from './convert-xai-responses-usage';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n webSearchWireActionSchema,\n webSearchWireSourceSchema,\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n type XaiResponsesIncludeOptions,\n} from './xai-responses-api';\nimport {\n xaiLanguageModelResponsesOptions,\n type XaiResponsesModelId,\n} from './xai-responses-language-model-options';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\nexport type XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nfunction createXaiResponsesStreamError({\n message,\n code,\n eventType,\n data,\n}: {\n message: string;\n code?: string | null;\n eventType: 'error' | 'response.failed';\n data: unknown;\n}) {\n const statusCode = getHttpStatusCode(code);\n\n return createProviderStreamError({\n message,\n type: eventType,\n code: code ?? undefined,\n ...(statusCode != null\n ? {\n statusCode,\n isRetryable: isRetryableStatusCode(statusCode),\n }\n : getXaiResponsesStreamErrorMetadata(code)),\n data,\n });\n}\n\nfunction getXaiResponsesStreamErrorMetadata(code?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (code) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'insufficient_quota':\n return { statusCode: 429, isRetryable: false };\n case 'api_error':\n case 'internal_server_error':\n case 'server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nfunction getHttpStatusCode(value: unknown): number | undefined {\n const statusCode =\n typeof value === 'string' && /^\\d{3}$/.test(value) ? Number(value) : value;\n\n return typeof statusCode === 'number' &&\n Number.isInteger(statusCode) &&\n statusCode >= 400 &&\n statusCode <= 599\n ? statusCode\n : undefined;\n}\n\nfunction isRetryableStatusCode(statusCode: number): boolean {\n return (\n statusCode === 408 ||\n statusCode === 409 ||\n statusCode === 429 ||\n statusCode >= 500\n );\n}\n\nexport const xaiResponsesSupportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n // xAI's Responses API accepts non-image documents (PDF, plain text, CSV, etc.) as\n // `{ type: 'input_file', file_url }`. Keeping these URLs intact here lets them pass\n // through to the converter instead of being downloaded to bytes by the SDK.\n 'application/pdf': [/^https?:\\/\\/.*$/],\n 'text/*': [/^https?:\\/\\/.*$/],\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiResponsesLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiResponsesModelId;\n config: XaiResponsesConfig;\n }) {\n return new XaiResponsesLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls = xaiResponsesSupportedUrls;\n\n static async prepareRequest({\n modelId,\n options: {\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n reasoning,\n },\n }: {\n modelId: XaiResponsesModelId;\n options: LanguageModelV4CallOptions;\n }) {\n const warnings: SharedV4Warning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelResponsesOptions,\n })) ?? {};\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.code_execution',\n )?.name;\n\n const mcpToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.mcp',\n )?.name;\n\n const fileSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.file_search',\n )?.name;\n\n const imageGenerationToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.image_generation',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: options.store ?? true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n // Build include array based on provider options and store setting\n let include: XaiResponsesIncludeOptions = options.include\n ? [...options.include]\n : undefined;\n\n if (options.store === false) {\n // When store is false, we need to include reasoning.encrypted_content\n // to preserve reasoning tokens in the response\n if (include == null) {\n include = ['reasoning.encrypted_content'];\n } else {\n include = [...include, 'reasoning.encrypted_content'];\n }\n }\n\n let resolvedReasoningEffort = options.reasoningEffort;\n if (resolvedReasoningEffort == null && isCustomReasoning(reasoning)) {\n if (!supportsReasoningEffort(modelId)) {\n warnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning \"${reasoning}\" is not supported by this model.`,\n });\n } else if (reasoning === 'none') {\n resolvedReasoningEffort = 'none';\n } else {\n resolvedReasoningEffort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: modelId === 'grok-4.6' ? 'xhigh' : 'high',\n },\n warnings,\n });\n }\n }\n\n const baseArgs: Record<string, unknown> = {\n model: modelId,\n input,\n logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...((resolvedReasoningEffort != null ||\n options.reasoningSummary != null) && {\n reasoning: {\n ...(resolvedReasoningEffort != null && {\n effort: resolvedReasoningEffort,\n }),\n ...(options.reasoningSummary != null && {\n summary: options.reasoningSummary,\n }),\n },\n }),\n ...(options.store === false && {\n store: options.store,\n }),\n ...(include != null && {\n include,\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n ...(options.serviceTier != null && {\n service_tier: options.serviceTier,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n };\n }\n\n private getArgs(options: LanguageModelV4CallOptions) {\n return XaiResponsesLanguageModel.prepareRequest({\n modelId: this.modelId,\n options,\n });\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let hasFunctionCall = false;\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n\n continue;\n }\n\n if (part.type === 'image_generation_call') {\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n\n if (part.result != null) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n result: part.result,\n ...(part.prompt != null && { prompt: part.prompt }),\n },\n });\n } else {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n isError: true,\n result: `Image generation failed (status: ${part.status}).`,\n });\n }\n\n continue;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n if (part.type === 'web_search_call') {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: mapWebSearchAction(part.action),\n });\n }\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const texts =\n part.summary.length > 0\n ? part.summary.map(s => s.text)\n : (part.content ?? []).map(c => c.text);\n\n const reasoningText = texts\n .filter(text => text && text.length > 0)\n .join('');\n\n // condition changed here since encrypted content can now come with empty reasoning text\n if (reasoningText || part.encrypted_content) {\n const hasMetadata = part.encrypted_content || part.id;\n content.push({\n type: 'reasoning',\n text: reasoningText,\n ...(hasMetadata && {\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n }),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status ?? undefined,\n },\n usage: response.usage\n ? convertXaiResponsesUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...((response.usage?.cost_in_usd_ticks != null ||\n response.service_tier != null) && {\n providerMetadata: {\n xai: {\n ...(response.usage?.cost_in_usd_ticks != null && {\n costInUsdTicks: response.usage.cost_in_usd_ticks,\n }),\n ...(response.service_tier != null && {\n serviceTier: response.service_tier,\n }),\n },\n },\n }),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let hasFunctionCall = false;\n let usage: LanguageModelV4Usage | undefined = undefined;\n let costInUsdTicks: number | undefined = undefined;\n let serviceTier: string | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n // Track ongoing function calls by output_index so we can stream\n // arguments via response.function_call_arguments.delta events.\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed' ||\n event.type === 'response.incomplete'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage = convertXaiResponsesUsage(response.usage);\n costInUsdTicks = response.usage.cost_in_usd_ticks ?? undefined;\n }\n\n serviceTier = response.service_tier ?? undefined;\n\n if (event.type === 'response.incomplete') {\n const reason =\n 'incomplete_details' in response\n ? response.incomplete_details?.reason\n : undefined;\n finishReason = {\n unified: reason\n ? mapXaiResponsesFinishReason(reason)\n : 'other',\n raw: reason ?? 'incomplete',\n };\n } else if ('status' in response && response.status) {\n finishReason = {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status,\n };\n }\n\n return;\n }\n\n if (event.type === 'response.failed') {\n const reason = event.response.incomplete_details?.reason;\n finishReason = {\n unified: reason ? mapXaiResponsesFinishReason(reason) : 'error',\n raw: reason ?? 'error',\n };\n\n if (event.response.usage) {\n usage = convertXaiResponsesUsage(event.response.usage);\n }\n\n if (event.response.error != null) {\n controller.enqueue({\n type: 'error',\n error: createXaiResponsesStreamError({\n message: event.response.error.message,\n code: event.response.error.code,\n eventType: event.type,\n data: event,\n }),\n });\n }\n\n return;\n }\n\n if (event.type === 'error') {\n controller.enqueue({\n type: 'error',\n error: createXaiResponsesStreamError({\n message: event.message,\n code: event.code,\n eventType: event.type,\n data: event,\n }),\n });\n return;\n }\n\n // Custom tool call input streaming - already handled by output_item events\n if (\n event.type === 'response.custom_tool_call_input.delta' ||\n event.type === 'response.custom_tool_call_input.done'\n ) {\n return;\n }\n\n // Function call arguments streaming (standard function tools)\n if (event.type === 'response.function_call_arguments.delta') {\n const toolCall = ongoingToolCalls[event.output_index];\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: event.delta,\n });\n }\n return;\n }\n if (event.type === 'response.function_call_arguments.done') {\n // Arguments are fully received; output_item.done will\n // emit tool-input-end and tool-call with the final arguments.\n return;\n }\n\n if (\n event.type === 'response.image_generation_call.in_progress' ||\n event.type === 'response.image_generation_call.generating' ||\n event.type === 'response.image_generation_call.completed'\n ) {\n if (!seenToolCalls.has(event.item_id)) {\n seenToolCalls.add(event.item_id);\n\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n controller.enqueue({\n type: 'tool-input-start',\n id: event.item_id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: event.item_id,\n delta: '{}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: event.item_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: event.item_id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n const blockId = `reasoning-${part.id}`;\n\n // Emit reasoning-start if not already emitted (e.g., for encrypted reasoning\n // where reasoning_summary_part.added events may not be sent)\n if (!(part.id in activeReasoning)) {\n activeReasoning[part.id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n }\n\n return;\n }\n\n if (part.type === 'image_generation_call') {\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '{}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n if (part.result != null) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n result: part.result,\n ...(part.prompt != null && { prompt: part.prompt }),\n },\n });\n } else {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n isError: true,\n result: `Image generation failed (status: ${part.status}).`,\n });\n }\n }\n\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result:\n part.type === 'web_search_call'\n ? mapWebSearchAction(part.action)\n : {},\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n // Only emit text if we haven't already streamed it via output_text.delta events\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (event.type === 'response.output_item.added') {\n // Track the call so function_call_arguments.delta events\n // can stream the arguments incrementally.\n ongoingToolCalls[event.output_index] = {\n toolName: part.name,\n toolCallId: part.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n } else if (event.type === 'response.output_item.done') {\n hasFunctionCall = true;\n ongoingToolCalls[event.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...((costInUsdTicks != null || serviceTier != null) && {\n providerMetadata: {\n xai: {\n ...(costInUsdTicks != null && { costInUsdTicks }),\n ...(serviceTier != null && { serviceTier }),\n },\n },\n }),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction mapWebSearchAction(\n action: unknown,\n): InferSchema<typeof webSearchOutputSchema> {\n const parsed = webSearchWireActionSchema.safeParse(action);\n if (!parsed.success) return {};\n\n const a = parsed.data;\n const sources = a.sources?.flatMap(s => {\n const source = webSearchWireSourceSchema.safeParse(s);\n return source.success ? [source.data] : [];\n });\n const sourcesExtra = sources != null && sources.length > 0 ? { sources } : {};\n\n switch (a.type) {\n case 'search':\n return {\n action: {\n type: 'search',\n ...(a.query != null && { query: a.query }),\n ...(a.queries != null && { queries: a.queries }),\n },\n ...sourcesExtra,\n };\n case 'open_page':\n return { action: { type: 'openPage', url: a.url }, ...sourcesExtra };\n case 'find_in_page':\n return {\n action: { type: 'findInPage', url: a.url, pattern: a.pattern },\n ...sourcesExtra,\n };\n }\n}\n","/**\n * The grok-4.20 reasoning and non-reasoning models (including dated variants\n * such as `grok-4.20-0309-reasoning`) reject the reasoning effort parameter\n * with an invalid-argument error for every value, including `none`.\n * Other models such as `grok-4.3`, `grok-latest`, and\n * `grok-4.20-multi-agent` accept it.\n */\nconst modelsWithoutReasoningEffort = /^grok-4\\.20(-\\d{4})?-(non-)?reasoning$/;\n\nexport function supportsReasoningEffort(modelId: string): boolean {\n return !modelsWithoutReasoningEffort.test(modelId);\n}\n","import {\n UnsupportedFunctionalityError,\n type SharedV4Warning,\n type LanguageModelV4Message,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveFullMediaType,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport { xaiFilePartProviderOptions } from '../xai-file-part-options';\nimport type {\n XaiResponsesFunctionCallOutput,\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV4Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: SharedV4Warning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: SharedV4Warning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n switch (block.data.type) {\n case 'reference': {\n contentParts.push({\n type: 'input_file',\n file_id: resolveProviderReference({\n reference: block.data.reference,\n provider: 'xai',\n }),\n });\n break;\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n if (getTopLevelMediaType(block.mediaType) === 'image') {\n const imageUrl =\n block.data.type === 'url'\n ? block.data.url.toString()\n : `data:${resolveFullMediaType({ part: block })};base64,${convertToBase64(block.data.data)}`;\n\n const filePartOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: block.providerOptions,\n schema: xaiFilePartProviderOptions,\n });\n\n contentParts.push({\n type: 'input_image',\n image_url: imageUrl,\n ...(filePartOptions?.imageDetail != null && {\n detail: filePartOptions.imageDetail,\n }),\n });\n } else if (block.data.type === 'url') {\n // xAI's Responses API accepts non-image documents (PDF, text, CSV, etc.)\n // via `{ type: 'input_file', file_url }`. See\n // https://docs.x.ai/docs/guides/chat-with-files. Inline bytes for\n // non-image files are not supported by xAI; callers must upload via\n // the Files API and pass a provider reference (file_id) instead.\n contentParts.push({\n type: 'input_file',\n file_url: block.data.url.toString(),\n });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`,\n });\n }\n break;\n }\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning': {\n const itemId =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n const encryptedContent =\n typeof part.providerOptions?.xai?.reasoningEncryptedContent ===\n 'string'\n ? part.providerOptions.xai.reasoningEncryptedContent\n : undefined;\n\n if (itemId != null || encryptedContent != null) {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n }\n\n input.push({\n type: 'reasoning',\n id: itemId ?? '',\n summary: summaryParts,\n status: 'completed',\n ...(encryptedContent != null && {\n encrypted_content: encryptedContent,\n }),\n });\n } else {\n inputWarnings.push({\n type: 'other',\n message:\n 'Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping.',\n });\n }\n break;\n }\n\n case 'reasoning-file':\n case 'custom':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n const output = part.output;\n\n let outputValue: XaiResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\n break;\n case 'execution-denied':\n outputValue = output.reason ?? 'tool execution denied';\n break;\n case 'json':\n case 'error-json':\n outputValue = JSON.stringify(output.value);\n break;\n case 'content':\n outputValue = [];\n for (const item of output.value) {\n switch (item.type) {\n case 'text': {\n outputValue.push({\n type: 'input_text',\n text: item.text,\n });\n break;\n }\n case 'file': {\n if (\n getTopLevelMediaType(item.mediaType) === 'image' &&\n (item.data.type === 'data' || item.data.type === 'url')\n ) {\n outputValue.push({\n type: 'input_image',\n image_url:\n item.data.type === 'url'\n ? item.data.url.toString()\n : `data:${resolveFullMediaType({ part: item })};base64,${convertToBase64(item.data.data)}`,\n });\n }\n break;\n }\n case 'custom': {\n break;\n }\n default: {\n const _exhaustiveCheck: never = item;\n }\n }\n }\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import { z } from 'zod/v4';\n\n// provider options for file parts (images) in user messages\nexport const xaiFilePartProviderOptions = z.object({\n /**\n * Controls the resolution at which the model processes the image.\n * `low` processes the image at reduced resolution and consumes fewer\n * input tokens, `high` processes the image at full resolution, and\n * `auto` lets the API decide. Defaults to full resolution when not set.\n *\n * Note: the xAI API silently ignores invalid values, so the value is\n * validated client-side.\n *\n * @see https://docs.x.ai/developers/model-capabilities/images/understanding\n */\n imageDetail: z.enum(['low', 'high', 'auto']).optional(),\n});\n\nexport type XaiFilePartProviderOptions = z.infer<\n typeof xaiFilePartProviderOptions\n>;\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport type { XaiResponsesUsage } from './xai-responses-api';\n\nexport function convertXaiResponsesUsage(\n usage: XaiResponsesUsage,\n): LanguageModelV4Usage {\n const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n const inputTokensIncludesCached = cacheReadTokens <= usage.input_tokens;\n\n return {\n inputTokens: {\n total: inputTokensIncludesCached\n ? usage.input_tokens\n : usage.input_tokens + cacheReadTokens,\n noCache: inputTokensIncludesCached\n ? usage.input_tokens - cacheReadTokens\n : usage.input_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.output_tokens,\n text: usage.output_tokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n case 'max_output_tokens':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesIncludeValue =\n | 'file_search_call.results'\n | 'reasoning.encrypted_content';\n\nexport type XaiResponsesIncludeOptions =\n | Array<XaiResponsesIncludeValue>\n | undefined\n | null;\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | {\n type: 'input_image';\n image_url: string;\n detail?: 'low' | 'high' | 'auto';\n }\n | { type: 'input_file'; file_id: string }\n | { type: 'input_file'; file_url: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | {\n type: 'input_text';\n text: string;\n }\n | {\n type: 'input_image';\n image_url: string;\n }\n >;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_search?: boolean;\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | {\n type: 'image_generation';\n action?: 'auto' | 'generate' | 'edit';\n }\n | {\n type: 'file_search';\n vector_store_ids?: string[];\n max_num_results?: number;\n }\n | {\n type: 'mcp';\n server_url: string;\n server_label?: string;\n server_description?: string;\n allowed_tools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n strict?: boolean;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nexport const webSearchWireSourceSchema = z.object({\n type: z.literal('url'),\n url: z.string(),\n});\n\nexport const webSearchWireActionSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n queries: z.array(z.string()).nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string().nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('find_in_page'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n]);\n\nconst mcpCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n output: z.string().optional(),\n error: z.string().optional(),\n id: z.string(),\n status: z.string(),\n server_label: z.string().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n status: z.string(),\n queries: z.array(z.string()).optional(),\n results: z\n .array(\n z.object({\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n status: z.string(),\n prompt: z.string().nullish(),\n result: z.string().nullish(),\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('mcp_call'),\n ...mcpCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n content: z\n .array(z.object({ type: z.string(), text: z.string() }))\n .nullish(),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z\n .object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .catchall(z.json())\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .catchall(z.json())\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n cost_in_usd_ticks: z.number().nullish(),\n })\n .catchall(z.json());\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n service_tier: z.string().nullish(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.generating'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\n input: z.string(),\n }),\n // Function call arguments streaming events (standard function tools)\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.failed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.done'),\n item_id: z.string(),\n output_index: z.number(),\n output: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.incomplete'),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.failed'),\n response: z.object({\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string(),\n })\n .nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('error'),\n code: z.string().nullish(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n z.object({\n type: z.literal('response.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4.20-non-reasoning'\n | 'grok-4.20-reasoning'\n | 'grok-4.3'\n | 'grok-4.5'\n | 'grok-4.6'\n | 'grok-latest'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiLanguageModelResponsesOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `none` (disables reasoning entirely; supported by\n * `grok-4.3` and newer reasoning models), `low` (uses fewer reasoning\n * tokens), `medium`, `high` (uses more reasoning tokens), and `xhigh`\n * (supported by `grok-4.6`).\n *\n * @see https://docs.x.ai/docs/guides/reasoning\n */\n reasoningEffort: z\n .enum(['none', 'low', 'medium', 'high', 'xhigh'])\n .optional(),\n reasoningSummary: z.enum(['auto', 'concise', 'detailed']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n serviceTier: z.enum(['default', 'priority']).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * Must be set to `false` for teams with Zero Data Retention (ZDR) enabled,\n * otherwise the API will return an error.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n /**\n * Specify additional output data to include in the model response.\n * Example values: 'file_search_call.results'.\n */\n include: z.array(z.enum(['file_search_call.results'])).nullish(),\n});\n\nexport type XaiLanguageModelResponsesOptions = z.infer<\n typeof xaiLanguageModelResponsesOptions\n>;\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { mcpServerArgsSchema } from '../tool/mcp-server';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport type { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_search: args.enableImageSearch,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n xaiTools.push({\n type: 'image_generation',\n action: args.action,\n });\n break;\n }\n\n case 'xai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n });\n break;\n }\n\n case 'xai.mcp': {\n const args = await validateTypes({\n value: tool.args,\n schema: mcpServerArgsSchema,\n });\n\n xaiTools.push({\n type: 'mcp',\n server_url: args.serverUrl,\n server_label: args.serverLabel,\n server_description: args.serverDescription,\n allowed_tools: args.allowedTools,\n headers: args.headers,\n authorization: args.authorization,\n });\n break;\n }\n\n default: {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider') {\n // xAI API does not support forcing specific server-side tools via toolChoice\n // Only function tools can be forced with {\"type\": \"function\", \"function\": {\"name\": \"...\"}}\n toolWarnings.push({\n type: 'unsupported',\n feature: `toolChoice for server-side tool \"${selectedTool.name}\"`,\n });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\n toolWarnings,\n };\n }\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for file search tool arguments.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n }),\n ),\n);\n\nconst fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n fileId: z.string(),\n filename: z.string(),\n score: z.number().min(0).max(1),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nconst fileSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The search queries that were executed.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs (collection IDs) to search through.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return.\n */\n maxNumResults?: number;\n }\n>({\n id: 'xai.file_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: fileSearchOutputSchema,\n});\n\nexport const fileSearch = (args: Parameters<typeof fileSearchToolFactory>[0]) =>\n fileSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for image generation tool arguments.\n * @see https://docs.x.ai/developers/tools/overview\n */\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.enum(['auto', 'generate', 'edit']).optional(),\n }),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nconst imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n result: z.string(),\n prompt: z.string().optional(),\n }),\n ),\n);\n\nconst imageGenerationToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n\n /**\n * The prompt that the model wrote for the image model.\n */\n prompt?: string;\n },\n {\n /**\n * Restricts what the tool can do. Defaults to 'auto'.\n *\n * - 'auto': the model can generate and edit images.\n * - 'generate': text-to-image generation only.\n * - 'edit': image editing only.\n */\n action?: 'auto' | 'generate' | 'edit';\n }\n>({\n id: 'xai.image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n});\n\nexport const imageGeneration = (\n args: Parameters<typeof imageGenerationToolFactory>[0] = {},\n) => imageGenerationToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const mcpServerArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n serverUrl: z.string().describe('The URL of the MCP server'),\n serverLabel: z.string().optional().describe('A label for the MCP server'),\n serverDescription: z\n .string()\n .optional()\n .describe('Description of the MCP server'),\n allowedTools: z\n .array(z.string())\n .optional()\n .describe('List of allowed tool names'),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe('Custom headers to send'),\n authorization: z\n .string()\n .optional()\n .describe('Authorization header value'),\n }),\n ),\n);\n\n// MCP tool output varies based on which tool is called\nconst mcpServerOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n name: z.string(),\n arguments: z.string(),\n result: z.unknown(),\n }),\n ),\n);\n\nconst mcpServerToolFactory = createProviderExecutedToolFactory<\n {},\n {\n name: string;\n arguments: string;\n result: unknown;\n },\n {\n serverUrl: string;\n serverLabel?: string;\n serverDescription?: string;\n allowedTools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n>({\n id: 'xai.mcp',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: mcpServerOutputSchema,\n});\n\nexport const mcpServer = (args: Parameters<typeof mcpServerToolFactory>[0]) =>\n mcpServerToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageSearch: z.boolean().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n queries: z.array(z.string()).optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('findInPage'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .optional(),\n sources: z\n .array(z.object({ type: z.literal('url'), url: z.string() }))\n .optional(),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n action?:\n | {\n type: 'search';\n query?: string;\n queries?: string[];\n }\n | {\n type: 'openPage';\n url?: string | null;\n }\n | {\n type: 'findInPage';\n url?: string | null;\n pattern?: string | null;\n };\n sources?: Array<{ type: 'url'; url: string }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageSearch?: boolean;\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import type {\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\n\ntype XaiRealtimeWireEvent = {\n type: string;\n session?: { id?: string };\n item?: { id?: string } & Record<string, unknown>;\n response?: { id?: string; status?: string };\n error?: { message?: string; code?: string };\n item_id: string;\n previous_item_id?: string;\n response_id: string;\n transcript?: string;\n delta: string;\n text?: string;\n call_id: string;\n name: string;\n arguments: string;\n message?: string;\n code?: string;\n};\n\nexport function parseXaiRealtimeServerEvent(\n raw: unknown,\n): RealtimeModelV4ServerEvent {\n const event = raw as XaiRealtimeWireEvent;\n const type = event.type;\n\n switch (type) {\n case 'session.created':\n return {\n type: 'session-created',\n sessionId: event.session?.id,\n raw,\n };\n\n case 'session.updated':\n return { type: 'session-updated', raw };\n\n case 'conversation.created':\n return { type: 'custom', rawType: type, raw };\n\n case 'input_audio_buffer.speech_started':\n return {\n type: 'speech-started',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.speech_stopped':\n return {\n type: 'speech-stopped',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.committed':\n return {\n type: 'audio-committed',\n itemId: event.item_id,\n previousItemId: event.previous_item_id,\n raw,\n };\n\n case 'conversation.item.added':\n return {\n type: 'conversation-item-added',\n itemId: event.item?.id ?? event.item_id,\n item: event.item,\n raw,\n };\n\n case 'conversation.item.input_audio_transcription.completed':\n return {\n type: 'input-transcription-completed',\n itemId: event.item_id,\n transcript: event.transcript ?? '',\n raw,\n };\n\n case 'response.created':\n return {\n type: 'response-created',\n responseId: event.response?.id ?? event.response_id,\n raw,\n };\n\n case 'response.done':\n return {\n type: 'response-done',\n responseId: event.response?.id ?? event.response_id,\n status: event.response?.status ?? 'completed',\n raw,\n };\n\n case 'response.output_item.added':\n return {\n type: 'output-item-added',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.output_item.done':\n return {\n type: 'output-item-done',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.content_part.added':\n return {\n type: 'content-part-added',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.content_part.done':\n return {\n type: 'content-part-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio.delta':\n return {\n type: 'audio-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio.done':\n return {\n type: 'audio-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio_transcript.delta':\n return {\n type: 'audio-transcript-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio_transcript.done':\n return {\n type: 'audio-transcript-done',\n responseId: event.response_id,\n itemId: event.item_id,\n transcript: event.transcript,\n raw,\n };\n\n case 'response.text.delta':\n return {\n type: 'text-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.text.done':\n return {\n type: 'text-done',\n responseId: event.response_id,\n itemId: event.item_id,\n text: event.text,\n raw,\n };\n\n case 'response.function_call_arguments.delta':\n return {\n type: 'function-call-arguments-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.function_call_arguments.done':\n return {\n type: 'function-call-arguments-done',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n name: event.name,\n arguments: event.arguments,\n raw,\n };\n\n case 'mcp_list_tools.in_progress':\n case 'mcp_list_tools.completed':\n case 'mcp_list_tools.failed':\n case 'response.mcp_call_arguments.delta':\n case 'response.mcp_call_arguments.done':\n case 'response.mcp_call.in_progress':\n case 'response.mcp_call.completed':\n case 'response.mcp_call.failed':\n return { type: 'custom', rawType: type, raw };\n\n case 'error':\n return {\n type: 'error',\n message: event.error?.message ?? event.message ?? 'Unknown error',\n code: event.error?.code ?? event.code,\n raw,\n };\n\n default:\n return { type: 'custom', rawType: type, raw };\n }\n}\n\nexport function serializeXaiRealtimeClientEvent(\n event: RealtimeModelV4ClientEvent,\n): unknown {\n switch (event.type) {\n case 'session-update':\n return {\n type: 'session.update',\n session: buildXaiSessionConfig(event.config),\n };\n\n case 'input-audio-append':\n return {\n type: 'input_audio_buffer.append',\n audio: event.audio,\n };\n\n case 'input-audio-commit':\n return { type: 'input_audio_buffer.commit' };\n\n case 'input-audio-clear':\n return { type: 'input_audio_buffer.clear' };\n\n case 'conversation-item-create': {\n const item = event.item;\n switch (item.type) {\n case 'text-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_text', text: item.text }],\n },\n };\n case 'audio-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_audio', audio: item.audio }],\n },\n };\n case 'function-call-output':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: item.callId,\n output: item.output,\n },\n };\n }\n break;\n }\n\n case 'conversation-item-truncate':\n // xAI does not support `conversation.item.truncate` over WebSocket (it is\n // silently ignored by the server). Barge-in still works because the SDK\n // stops local playback when `speech_started` fires, so dropping the event\n // here just avoids sending a no-op.\n return undefined;\n\n case 'response-create':\n return {\n type: 'response.create',\n ...(event.options != null\n ? {\n response: {\n ...(event.options.modalities != null\n ? { modalities: event.options.modalities }\n : {}),\n ...(event.options.instructions != null\n ? { instructions: event.options.instructions }\n : {}),\n },\n }\n : {}),\n };\n\n case 'response-cancel':\n return { type: 'response.cancel' };\n }\n}\n\nexport function buildXaiSessionConfig(\n config: RealtimeModelV4SessionConfig,\n): Record<string, unknown> {\n const session: Record<string, unknown> = {};\n\n if (config.instructions != null) {\n session.instructions = config.instructions;\n }\n\n if (config.voice != null) {\n session.voice = config.voice;\n }\n\n const audio: Record<string, unknown> = {};\n\n if (config.inputAudioFormat != null) {\n audio.input = {\n format: {\n type: config.inputAudioFormat.type,\n ...(config.inputAudioFormat.rate != null\n ? { rate: config.inputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (config.outputAudioFormat != null) {\n audio.output = {\n format: {\n type: config.outputAudioFormat.type,\n ...(config.outputAudioFormat.rate != null\n ? { rate: config.outputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (Object.keys(audio).length > 0) {\n session.audio = audio;\n }\n\n if (config.turnDetection != null) {\n if (config.turnDetection.type === 'disabled') {\n session.turn_detection = null;\n } else {\n const td: Record<string, unknown> = {\n type: 'server_vad',\n };\n if (config.turnDetection.threshold != null) {\n td.threshold = config.turnDetection.threshold;\n }\n if (config.turnDetection.silenceDurationMs != null) {\n td.silence_duration_ms = config.turnDetection.silenceDurationMs;\n }\n if (config.turnDetection.prefixPaddingMs != null) {\n td.prefix_padding_ms = config.turnDetection.prefixPaddingMs;\n }\n session.turn_detection = td;\n }\n }\n\n if (config.tools != null && config.tools.length > 0) {\n session.tools = config.tools.map(tool => ({\n type: tool.type,\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n }));\n }\n\n if (config.providerOptions != null) {\n const xaiOptions = config.providerOptions as Record<string, unknown>;\n\n if (Array.isArray(xaiOptions.tools)) {\n const existingTools = (session.tools as unknown[]) ?? [];\n session.tools = [...existingTools, ...xaiOptions.tools];\n }\n\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (key !== 'tools') {\n session[key] = value;\n }\n }\n }\n\n return session;\n}\n","import type {\n Experimental_RealtimeModelV4 as RealtimeModelV4,\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ClientSecretOptions as RealtimeModelV4ClientSecretOptions,\n Experimental_RealtimeModelV4ClientSecretResult as RealtimeModelV4ClientSecretResult,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport {\n buildXaiSessionConfig,\n parseXaiRealtimeServerEvent,\n serializeXaiRealtimeClientEvent,\n} from './xai-realtime-event-mapper';\n\nexport type XaiRealtimeModelConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class XaiRealtimeModel implements RealtimeModelV4 {\n readonly specificationVersion = 'v4' as const;\n readonly provider: string;\n readonly modelId: string;\n\n private readonly config: XaiRealtimeModelConfig;\n\n constructor(modelId: string, config: XaiRealtimeModelConfig) {\n this.modelId = modelId;\n this.provider = config.provider;\n this.config = config;\n }\n\n async doCreateClientSecret(\n options: RealtimeModelV4ClientSecretOptions,\n ): Promise<RealtimeModelV4ClientSecretResult> {\n const fetchFn = this.config.fetch ?? fetch;\n const url = `${this.config.baseURL}/realtime/client_secrets`;\n\n const body: Record<string, unknown> = {};\n if (options.expiresAfterSeconds != null) {\n body.expires_after = { seconds: options.expiresAfterSeconds };\n }\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n ...this.config.headers(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\n `xAI realtime client secret request failed: ${response.status} ${text}`,\n );\n }\n\n const data = (await response.json()) as {\n value: string;\n expires_at?: number;\n };\n\n return {\n token: data.value,\n // xAI selects the voice model from the `model` query parameter on the\n // WebSocket URL. Without it the model choice is silently ignored and the\n // server falls back to its default voice model.\n url: `wss://${new URL(this.config.baseURL).host}/v1/realtime?model=${encodeURIComponent(this.modelId)}`,\n expiresAt: data.expires_at,\n };\n }\n\n getWebSocketConfig(options: { token: string; url: string }): {\n url: string;\n protocols?: string[];\n } {\n return {\n url: options.url,\n protocols: [`xai-client-secret.${options.token}`],\n };\n }\n\n parseServerEvent(raw: unknown): RealtimeModelV4ServerEvent {\n return parseXaiRealtimeServerEvent(raw);\n }\n\n serializeClientEvent(event: RealtimeModelV4ClientEvent): unknown {\n return serializeXaiRealtimeClientEvent(event);\n }\n\n buildSessionConfig(\n config: RealtimeModelV4SessionConfig,\n ): Record<string, unknown> {\n return buildXaiSessionConfig(config);\n }\n}\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory = createProviderExecutedToolFactory({\n id: 'xai.code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n});\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { fileSearch } from './file-search';\nimport { imageGeneration } from './image-generation';\nimport { mcpServer } from './mcp-server';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport {\n codeExecution,\n fileSearch,\n imageGeneration,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n\nexport const xaiTools = {\n codeExecution,\n fileSearch,\n imageGeneration,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n InvalidArgumentError,\n type FilesV4,\n type FilesV4DeleteFileCallOptions,\n type FilesV4DeleteFileResult,\n type FilesV4DownloadFileCallOptions,\n type FilesV4DownloadFileResult,\n type FilesV4GetFileMetadataCallOptions,\n type FilesV4GetFileMetadataResult,\n type FilesV4UploadFileCallOptions,\n type FilesV4UploadFileResult,\n type SharedV4ProviderReference,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertInlineFileDataToUint8Array,\n createBinaryStreamResponseHandler,\n createJsonResponseHandler,\n deleteFromApi,\n getFromApi,\n parseProviderOptions,\n postFormDataToApi,\n postMultipartStreamToApi,\n type FetchFunction,\n type InferSchema,\n type MultipartStreamPart,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport {\n xaiFileDeleteResponseSchema,\n xaiFilesResponseSchema,\n} from './xai-files-api';\nimport {\n xaiFilesOptionsSchema,\n type XaiFilesOptions,\n} from './xai-files-options';\n\ninterface XaiFilesConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n}\n\ntype XaiFilesResponse = InferSchema<typeof xaiFilesResponseSchema>;\n\nfunction encodePathSegment(value: string): string {\n const encodedValue = encodeURIComponent(value);\n\n // URL parsing normalizes both literal and percent-encoded dot segments.\n return encodedValue === '.'\n ? '%252E'\n : encodedValue === '..'\n ? '%252E%252E'\n : encodedValue;\n}\n\nexport class XaiFiles implements FilesV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(private readonly config: XaiFilesConfig) {}\n\n private getFileId(file: SharedV4ProviderReference): string {\n const fileId = file.xai;\n if (fileId == null || fileId.trim() === '') {\n throw new InvalidArgumentError({\n argument: 'file',\n message: \"file reference is missing an 'xai' file id.\",\n });\n }\n return fileId;\n }\n\n private getHeaders(\n headers: Record<string, string | undefined> | undefined,\n ): Record<string, string | undefined> {\n return combineHeaders(this.config.headers(), headers);\n }\n\n async uploadFile({\n data,\n mediaType,\n filename,\n abortSignal,\n headers,\n providerOptions,\n }: FilesV4UploadFileCallOptions): Promise<FilesV4UploadFileResult> {\n let xaiOptions: XaiFilesOptions | undefined;\n try {\n xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiFilesOptionsSchema,\n })) as XaiFilesOptions | undefined;\n } catch (error) {\n // rejected before any request: release the caller's stream\n if (data.type === 'stream') {\n await data.stream.cancel(error).catch(() => {});\n }\n throw error;\n }\n\n const requestHeaders = this.getHeaders(headers);\n const url = `${this.config.baseURL}/files`;\n\n let response: XaiFilesResponse;\n\n if (data.type === 'stream') {\n // xAI rejects uploads where expires_after arrives after the file part,\n // so all fields precede the file.\n const parts: Array<MultipartStreamPart> = [];\n\n if (xaiOptions?.expiresAfter != null) {\n parts.push({\n type: 'field',\n name: 'expires_after',\n value: String(xaiOptions.expiresAfter),\n });\n }\n\n if (xaiOptions?.teamId != null) {\n parts.push({\n type: 'field',\n name: 'team_id',\n value: xaiOptions.teamId,\n });\n }\n\n parts.push({\n type: 'file',\n name: 'file',\n filename,\n mediaType,\n content: data.stream,\n });\n\n ({ value: response } = await postMultipartStreamToApi({\n url,\n headers: requestHeaders,\n parts,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n }));\n } else {\n const fileBytes = convertInlineFileDataToUint8Array(data);\n\n const blob = new Blob([fileBytes], {\n type: mediaType,\n });\n\n // FormData serializes in append order; expires_after must precede file.\n const formData = new FormData();\n\n if (xaiOptions?.expiresAfter != null) {\n formData.append('expires_after', String(xaiOptions.expiresAfter));\n }\n\n if (xaiOptions?.teamId != null) {\n formData.append('team_id', xaiOptions.teamId);\n }\n\n if (filename != null) {\n formData.append('file', blob, filename);\n } else {\n formData.append('file', blob);\n }\n\n ({ value: response } = await postFormDataToApi({\n url,\n headers: requestHeaders,\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n }));\n }\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...((response.filename ?? filename)\n ? { filename: response.filename ?? filename }\n : {}),\n ...(mediaType != null ? { mediaType } : {}),\n ...(response.bytes != null ? { byteSize: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: new Date(response.created_at * 1000) }\n : {}),\n ...(response.expires_at != null\n ? { expiresAt: new Date(response.expires_at * 1000) }\n : {}),\n providerMetadata: {\n xai: this.toFileMetadata(response),\n },\n };\n }\n\n async getFileMetadata({\n file,\n abortSignal,\n headers,\n }: FilesV4GetFileMetadataCallOptions): Promise<FilesV4GetFileMetadataResult> {\n const fileId = this.getFileId(file);\n\n const { value: response } = await getFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n validateUrl: false,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.bytes != null ? { byteSize: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: new Date(response.created_at * 1000) }\n : {}),\n ...(response.expires_at != null\n ? { expiresAt: new Date(response.expires_at * 1000) }\n : {}),\n providerMetadata: {\n xai: this.toFileMetadata(response),\n },\n };\n }\n\n async downloadFile({\n file,\n abortSignal,\n headers,\n }: FilesV4DownloadFileCallOptions): Promise<FilesV4DownloadFileResult> {\n const fileId = this.getFileId(file);\n\n const { value: content, responseHeaders } = await getFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}/content`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createBinaryStreamResponseHandler(),\n abortSignal,\n fetch: this.config.fetch,\n validateUrl: false,\n });\n\n // media type from the content endpoint's Content-Type, without parameters\n const mediaType = responseHeaders?.['content-type']?.split(';')[0].trim();\n\n return {\n warnings: [],\n content,\n ...(mediaType ? { mediaType } : {}),\n };\n }\n\n async deleteFile({\n file,\n abortSignal,\n headers,\n }: FilesV4DeleteFileCallOptions): Promise<FilesV4DeleteFileResult> {\n const fileId = this.getFileId(file);\n\n const { value: response } = await deleteFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFileDeleteResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n deleted: response.deleted,\n };\n }\n\n private toFileMetadata(\n response: XaiFilesResponse,\n ): Record<string, string | number> {\n return {\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.purpose != null ? { purpose: response.purpose } : {}),\n ...(response.bytes != null ? { bytes: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: response.created_at }\n : {}),\n ...(response.status != null ? { status: response.status } : {}),\n ...(response.expires_at != null\n ? { expiresAt: response.expires_at }\n : {}),\n };\n }\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n teamId: z.string().optional(),\n filePath: z.string().optional(),\n /**\n * TTL in seconds measured from upload time; xAI accepts integers\n * between 3600 (1 hour) and 2592000 (30 days) inclusive.\n * Omit to keep the file until it is deleted.\n */\n expiresAfter: z.number().int().min(3600).max(2_592_000).optional(),\n }),\n ),\n);\n\nexport type XaiFilesOptions = InferSchema<typeof xaiFilesOptionsSchema>;\n","import {\n AISDKError,\n APICallError,\n type Experimental_VideoModelV4 as VideoModelV4,\n type Experimental_VideoModelV4CallOptions as VideoModelV4CallOptions,\n type Experimental_VideoModelV4File as VideoModelV4File,\n type Experimental_VideoModelV4OperationStartResult as VideoModelV4OperationStartResult,\n type Experimental_VideoModelV4OperationStatusResult as VideoModelV4OperationStatusResult,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n extractResponseHeaders,\n getFromApi,\n getTopLevelMediaType,\n parseProviderOptions,\n postJsonToApi,\n safeParseJSON,\n type FetchFunction,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n xaiVideoModelOptionsSchema,\n type XaiParsedVideoModelOptions,\n} from './xai-video-model-options';\nimport type { XaiVideoModelId } from './xai-video-settings';\n\ninterface XaiVideoModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nfunction encodePathSegment(value: string): string {\n const encodedValue = encodeURIComponent(value);\n\n // URL parsing normalizes both literal and percent-encoded dot segments.\n return encodedValue === '.'\n ? '%252E'\n : encodedValue === '..'\n ? '%252E%252E'\n : encodedValue;\n}\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '1920x1080': '1080p',\n '1280x720': '720p',\n '854x480': '480p',\n '640x480': '480p',\n};\n\ntype XaiVideoCallOptions = VideoModelV4CallOptions;\n\nfunction getFirstFrameImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction getLastFrameImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'last_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nconst isVideoFile = (file: VideoModelV4File): boolean =>\n file.mediaType != null && getTopLevelMediaType(file.mediaType) === 'video';\n\n// References without a media type (only possible for URLs) are treated as\n// images, matching the legacy `referenceImageUrls` behavior.\nconst isImageReference = (file: VideoModelV4File): boolean =>\n file.mediaType == null || getTopLevelMediaType(file.mediaType) === 'image';\n\nfunction fileToXaiUrl(file: VideoModelV4File): string {\n if (file.type === 'url') {\n return file.url;\n }\n\n const base64Data =\n typeof file.data === 'string'\n ? file.data\n : convertUint8ArrayToBase64(file.data);\n return `data:${file.mediaType};base64,${base64Data}`;\n}\n\n// Resolves the reference images for R2V generation. First-class\n// `inputReferences` win over the legacy `referenceImageUrls` provider option.\n// Non-image references (video or audio) are not supported for\n// reference-to-video and are skipped with a warning.\nfunction resolveReferences(\n options: XaiVideoCallOptions,\n xaiOptions: XaiParsedVideoModelOptions | undefined,\n warnings: SharedV4Warning[],\n): Array<{ url: string }> | undefined {\n if (options.inputReferences != null && options.inputReferences.length > 0) {\n const imageFiles: VideoModelV4File[] = [];\n\n for (const reference of options.inputReferences) {\n if (!isImageReference(reference)) {\n warnings.push({\n type: 'unsupported',\n feature: 'inputReferences',\n details: isVideoFile(reference)\n ? 'xAI reference-to-video accepts image references only. The ' +\n 'video reference was ignored. Use providerOptions.xai.mode ' +\n '\"extend-video\" to continue from a video.'\n : 'xAI reference-to-video accepts image references only. The ' +\n 'non-image reference was ignored.',\n });\n continue;\n }\n\n imageFiles.push(reference);\n }\n\n return imageFiles.length > 0\n ? imageFiles.map(reference => ({ url: fileToXaiUrl(reference) }))\n : undefined;\n }\n\n if (\n xaiOptions?.referenceImageUrls != null &&\n xaiOptions.referenceImageUrls.length > 0\n ) {\n return xaiOptions.referenceImageUrls.map(url => ({ url }));\n }\n\n return undefined;\n}\n\n// True when at least one reference would survive as an image.\nfunction hasImageInputReference(options: XaiVideoCallOptions): boolean {\n return options.inputReferences?.some(isImageReference) ?? false;\n}\n\nfunction resolveVideoMode(\n options: XaiVideoCallOptions,\n xaiOptions: XaiParsedVideoModelOptions | undefined,\n): XaiParsedVideoModelOptions['mode'] | undefined {\n if (xaiOptions?.mode != null) {\n return xaiOptions.mode;\n }\n\n if (xaiOptions?.videoUrl != null) {\n return 'edit-video';\n }\n\n // frameImages (first/last frame) take precedence over reference images, so\n // only auto-select reference-to-video when no frame images are provided.\n const hasFrameImages =\n options.frameImages != null && options.frameImages.length > 0;\n const hasLegacyReferenceUrls =\n xaiOptions?.referenceImageUrls != null &&\n xaiOptions.referenceImageUrls.length > 0;\n\n // Reference-to-video needs at least one image reference. An audio-only (or\n // video-only) `inputReferences` array must not flip a text- or\n // image-to-video request into R2V.\n if (\n !hasFrameImages &&\n (hasImageInputReference(options) || hasLegacyReferenceUrls)\n ) {\n return 'reference-to-video';\n }\n\n return undefined;\n}\n\nexport class XaiVideoModel implements VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: XaiVideoModelId,\n private config: XaiVideoModelConfig,\n ) {}\n\n private async buildRequestBody(options: VideoModelV4CallOptions): Promise<{\n body: Record<string, unknown>;\n warnings: SharedV4Warning[];\n xaiOptions: XaiParsedVideoModelOptions | undefined;\n isEdit: boolean;\n isExtension: boolean;\n hasReferenceImages: boolean;\n effectiveMode: XaiParsedVideoModelOptions['mode'] | undefined;\n }> {\n const warnings: SharedV4Warning[] = [];\n\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiVideoModelOptionsSchema,\n })) as XaiParsedVideoModelOptions | undefined;\n\n const effectiveMode = resolveVideoMode(options, xaiOptions);\n\n const isEdit = effectiveMode === 'edit-video';\n const isExtension = effectiveMode === 'extend-video';\n const hasReferenceImages = effectiveMode === 'reference-to-video';\n\n if (options.fps != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details: 'xAI video models do not support custom FPS.',\n });\n }\n\n if (options.seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: 'xAI video models do not support seed.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'xAI video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n // Edit mode: duration, aspectRatio, resolution not supported\n if (isEdit && options.duration != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'duration',\n details: 'xAI video editing does not support custom duration.',\n });\n }\n\n if (isEdit && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video editing does not support custom aspect ratio.',\n });\n }\n\n if (\n isEdit &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video editing does not support custom resolution.',\n });\n }\n\n // Extension mode: aspectRatio and resolution not supported\n if (isExtension && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video extension does not support custom aspect ratio.',\n });\n }\n\n if (\n isExtension &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video extension does not support custom resolution.',\n });\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt,\n };\n\n const allowDuration = !isEdit;\n const allowAspectRatio = !isEdit && !isExtension;\n const allowResolution = !isEdit && !isExtension;\n\n if (allowDuration && options.duration != null) {\n body.duration = options.duration;\n }\n\n if (allowAspectRatio && options.aspectRatio != null) {\n body.aspect_ratio = options.aspectRatio;\n }\n\n if (allowResolution && xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n } else if (allowResolution && options.resolution != null) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped != null) {\n body.resolution = mapped;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n `Unrecognized resolution \"${options.resolution}\". ` +\n 'Use providerOptions.xai.resolution with \"480p\", \"720p\", or ' +\n '\"1080p\" instead.',\n });\n }\n }\n\n // Video editing: pass source video URL (nested object)\n if (isEdit) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Video extension: pass source video URL (nested object)\n if (isExtension) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Convert the start image (first_frame or image-to-video input) to the\n // nested xAI request image object.\n const startImage = resolveStartImage(options);\n if (startImage != null) {\n if (isVideoFile(startImage)) {\n const fromFrameImages = getFirstFrameImage(options) != null;\n warnings.push({\n type: 'unsupported',\n feature: fromFrameImages ? 'frameImages' : 'image',\n details:\n 'xAI does not accept a video as a start/frame image. The video ' +\n 'was ignored. Use providerOptions.xai.mode \"extend-video\" to ' +\n 'continue from a video instead.',\n });\n } else {\n body.image = { url: fileToXaiUrl(startImage) };\n }\n }\n\n // xAI has no first-last-frame interpolation; warn and ignore last_frame.\n const lastFrameImage = getLastFrameImage(options);\n if (lastFrameImage != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'frameImages',\n details: isVideoFile(lastFrameImage)\n ? 'xAI does not accept a video as a start/frame image. The video ' +\n 'last frame was ignored. Use providerOptions.xai.mode ' +\n '\"extend-video\" to continue from a video instead.'\n : 'xAI video models do not support last_frame. Use ' +\n 'providerOptions.xai.mode \"extend-video\" to continue from a ' +\n \"video's last frame. The last frame image was ignored.\",\n });\n }\n\n // Reference images for R2V (reference-to-video) generation\n if (hasReferenceImages) {\n const referenceImages = resolveReferences(options, xaiOptions, warnings);\n\n if (referenceImages != null) {\n body.reference_images = referenceImages;\n } else {\n // Explicit R2V with no usable image references would silently send\n // a plain generations request; tell the user it is no longer R2V.\n warnings.push({\n type: 'unsupported',\n feature: 'referenceImages',\n details:\n 'xAI reference-to-video requires at least one image reference. ' +\n 'The video will be generated without reference images.',\n });\n }\n\n const referenceVoiceIds = xaiOptions?.referenceVoiceIds;\n if (referenceVoiceIds != null && referenceVoiceIds.length > 0) {\n body.reference_audios = referenceVoiceIds.map(voiceId => ({\n voice_id: voiceId,\n }));\n }\n\n // Reference-to-video is capped at 720p; downgrade a 1080p request.\n if (body.resolution === '1080p') {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n 'xAI reference-to-video is limited to 720p. The request was ' +\n 'downgraded from 1080p to 720p.',\n });\n body.resolution = '720p';\n }\n }\n\n // 1080p requires grok-imagine-video-1.5; the original grok-imagine-video\n // rejects it. Warn, but send the request as the user asked.\n if (body.resolution === '1080p' && this.modelId === 'grok-imagine-video') {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n 'xAI model \"grok-imagine-video\" does not support 1080p. Use ' +\n '\"grok-imagine-video-1.5\" for 1080p, or a lower resolution. The ' +\n 'request was sent with 1080p.',\n });\n }\n\n // Warn when references were provided but cannot be used in the resolved\n // mode (e.g. alongside frameImages, in edit/extend modes, or when the\n // references carried no usable image to drive reference-to-video).\n if (\n options.inputReferences != null &&\n options.inputReferences.length > 0 &&\n !hasReferenceImages\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'inputReferences',\n details: hasImageInputReference(options)\n ? 'xAI only supports inputReferences for reference-to-video ' +\n 'generation. The reference images were ignored.'\n : 'xAI reference-to-video requires at least one image reference. ' +\n 'The references were ignored.',\n });\n }\n\n // Preset reference voices only apply to reference-to-video generation.\n if (\n xaiOptions?.referenceVoiceIds != null &&\n xaiOptions.referenceVoiceIds.length > 0 &&\n !hasReferenceImages\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'referenceVoiceIds',\n details:\n 'xAI only supports reference voices for reference-to-video ' +\n 'generation. The reference voices were ignored.',\n });\n }\n\n if (!isExtension && xaiOptions?.user !== undefined) {\n body.user = xaiOptions.user;\n }\n\n if (xaiOptions != null) {\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (\n ![\n 'mode',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'resolution',\n 'videoUrl',\n 'referenceImageUrls',\n 'referenceVoiceIds',\n 'user',\n ].includes(key)\n ) {\n body[key] = value;\n }\n }\n }\n\n return {\n body,\n warnings,\n xaiOptions,\n isEdit,\n isExtension,\n hasReferenceImages,\n effectiveMode,\n };\n }\n\n async doStart(\n options: Parameters<NonNullable<VideoModelV4['doStart']>>[0],\n ): Promise<VideoModelV4OperationStartResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { body, warnings, isEdit, isExtension } =\n await this.buildRequestBody(options);\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n // Determine endpoint based on mode\n let endpoint: string;\n if (isEdit) {\n endpoint = `${baseURL}/videos/edits`;\n } else if (isExtension) {\n endpoint = `${baseURL}/videos/extensions`;\n } else {\n endpoint = `${baseURL}/videos/generations`;\n }\n\n const { value: createResponse, responseHeaders } = await postJsonToApi({\n url: endpoint,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiCreateVideoResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = createResponse.request_id;\n if (!requestId) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message: `No request_id returned from xAI API.`,\n });\n }\n\n return {\n operation: { requestId },\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n async doStatus(\n options: Parameters<NonNullable<VideoModelV4['doStatus']>>[0],\n ): Promise<VideoModelV4OperationStatusResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestId } = options.operation as { requestId: string };\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n const { value: statusResponse, responseHeaders } = await getFromApi({\n url: `${baseURL}/videos/${encodePathSegment(requestId)}`,\n validateUrl: false,\n headers: combineHeaders(this.config.headers(), options.headers),\n successfulResponseHandler: xaiVideoStatusResponseHandler,\n failedResponseHandler: xaiFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (statusResponse.status === 'expired') {\n return {\n status: 'error' as const,\n error: 'Video generation request expired.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (statusResponse.status === 'failed') {\n const errorDetails =\n statusResponse.error?.message ?? statusResponse.error?.code;\n\n return {\n status: 'error' as const,\n error:\n errorDetails != null\n ? `Video generation failed: ${errorDetails}`\n : 'Video generation failed.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (\n statusResponse.status === 'done' ||\n (statusResponse.status == null && statusResponse.video?.url)\n ) {\n // Terminal outcomes, so they are reported the same way as an upstream `failed`\n if (statusResponse.video?.respect_moderation === false) {\n return {\n status: 'error' as const,\n error:\n 'Video generation was blocked due to a content policy violation.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (!statusResponse.video?.url) {\n return {\n status: 'error' as const,\n error: 'Video generation completed but no video URL was returned.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n return {\n status: 'completed',\n videos: [\n {\n type: 'url',\n url: statusResponse.video.url,\n mediaType: 'video/mp4',\n },\n ],\n warnings: [],\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n requestId,\n videoUrl: statusResponse.video.url,\n ...(statusResponse.video.duration != null\n ? { duration: statusResponse.video.duration }\n : {}),\n ...(statusResponse.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: statusResponse.usage.cost_in_usd_ticks }\n : {}),\n ...(statusResponse.progress != null\n ? { progress: statusResponse.progress }\n : {}),\n },\n },\n };\n }\n\n // pending status\n return {\n status: 'pending',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst xaiCreateVideoResponseSchema = z.object({\n request_id: z.string().nullish(),\n});\n\nconst xaiVideoStatusResponseSchema = z.object({\n status: z.string().nullish(),\n video: z\n .object({\n url: z.string(),\n duration: z.number().nullish(),\n respect_moderation: z.boolean().nullish(),\n })\n .nullish(),\n model: z.string().nullish(),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n progress: z.number().nullish(),\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().nullish(),\n })\n .nullish(),\n});\n\nconst xaiVideoStatusJsonResponseHandler = createJsonResponseHandler(\n xaiVideoStatusResponseSchema,\n);\n\n// Generous bound for a `{status, progress}` payload of ~50 bytes.\nconst MAX_PENDING_BODY_BYTES = 1024 * 1024;\n\nconst textDecoder = new TextDecoder();\n\n// Bounded replacement for `response.text()`. Throws on overflow without\n// cancelling the body: cancelling a tee branch neither settles nor releases\n// the underlying source while the sibling branch is live.\nasync function readPendingBody({\n response,\n url,\n requestBodyValues,\n}: Parameters<ResponseHandler<unknown>>[0]): Promise<string> {\n if (response.body == null) {\n return '';\n }\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n totalBytes += value.length;\n if (totalBytes > MAX_PENDING_BODY_BYTES) {\n throw new APICallError({\n message: `xAI video status response exceeded ${MAX_PENDING_BODY_BYTES} bytes`,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders: extractResponseHeaders(response),\n });\n }\n\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const merged = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return textDecoder.decode(merged);\n}\n\nconst xaiVideoStatusResponseHandler: ResponseHandler<\n z.infer<typeof xaiVideoStatusResponseSchema>\n> = async options => {\n // xAI answers 202 while a generation is still running, sometimes with an\n // empty body. Read it rather than cancelling: `body.cancel()` never settles\n // on a tee branch, which `Response.clone()` in fetch instrumentation creates.\n if (options.response.status === 202) {\n const responseHeaders = extractResponseHeaders(options.response);\n const text = await readPendingBody(options);\n\n if (text.trim().length === 0) {\n return { responseHeaders, value: { status: 'pending' } };\n }\n\n const parsed = await safeParseJSON({\n text,\n schema: xaiVideoStatusResponseSchema,\n });\n\n return {\n responseHeaders,\n value: parsed.success ? parsed.value : { status: 'pending' },\n };\n }\n\n return xaiVideoStatusJsonResponseHandler(options);\n};\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst resolutionSchema = z.enum(['480p', '720p', '1080p']);\nconst modeSchema = z.enum(['edit-video', 'extend-video', 'reference-to-video']);\n\nexport type XaiVideoMode = z.infer<typeof modeSchema>;\ntype XaiVideoResolution = z.infer<typeof resolutionSchema>;\n\ninterface XaiVideoSharedOptions {\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n resolution?: XaiVideoResolution | null;\n}\n\ninterface XaiVideoUserOptions {\n /**\n * A unique identifier representing the end user, for abuse monitoring.\n */\n user?: string;\n}\n\ninterface XaiVideoEditModeOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Select edit-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'edit-video';\n /** Source video URL to edit. */\n videoUrl: string;\n}\n\ninterface XaiVideoExtendModeOptions extends XaiVideoSharedOptions {\n /**\n * Select extend-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'extend-video';\n /** Source video URL to extend from its last frame. */\n videoUrl: string;\n}\n\ninterface XaiVideoReferenceToVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Select reference-to-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'reference-to-video';\n /** Reference image URLs (1-7) for R2V generation. */\n referenceImageUrls: string[];\n /**\n * Preset voice ids (up to 3) that give the subject a voice.\n */\n referenceVoiceIds?: string[];\n}\n\ninterface XaiVideoGenerationOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n mode?: undefined;\n videoUrl?: undefined;\n referenceImageUrls?: undefined;\n}\n\ninterface XaiLegacyEditVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `videoUrl` behaves like edit-video.\n */\n mode?: undefined;\n videoUrl: string;\n}\n\ninterface XaiLegacyReferenceToVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `referenceImageUrls` behaves like reference-to-video.\n */\n mode?: undefined;\n referenceImageUrls: string[];\n /**\n * Preset voice ids (up to 3) that give the subject a voice.\n */\n referenceVoiceIds?: string[];\n}\n\n/**\n * Provider options for xAI video generation.\n *\n * Use the `mode` option to select the operation:\n *\n * - `'edit-video'` + `videoUrl` -- video editing (`POST /v1/videos/edits`)\n * - `'extend-video'` + `videoUrl` -- video extension (`POST /v1/videos/extensions`)\n * - `'reference-to-video'` + `referenceImageUrls` -- R2V generation (`POST /v1/videos/generations`)\n * - no `mode` -- standard generation from text prompts or image input\n *\n * Runtime remains backward compatible with legacy auto-detected provider\n * options, but the public TypeScript type is intentionally explicit so editors\n * can suggest valid modes and flag invalid field combinations.\n */\nexport type XaiVideoModelOptions =\n | XaiVideoGenerationOptions\n | XaiVideoEditModeOptions\n | XaiVideoExtendModeOptions\n | XaiVideoReferenceToVideoOptions\n | XaiLegacyEditVideoOptions\n | XaiLegacyReferenceToVideoOptions;\n\n// ── Runtime schemas ───────────────────────────────────────────────────\nconst baseFields = {\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n resolution: resolutionSchema.nullish(),\n};\n\nconst runtimeSchema = z.looseObject({\n mode: modeSchema.optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n referenceVoiceIds: z.array(nonEmptyStringSchema).max(3).optional(),\n user: z.string().optional(),\n ...baseFields,\n});\n\nexport type XaiParsedVideoModelOptions = z.infer<typeof runtimeSchema>;\n\nexport const xaiVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(runtimeSchema),\n);\n","import type { SharedV4Warning, SpeechModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiSpeechModelOptionsSchema } from './xai-speech-model-options';\n\ninterface XaiSpeechModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\ntype XaiSpeechCodec = 'mp3' | 'wav' | 'pcm' | 'mulaw' | 'alaw';\n\nexport class XaiSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiSpeechModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiSpeechModelConfig;\n }) {\n return new XaiSpeechModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'eve',\n outputFormat = 'mp3',\n instructions,\n speed,\n language = 'auto',\n providerOptions,\n }: Parameters<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiSpeechModelOptionsSchema,\n });\n\n let codec: XaiSpeechCodec = 'mp3';\n if (['mp3', 'wav', 'pcm', 'mulaw', 'alaw'].includes(outputFormat)) {\n codec = outputFormat as XaiSpeechCodec;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n\n if (instructions != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details:\n 'xAI speech models do not support the `instructions` option. ' +\n 'Use xAI speech tags in `text` to control delivery.',\n });\n }\n\n const output_format: {\n codec: XaiSpeechCodec;\n sample_rate?: number;\n bit_rate?: number;\n } = {\n codec,\n };\n\n if (xaiOptions?.sampleRate != null) {\n output_format.sample_rate = xaiOptions.sampleRate;\n }\n\n if (xaiOptions?.bitRate != null) {\n if (codec === 'mp3') {\n output_format.bit_rate = xaiOptions.bitRate;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details:\n 'xAI `bitRate` is supported only for mp3 output. It was ignored.',\n });\n }\n }\n\n const requestBody = {\n text,\n voice_id: voice,\n language,\n output_format,\n speed,\n optimize_streaming_latency: xaiOptions?.optimizeStreamingLatency,\n text_normalization: xaiOptions?.textNormalization,\n with_timestamps: xaiOptions?.withTimestamps,\n replace: xaiOptions?.replace,\n };\n\n return {\n requestBody,\n warnings,\n withTimestamps: xaiOptions?.withTimestamps === true,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings, withTimestamps } =\n await this.getArgs(options);\n\n // With `with_timestamps` the API returns a JSON envelope carrying\n // base64-encoded audio plus character-level timings instead of raw\n // audio bytes.\n const { value, responseHeaders, rawValue } = await postJsonToApi<\n Uint8Array | XaiSpeechTimestampsResponse\n >({\n url: `${this.config.baseURL}/tts`,\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n options.headers,\n ),\n body: requestBody,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: withTimestamps\n ? createJsonResponseHandler(xaiSpeechTimestampsResponseSchema)\n : createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let audio: Uint8Array;\n let envelope: XaiSpeechTimestampsResponse | undefined;\n if (value instanceof Uint8Array) {\n audio = value;\n } else {\n envelope = value;\n // Empty audio is returned as-is so the core layer throws\n // NoSpeechGeneratedError.\n audio =\n envelope.audio != null\n ? convertBase64ToUint8Array(envelope.audio)\n : new Uint8Array(0);\n }\n\n // xAI returns a trace id on every response (success and error).\n const traceId = responseHeaders?.['x-trace-id'];\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawValue,\n },\n providerMetadata: {\n xai: {\n ...(traceId != null ? { traceId } : {}),\n ...(envelope?.duration != null\n ? { duration: envelope.duration }\n : {}),\n ...(envelope?.content_type != null\n ? { contentType: envelope.content_type }\n : {}),\n ...(envelope?.audio_timestamps != null\n ? {\n audioTimestamps: {\n graphChars: envelope.audio_timestamps.graph_chars,\n graphTimes: envelope.audio_timestamps.graph_times,\n },\n }\n : {}),\n },\n },\n };\n }\n}\n\n// Minimal schema for the `with_timestamps` JSON envelope: only the fields\n// the implementation reads, with `.nullish()` so provider API changes don't\n// break parsing.\nconst xaiSpeechTimestampsResponseSchema = z.object({\n audio: z.string().nullish(),\n content_type: z.string().nullish(),\n duration: z.number().nullish(),\n audio_timestamps: z\n .object({\n graph_chars: z.array(z.string()),\n graph_times: z.array(z.tuple([z.number(), z.number()])),\n })\n .nullish(),\n});\n\ntype XaiSpeechTimestampsResponse = z.infer<\n typeof xaiSpeechTimestampsResponseSchema\n>;\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiSpeechModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Sample rate of the generated audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * MP3 bit rate in bits per second. Only applies when outputFormat is mp3.\n */\n bitRate: z\n .union([\n z.literal(32000),\n z.literal(64000),\n z.literal(96000),\n z.literal(128000),\n z.literal(192000),\n ])\n .nullish(),\n\n /**\n * Reduce time to first audio chunk, trading some quality for latency.\n */\n optimizeStreamingLatency: z\n .union([z.literal(0), z.literal(1), z.literal(2)])\n .nullish(),\n\n /**\n * Normalize written-form text into spoken-form text before synthesis.\n */\n textNormalization: z.boolean().nullish(),\n\n /**\n * Return character-level timing metadata alongside the audio. When\n * enabled, the response carries per-character start/end times and the\n * total duration, exposed via `providerMetadata.xai`.\n */\n withTimestamps: z.boolean().nullish(),\n\n /**\n * Map of phrases to spoken substitutions applied before synthesis.\n * Values may be respellings (`{ 'Acme Mobile': 'Acme Mobull' }`) or IPA\n * phonetics (`{ nginx: '/ˈɛndʒɪn ˈɛks/' }`).\n */\n replace: z.record(z.string(), z.string()).nullish(),\n }),\n ),\n);\n\nexport type XaiSpeechModelOptions = InferSchema<\n typeof xaiSpeechModelOptionsSchema\n>;\n","import {\n InvalidArgumentError,\n type Experimental_TranscriptionModelV4StreamOptions as TranscriptionModelV4StreamOptions,\n type SharedV4Warning,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n connectToWebSocket,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n safeParseJSON,\n serializeModelOptions,\n toWebSocketUrl,\n waitForWebSocketBufferDrain,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type WebSocketConnection,\n type WebSocketConstructor,\n type WebSocketLike,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n xaiTranscriptionModelOptionsSchema,\n type XaiTranscriptionModelOptions,\n} from './xai-transcription-model-options';\n\ninterface XaiTranscriptionModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n webSocket?: WebSocketConstructor;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\ntype XaiStreamingTranscriptionEvent = {\n type?: string;\n text?: string;\n words?: Array<{ text?: string; start?: number; end?: number }>;\n is_final?: boolean;\n speech_final?: boolean;\n start?: number;\n duration?: number;\n channel_index?: number;\n message?: string;\n};\n\nexport class XaiTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiTranscriptionModelConfig;\n }) {\n return new XaiTranscriptionModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiTranscriptionModelOptionsSchema,\n });\n\n const formData = new FormData();\n const transcriptionOptions = {\n audio_format: xaiOptions?.audioFormat,\n sample_rate: xaiOptions?.sampleRate,\n language: xaiOptions?.language,\n format: xaiOptions?.format,\n multichannel: xaiOptions?.multichannel,\n channels: xaiOptions?.channels,\n diarize: xaiOptions?.diarize,\n filler_words: xaiOptions?.fillerWords,\n };\n\n for (const [key, value] of Object.entries(transcriptionOptions)) {\n if (value != null) {\n formData.append(key, String(value));\n }\n }\n\n if (xaiOptions?.keyterm != null) {\n const keyterms = Array.isArray(xaiOptions.keyterm)\n ? xaiOptions.keyterm\n : [xaiOptions.keyterm];\n\n for (const keyterm of keyterms) {\n formData.append('keyterm', keyterm);\n }\n }\n\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n const fileExtension = mediaTypeToExtension(mediaType);\n\n // xAI requires `file` to be the final multipart field.\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n return { formData, warnings };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/stt`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: response.language || undefined,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n\n async doStream(\n options: TranscriptionModelV4StreamOptions,\n ): Promise<\n Awaited<ReturnType<NonNullable<TranscriptionModelV4['doStream']>>>\n > {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiTranscriptionModelOptionsSchema,\n });\n\n if (xaiOptions?.multichannel === true && xaiOptions.channels == null) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message:\n 'providerOptions.xai.channels is required when providerOptions.xai.multichannel is true',\n });\n }\n\n if (xaiOptions?.format != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions.xai.format',\n details: 'xAI streaming transcription does not support format.',\n });\n }\n\n if (\n xaiOptions?.audioFormat == null &&\n !isKnownInputAudioFormat(options.inputAudioFormat.type)\n ) {\n warnings.push({\n type: 'other',\n message:\n `Unrecognized inputAudioFormat.type \"${options.inputAudioFormat.type}\"; ` +\n `falling back to raw PCM encoding. ` +\n `Use audio/pcm, audio/pcmu, or audio/pcma, ` +\n `or set providerOptions.xai.audioFormat explicitly.`,\n });\n }\n\n const url = buildXaiStreamingTranscriptionUrl({\n baseURL: this.config.baseURL ?? 'https://api.x.ai/v1',\n inputAudioFormat: options.inputAudioFormat,\n providerOptions: xaiOptions,\n });\n const headers = combineHeaders(this.config.headers?.(), options.headers);\n\n return {\n request: { body: url.toString() },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n },\n stream: createXaiStreamingTranscriptionStream({\n webSocket: this.config.webSocket,\n url,\n headers,\n warnings,\n language: xaiOptions?.language ?? undefined,\n expectedDoneCount:\n xaiOptions?.multichannel === true ? xaiOptions.channels! : 1,\n audio: options.audio,\n abortSignal: options.abortSignal,\n includeRawChunks: options.includeRawChunks,\n }),\n };\n }\n}\n\nfunction createXaiStreamingTranscriptionStream({\n webSocket,\n url,\n headers,\n warnings,\n language,\n expectedDoneCount,\n audio,\n abortSignal,\n includeRawChunks,\n}: {\n webSocket: WebSocketConstructor | undefined;\n url: URL;\n headers: Record<string, string | undefined>;\n warnings: SharedV4Warning[];\n language: string | undefined;\n expectedDoneCount: number;\n audio: ReadableStream<Uint8Array | string>;\n abortSignal: AbortSignal | undefined;\n includeRawChunks: boolean | undefined;\n}) {\n let finished = false;\n let cleanup: (closeCode?: number) => void = () => {};\n\n return new ReadableStream({\n start: controller => {\n const doneTexts = new Map<number, string>();\n // per-channel finalized utterances + latest revisable text, used to\n // reconstruct the finish text (xAI's `transcript.done` has empty text):\n const finalizedTexts = new Map<number, string[]>();\n const pendingTexts = new Map<number, string>();\n let doneDuration: number | undefined;\n let audioReader:\n | ReadableStreamDefaultReader<Uint8Array | string>\n | undefined;\n let connection: WebSocketConnection | undefined;\n\n cleanup = (closeCode?: number) => {\n if (audioReader != null) {\n void audioReader.cancel().catch(() => {});\n } else {\n // pre-open failure or abort: cancel the caller's audio stream so an\n // upstream producer piping into it does not hang:\n void audio.cancel().catch(() => {});\n }\n connection?.close(closeCode);\n };\n\n const finishWithError = (error: unknown) => {\n if (finished) return;\n finished = true;\n cleanup();\n controller.error(error);\n };\n\n const maybeFinish = () => {\n if (finished || doneTexts.size < expectedDoneCount) return;\n finished = true;\n const text = [...doneTexts.entries()]\n .sort(([a], [b]) => a - b)\n .map(([, value]) => value)\n .join('\\n');\n controller.enqueue({\n type: 'finish',\n text,\n segments: [],\n language,\n durationInSeconds: doneDuration,\n });\n controller.close();\n cleanup(1000);\n };\n\n const sendAudio = async (socket: WebSocketLike) => {\n audioReader = audio.getReader();\n try {\n while (true) {\n const { done, value } = await audioReader.read();\n if (done || finished) break;\n socket.send(\n value instanceof Uint8Array\n ? value\n : convertBase64ToUint8Array(value),\n );\n // backpressure: pause reads while the socket buffer is full\n await waitForWebSocketBufferDrain(socket);\n }\n } finally {\n audioReader.releaseLock();\n // unlocked again: cleanup must cancel `audio`, not the reader\n audioReader = undefined;\n }\n if (!finished) {\n socket.send(JSON.stringify({ type: 'audio.done' }));\n }\n };\n\n connection = connectToWebSocket({\n url,\n headers,\n webSocket,\n abortSignal,\n onAbort: finishWithError,\n onProcessingError: finishWithError,\n onMessageText: async text => {\n const parsed = await safeParseJSON({ text });\n if (!parsed.success) return;\n const raw = parsed.value as XaiStreamingTranscriptionEvent;\n\n if (includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: raw });\n }\n\n switch (raw.type) {\n case 'transcript.created': {\n controller.enqueue({ type: 'stream-start', warnings });\n const socket = connection?.socket;\n if (socket == null) {\n finishWithError(new Error('WebSocket is not connected.'));\n break;\n }\n void sendAudio(socket).catch(finishWithError);\n break;\n }\n\n case 'transcript.partial': {\n const id = channelId(raw.channel_index);\n const channelIndex = raw.channel_index ?? 0;\n // only `speech_final` completes an utterance; `is_final`\n // fragments are re-sent/revised later, so they stay partials:\n if (raw.is_final && raw.speech_final) {\n const timing = timingFromXaiEvent(raw);\n if (raw.text) {\n finalizedTexts.set(channelIndex, [\n ...(finalizedTexts.get(channelIndex) ?? []),\n raw.text,\n ]);\n }\n pendingTexts.delete(channelIndex);\n controller.enqueue({\n type: 'transcript-final',\n id,\n text: raw.text ?? '',\n ...timing,\n channelIndex: raw.channel_index,\n });\n } else {\n pendingTexts.set(channelIndex, raw.text ?? '');\n controller.enqueue({\n type: 'transcript-partial',\n id,\n text: raw.text ?? '',\n startSecond: raw.start,\n durationInSeconds: raw.duration,\n channelIndex: raw.channel_index,\n });\n }\n break;\n }\n\n case 'transcript.done': {\n const channelIndex = raw.channel_index ?? 0;\n // `transcript.done` text is empty; fall back to the\n // accumulated utterances plus any trailing unfinalized text:\n const accumulated = [\n ...(finalizedTexts.get(channelIndex) ?? []),\n ...(pendingTexts.get(channelIndex)\n ? [pendingTexts.get(channelIndex) as string]\n : []),\n ].join(' ');\n doneTexts.set(channelIndex, raw.text || accumulated);\n doneDuration = raw.duration ?? doneDuration;\n maybeFinish();\n break;\n }\n\n case 'error': {\n // xAI STT errors are terminal: surface the server message\n // instead of letting the socket close mask it.\n finishWithError(new Error(raw.message ?? 'xAI STT error'));\n break;\n }\n }\n },\n onSocketError: () => {\n finishWithError(\n new Error(\n 'xAI streaming transcription error.' +\n (webSocket == null\n ? ' Note: the native WebSocket implementation in browsers,' +\n ' Node.js, Deno, and Bun cannot send the Authorization' +\n ' header required by xAI. Pass a header-capable WebSocket' +\n \" implementation (e.g. the 'ws' package) via\" +\n ' createXai({ webSocket }).'\n : ''),\n ),\n );\n },\n onClose: () => {\n if (finished) return;\n finished = true;\n cleanup();\n controller.close();\n },\n });\n },\n\n cancel: () => {\n if (finished) return;\n finished = true;\n cleanup();\n },\n });\n}\n\nfunction buildXaiStreamingTranscriptionUrl({\n baseURL,\n inputAudioFormat,\n providerOptions,\n}: {\n baseURL: string;\n inputAudioFormat: TranscriptionModelV4StreamOptions['inputAudioFormat'];\n providerOptions: XaiTranscriptionModelOptions | undefined;\n}) {\n const url = toWebSocketUrl(`${baseURL}/stt`);\n\n appendSearchParam(\n url,\n 'sample_rate',\n providerOptions?.sampleRate ?? inputAudioFormat.rate,\n );\n appendSearchParam(\n url,\n 'encoding',\n providerOptions?.audioFormat ??\n encodingFromInputAudioFormat(inputAudioFormat.type),\n );\n appendSearchParam(url, 'language', providerOptions?.language);\n appendSearchParam(url, 'diarize', providerOptions?.diarize);\n appendSearchParam(url, 'filler_words', providerOptions?.fillerWords);\n appendSearchParam(url, 'multichannel', providerOptions?.multichannel);\n appendSearchParam(url, 'channels', providerOptions?.channels);\n appendSearchParam(\n url,\n 'interim_results',\n providerOptions?.streaming?.interimResults,\n );\n appendSearchParam(\n url,\n 'endpointing',\n providerOptions?.streaming?.endpointing,\n );\n appendSearchParam(url, 'smart_turn', providerOptions?.streaming?.smartTurn);\n appendSearchParam(\n url,\n 'smart_turn_timeout',\n providerOptions?.streaming?.smartTurnTimeout,\n );\n\n if (providerOptions?.keyterm != null) {\n const keyterms = Array.isArray(providerOptions.keyterm)\n ? providerOptions.keyterm\n : [providerOptions.keyterm];\n for (const keyterm of keyterms) {\n url.searchParams.append('keyterm', keyterm);\n }\n }\n\n return url;\n}\n\nfunction appendSearchParam(\n url: URL,\n key: string,\n value: string | number | boolean | null | undefined,\n) {\n if (value != null) {\n url.searchParams.set(key, String(value));\n }\n}\n\nfunction isKnownInputAudioFormat(type: string): boolean {\n return type === 'audio/pcm' || type === 'audio/pcmu' || type === 'audio/pcma';\n}\n\nfunction encodingFromInputAudioFormat(type: string): 'pcm' | 'mulaw' | 'alaw' {\n switch (type) {\n case 'audio/pcmu':\n return 'mulaw';\n case 'audio/pcma':\n return 'alaw';\n default:\n return 'pcm';\n }\n}\n\nfunction channelId(channelIndex: number | undefined): string | undefined {\n return channelIndex == null ? undefined : `channel-${channelIndex}`;\n}\n\nfunction timingFromXaiEvent(event: XaiStreamingTranscriptionEvent) {\n return {\n ...(event.start != null ? { startSecond: event.start } : {}),\n ...(event.start != null && event.duration != null\n ? { endSecond: event.start + event.duration }\n : {}),\n };\n}\n\nconst xaiTranscriptionResponseSchema = z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n text: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiTranscriptionModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Audio encoding for raw, headerless input audio.\n */\n audioFormat: z.enum(['pcm', 'mulaw', 'alaw']).nullish(),\n\n /**\n * Sample rate of the input audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * Language code used for inverse text normalization.\n */\n language: z.string().nullish(),\n\n /**\n * Enable inverse text normalization. Requires `language`.\n */\n format: z.boolean().nullish(),\n\n /**\n * Enable per-channel transcription for multichannel audio.\n */\n multichannel: z.boolean().nullish(),\n\n /**\n * Number of interleaved audio channels.\n */\n channels: z.number().int().min(2).max(8).nullish(),\n\n /**\n * Enable speaker diarization.\n */\n diarize: z.boolean().nullish(),\n\n /**\n * Terms to bias transcription toward.\n */\n keyterm: z.union([z.string(), z.array(z.string())]).nullish(),\n\n /**\n * Include filler words such as \"uh\" and \"um\" in the transcript.\n */\n fillerWords: z.boolean().nullish(),\n\n /**\n * Options for streaming speech-to-text over WebSocket.\n */\n streaming: z\n .object({\n /**\n * Emit interim transcript results while speech is being processed.\n */\n interimResults: z.boolean().optional(),\n\n /**\n * Silence duration in milliseconds before an utterance-final event.\n */\n endpointing: z.number().int().min(0).max(5000).optional(),\n\n /**\n * End-of-turn detection threshold. When set, enables Smart Turn.\n */\n smartTurn: z.number().min(0).max(1).optional(),\n\n /**\n * Maximum silence duration in milliseconds before forcing speech_final.\n */\n smartTurnTimeout: z.number().int().min(1).max(5000).optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport type XaiTranscriptionModelOptions = InferSchema<\n typeof xaiTranscriptionModelOptionsSchema\n>;\n"],"mappings":"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","names":["z","z","z","UnsupportedFunctionalityError","combineHeaders","convertImageModelFileToDataUri","createJsonResponseHandler","createBinaryResponseHandler","getFromApi","lazySchema","parseProviderOptions","postJsonToApi","zodSchema","z","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","parseProviderOptions","z","parseProviderOptions","z","z","UnsupportedFunctionalityError","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","xaiTools","UnsupportedFunctionalityError","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","xaiTools","postJsonToApi","combineHeaders","createJsonResponseHandler","_a","_b","_c","response","lazySchema","zodSchema","z","UnsupportedFunctionalityError","parseProviderOptions","combineHeaders","createJsonResponseHandler","postJsonToApi","getFromApi","body","warnings","convertImageModelFileToDataUri","createBinaryResponseHandler","_a","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","InvalidArgumentError","combineHeaders","createJsonResponseHandler","getFromApi","parseProviderOptions","postFormDataToApi","lazySchema","zodSchema","z","InvalidArgumentError","combineHeaders","parseProviderOptions","createJsonResponseHandler","postFormDataToApi","getFromApi","combineHeaders","createJsonResponseHandler","getFromApi","getTopLevelMediaType","parseProviderOptions","postJsonToApi","z","lazySchema","zodSchema","z","encodePathSegment","getTopLevelMediaType","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","getFromApi","z","combineHeaders","convertBase64ToUint8Array","createBinaryResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","createBinaryResponseHandler","convertBase64ToUint8Array","z","InvalidArgumentError","combineHeaders","convertBase64ToUint8Array","createJsonResponseHandler","parseProviderOptions","postFormDataToApi","safeParseJSON","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","convertBase64ToUint8Array","postFormDataToApi","combineHeaders","createJsonResponseHandler","InvalidArgumentError","safeParseJSON","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-image-model.ts","../src/xai-error.ts","../src/xai-image-model-options.ts","../src/xai-batch.ts","../src/get-response-metadata.ts","../src/map-xai-finish-reason.ts","../src/files/xai-files-api.ts","../src/responses/xai-responses-language-model.ts","../src/supports-reasoning-effort.ts","../src/responses/convert-to-xai-responses-input.ts","../src/xai-file-part-options.ts","../src/responses/convert-xai-responses-usage.ts","../src/responses/map-xai-responses-finish-reason.ts","../src/responses/xai-responses-api.ts","../src/responses/xai-responses-language-model-options.ts","../src/responses/xai-responses-prepare-tools.ts","../src/tool/file-search.ts","../src/tool/image-generation.ts","../src/tool/mcp-server.ts","../src/tool/web-search.ts","../src/tool/x-search.ts","../src/realtime/xai-realtime-event-mapper.ts","../src/realtime/xai-realtime-model.ts","../src/tool/code-execution.ts","../src/tool/view-image.ts","../src/tool/view-x-video.ts","../src/tool/index.ts","../src/version.ts","../src/files/xai-files.ts","../src/files/xai-files-options.ts","../src/xai-video-model.ts","../src/xai-video-model-options.ts","../src/xai-speech-model.ts","../src/xai-speech-model-options.ts","../src/xai-transcription-model.ts","../src/xai-transcription-model-options.ts"],"sourcesContent":["import {\n type Experimental_RealtimeFactoryV4 as RealtimeFactoryV4,\n type Experimental_RealtimeFactoryV4GetTokenOptions as RealtimeFactoryV4GetTokenOptions,\n type Experimental_VideoModelV4,\n type Experimental_BatchV4 as BatchV4,\n type FilesV4,\n type ImageModelV4,\n type LanguageModelV4,\n NoSuchModelError,\n type ProviderV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n type WebSocketConstructor,\n} from '@ai-sdk/provider-utils';\nimport { XaiImageModel } from './xai-image-model';\nimport type { XaiImageModelId } from './xai-image-settings';\nimport { XaiBatch } from './xai-batch';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport type { XaiResponsesModelId } from './responses/xai-responses-language-model-options';\nimport { XaiRealtimeModel } from './realtime/xai-realtime-model';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\nimport { XaiFiles } from './files/xai-files';\nimport { XaiVideoModel } from './xai-video-model';\nimport type { XaiVideoModelId } from './xai-video-settings';\nimport { XaiSpeechModel } from './xai-speech-model';\nimport { XaiTranscriptionModel } from './xai-transcription-model';\n\nexport interface XaiProvider extends ProviderV4 {\n (modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai language model for text generation.\n */\n languageModel(modelId: XaiResponsesModelId): LanguageModelV4;\n\n /**\n * Creates an Xai responses model for text generation.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV4;\n\n /**\n * Returns a BatchV4 interface for processing batches with xAI.\n */\n experimental_batch(): BatchV4<{\n text: XaiResponsesModelId;\n image: XaiImageModelId;\n }>;\n\n /**\n * Creates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n video(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates an Xai video model for video generation.\n */\n videoModel(modelId: XaiVideoModelId): Experimental_VideoModelV4;\n\n experimental_realtime: RealtimeFactoryV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speech(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech generation (text-to-speech).\n */\n speechModel(): SpeechModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcription(): TranscriptionModelV4;\n\n /**\n * Creates an xAI model for speech-to-text transcription.\n */\n transcriptionModel(): TranscriptionModelV4;\n\n /**\n * Returns the xAI files interface for uploading files.\n */\n files(): FilesV4;\n\n /**\n * Server-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface XaiProviderSettings {\n /**\n * Base URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Custom WebSocket implementation. Required in runtimes whose native\n * WebSocket constructor does not support headers for xAI streaming STT.\n */\n webSocket?: WebSocketConstructor;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new XaiImageModel(modelId, {\n provider: 'xai.image',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createVideoModel = (modelId: XaiVideoModelId) => {\n return new XaiVideoModel(modelId, {\n provider: 'xai.video',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createRealtimeModel = (modelId: string) => {\n return new XaiRealtimeModel(modelId, {\n provider: 'xai.realtime',\n baseURL: baseURL ?? 'https://api.x.ai/v1',\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createSpeechModel = () => {\n return new XaiSpeechModel('', {\n provider: 'xai.speech',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const createTranscriptionModel = () => {\n return new XaiTranscriptionModel('', {\n provider: 'xai.transcription',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n webSocket: options.webSocket,\n });\n };\n\n const experimentalRealtimeFactory = Object.assign(\n (modelId: string) => createRealtimeModel(modelId),\n {\n getToken: async (tokenOptions: RealtimeFactoryV4GetTokenOptions) => {\n const model = createRealtimeModel(tokenOptions.model);\n const secret = await model.doCreateClientSecret({\n sessionConfig: tokenOptions.sessionConfig,\n expiresAfterSeconds: tokenOptions.expiresAfterSeconds,\n });\n\n return {\n token: secret.token,\n url: secret.url,\n expiresAt: secret.expiresAt,\n };\n },\n },\n ) as RealtimeFactoryV4;\n\n const createFiles = () =>\n new XaiFiles({\n provider: 'xai.files',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createBatch = () =>\n new XaiBatch({\n provider: 'xai.batch',\n config: {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n },\n });\n\n const provider = (modelId: XaiResponsesModelId) =>\n createResponsesLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createResponsesLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.videoModel = createVideoModel;\n provider.video = createVideoModel;\n provider.experimental_realtime = experimentalRealtimeFactory;\n provider.speechModel = createSpeechModel;\n provider.speech = createSpeechModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.transcription = createTranscriptionModel;\n provider.files = createFiles;\n provider.experimental_batch = createBatch;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiImageModelOptions } from './xai-image-model-options';\nimport type { XaiImageModelId } from './xai-image-settings';\n\ninterface XaiImageModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class XaiImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 3;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: XaiImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiImageModelId;\n config: XaiImageModelConfig;\n }) {\n return new XaiImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: XaiImageModelId,\n private config: XaiImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n });\n }\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n\n const hasFiles = files != null && files.length > 0;\n const imageUrls = hasFiles\n ? files.map(file => convertImageModelFileToDataUri(file))\n : [];\n\n const endpoint = hasFiles ? '/images/edits' : '/images/generations';\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n\n if (aspectRatio != null) {\n body.aspect_ratio = aspectRatio;\n }\n\n if (xaiOptions?.output_format != null) {\n body.output_format = xaiOptions.output_format;\n }\n\n if (xaiOptions?.sync_mode != null) {\n body.sync_mode = xaiOptions.sync_mode;\n }\n\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null) {\n body.aspect_ratio = xaiOptions.aspect_ratio;\n }\n\n if (xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n }\n\n if (xaiOptions?.quality != null) {\n body.quality = xaiOptions.quality;\n }\n\n if (xaiOptions?.user != null) {\n body.user = xaiOptions.user;\n }\n\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${baseURL}${endpoint}`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.data.some(image => image.respect_moderation === false)) {\n throw new Error(\n 'Image generation was blocked due to a content policy violation.',\n );\n }\n\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(image =>\n this.downloadImage(image.url!, abortSignal),\n ),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n images: response.data.map(item => ({\n ...(item.revised_prompt\n ? { revisedPrompt: item.revised_prompt }\n : {}),\n })),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private async downloadImage(\n url: string,\n abortSignal: AbortSignal | undefined,\n ): Promise<Uint8Array> {\n const { value } = await getFromApi({\n url,\n // url is a generated-image URL from the provider response; validate it.\n validateUrl: true,\n trustedOrigin: this.config.baseURL,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n return value;\n }\n}\n\nconst xaiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n respect_moderation: z.boolean().nullish(),\n }),\n ),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst apiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nconst responsesErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\n// Text to Speech error shape, e.g. {\"error\":\"speed must be between 0.7 and 1.5\"}\nconst speechErrorSchema = z.object({\n error: z.string(),\n});\n\nexport const xaiErrorDataSchema = z.union([\n apiErrorSchema,\n responsesErrorSchema,\n speechErrorSchema,\n]);\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => {\n if (typeof data.error === 'string') {\n return 'code' in data ? `${data.code}: ${data.error}` : data.error;\n }\n return data.error.message;\n },\n});\n","import { z } from 'zod/v4';\n\nexport const xaiImageModelOptions = z.object({\n aspect_ratio: z.string().optional(),\n output_format: z.string().optional(),\n sync_mode: z.boolean().optional(),\n resolution: z.enum(['1k', '2k']).optional(),\n quality: z.enum(['low', 'medium', 'high']).optional(),\n user: z.string().optional(),\n});\n\nexport type XaiImageModelOptions = z.infer<typeof xaiImageModelOptions>;\n","import {\n InvalidArgumentError,\n UnsupportedFunctionalityError,\n type Experimental_BatchV4 as BatchV4,\n type Experimental_BatchV4CancelResult as BatchV4CancelResult,\n type Experimental_BatchV4Error as BatchV4Error,\n type Experimental_BatchV4ItemResult as BatchV4ItemResult,\n type Experimental_BatchV4ListOptions as BatchV4ListOptions,\n type Experimental_BatchV4ListResult as BatchV4ListResult,\n type Experimental_BatchV4OperationOptions as BatchV4OperationOptions,\n type Experimental_BatchV4StartResult as BatchV4StartResult,\n type Experimental_BatchV4Status as BatchV4Status,\n type Experimental_TextBatchV4Request as TextBatchV4Request,\n type Experimental_ImageBatchV4Request as ImageBatchV4Request,\n type Experimental_ImageBatchV4ItemResult as ImageBatchV4ItemResult,\n type Experimental_TextBatchV4ItemResult as TextBatchV4ItemResult,\n type Experimental_BatchV4StartOptions as BatchV4StartOptions,\n type LanguageModelV4Content,\n type LanguageModelV4GenerateResult,\n type SharedV4ProviderMetadata,\n type SharedV4Warning,\n type ImageModelV4Result,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n convertBase64ToUint8Array,\n convertAsyncIteratorToReadableStream,\n createJsonResponseHandler,\n createBinaryResponseHandler,\n createNullLanguageModelUsage,\n getFromApi,\n lazySchema,\n normalizeBatchRequestCounts,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n safeValidateTypes,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiFilesResponseSchema } from './files/xai-files-api';\nimport {\n XaiResponsesLanguageModel,\n xaiResponsesSupportedUrls,\n type XaiResponsesConfig,\n} from './responses/xai-responses-language-model';\nimport type { XaiResponsesModelId } from './responses/xai-responses-language-model-options';\nimport type { XaiImageModelId } from './xai-image-settings';\nimport { xaiImageModelOptions } from './xai-image-model-options';\n\nconst xaiBatchEndpoint = '/v1/responses';\nconst xaiBatchName = 'ai-sdk-text-batch';\nconst xaiBatchResultsPageSize = 1000;\n\nconst xaiBatchProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * TTL in seconds for the uploaded batch input file, measured from\n * upload time. xAI accepts integers between 3600 (1 hour) and\n * 2592000 (30 days) inclusive. Without it the file has no expiry.\n */\n inputFileExpiresAfter: z\n .number()\n .int()\n .min(3600)\n .max(2_592_000)\n .optional(),\n }),\n ),\n);\n\ntype XaiBatchModelIds = {\n readonly text: XaiResponsesModelId;\n readonly image: XaiImageModelId;\n};\ntype XaiBatchRequest = TextBatchV4Request<XaiResponsesModelId>;\ntype XaiImageBatchRequest = ImageBatchV4Request<XaiImageModelId>;\n\nfunction assertSupportedBatchRequests(\n requests: BatchV4StartOptions<XaiBatchModelIds>['requests'],\n) {\n for (const request of requests) {\n const requestType = request.type;\n if (requestType !== 'text' && requestType !== 'image') {\n throw new UnsupportedFunctionalityError({\n functionality: `batch request type: ${requestType}`,\n message: `The xAI Batch API does not support batch requests with type \"${requestType}\".`,\n });\n }\n }\n}\n\ntype XaiBatchPreparedRequest = {\n endpoint: string;\n body: unknown;\n warnings: SharedV4Warning[];\n};\n\nconst xaiBatchImageResponseSchema = z.object({\n data: z.array(\n z.object({\n url: z.string().nullish(),\n b64_json: z.string().nullish(),\n revised_prompt: z.string().nullish(),\n respect_moderation: z.boolean().nullish(),\n }),\n ),\n usage: z.object({ cost_in_usd_ticks: z.number().nullish() }).nullish(),\n});\n\ntype XaiBatchResponseConversion =\n | { success: true; result: LanguageModelV4GenerateResult }\n | { success: false; error: BatchV4Error };\n\nconst xaiBatchResponseZodSchema = () =>\n z.object({\n batch_id: z.string(),\n name: z.string().nullish(),\n create_time: z.string().nullish(),\n expire_time: z.string().nullish(),\n cancel_time: z.string().nullish(),\n cancel_by_xai_message: z.string().nullish(),\n state: z\n .object({\n num_requests: z.number().nullish(),\n num_pending: z.number().nullish(),\n num_success: z.number().nullish(),\n num_error: z.number().nullish(),\n num_cancelled: z.number().nullish(),\n })\n .nullish(),\n });\n\nconst xaiBatchResponseSchema = lazySchema(() =>\n zodSchema(xaiBatchResponseZodSchema()),\n);\n\ntype XaiBatchResponse = InferSchema<typeof xaiBatchResponseSchema>;\n\nconst xaiBatchErrorSchema = z.object({\n code: z.union([z.string(), z.number()]).nullish(),\n message: z.string().nullish(),\n});\n\nconst xaiBatchResultSchema = z.object({\n batch_request_id: z.string(),\n batch_result: z\n .object({\n response: z\n .object({\n chat_get_completion: z.unknown().nullish(),\n image_generation: z.unknown().nullish(),\n })\n .nullish(),\n error: xaiBatchErrorSchema.nullish(),\n })\n .nullish(),\n error_message: z.string().nullish(),\n});\n\ntype XaiBatchResult = z.infer<typeof xaiBatchResultSchema>;\n\n// xAI returns text batch results in Chat Completions API shape even when the\n// request was submitted to the Responses API endpoint.\nconst xaiBatchTextResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .array(\n z.object({\n message: z.object({\n role: z.enum(['assistant', 'tool']),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n cost_in_usd_ticks: z.number().nullish(),\n prompt_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n completion_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .nullish(),\n citations: z.array(z.string().url()).nullish(),\n service_tier: z.string().nullish(),\n code: z.string().nullish(),\n error: z.string().nullish(),\n});\n\ntype XaiBatchTextResponse = z.infer<typeof xaiBatchTextResponseSchema>;\n\nconst xaiBatchResultsPageSchema = lazySchema(() =>\n zodSchema(\n z.object({\n results: z.array(xaiBatchResultSchema),\n pagination_token: z.string().nullish(),\n }),\n ),\n);\n\nconst xaiBatchListResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n batches: z.array(xaiBatchResponseZodSchema()),\n pagination_token: z.string().nullish(),\n }),\n ),\n);\n\nexport class XaiBatch implements BatchV4<XaiBatchModelIds> {\n readonly specificationVersion = 'v4' as const;\n readonly provider: string;\n readonly supportedUrls = xaiResponsesSupportedUrls;\n\n constructor(\n private readonly options: {\n provider: string;\n config: XaiResponsesConfig;\n },\n ) {\n this.provider = options.provider;\n }\n\n async doStartBatch(\n options: BatchV4StartOptions<XaiBatchModelIds>,\n ): Promise<BatchV4StartResult> {\n assertSupportedBatchRequests(options.requests);\n const fileParts: string[] = [];\n const warnings: BatchV4StartResult['warnings'] =\n options.webhookUrl == null\n ? []\n : [\n {\n warning: {\n type: 'unsupported',\n feature: 'webhookUrl',\n details:\n 'The xAI Batch API does not support per-batch webhook URLs.',\n },\n },\n ];\n\n const batchOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiBatchProviderOptionsSchema,\n });\n\n for (const request of options.requests) {\n const preparedRequest = await this.prepareRequest(request);\n\n fileParts.push(\n JSON.stringify({\n custom_id: request.id,\n method: 'POST',\n url: preparedRequest.endpoint,\n body: preparedRequest.body,\n }),\n '\\n',\n );\n\n for (const warning of preparedRequest.warnings) {\n warnings.push({ requestId: request.id, warning });\n }\n }\n\n const filename = 'batch.jsonl';\n const file = new Blob(fileParts, { type: 'application/jsonl' });\n fileParts.length = 0;\n const formData = new FormData();\n // xAI rejects uploads where expires_after arrives after the file part,\n // so all fields precede the file.\n if (batchOptions?.inputFileExpiresAfter != null) {\n formData.append(\n 'expires_after',\n String(batchOptions.inputFileExpiresAfter),\n );\n }\n formData.append('file', file, filename);\n\n const headers = combineHeaders(\n this.options.config.headers?.(),\n options.headers,\n );\n\n const { value: uploadedFile } = await postFormDataToApi({\n url: this.getUrl('/files'),\n headers,\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n const { value: batch } = await postJsonToApi({\n url: this.getUrl('/batches'),\n headers,\n body: {\n name: xaiBatchName,\n input_file_id: uploadedFile.id,\n },\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n return {\n batchId: batch.batch_id,\n ...convertXaiBatchStatus(batch),\n providerMetadata: {\n xai: {\n inputFileId: uploadedFile.id,\n ...(uploadedFile.expires_at != null\n ? {\n inputFileExpiresAt: new Date(\n uploadedFile.expires_at * 1000,\n ).toISOString(),\n }\n : {}),\n },\n },\n warnings,\n };\n }\n\n async doGetBatchStatus(\n options: BatchV4OperationOptions,\n ): Promise<BatchV4Status> {\n return convertXaiBatchStatus(await this.retrieveBatch(options));\n }\n\n async doCancelBatch(\n options: BatchV4OperationOptions,\n ): Promise<BatchV4CancelResult> {\n await postJsonToApi({\n url: this.getUrl(\n `/batches/${encodeURIComponent(options.batchId)}:cancel`,\n ),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n body: {},\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n });\n\n return {};\n }\n\n async doListBatches(options: BatchV4ListOptions): Promise<BatchV4ListResult> {\n const url = new URL(this.getUrl('/batches'));\n if (options.limit != null) {\n url.searchParams.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n url.searchParams.set('pagination_token', options.cursor);\n }\n\n const { value: page } = await getFromApi({\n url: url.toString(),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchListResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n return {\n batches: page.batches.map(batch => ({\n batchId: batch.batch_id,\n ...convertXaiBatchStatus(batch),\n })),\n ...(page.pagination_token != null\n ? { nextCursor: page.pagination_token }\n : {}),\n };\n }\n\n async doGetBatchResults(\n options: BatchV4OperationOptions,\n ): Promise<ReadableStream<BatchV4ItemResult>> {\n const batch = await this.retrieveBatch(options);\n if (convertXaiBatchStatus(batch).status === 'pending') {\n throw new InvalidArgumentError({\n argument: 'batchId',\n message: `xAI batch \"${options.batchId}\" is not complete.`,\n });\n }\n\n return convertAsyncIteratorToReadableStream(\n this.iterateBatchResults(options),\n );\n }\n\n private async retrieveBatch(\n options: BatchV4OperationOptions,\n ): Promise<XaiBatchResponse> {\n const { value: batch } = await getFromApi({\n url: this.getUrl(`/batches/${encodeURIComponent(options.batchId)}`),\n headers: combineHeaders(this.options.config.headers?.(), options.headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n return batch;\n }\n\n private async *iterateBatchResults(\n options: BatchV4OperationOptions,\n ): AsyncGenerator<BatchV4ItemResult> {\n let paginationToken: string | undefined;\n\n do {\n const query = new URLSearchParams({\n limit: String(xaiBatchResultsPageSize),\n });\n if (paginationToken != null) {\n query.set('pagination_token', paginationToken);\n }\n\n const { value: page } = await getFromApi({\n url: this.getUrl(\n `/batches/${encodeURIComponent(options.batchId)}/results?${query}`,\n ),\n headers: combineHeaders(\n this.options.config.headers?.(),\n options.headers,\n ),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiBatchResultsPageSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.options.config.fetch,\n validateUrl: false,\n });\n\n for (const result of page.results) {\n yield await this.convertBatchResult(result, options.abortSignal);\n }\n\n paginationToken = page.pagination_token ?? undefined;\n } while (paginationToken != null);\n }\n\n private async convertBatchResult(\n result: XaiBatchResult,\n abortSignal: AbortSignal | undefined,\n ): Promise<TextBatchV4ItemResult | ImageBatchV4ItemResult> {\n const error = result.batch_result?.error;\n if (\n (result.error_message?.length ?? 0) > 0 ||\n (error?.code != null && error.code !== 0 && error.code !== '0') ||\n (error?.code == null && (error?.message?.length ?? 0) > 0)\n ) {\n const convertedError = convertXaiBatchError(result);\n return {\n type: 'text',\n id: result.batch_request_id,\n status: isXaiCancellationError(error?.code) ? 'cancelled' : 'failed',\n error: convertedError,\n };\n }\n\n const response = result.batch_result?.response;\n if (response?.chat_get_completion != null) {\n const validation = await safeValidateTypes({\n value: response.chat_get_completion,\n schema: zodSchema(xaiBatchTextResponseSchema),\n });\n if (!validation.success) {\n return invalidXaiBatchResult(result.batch_request_id);\n }\n\n const conversion = convertXaiBatchTextResponse(validation.value);\n return conversion.success\n ? {\n type: 'text',\n id: result.batch_request_id,\n status: 'succeeded',\n result: conversion.result,\n }\n : {\n type: 'text',\n id: result.batch_request_id,\n status: 'failed',\n error: conversion.error,\n };\n }\n\n if (response?.image_generation != null) {\n const validation = await safeValidateTypes({\n value: response.image_generation,\n schema: zodSchema(xaiBatchImageResponseSchema),\n });\n if (!validation.success) {\n return invalidXaiImageBatchResult(result.batch_request_id);\n }\n if (\n validation.value.data.some(image => image.respect_moderation === false)\n ) {\n return {\n type: 'image',\n id: result.batch_request_id,\n status: 'failed',\n error: {\n message:\n 'Image generation was blocked due to a content policy violation.',\n },\n };\n }\n const imageResult = await this.convertImageBatchResponse(\n validation.value,\n abortSignal,\n );\n return {\n type: 'image',\n id: result.batch_request_id,\n status: 'succeeded',\n result: imageResult,\n };\n }\n\n return invalidXaiBatchResult(result.batch_request_id);\n }\n\n private async prepareRequest(\n request: XaiBatchRequest | XaiImageBatchRequest,\n ): Promise<XaiBatchPreparedRequest> {\n if (request.type === 'text') {\n const { args: body, warnings } =\n await XaiResponsesLanguageModel.prepareRequest({\n modelId: request.modelId,\n options: request.options,\n });\n return { endpoint: xaiBatchEndpoint, body, warnings };\n }\n\n const { prompt, n, size, aspectRatio, seed, files, mask, providerOptions } =\n request.options;\n const warnings: SharedV4Warning[] = [];\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n if (seed != null) warnings.push({ type: 'unsupported', feature: 'seed' });\n if (mask != null) warnings.push({ type: 'unsupported', feature: 'mask' });\n\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiImageModelOptions,\n });\n const imageUrls = (files ?? []).map(convertImageModelFileToDataUri);\n const body: Record<string, unknown> = {\n model: request.modelId,\n prompt,\n n,\n response_format: 'b64_json',\n };\n if (aspectRatio != null) body.aspect_ratio = aspectRatio;\n if (xaiOptions?.output_format != null)\n body.output_format = xaiOptions.output_format;\n if (xaiOptions?.sync_mode != null) body.sync_mode = xaiOptions.sync_mode;\n if (xaiOptions?.aspect_ratio != null && aspectRatio == null)\n body.aspect_ratio = xaiOptions.aspect_ratio;\n if (xaiOptions?.resolution != null) body.resolution = xaiOptions.resolution;\n if (xaiOptions?.quality != null) body.quality = xaiOptions.quality;\n if (xaiOptions?.user != null) body.user = xaiOptions.user;\n if (imageUrls.length === 1) {\n body.image = { url: imageUrls[0], type: 'image_url' };\n } else if (imageUrls.length > 1) {\n body.images = imageUrls.map(url => ({ url, type: 'image_url' }));\n }\n\n return {\n endpoint: files?.length ? '/v1/images/edits' : '/v1/images/generations',\n body,\n warnings,\n };\n }\n\n private async convertImageBatchResponse(\n response: z.infer<typeof xaiBatchImageResponseSchema>,\n abortSignal: AbortSignal | undefined,\n ): Promise<ImageModelV4Result> {\n const hasAllBase64 = response.data.every(image => image.b64_json != null);\n const images = hasAllBase64\n ? response.data.map(image => image.b64_json!)\n : await Promise.all(\n response.data.map(async image => {\n if (image.b64_json != null) {\n return convertBase64ToUint8Array(image.b64_json);\n }\n if (image.url == null) {\n throw new InvalidArgumentError({\n argument: 'batchResult',\n message: 'xAI returned an image without data or a URL.',\n });\n }\n const { value } = await getFromApi({\n url: image.url,\n validateUrl: true,\n trustedOrigin: this.options.config.baseURL,\n abortSignal,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.options.config.fetch,\n });\n return value;\n }),\n );\n return {\n images,\n warnings: [],\n response: { timestamp: new Date(), modelId: '', headers: undefined },\n providerMetadata: {\n xai: {\n images: response.data.map(item =>\n item.revised_prompt != null\n ? { revisedPrompt: item.revised_prompt }\n : {},\n ),\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n },\n },\n };\n }\n\n private getUrl(path: string) {\n return `${this.options.config.baseURL ?? 'https://api.x.ai/v1'}${path}`;\n }\n}\n\nfunction convertXaiBatchStatus(batch: XaiBatchResponse): BatchV4Status {\n const requestCounts = normalizeBatchRequestCounts({\n total: batch.state?.num_requests,\n pending: batch.state?.num_pending,\n completed: batch.state?.num_success,\n failed:\n batch.state?.num_error != null && batch.state?.num_cancelled != null\n ? batch.state.num_error + batch.state.num_cancelled\n : undefined,\n });\n const isCancelled =\n batch.cancel_time != null || batch.cancel_by_xai_message != null;\n const isExpired = isPastDate(batch.expire_time);\n const status: BatchV4Status['status'] =\n isCancelled || isExpired\n ? 'failed'\n : requestCounts != null &&\n requestCounts.total > 0 &&\n requestCounts.pending === 0\n ? 'completed'\n : 'pending';\n\n return {\n status,\n ...(requestCounts != null ? { requestCounts } : {}),\n ...(isCancelled\n ? {\n error: {\n message:\n batch.cancel_by_xai_message ??\n `xAI batch \"${batch.batch_id}\" was cancelled.`,\n code: 'batch_cancelled',\n },\n }\n : isExpired\n ? {\n error: {\n message: `xAI batch \"${batch.batch_id}\" expired.`,\n code: 'batch_expired',\n },\n }\n : {}),\n ...(batch.create_time != null ? { createdAt: batch.create_time } : {}),\n ...(batch.expire_time != null ? { expiresAt: batch.expire_time } : {}),\n };\n}\n\nfunction isPastDate(value: string | null | undefined) {\n if (value == null) {\n return false;\n }\n const timestamp = Date.parse(value);\n return !Number.isNaN(timestamp) && timestamp <= Date.now();\n}\n\nfunction convertXaiBatchError(result: XaiBatchResult): BatchV4Error {\n const error = result.batch_result?.error;\n return {\n message:\n result.error_message || error?.message || 'xAI batch request failed.',\n ...(error?.code != null && error.code !== 0 && error.code !== '0'\n ? { code: String(error.code) }\n : {}),\n };\n}\n\nfunction isXaiCancellationError(code: string | number | null | undefined) {\n const normalizedCode = String(code).toLowerCase();\n return (\n code === 1 ||\n normalizedCode === '1' ||\n normalizedCode === 'cancelled' ||\n normalizedCode === 'batch_cancelled'\n );\n}\n\nfunction invalidXaiBatchResult(id: string): TextBatchV4ItemResult {\n return {\n type: 'text',\n id,\n status: 'failed',\n error: {\n message: 'xAI returned an invalid Responses batch result.',\n code: 'invalid_response',\n },\n };\n}\n\nfunction invalidXaiImageBatchResult(id: string): ImageBatchV4ItemResult {\n return {\n type: 'image',\n id,\n status: 'failed',\n error: {\n message: 'xAI returned an invalid image batch result.',\n code: 'invalid_response',\n },\n };\n}\n\nfunction convertXaiBatchTextResponse(\n response: XaiBatchTextResponse,\n): XaiBatchResponseConversion {\n if (response.error != null) {\n return {\n success: false,\n error: {\n message: response.error,\n ...(response.code != null ? { code: response.code } : {}),\n },\n };\n }\n\n const choices = response.choices;\n if (choices == null || choices.length === 0) {\n return {\n success: false,\n error: {\n message: 'xAI returned a batch response without any choices.',\n code: 'invalid_response',\n },\n };\n }\n\n const content: LanguageModelV4Content[] = [];\n const providerExecutedToolCallIds = new Set(\n choices\n .filter(choice => choice.message.role === 'tool')\n .flatMap(choice =>\n (choice.message.tool_calls ?? []).map(toolCall => toolCall.id),\n ),\n );\n let lastAssistantChoice: (typeof choices)[number] | undefined;\n\n for (const choice of choices) {\n if (choice.message.role === 'tool') {\n if (choice.message.content != null) {\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-result',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n result: choice.message.content,\n dynamic: true,\n });\n }\n }\n continue;\n }\n\n lastAssistantChoice = choice;\n\n if (choice.message.content) {\n content.push({ type: 'text', text: choice.message.content });\n }\n if (choice.message.reasoning_content) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n ...(providerExecutedToolCallIds.has(toolCall.id)\n ? { providerExecuted: true, dynamic: true }\n : {}),\n });\n }\n }\n for (const url of response.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: url,\n url,\n });\n }\n\n return {\n success: true,\n result: {\n content,\n finishReason: {\n unified: mapXaiFinishReason(lastAssistantChoice?.finish_reason),\n raw: lastAssistantChoice?.finish_reason ?? undefined,\n },\n usage: response.usage\n ? convertXaiBatchTextUsage(response.usage)\n : createNullLanguageModelUsage(),\n response: getResponseMetadata(response),\n warnings: [],\n ...((response.usage?.cost_in_usd_ticks != null ||\n response.service_tier != null) && {\n providerMetadata: {\n xai: {\n ...(response.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: response.usage.cost_in_usd_ticks }\n : {}),\n ...(response.service_tier != null\n ? { serviceTier: response.service_tier }\n : {}),\n },\n } satisfies SharedV4ProviderMetadata,\n }),\n },\n };\n}\n\nfunction convertXaiBatchTextUsage(\n usage: NonNullable<XaiBatchTextResponse['usage']>,\n) {\n const cacheReadTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n const promptTokensIncludesCached = cacheReadTokens <= usage.prompt_tokens;\n\n return {\n inputTokens: {\n total: promptTokensIncludesCached\n ? usage.prompt_tokens\n : usage.prompt_tokens + cacheReadTokens,\n noCache: promptTokensIncludesCached\n ? usage.prompt_tokens - cacheReadTokens\n : usage.prompt_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.completion_tokens + reasoningTokens,\n text: usage.completion_tokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import { createLanguageModelResponseMetadata } from '@ai-sdk/provider-utils';\n\nexport function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return createLanguageModelResponseMetadata({\n id,\n model,\n created: created ?? created_at,\n });\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'other';\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n bytes: z.number().nullish(),\n created_at: z.number().nullish(),\n expires_at: z.number().nullish(),\n filename: z.string().nullish(),\n purpose: z.string().nullish(),\n status: z.string().nullish(),\n }),\n ),\n);\n\nexport const xaiFileDeleteResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n object: z.string().nullish(),\n deleted: z.boolean(),\n }),\n ),\n);\n","import type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n LanguageModelV4Usage,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n createProviderStreamError,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport type { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport { supportsReasoningEffort } from '../supports-reasoning-effort';\nimport type { webSearchOutputSchema } from '../tool/web-search';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { convertXaiResponsesUsage } from './convert-xai-responses-usage';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n webSearchWireActionSchema,\n webSearchWireSourceSchema,\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n type XaiResponsesIncludeOptions,\n} from './xai-responses-api';\nimport {\n xaiLanguageModelResponsesOptions,\n type XaiResponsesModelId,\n} from './xai-responses-language-model-options';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\nexport type XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nfunction createXaiResponsesStreamError({\n message,\n code,\n eventType,\n data,\n}: {\n message: string;\n code?: string | null;\n eventType: 'error' | 'response.failed';\n data: unknown;\n}) {\n const statusCode = getHttpStatusCode(code);\n\n return createProviderStreamError({\n message,\n type: eventType,\n code: code ?? undefined,\n ...(statusCode != null\n ? {\n statusCode,\n isRetryable: isRetryableStatusCode(statusCode),\n }\n : getXaiResponsesStreamErrorMetadata(code)),\n data,\n });\n}\n\nfunction getXaiResponsesStreamErrorMetadata(code?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (code) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'insufficient_quota':\n return { statusCode: 429, isRetryable: false };\n case 'api_error':\n case 'internal_server_error':\n case 'server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nfunction getHttpStatusCode(value: unknown): number | undefined {\n const statusCode =\n typeof value === 'string' && /^\\d{3}$/.test(value) ? Number(value) : value;\n\n return typeof statusCode === 'number' &&\n Number.isInteger(statusCode) &&\n statusCode >= 400 &&\n statusCode <= 599\n ? statusCode\n : undefined;\n}\n\nfunction isRetryableStatusCode(statusCode: number): boolean {\n return (\n statusCode === 408 ||\n statusCode === 409 ||\n statusCode === 429 ||\n statusCode >= 500\n );\n}\n\nexport const xaiResponsesSupportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n // xAI's Responses API accepts non-image documents (PDF, plain text, CSV, etc.) as\n // `{ type: 'input_file', file_url }`. Keeping these URLs intact here lets them pass\n // through to the converter instead of being downloaded to bytes by the SDK.\n 'application/pdf': [/^https?:\\/\\/.*$/],\n 'text/*': [/^https?:\\/\\/.*$/],\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n static [WORKFLOW_SERIALIZE](model: XaiResponsesLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: XaiResponsesModelId;\n config: XaiResponsesConfig;\n }) {\n return new XaiResponsesLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls = xaiResponsesSupportedUrls;\n\n static async prepareRequest({\n modelId,\n options: {\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n reasoning,\n },\n }: {\n modelId: XaiResponsesModelId;\n options: LanguageModelV4CallOptions;\n }) {\n const warnings: SharedV4Warning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiLanguageModelResponsesOptions,\n })) ?? {};\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.code_execution',\n )?.name;\n\n const mcpToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.mcp',\n )?.name;\n\n const fileSearchToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.file_search',\n )?.name;\n\n const imageGenerationToolName = tools?.find(\n tool => tool.type === 'provider' && tool.id === 'xai.image_generation',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: options.store ?? true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n // Build include array based on provider options and store setting\n let include: XaiResponsesIncludeOptions = options.include\n ? [...options.include]\n : undefined;\n\n if (options.store === false) {\n // When store is false, we need to include reasoning.encrypted_content\n // to preserve reasoning tokens in the response\n if (include == null) {\n include = ['reasoning.encrypted_content'];\n } else {\n include = [...include, 'reasoning.encrypted_content'];\n }\n }\n\n let resolvedReasoningEffort = options.reasoningEffort;\n if (resolvedReasoningEffort == null && isCustomReasoning(reasoning)) {\n if (!supportsReasoningEffort(modelId)) {\n warnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning \"${reasoning}\" is not supported by this model.`,\n });\n } else if (reasoning === 'none') {\n resolvedReasoningEffort = 'none';\n } else {\n resolvedReasoningEffort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: modelId === 'grok-4.6' ? 'xhigh' : 'high',\n },\n warnings,\n });\n }\n }\n\n const baseArgs: Record<string, unknown> = {\n model: modelId,\n input,\n logprobs:\n options.logprobs === true || options.topLogprobs != null\n ? true\n : undefined,\n top_logprobs: options.topLogprobs,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...((resolvedReasoningEffort != null ||\n options.reasoningSummary != null) && {\n reasoning: {\n ...(resolvedReasoningEffort != null && {\n effort: resolvedReasoningEffort,\n }),\n ...(options.reasoningSummary != null && {\n summary: options.reasoningSummary,\n }),\n },\n }),\n ...(options.store === false && {\n store: options.store,\n }),\n ...(include != null && {\n include,\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n ...(options.serviceTier != null && {\n service_tier: options.serviceTier,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n };\n }\n\n private getArgs(options: LanguageModelV4CallOptions) {\n return XaiResponsesLanguageModel.prepareRequest({\n modelId: this.modelId,\n options,\n });\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let hasFunctionCall = false;\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n\n continue;\n }\n\n if (part.type === 'image_generation_call') {\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n\n if (part.result != null) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n result: part.result,\n ...(part.prompt != null && { prompt: part.prompt }),\n },\n });\n } else {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n isError: true,\n result: `Image generation failed (status: ${part.status}).`,\n });\n }\n\n continue;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n if (part.type === 'web_search_call') {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: mapWebSearchAction(part.action),\n });\n }\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const texts =\n part.summary.length > 0\n ? part.summary.map(s => s.text)\n : (part.content ?? []).map(c => c.text);\n\n const reasoningText = texts\n .filter(text => text && text.length > 0)\n .join('');\n\n // condition changed here since encrypted content can now come with empty reasoning text\n if (reasoningText || part.encrypted_content) {\n const hasMetadata = part.encrypted_content || part.id;\n content.push({\n type: 'reasoning',\n text: reasoningText,\n ...(hasMetadata && {\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n }),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status ?? undefined,\n },\n usage: response.usage\n ? convertXaiResponsesUsage(response.usage)\n : {\n inputTokens: { total: 0, noCache: 0, cacheRead: 0, cacheWrite: 0 },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...((response.usage?.cost_in_usd_ticks != null ||\n response.service_tier != null) && {\n providerMetadata: {\n xai: {\n ...(response.usage?.cost_in_usd_ticks != null && {\n costInUsdTicks: response.usage.cost_in_usd_ticks,\n }),\n ...(response.service_tier != null && {\n serviceTier: response.service_tier,\n }),\n },\n },\n }),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n mcpToolName,\n fileSearchToolName,\n imageGenerationToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let hasFunctionCall = false;\n let usage: LanguageModelV4Usage | undefined = undefined;\n let costInUsdTicks: number | undefined = undefined;\n let serviceTier: string | undefined = undefined;\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n // Track ongoing function calls by output_index so we can stream\n // arguments via response.function_call_arguments.delta events.\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed' ||\n event.type === 'response.incomplete'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage = convertXaiResponsesUsage(response.usage);\n costInUsdTicks = response.usage.cost_in_usd_ticks ?? undefined;\n }\n\n serviceTier = response.service_tier ?? undefined;\n\n if (event.type === 'response.incomplete') {\n const reason =\n 'incomplete_details' in response\n ? response.incomplete_details?.reason\n : undefined;\n finishReason = {\n unified: reason\n ? mapXaiResponsesFinishReason(reason)\n : 'other',\n raw: reason ?? 'incomplete',\n };\n } else if ('status' in response && response.status) {\n finishReason = {\n unified: hasFunctionCall\n ? 'tool-calls'\n : mapXaiResponsesFinishReason(response.status),\n raw: response.status,\n };\n }\n\n return;\n }\n\n if (event.type === 'response.failed') {\n const reason = event.response.incomplete_details?.reason;\n finishReason = {\n unified: reason ? mapXaiResponsesFinishReason(reason) : 'error',\n raw: reason ?? 'error',\n };\n\n if (event.response.usage) {\n usage = convertXaiResponsesUsage(event.response.usage);\n }\n\n if (event.response.error != null) {\n controller.enqueue({\n type: 'error',\n error: createXaiResponsesStreamError({\n message: event.response.error.message,\n code: event.response.error.code,\n eventType: event.type,\n data: event,\n }),\n });\n }\n\n return;\n }\n\n if (event.type === 'error') {\n controller.enqueue({\n type: 'error',\n error: createXaiResponsesStreamError({\n message: event.message,\n code: event.code,\n eventType: event.type,\n data: event,\n }),\n });\n return;\n }\n\n // Custom tool call input streaming - already handled by output_item events\n if (\n event.type === 'response.custom_tool_call_input.delta' ||\n event.type === 'response.custom_tool_call_input.done'\n ) {\n return;\n }\n\n // Function call arguments streaming (standard function tools)\n if (event.type === 'response.function_call_arguments.delta') {\n const toolCall = ongoingToolCalls[event.output_index];\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: event.delta,\n });\n }\n return;\n }\n if (event.type === 'response.function_call_arguments.done') {\n // Arguments are fully received; output_item.done will\n // emit tool-input-end and tool-call with the final arguments.\n return;\n }\n\n if (\n event.type === 'response.image_generation_call.in_progress' ||\n event.type === 'response.image_generation_call.generating' ||\n event.type === 'response.image_generation_call.completed'\n ) {\n if (!seenToolCalls.has(event.item_id)) {\n seenToolCalls.add(event.item_id);\n\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n controller.enqueue({\n type: 'tool-input-start',\n id: event.item_id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: event.item_id,\n delta: '{}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: event.item_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: event.item_id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n const blockId = `reasoning-${part.id}`;\n\n // Emit reasoning-start if not already emitted (e.g., for encrypted reasoning\n // where reasoning_summary_part.added events may not be sent)\n if (!(part.id in activeReasoning)) {\n activeReasoning[part.id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: blockId,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (part.type === 'file_search_call') {\n const toolName = fileSearchToolName ?? 'file_search';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n queries: part.queries ?? [],\n results:\n part.results?.map(result => ({\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n },\n });\n }\n\n return;\n }\n\n if (part.type === 'image_generation_call') {\n const toolName = imageGenerationToolName ?? 'image_generation';\n\n if (!seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: '{}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: '{}',\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n if (part.result != null) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result: {\n result: part.result,\n ...(part.prompt != null && { prompt: part.prompt }),\n },\n });\n } else {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n isError: true,\n result: `Image generation failed (status: ${part.status}).`,\n });\n }\n }\n\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call' ||\n part.type === 'mcp_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n } else if (part.type === 'mcp_call') {\n toolName = mcpToolName ?? part.name ?? 'mcp';\n }\n\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : part.type === 'mcp_call'\n ? (part.arguments ?? '')\n : (part.arguments ?? '');\n\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n if (event.type === 'response.output_item.done') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.id,\n toolName,\n result:\n part.type === 'web_search_call'\n ? mapWebSearchAction(part.action)\n : {},\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n // Only emit text if we haven't already streamed it via output_text.delta events\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (event.type === 'response.output_item.added') {\n // Track the call so function_call_arguments.delta events\n // can stream the arguments incrementally.\n ongoingToolCalls[event.output_index] = {\n toolName: part.name,\n toolCallId: part.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n } else if (event.type === 'response.output_item.done') {\n hasFunctionCall = true;\n ongoingToolCalls[event.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: usage ?? {\n inputTokens: {\n total: 0,\n noCache: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n outputTokens: { total: 0, text: 0, reasoning: 0 },\n },\n ...((costInUsdTicks != null || serviceTier != null) && {\n providerMetadata: {\n xai: {\n ...(costInUsdTicks != null && { costInUsdTicks }),\n ...(serviceTier != null && { serviceTier }),\n },\n },\n }),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction mapWebSearchAction(\n action: unknown,\n): InferSchema<typeof webSearchOutputSchema> {\n const parsed = webSearchWireActionSchema.safeParse(action);\n if (!parsed.success) return {};\n\n const a = parsed.data;\n const sources = a.sources?.flatMap(s => {\n const source = webSearchWireSourceSchema.safeParse(s);\n return source.success ? [source.data] : [];\n });\n const sourcesExtra = sources != null && sources.length > 0 ? { sources } : {};\n\n switch (a.type) {\n case 'search':\n return {\n action: {\n type: 'search',\n ...(a.query != null && { query: a.query }),\n ...(a.queries != null && { queries: a.queries }),\n },\n ...sourcesExtra,\n };\n case 'open_page':\n return { action: { type: 'openPage', url: a.url }, ...sourcesExtra };\n case 'find_in_page':\n return {\n action: { type: 'findInPage', url: a.url, pattern: a.pattern },\n ...sourcesExtra,\n };\n }\n}\n","/**\n * The grok-4.20 reasoning and non-reasoning models (including dated variants\n * such as `grok-4.20-0309-reasoning`) reject the reasoning effort parameter\n * with an invalid-argument error for every value, including `none`.\n * Other models such as `grok-4.3`, `grok-latest`, and\n * `grok-4.20-multi-agent` accept it.\n */\nconst modelsWithoutReasoningEffort = /^grok-4\\.20(-\\d{4})?-(non-)?reasoning$/;\n\nexport function supportsReasoningEffort(modelId: string): boolean {\n return !modelsWithoutReasoningEffort.test(modelId);\n}\n","import {\n UnsupportedFunctionalityError,\n type SharedV4Warning,\n type LanguageModelV4Message,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveFullMediaType,\n resolveProviderReference,\n} from '@ai-sdk/provider-utils';\nimport { xaiFilePartProviderOptions } from '../xai-file-part-options';\nimport type {\n XaiResponsesFunctionCallOutput,\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV4Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: SharedV4Warning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: SharedV4Warning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n switch (block.data.type) {\n case 'reference': {\n contentParts.push({\n type: 'input_file',\n file_id: resolveProviderReference({\n reference: block.data.reference,\n provider: 'xai',\n }),\n });\n break;\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n if (getTopLevelMediaType(block.mediaType) === 'image') {\n const imageUrl =\n block.data.type === 'url'\n ? block.data.url.toString()\n : `data:${resolveFullMediaType({ part: block })};base64,${convertToBase64(block.data.data)}`;\n\n const filePartOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: block.providerOptions,\n schema: xaiFilePartProviderOptions,\n });\n\n contentParts.push({\n type: 'input_image',\n image_url: imageUrl,\n ...(filePartOptions?.imageDetail != null && {\n detail: filePartOptions.imageDetail,\n }),\n });\n } else if (block.data.type === 'url') {\n // xAI's Responses API accepts non-image documents (PDF, text, CSV, etc.)\n // via `{ type: 'input_file', file_url }`. See\n // https://docs.x.ai/docs/guides/chat-with-files. Inline bytes for\n // non-image files are not supported by xAI; callers must upload via\n // the Files API and pass a provider reference (file_id) instead.\n contentParts.push({\n type: 'input_file',\n file_url: block.data.url.toString(),\n });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`,\n });\n }\n break;\n }\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning': {\n const itemId =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n const encryptedContent =\n typeof part.providerOptions?.xai?.reasoningEncryptedContent ===\n 'string'\n ? part.providerOptions.xai.reasoningEncryptedContent\n : undefined;\n\n if (itemId != null || encryptedContent != null) {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n }\n\n input.push({\n type: 'reasoning',\n id: itemId ?? '',\n summary: summaryParts,\n status: 'completed',\n ...(encryptedContent != null && {\n encrypted_content: encryptedContent,\n }),\n });\n } else {\n inputWarnings.push({\n type: 'other',\n message:\n 'Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping.',\n });\n }\n break;\n }\n\n case 'reasoning-file':\n case 'custom':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n const output = part.output;\n\n let outputValue: XaiResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\n break;\n case 'execution-denied':\n outputValue = output.reason ?? 'tool execution denied';\n break;\n case 'json':\n case 'error-json':\n outputValue = JSON.stringify(output.value);\n break;\n case 'content':\n outputValue = [];\n for (const item of output.value) {\n switch (item.type) {\n case 'text': {\n outputValue.push({\n type: 'input_text',\n text: item.text,\n });\n break;\n }\n case 'file': {\n if (\n getTopLevelMediaType(item.mediaType) === 'image' &&\n (item.data.type === 'data' || item.data.type === 'url')\n ) {\n outputValue.push({\n type: 'input_image',\n image_url:\n item.data.type === 'url'\n ? item.data.url.toString()\n : `data:${resolveFullMediaType({ part: item })};base64,${convertToBase64(item.data.data)}`,\n });\n }\n break;\n }\n case 'custom': {\n break;\n }\n default: {\n const _exhaustiveCheck: never = item;\n }\n }\n }\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import { z } from 'zod/v4';\n\n// provider options for file parts (images) in user messages\nexport const xaiFilePartProviderOptions = z.object({\n /**\n * Controls the resolution at which the model processes the image.\n * `low` processes the image at reduced resolution and consumes fewer\n * input tokens, `high` processes the image at full resolution, and\n * `auto` lets the API decide. Defaults to full resolution when not set.\n *\n * Note: the xAI API silently ignores invalid values, so the value is\n * validated client-side.\n *\n * @see https://docs.x.ai/developers/model-capabilities/images/understanding\n */\n imageDetail: z.enum(['low', 'high', 'auto']).optional(),\n});\n\nexport type XaiFilePartProviderOptions = z.infer<\n typeof xaiFilePartProviderOptions\n>;\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport type { XaiResponsesUsage } from './xai-responses-api';\n\nexport function convertXaiResponsesUsage(\n usage: XaiResponsesUsage,\n): LanguageModelV4Usage {\n const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n const inputTokensIncludesCached = cacheReadTokens <= usage.input_tokens;\n\n return {\n inputTokens: {\n total: inputTokensIncludesCached\n ? usage.input_tokens\n : usage.input_tokens + cacheReadTokens,\n noCache: inputTokensIncludesCached\n ? usage.input_tokens - cacheReadTokens\n : usage.input_tokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.output_tokens,\n text: usage.output_tokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n case 'max_output_tokens':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesIncludeValue =\n | 'file_search_call.results'\n | 'reasoning.encrypted_content';\n\nexport type XaiResponsesIncludeOptions =\n | Array<XaiResponsesIncludeValue>\n | undefined\n | null;\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | {\n type: 'input_image';\n image_url: string;\n detail?: 'low' | 'high' | 'auto';\n }\n | { type: 'input_file'; file_id: string }\n | { type: 'input_file'; file_url: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | {\n type: 'input_text';\n text: string;\n }\n | {\n type: 'input_image';\n image_url: string;\n }\n >;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_search?: boolean;\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | {\n type: 'image_generation';\n action?: 'auto' | 'generate' | 'edit';\n }\n | {\n type: 'file_search';\n vector_store_ids?: string[];\n max_num_results?: number;\n }\n | {\n type: 'mcp';\n server_url: string;\n server_label?: string;\n server_description?: string;\n allowed_tools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n strict?: boolean;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nexport const webSearchWireSourceSchema = z.object({\n type: z.literal('url'),\n url: z.string(),\n});\n\nexport const webSearchWireActionSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n queries: z.array(z.string()).nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string().nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('find_in_page'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n sources: z.array(z.unknown()).nullish(),\n }),\n]);\n\nconst mcpCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n output: z.string().optional(),\n error: z.string().optional(),\n id: z.string(),\n status: z.string(),\n server_label: z.string().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n status: z.string(),\n queries: z.array(z.string()).optional(),\n results: z\n .array(\n z.object({\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n status: z.string(),\n prompt: z.string().nullish(),\n result: z.string().nullish(),\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('mcp_call'),\n ...mcpCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n content: z\n .array(z.object({ type: z.string(), text: z.string() }))\n .nullish(),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z\n .object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .catchall(z.json())\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .catchall(z.json())\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n cost_in_usd_ticks: z.number().nullish(),\n })\n .catchall(z.json());\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n service_tier: z.string().nullish(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.file_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.generating'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\n input: z.string(),\n }),\n // Function call arguments streaming events (standard function tools)\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call.failed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_arguments.done'),\n item_id: z.string(),\n output_index: z.number(),\n arguments: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.mcp_call_output.done'),\n item_id: z.string(),\n output_index: z.number(),\n output: z.string().optional(),\n }),\n z.object({\n type: z.literal('response.incomplete'),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.failed'),\n response: z.object({\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string(),\n })\n .nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: xaiResponsesUsageSchema.nullish(),\n }),\n }),\n z.object({\n type: z.literal('error'),\n code: z.string().nullish(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n z.object({\n type: z.literal('response.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4.20-non-reasoning'\n | 'grok-4.20-reasoning'\n | 'grok-4.3'\n | 'grok-4.5'\n | 'grok-4.6'\n | 'grok-4.7'\n | 'grok-latest'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiLanguageModelResponsesOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `none` (disables reasoning entirely; supported by\n * `grok-4.3` and newer reasoning models), `low` (uses fewer reasoning\n * tokens), `medium`, `high` (uses more reasoning tokens), and `xhigh`\n * (supported by `grok-4.6`).\n *\n * @see https://docs.x.ai/docs/guides/reasoning\n */\n reasoningEffort: z\n .enum(['none', 'low', 'medium', 'high', 'xhigh'])\n .optional(),\n reasoningSummary: z.enum(['auto', 'concise', 'detailed']).optional(),\n logprobs: z.boolean().optional(),\n topLogprobs: z.number().int().min(0).max(8).optional(),\n serviceTier: z.enum(['default', 'priority']).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * Must be set to `false` for teams with Zero Data Retention (ZDR) enabled,\n * otherwise the API will return an error.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n /**\n * Specify additional output data to include in the model response.\n * Example values: 'file_search_call.results'.\n */\n include: z.array(z.enum(['file_search_call.results'])).nullish(),\n});\n\nexport type XaiLanguageModelResponsesOptions = z.infer<\n typeof xaiLanguageModelResponsesOptions\n>;\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { mcpServerArgsSchema } from '../tool/mcp-server';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport type { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: SharedV4Warning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_search: args.enableImageSearch,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n xaiTools.push({\n type: 'image_generation',\n action: args.action,\n });\n break;\n }\n\n case 'xai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n });\n break;\n }\n\n case 'xai.mcp': {\n const args = await validateTypes({\n value: tool.args,\n schema: mcpServerArgsSchema,\n });\n\n xaiTools.push({\n type: 'mcp',\n server_url: args.serverUrl,\n server_label: args.serverLabel,\n server_description: args.serverDescription,\n allowed_tools: args.allowedTools,\n headers: args.headers,\n authorization: args.authorization,\n });\n break;\n }\n\n default: {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.name}`,\n });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider') {\n // xAI API does not support forcing specific server-side tools via toolChoice\n // Only function tools can be forced with {\"type\": \"function\", \"function\": {\"name\": \"...\"}}\n toolWarnings.push({\n type: 'unsupported',\n feature: `toolChoice for server-side tool \"${selectedTool.name}\"`,\n });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\n toolWarnings,\n };\n }\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for file search tool arguments.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n }),\n ),\n);\n\nconst fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n fileId: z.string(),\n filename: z.string(),\n score: z.number().min(0).max(1),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nconst fileSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The search queries that were executed.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs (collection IDs) to search through.\n * @see https://docs.x.ai/docs/guides/using-collections/api\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return.\n */\n maxNumResults?: number;\n }\n>({\n id: 'xai.file_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: fileSearchOutputSchema,\n});\n\nexport const fileSearch = (args: Parameters<typeof fileSearchToolFactory>[0]) =>\n fileSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for image generation tool arguments.\n * @see https://docs.x.ai/developers/tools/overview\n */\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.enum(['auto', 'generate', 'edit']).optional(),\n }),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nconst imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n result: z.string(),\n prompt: z.string().optional(),\n }),\n ),\n);\n\nconst imageGenerationToolFactory = createProviderExecutedToolFactory<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n\n /**\n * The prompt that the model wrote for the image model.\n */\n prompt?: string;\n },\n {\n /**\n * Restricts what the tool can do. Defaults to 'auto'.\n *\n * - 'auto': the model can generate and edit images.\n * - 'generate': text-to-image generation only.\n * - 'edit': image editing only.\n */\n action?: 'auto' | 'generate' | 'edit';\n }\n>({\n id: 'xai.image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n});\n\nexport const imageGeneration = (\n args: Parameters<typeof imageGenerationToolFactory>[0] = {},\n) => imageGenerationToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const mcpServerArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n serverUrl: z.string().describe('The URL of the MCP server'),\n serverLabel: z.string().optional().describe('A label for the MCP server'),\n serverDescription: z\n .string()\n .optional()\n .describe('Description of the MCP server'),\n allowedTools: z\n .array(z.string())\n .optional()\n .describe('List of allowed tool names'),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe('Custom headers to send'),\n authorization: z\n .string()\n .optional()\n .describe('Authorization header value'),\n }),\n ),\n);\n\n// MCP tool output varies based on which tool is called\nconst mcpServerOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n name: z.string(),\n arguments: z.string(),\n result: z.unknown(),\n }),\n ),\n);\n\nconst mcpServerToolFactory = createProviderExecutedToolFactory<\n {},\n {\n name: string;\n arguments: string;\n result: unknown;\n },\n {\n serverUrl: string;\n serverLabel?: string;\n serverDescription?: string;\n allowedTools?: string[];\n headers?: Record<string, string>;\n authorization?: string;\n }\n>({\n id: 'xai.mcp',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: mcpServerOutputSchema,\n});\n\nexport const mcpServer = (args: Parameters<typeof mcpServerToolFactory>[0]) =>\n mcpServerToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageSearch: z.boolean().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n queries: z.array(z.string()).optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('findInPage'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .optional(),\n sources: z\n .array(z.object({ type: z.literal('url'), url: z.string() }))\n .optional(),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n action?:\n | {\n type: 'search';\n query?: string;\n queries?: string[];\n }\n | {\n type: 'openPage';\n url?: string | null;\n }\n | {\n type: 'findInPage';\n url?: string | null;\n pattern?: string | null;\n };\n sources?: Array<{ type: 'url'; url: string }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageSearch?: boolean;\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderExecutedToolFactory,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderExecutedToolFactory<\n {},\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import type {\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\n\ntype XaiRealtimeWireEvent = {\n type: string;\n session?: { id?: string };\n item?: { id?: string } & Record<string, unknown>;\n response?: { id?: string; status?: string };\n error?: { message?: string; code?: string };\n item_id: string;\n previous_item_id?: string;\n response_id: string;\n transcript?: string;\n delta: string;\n text?: string;\n call_id: string;\n name: string;\n arguments: string;\n message?: string;\n code?: string;\n};\n\nexport function parseXaiRealtimeServerEvent(\n raw: unknown,\n): RealtimeModelV4ServerEvent {\n const event = raw as XaiRealtimeWireEvent;\n const type = event.type;\n\n switch (type) {\n case 'session.created':\n return {\n type: 'session-created',\n sessionId: event.session?.id,\n raw,\n };\n\n case 'session.updated':\n return { type: 'session-updated', raw };\n\n case 'conversation.created':\n return { type: 'custom', rawType: type, raw };\n\n case 'input_audio_buffer.speech_started':\n return {\n type: 'speech-started',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.speech_stopped':\n return {\n type: 'speech-stopped',\n itemId: event.item_id,\n raw,\n };\n\n case 'input_audio_buffer.committed':\n return {\n type: 'audio-committed',\n itemId: event.item_id,\n previousItemId: event.previous_item_id,\n raw,\n };\n\n case 'conversation.item.added':\n return {\n type: 'conversation-item-added',\n itemId: event.item?.id ?? event.item_id,\n item: event.item,\n raw,\n };\n\n case 'conversation.item.input_audio_transcription.completed':\n return {\n type: 'input-transcription-completed',\n itemId: event.item_id,\n transcript: event.transcript ?? '',\n raw,\n };\n\n case 'response.created':\n return {\n type: 'response-created',\n responseId: event.response?.id ?? event.response_id,\n raw,\n };\n\n case 'response.done':\n return {\n type: 'response-done',\n responseId: event.response?.id ?? event.response_id,\n status: event.response?.status ?? 'completed',\n raw,\n };\n\n case 'response.output_item.added':\n return {\n type: 'output-item-added',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.output_item.done':\n return {\n type: 'output-item-done',\n responseId: event.response_id,\n itemId: event.item?.id ?? event.item_id,\n raw,\n };\n\n case 'response.content_part.added':\n return {\n type: 'content-part-added',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.content_part.done':\n return {\n type: 'content-part-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio.delta':\n return {\n type: 'audio-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio.done':\n return {\n type: 'audio-done',\n responseId: event.response_id,\n itemId: event.item_id,\n raw,\n };\n\n case 'response.output_audio_transcript.delta':\n return {\n type: 'audio-transcript-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.output_audio_transcript.done':\n return {\n type: 'audio-transcript-done',\n responseId: event.response_id,\n itemId: event.item_id,\n transcript: event.transcript,\n raw,\n };\n\n case 'response.text.delta':\n return {\n type: 'text-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.text.done':\n return {\n type: 'text-done',\n responseId: event.response_id,\n itemId: event.item_id,\n text: event.text,\n raw,\n };\n\n case 'response.function_call_arguments.delta':\n return {\n type: 'function-call-arguments-delta',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n delta: event.delta,\n raw,\n };\n\n case 'response.function_call_arguments.done':\n return {\n type: 'function-call-arguments-done',\n responseId: event.response_id,\n itemId: event.item_id,\n callId: event.call_id,\n name: event.name,\n arguments: event.arguments,\n raw,\n };\n\n case 'mcp_list_tools.in_progress':\n case 'mcp_list_tools.completed':\n case 'mcp_list_tools.failed':\n case 'response.mcp_call_arguments.delta':\n case 'response.mcp_call_arguments.done':\n case 'response.mcp_call.in_progress':\n case 'response.mcp_call.completed':\n case 'response.mcp_call.failed':\n return { type: 'custom', rawType: type, raw };\n\n case 'error':\n return {\n type: 'error',\n message: event.error?.message ?? event.message ?? 'Unknown error',\n code: event.error?.code ?? event.code,\n raw,\n };\n\n default:\n return { type: 'custom', rawType: type, raw };\n }\n}\n\nexport function serializeXaiRealtimeClientEvent(\n event: RealtimeModelV4ClientEvent,\n): unknown {\n switch (event.type) {\n case 'session-update':\n return {\n type: 'session.update',\n session: buildXaiSessionConfig(event.config),\n };\n\n case 'input-audio-append':\n return {\n type: 'input_audio_buffer.append',\n audio: event.audio,\n };\n\n case 'input-audio-commit':\n return { type: 'input_audio_buffer.commit' };\n\n case 'input-audio-clear':\n return { type: 'input_audio_buffer.clear' };\n\n case 'conversation-item-create': {\n const item = event.item;\n switch (item.type) {\n case 'text-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_text', text: item.text }],\n },\n };\n case 'audio-message':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'message',\n role: item.role,\n content: [{ type: 'input_audio', audio: item.audio }],\n },\n };\n case 'function-call-output':\n return {\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: item.callId,\n output: item.output,\n },\n };\n }\n break;\n }\n\n case 'conversation-item-truncate':\n // xAI does not support `conversation.item.truncate` over WebSocket (it is\n // silently ignored by the server). Barge-in still works because the SDK\n // stops local playback when `speech_started` fires, so dropping the event\n // here just avoids sending a no-op.\n return undefined;\n\n case 'response-create':\n return {\n type: 'response.create',\n ...(event.options != null\n ? {\n response: {\n ...(event.options.modalities != null\n ? { modalities: event.options.modalities }\n : {}),\n ...(event.options.instructions != null\n ? { instructions: event.options.instructions }\n : {}),\n },\n }\n : {}),\n };\n\n case 'response-cancel':\n return { type: 'response.cancel' };\n }\n}\n\nexport function buildXaiSessionConfig(\n config: RealtimeModelV4SessionConfig,\n): Record<string, unknown> {\n const session: Record<string, unknown> = {};\n\n if (config.instructions != null) {\n session.instructions = config.instructions;\n }\n\n if (config.voice != null) {\n session.voice = config.voice;\n }\n\n const audio: Record<string, unknown> = {};\n\n if (config.inputAudioFormat != null) {\n audio.input = {\n format: {\n type: config.inputAudioFormat.type,\n ...(config.inputAudioFormat.rate != null\n ? { rate: config.inputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (config.outputAudioFormat != null) {\n audio.output = {\n format: {\n type: config.outputAudioFormat.type,\n ...(config.outputAudioFormat.rate != null\n ? { rate: config.outputAudioFormat.rate }\n : {}),\n },\n };\n }\n\n if (Object.keys(audio).length > 0) {\n session.audio = audio;\n }\n\n if (config.turnDetection != null) {\n if (config.turnDetection.type === 'disabled') {\n session.turn_detection = null;\n } else {\n const td: Record<string, unknown> = {\n type: 'server_vad',\n };\n if (config.turnDetection.threshold != null) {\n td.threshold = config.turnDetection.threshold;\n }\n if (config.turnDetection.silenceDurationMs != null) {\n td.silence_duration_ms = config.turnDetection.silenceDurationMs;\n }\n if (config.turnDetection.prefixPaddingMs != null) {\n td.prefix_padding_ms = config.turnDetection.prefixPaddingMs;\n }\n session.turn_detection = td;\n }\n }\n\n if (config.tools != null && config.tools.length > 0) {\n session.tools = config.tools.map(tool => ({\n type: tool.type,\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n }));\n }\n\n if (config.providerOptions != null) {\n const xaiOptions = config.providerOptions as Record<string, unknown>;\n\n if (Array.isArray(xaiOptions.tools)) {\n const existingTools = (session.tools as unknown[]) ?? [];\n session.tools = [...existingTools, ...xaiOptions.tools];\n }\n\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (key !== 'tools') {\n session[key] = value;\n }\n }\n }\n\n return session;\n}\n","import type {\n Experimental_RealtimeModelV4 as RealtimeModelV4,\n Experimental_RealtimeModelV4ClientEvent as RealtimeModelV4ClientEvent,\n Experimental_RealtimeModelV4ClientSecretOptions as RealtimeModelV4ClientSecretOptions,\n Experimental_RealtimeModelV4ClientSecretResult as RealtimeModelV4ClientSecretResult,\n Experimental_RealtimeModelV4ServerEvent as RealtimeModelV4ServerEvent,\n Experimental_RealtimeModelV4SessionConfig as RealtimeModelV4SessionConfig,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport {\n buildXaiSessionConfig,\n parseXaiRealtimeServerEvent,\n serializeXaiRealtimeClientEvent,\n} from './xai-realtime-event-mapper';\n\nexport type XaiRealtimeModelConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class XaiRealtimeModel implements RealtimeModelV4 {\n readonly specificationVersion = 'v4' as const;\n readonly provider: string;\n readonly modelId: string;\n\n private readonly config: XaiRealtimeModelConfig;\n\n constructor(modelId: string, config: XaiRealtimeModelConfig) {\n this.modelId = modelId;\n this.provider = config.provider;\n this.config = config;\n }\n\n async doCreateClientSecret(\n options: RealtimeModelV4ClientSecretOptions,\n ): Promise<RealtimeModelV4ClientSecretResult> {\n const fetchFn = this.config.fetch ?? fetch;\n const url = `${this.config.baseURL}/realtime/client_secrets`;\n\n const body: Record<string, unknown> = {};\n if (options.expiresAfterSeconds != null) {\n body.expires_after = { seconds: options.expiresAfterSeconds };\n }\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n ...this.config.headers(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\n `xAI realtime client secret request failed: ${response.status} ${text}`,\n );\n }\n\n const data = (await response.json()) as {\n value: string;\n expires_at?: number;\n };\n\n return {\n token: data.value,\n // xAI selects the voice model from the `model` query parameter on the\n // WebSocket URL. Without it the model choice is silently ignored and the\n // server falls back to its default voice model.\n url: `wss://${new URL(this.config.baseURL).host}/v1/realtime?model=${encodeURIComponent(this.modelId)}`,\n expiresAt: data.expires_at,\n };\n }\n\n getWebSocketConfig(options: { token: string; url: string }): {\n url: string;\n protocols?: string[];\n } {\n return {\n url: options.url,\n protocols: [`xai-client-secret.${options.token}`],\n };\n }\n\n parseServerEvent(raw: unknown): RealtimeModelV4ServerEvent {\n return parseXaiRealtimeServerEvent(raw);\n }\n\n serializeClientEvent(event: RealtimeModelV4ClientEvent): unknown {\n return serializeXaiRealtimeClientEvent(event);\n }\n\n buildSessionConfig(\n config: RealtimeModelV4SessionConfig,\n ): Record<string, unknown> {\n return buildXaiSessionConfig(config);\n }\n}\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory = createProviderExecutedToolFactory({\n id: 'xai.code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n});\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderExecutedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderExecutedToolFactory({\n id: 'xai.view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { fileSearch } from './file-search';\nimport { imageGeneration } from './image-generation';\nimport { mcpServer } from './mcp-server';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport {\n codeExecution,\n fileSearch,\n imageGeneration,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n\nexport const xaiTools = {\n codeExecution,\n fileSearch,\n imageGeneration,\n mcpServer,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n InvalidArgumentError,\n type FilesV4,\n type FilesV4DeleteFileCallOptions,\n type FilesV4DeleteFileResult,\n type FilesV4DownloadFileCallOptions,\n type FilesV4DownloadFileResult,\n type FilesV4GetFileMetadataCallOptions,\n type FilesV4GetFileMetadataResult,\n type FilesV4UploadFileCallOptions,\n type FilesV4UploadFileResult,\n type SharedV4ProviderReference,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertInlineFileDataToUint8Array,\n createBinaryStreamResponseHandler,\n createJsonResponseHandler,\n deleteFromApi,\n getFromApi,\n parseProviderOptions,\n postFormDataToApi,\n postMultipartStreamToApi,\n type FetchFunction,\n type InferSchema,\n type MultipartStreamPart,\n} from '@ai-sdk/provider-utils';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport {\n xaiFileDeleteResponseSchema,\n xaiFilesResponseSchema,\n} from './xai-files-api';\nimport {\n xaiFilesOptionsSchema,\n type XaiFilesOptions,\n} from './xai-files-options';\n\ninterface XaiFilesConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n}\n\ntype XaiFilesResponse = InferSchema<typeof xaiFilesResponseSchema>;\n\nfunction encodePathSegment(value: string): string {\n const encodedValue = encodeURIComponent(value);\n\n // URL parsing normalizes both literal and percent-encoded dot segments.\n return encodedValue === '.'\n ? '%252E'\n : encodedValue === '..'\n ? '%252E%252E'\n : encodedValue;\n}\n\nexport class XaiFiles implements FilesV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(private readonly config: XaiFilesConfig) {}\n\n private getFileId(file: SharedV4ProviderReference): string {\n const fileId = file.xai;\n if (fileId == null || fileId.trim() === '') {\n throw new InvalidArgumentError({\n argument: 'file',\n message: \"file reference is missing an 'xai' file id.\",\n });\n }\n return fileId;\n }\n\n private getHeaders(\n headers: Record<string, string | undefined> | undefined,\n ): Record<string, string | undefined> {\n return combineHeaders(this.config.headers(), headers);\n }\n\n async uploadFile({\n data,\n mediaType,\n filename,\n abortSignal,\n headers,\n providerOptions,\n }: FilesV4UploadFileCallOptions): Promise<FilesV4UploadFileResult> {\n let xaiOptions: XaiFilesOptions | undefined;\n try {\n xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiFilesOptionsSchema,\n })) as XaiFilesOptions | undefined;\n } catch (error) {\n // rejected before any request: release the caller's stream\n if (data.type === 'stream') {\n await data.stream.cancel(error).catch(() => {});\n }\n throw error;\n }\n\n const requestHeaders = this.getHeaders(headers);\n const url = `${this.config.baseURL}/files`;\n\n let response: XaiFilesResponse;\n\n if (data.type === 'stream') {\n // xAI rejects uploads where expires_after arrives after the file part,\n // so all fields precede the file.\n const parts: Array<MultipartStreamPart> = [];\n\n if (xaiOptions?.expiresAfter != null) {\n parts.push({\n type: 'field',\n name: 'expires_after',\n value: String(xaiOptions.expiresAfter),\n });\n }\n\n if (xaiOptions?.teamId != null) {\n parts.push({\n type: 'field',\n name: 'team_id',\n value: xaiOptions.teamId,\n });\n }\n\n parts.push({\n type: 'file',\n name: 'file',\n filename,\n mediaType,\n content: data.stream,\n });\n\n ({ value: response } = await postMultipartStreamToApi({\n url,\n headers: requestHeaders,\n parts,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n }));\n } else {\n const fileBytes = convertInlineFileDataToUint8Array(data);\n\n const blob = new Blob([fileBytes], {\n type: mediaType,\n });\n\n // FormData serializes in append order; expires_after must precede file.\n const formData = new FormData();\n\n if (xaiOptions?.expiresAfter != null) {\n formData.append('expires_after', String(xaiOptions.expiresAfter));\n }\n\n if (xaiOptions?.teamId != null) {\n formData.append('team_id', xaiOptions.teamId);\n }\n\n if (filename != null) {\n formData.append('file', blob, filename);\n } else {\n formData.append('file', blob);\n }\n\n ({ value: response } = await postFormDataToApi({\n url,\n headers: requestHeaders,\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n }));\n }\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...((response.filename ?? filename)\n ? { filename: response.filename ?? filename }\n : {}),\n ...(mediaType != null ? { mediaType } : {}),\n ...(response.bytes != null ? { byteSize: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: new Date(response.created_at * 1000) }\n : {}),\n ...(response.expires_at != null\n ? { expiresAt: new Date(response.expires_at * 1000) }\n : {}),\n providerMetadata: {\n xai: this.toFileMetadata(response),\n },\n };\n }\n\n async getFileMetadata({\n file,\n abortSignal,\n headers,\n }: FilesV4GetFileMetadataCallOptions): Promise<FilesV4GetFileMetadataResult> {\n const fileId = this.getFileId(file);\n\n const { value: response } = await getFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFilesResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n validateUrl: false,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.bytes != null ? { byteSize: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: new Date(response.created_at * 1000) }\n : {}),\n ...(response.expires_at != null\n ? { expiresAt: new Date(response.expires_at * 1000) }\n : {}),\n providerMetadata: {\n xai: this.toFileMetadata(response),\n },\n };\n }\n\n async downloadFile({\n file,\n abortSignal,\n headers,\n }: FilesV4DownloadFileCallOptions): Promise<FilesV4DownloadFileResult> {\n const fileId = this.getFileId(file);\n\n const { value: content, responseHeaders } = await getFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}/content`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createBinaryStreamResponseHandler(),\n abortSignal,\n fetch: this.config.fetch,\n validateUrl: false,\n });\n\n // media type from the content endpoint's Content-Type, without parameters\n const mediaType = responseHeaders?.['content-type']?.split(';')[0].trim();\n\n return {\n warnings: [],\n content,\n ...(mediaType ? { mediaType } : {}),\n };\n }\n\n async deleteFile({\n file,\n abortSignal,\n headers,\n }: FilesV4DeleteFileCallOptions): Promise<FilesV4DeleteFileResult> {\n const fileId = this.getFileId(file);\n\n const { value: response } = await deleteFromApi({\n url: `${this.config.baseURL}/files/${encodePathSegment(fileId)}`,\n headers: this.getHeaders(headers),\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiFileDeleteResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n providerReference: { xai: response.id },\n deleted: response.deleted,\n };\n }\n\n private toFileMetadata(\n response: XaiFilesResponse,\n ): Record<string, string | number> {\n return {\n ...(response.filename != null ? { filename: response.filename } : {}),\n ...(response.purpose != null ? { purpose: response.purpose } : {}),\n ...(response.bytes != null ? { bytes: response.bytes } : {}),\n ...(response.created_at != null\n ? { createdAt: response.created_at }\n : {}),\n ...(response.status != null ? { status: response.status } : {}),\n ...(response.expires_at != null\n ? { expiresAt: response.expires_at }\n : {}),\n };\n }\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiFilesOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n teamId: z.string().optional(),\n filePath: z.string().optional(),\n /**\n * TTL in seconds measured from upload time; xAI accepts integers\n * between 3600 (1 hour) and 2592000 (30 days) inclusive.\n * Omit to keep the file until it is deleted.\n */\n expiresAfter: z.number().int().min(3600).max(2_592_000).optional(),\n }),\n ),\n);\n\nexport type XaiFilesOptions = InferSchema<typeof xaiFilesOptionsSchema>;\n","import {\n AISDKError,\n APICallError,\n type Experimental_VideoModelV4 as VideoModelV4,\n type Experimental_VideoModelV4CallOptions as VideoModelV4CallOptions,\n type Experimental_VideoModelV4File as VideoModelV4File,\n type Experimental_VideoModelV4OperationStartResult as VideoModelV4OperationStartResult,\n type Experimental_VideoModelV4OperationStatusResult as VideoModelV4OperationStatusResult,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n extractResponseHeaders,\n getFromApi,\n getTopLevelMediaType,\n parseProviderOptions,\n postJsonToApi,\n safeParseJSON,\n type FetchFunction,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n xaiVideoModelOptionsSchema,\n type XaiParsedVideoModelOptions,\n} from './xai-video-model-options';\nimport type { XaiVideoModelId } from './xai-video-settings';\n\ninterface XaiVideoModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nfunction encodePathSegment(value: string): string {\n const encodedValue = encodeURIComponent(value);\n\n // URL parsing normalizes both literal and percent-encoded dot segments.\n return encodedValue === '.'\n ? '%252E'\n : encodedValue === '..'\n ? '%252E%252E'\n : encodedValue;\n}\n\nconst RESOLUTION_MAP: Record<string, string> = {\n '1920x1080': '1080p',\n '1280x720': '720p',\n '854x480': '480p',\n '640x480': '480p',\n};\n\ntype XaiVideoCallOptions = VideoModelV4CallOptions;\n\nfunction getFirstFrameImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'first_frame')\n ?.image;\n}\n\nfunction getLastFrameImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return options.frameImages?.find(frame => frame.frameType === 'last_frame')\n ?.image;\n}\n\nfunction resolveStartImage(\n options: XaiVideoCallOptions,\n): VideoModelV4File | undefined {\n return getFirstFrameImage(options) ?? options.image;\n}\n\nconst isVideoFile = (file: VideoModelV4File): boolean =>\n file.mediaType != null && getTopLevelMediaType(file.mediaType) === 'video';\n\n// References without a media type (only possible for URLs) are treated as\n// images, matching the legacy `referenceImageUrls` behavior.\nconst isImageReference = (file: VideoModelV4File): boolean =>\n file.mediaType == null || getTopLevelMediaType(file.mediaType) === 'image';\n\nfunction fileToXaiUrl(file: VideoModelV4File): string {\n if (file.type === 'url') {\n return file.url;\n }\n\n const base64Data =\n typeof file.data === 'string'\n ? file.data\n : convertUint8ArrayToBase64(file.data);\n return `data:${file.mediaType};base64,${base64Data}`;\n}\n\n// Resolves the reference images for R2V generation. First-class\n// `inputReferences` win over the legacy `referenceImageUrls` provider option.\n// Non-image references (video or audio) are not supported for\n// reference-to-video and are skipped with a warning.\nfunction resolveReferences(\n options: XaiVideoCallOptions,\n xaiOptions: XaiParsedVideoModelOptions | undefined,\n warnings: SharedV4Warning[],\n): Array<{ url: string }> | undefined {\n if (options.inputReferences != null && options.inputReferences.length > 0) {\n const imageFiles: VideoModelV4File[] = [];\n\n for (const reference of options.inputReferences) {\n if (!isImageReference(reference)) {\n warnings.push({\n type: 'unsupported',\n feature: 'inputReferences',\n details: isVideoFile(reference)\n ? 'xAI reference-to-video accepts image references only. The ' +\n 'video reference was ignored. Use providerOptions.xai.mode ' +\n '\"extend-video\" to continue from a video.'\n : 'xAI reference-to-video accepts image references only. The ' +\n 'non-image reference was ignored.',\n });\n continue;\n }\n\n imageFiles.push(reference);\n }\n\n return imageFiles.length > 0\n ? imageFiles.map(reference => ({ url: fileToXaiUrl(reference) }))\n : undefined;\n }\n\n if (\n xaiOptions?.referenceImageUrls != null &&\n xaiOptions.referenceImageUrls.length > 0\n ) {\n return xaiOptions.referenceImageUrls.map(url => ({ url }));\n }\n\n return undefined;\n}\n\n// True when at least one reference would survive as an image.\nfunction hasImageInputReference(options: XaiVideoCallOptions): boolean {\n return options.inputReferences?.some(isImageReference) ?? false;\n}\n\nfunction resolveVideoMode(\n options: XaiVideoCallOptions,\n xaiOptions: XaiParsedVideoModelOptions | undefined,\n): XaiParsedVideoModelOptions['mode'] | undefined {\n if (xaiOptions?.mode != null) {\n return xaiOptions.mode;\n }\n\n if (xaiOptions?.videoUrl != null) {\n return 'edit-video';\n }\n\n // frameImages (first/last frame) take precedence over reference images, so\n // only auto-select reference-to-video when no frame images are provided.\n const hasFrameImages =\n options.frameImages != null && options.frameImages.length > 0;\n const hasLegacyReferenceUrls =\n xaiOptions?.referenceImageUrls != null &&\n xaiOptions.referenceImageUrls.length > 0;\n\n // Reference-to-video needs at least one image reference. An audio-only (or\n // video-only) `inputReferences` array must not flip a text- or\n // image-to-video request into R2V.\n if (\n !hasFrameImages &&\n (hasImageInputReference(options) || hasLegacyReferenceUrls)\n ) {\n return 'reference-to-video';\n }\n\n return undefined;\n}\n\nexport class XaiVideoModel implements VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: XaiVideoModelId,\n private config: XaiVideoModelConfig,\n ) {}\n\n private async buildRequestBody(options: VideoModelV4CallOptions): Promise<{\n body: Record<string, unknown>;\n warnings: SharedV4Warning[];\n xaiOptions: XaiParsedVideoModelOptions | undefined;\n isEdit: boolean;\n isExtension: boolean;\n hasReferenceImages: boolean;\n effectiveMode: XaiParsedVideoModelOptions['mode'] | undefined;\n }> {\n const warnings: SharedV4Warning[] = [];\n\n const xaiOptions = (await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiVideoModelOptionsSchema,\n })) as XaiParsedVideoModelOptions | undefined;\n\n const effectiveMode = resolveVideoMode(options, xaiOptions);\n\n const isEdit = effectiveMode === 'edit-video';\n const isExtension = effectiveMode === 'extend-video';\n const hasReferenceImages = effectiveMode === 'reference-to-video';\n\n if (options.fps != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'fps',\n details: 'xAI video models do not support custom FPS.',\n });\n }\n\n if (options.seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: 'xAI video models do not support seed.',\n });\n }\n\n if (options.n != null && options.n > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'n',\n details:\n 'xAI video models do not support generating multiple videos per call. ' +\n 'Only 1 video will be generated.',\n });\n }\n\n // Edit mode: duration, aspectRatio, resolution not supported\n if (isEdit && options.duration != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'duration',\n details: 'xAI video editing does not support custom duration.',\n });\n }\n\n if (isEdit && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video editing does not support custom aspect ratio.',\n });\n }\n\n if (\n isEdit &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video editing does not support custom resolution.',\n });\n }\n\n // Extension mode: aspectRatio and resolution not supported\n if (isExtension && options.aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'xAI video extension does not support custom aspect ratio.',\n });\n }\n\n if (\n isExtension &&\n (xaiOptions?.resolution != null || options.resolution != null)\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details: 'xAI video extension does not support custom resolution.',\n });\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt,\n };\n\n const allowDuration = !isEdit;\n const allowAspectRatio = !isEdit && !isExtension;\n const allowResolution = !isEdit && !isExtension;\n\n if (allowDuration && options.duration != null) {\n body.duration = options.duration;\n }\n\n if (allowAspectRatio && options.aspectRatio != null) {\n body.aspect_ratio = options.aspectRatio;\n }\n\n if (allowResolution && xaiOptions?.resolution != null) {\n body.resolution = xaiOptions.resolution;\n } else if (allowResolution && options.resolution != null) {\n const mapped = RESOLUTION_MAP[options.resolution];\n if (mapped != null) {\n body.resolution = mapped;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n `Unrecognized resolution \"${options.resolution}\". ` +\n 'Use providerOptions.xai.resolution with \"480p\", \"720p\", or ' +\n '\"1080p\" instead.',\n });\n }\n }\n\n // Video editing: pass source video URL (nested object)\n if (isEdit) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Video extension: pass source video URL (nested object)\n if (isExtension) {\n body.video = { url: xaiOptions!.videoUrl };\n }\n\n // Convert the start image (first_frame or image-to-video input) to the\n // nested xAI request image object.\n const startImage = resolveStartImage(options);\n if (startImage != null) {\n if (isVideoFile(startImage)) {\n const fromFrameImages = getFirstFrameImage(options) != null;\n warnings.push({\n type: 'unsupported',\n feature: fromFrameImages ? 'frameImages' : 'image',\n details:\n 'xAI does not accept a video as a start/frame image. The video ' +\n 'was ignored. Use providerOptions.xai.mode \"extend-video\" to ' +\n 'continue from a video instead.',\n });\n } else {\n body.image = { url: fileToXaiUrl(startImage) };\n }\n }\n\n // xAI has no first-last-frame interpolation; warn and ignore last_frame.\n const lastFrameImage = getLastFrameImage(options);\n if (lastFrameImage != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'frameImages',\n details: isVideoFile(lastFrameImage)\n ? 'xAI does not accept a video as a start/frame image. The video ' +\n 'last frame was ignored. Use providerOptions.xai.mode ' +\n '\"extend-video\" to continue from a video instead.'\n : 'xAI video models do not support last_frame. Use ' +\n 'providerOptions.xai.mode \"extend-video\" to continue from a ' +\n \"video's last frame. The last frame image was ignored.\",\n });\n }\n\n // Reference images for R2V (reference-to-video) generation\n if (hasReferenceImages) {\n const referenceImages = resolveReferences(options, xaiOptions, warnings);\n\n if (referenceImages != null) {\n body.reference_images = referenceImages;\n } else {\n // Explicit R2V with no usable image references would silently send\n // a plain generations request; tell the user it is no longer R2V.\n warnings.push({\n type: 'unsupported',\n feature: 'referenceImages',\n details:\n 'xAI reference-to-video requires at least one image reference. ' +\n 'The video will be generated without reference images.',\n });\n }\n\n const referenceVoiceIds = xaiOptions?.referenceVoiceIds;\n if (referenceVoiceIds != null && referenceVoiceIds.length > 0) {\n body.reference_audios = referenceVoiceIds.map(voiceId => ({\n voice_id: voiceId,\n }));\n }\n\n // Reference-to-video is capped at 720p; downgrade a 1080p request.\n if (body.resolution === '1080p') {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n 'xAI reference-to-video is limited to 720p. The request was ' +\n 'downgraded from 1080p to 720p.',\n });\n body.resolution = '720p';\n }\n }\n\n // 1080p requires grok-imagine-video-1.5; the original grok-imagine-video\n // rejects it. Warn, but send the request as the user asked.\n if (body.resolution === '1080p' && this.modelId === 'grok-imagine-video') {\n warnings.push({\n type: 'unsupported',\n feature: 'resolution',\n details:\n 'xAI model \"grok-imagine-video\" does not support 1080p. Use ' +\n '\"grok-imagine-video-1.5\" for 1080p, or a lower resolution. The ' +\n 'request was sent with 1080p.',\n });\n }\n\n // Warn when references were provided but cannot be used in the resolved\n // mode (e.g. alongside frameImages, in edit/extend modes, or when the\n // references carried no usable image to drive reference-to-video).\n if (\n options.inputReferences != null &&\n options.inputReferences.length > 0 &&\n !hasReferenceImages\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'inputReferences',\n details: hasImageInputReference(options)\n ? 'xAI only supports inputReferences for reference-to-video ' +\n 'generation. The reference images were ignored.'\n : 'xAI reference-to-video requires at least one image reference. ' +\n 'The references were ignored.',\n });\n }\n\n // Preset reference voices only apply to reference-to-video generation.\n if (\n xaiOptions?.referenceVoiceIds != null &&\n xaiOptions.referenceVoiceIds.length > 0 &&\n !hasReferenceImages\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'referenceVoiceIds',\n details:\n 'xAI only supports reference voices for reference-to-video ' +\n 'generation. The reference voices were ignored.',\n });\n }\n\n if (!isExtension && xaiOptions?.user !== undefined) {\n body.user = xaiOptions.user;\n }\n\n if (xaiOptions != null) {\n for (const [key, value] of Object.entries(xaiOptions)) {\n if (\n ![\n 'mode',\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'resolution',\n 'videoUrl',\n 'referenceImageUrls',\n 'referenceVoiceIds',\n 'user',\n ].includes(key)\n ) {\n body[key] = value;\n }\n }\n }\n\n return {\n body,\n warnings,\n xaiOptions,\n isEdit,\n isExtension,\n hasReferenceImages,\n effectiveMode,\n };\n }\n\n async doStart(\n options: Parameters<NonNullable<VideoModelV4['doStart']>>[0],\n ): Promise<VideoModelV4OperationStartResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { body, warnings, isEdit, isExtension } =\n await this.buildRequestBody(options);\n\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n // Determine endpoint based on mode\n let endpoint: string;\n if (isEdit) {\n endpoint = `${baseURL}/videos/edits`;\n } else if (isExtension) {\n endpoint = `${baseURL}/videos/extensions`;\n } else {\n endpoint = `${baseURL}/videos/generations`;\n }\n\n const { value: createResponse, responseHeaders } = await postJsonToApi({\n url: endpoint,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiCreateVideoResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = createResponse.request_id;\n if (!requestId) {\n throw new AISDKError({\n name: 'XAI_VIDEO_GENERATION_ERROR',\n message: `No request_id returned from xAI API.`,\n });\n }\n\n return {\n operation: { requestId },\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n async doStatus(\n options: Parameters<NonNullable<VideoModelV4['doStatus']>>[0],\n ): Promise<VideoModelV4OperationStatusResult> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestId } = options.operation as { requestId: string };\n const baseURL = this.config.baseURL ?? 'https://api.x.ai/v1';\n\n const { value: statusResponse, responseHeaders } = await getFromApi({\n url: `${baseURL}/videos/${encodePathSegment(requestId)}`,\n validateUrl: false,\n headers: combineHeaders(this.config.headers(), options.headers),\n successfulResponseHandler: xaiVideoStatusResponseHandler,\n failedResponseHandler: xaiFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (statusResponse.status === 'expired') {\n return {\n status: 'error' as const,\n error: 'Video generation request expired.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (statusResponse.status === 'failed') {\n const errorDetails =\n statusResponse.error?.message ?? statusResponse.error?.code;\n\n return {\n status: 'error' as const,\n error:\n errorDetails != null\n ? `Video generation failed: ${errorDetails}`\n : 'Video generation failed.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (\n statusResponse.status === 'done' ||\n (statusResponse.status == null && statusResponse.video?.url)\n ) {\n // Terminal outcomes, so they are reported the same way as an upstream `failed`\n if (statusResponse.video?.respect_moderation === false) {\n return {\n status: 'error' as const,\n error:\n 'Video generation was blocked due to a content policy violation.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n if (!statusResponse.video?.url) {\n return {\n status: 'error' as const,\n error: 'Video generation completed but no video URL was returned.',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n return {\n status: 'completed',\n videos: [\n {\n type: 'url',\n url: statusResponse.video.url,\n mediaType: 'video/mp4',\n },\n ],\n warnings: [],\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n xai: {\n requestId,\n videoUrl: statusResponse.video.url,\n ...(statusResponse.video.duration != null\n ? { duration: statusResponse.video.duration }\n : {}),\n ...(statusResponse.usage?.cost_in_usd_ticks != null\n ? { costInUsdTicks: statusResponse.usage.cost_in_usd_ticks }\n : {}),\n ...(statusResponse.progress != null\n ? { progress: statusResponse.progress }\n : {}),\n },\n },\n };\n }\n\n // pending status\n return {\n status: 'pending',\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst xaiCreateVideoResponseSchema = z.object({\n request_id: z.string().nullish(),\n});\n\nconst xaiVideoStatusResponseSchema = z.object({\n status: z.string().nullish(),\n video: z\n .object({\n url: z.string(),\n duration: z.number().nullish(),\n respect_moderation: z.boolean().nullish(),\n })\n .nullish(),\n model: z.string().nullish(),\n usage: z\n .object({\n cost_in_usd_ticks: z.number().nullish(),\n })\n .nullish(),\n progress: z.number().nullish(),\n error: z\n .object({\n code: z.string().nullish(),\n message: z.string().nullish(),\n })\n .nullish(),\n});\n\nconst xaiVideoStatusJsonResponseHandler = createJsonResponseHandler(\n xaiVideoStatusResponseSchema,\n);\n\n// Generous bound for a `{status, progress}` payload of ~50 bytes.\nconst MAX_PENDING_BODY_BYTES = 1024 * 1024;\n\nconst textDecoder = new TextDecoder();\n\n// Bounded replacement for `response.text()`. Throws on overflow without\n// cancelling the body: cancelling a tee branch neither settles nor releases\n// the underlying source while the sibling branch is live.\nasync function readPendingBody({\n response,\n url,\n requestBodyValues,\n}: Parameters<ResponseHandler<unknown>>[0]): Promise<string> {\n if (response.body == null) {\n return '';\n }\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n totalBytes += value.length;\n if (totalBytes > MAX_PENDING_BODY_BYTES) {\n throw new APICallError({\n message: `xAI video status response exceeded ${MAX_PENDING_BODY_BYTES} bytes`,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders: extractResponseHeaders(response),\n });\n }\n\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const merged = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return textDecoder.decode(merged);\n}\n\nconst xaiVideoStatusResponseHandler: ResponseHandler<\n z.infer<typeof xaiVideoStatusResponseSchema>\n> = async options => {\n // xAI answers 202 while a generation is still running, sometimes with an\n // empty body. Read it rather than cancelling: `body.cancel()` never settles\n // on a tee branch, which `Response.clone()` in fetch instrumentation creates.\n if (options.response.status === 202) {\n const responseHeaders = extractResponseHeaders(options.response);\n const text = await readPendingBody(options);\n\n if (text.trim().length === 0) {\n return { responseHeaders, value: { status: 'pending' } };\n }\n\n const parsed = await safeParseJSON({\n text,\n schema: xaiVideoStatusResponseSchema,\n });\n\n return {\n responseHeaders,\n value: parsed.success ? parsed.value : { status: 'pending' },\n };\n }\n\n return xaiVideoStatusJsonResponseHandler(options);\n};\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst resolutionSchema = z.enum(['480p', '720p', '1080p']);\nconst modeSchema = z.enum(['edit-video', 'extend-video', 'reference-to-video']);\n\nexport type XaiVideoMode = z.infer<typeof modeSchema>;\ntype XaiVideoResolution = z.infer<typeof resolutionSchema>;\n\ninterface XaiVideoSharedOptions {\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n resolution?: XaiVideoResolution | null;\n}\n\ninterface XaiVideoUserOptions {\n /**\n * A unique identifier representing the end user, for abuse monitoring.\n */\n user?: string;\n}\n\ninterface XaiVideoEditModeOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Select edit-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'edit-video';\n /** Source video URL to edit. */\n videoUrl: string;\n}\n\ninterface XaiVideoExtendModeOptions extends XaiVideoSharedOptions {\n /**\n * Select extend-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'extend-video';\n /** Source video URL to extend from its last frame. */\n videoUrl: string;\n}\n\ninterface XaiVideoReferenceToVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Select reference-to-video mode explicitly for best autocomplete and narrowing.\n */\n mode: 'reference-to-video';\n /** Reference image URLs (1-7) for R2V generation. */\n referenceImageUrls: string[];\n /**\n * Preset voice ids (up to 3) that give the subject a voice.\n */\n referenceVoiceIds?: string[];\n}\n\ninterface XaiVideoGenerationOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n mode?: undefined;\n videoUrl?: undefined;\n referenceImageUrls?: undefined;\n}\n\ninterface XaiLegacyEditVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `videoUrl` behaves like edit-video.\n */\n mode?: undefined;\n videoUrl: string;\n}\n\ninterface XaiLegacyReferenceToVideoOptions\n extends XaiVideoSharedOptions, XaiVideoUserOptions {\n /**\n * Legacy backward-compatible shape: omitting `mode` while providing\n * `referenceImageUrls` behaves like reference-to-video.\n */\n mode?: undefined;\n referenceImageUrls: string[];\n /**\n * Preset voice ids (up to 3) that give the subject a voice.\n */\n referenceVoiceIds?: string[];\n}\n\n/**\n * Provider options for xAI video generation.\n *\n * Use the `mode` option to select the operation:\n *\n * - `'edit-video'` + `videoUrl` -- video editing (`POST /v1/videos/edits`)\n * - `'extend-video'` + `videoUrl` -- video extension (`POST /v1/videos/extensions`)\n * - `'reference-to-video'` + `referenceImageUrls` -- R2V generation (`POST /v1/videos/generations`)\n * - no `mode` -- standard generation from text prompts or image input\n *\n * Runtime remains backward compatible with legacy auto-detected provider\n * options, but the public TypeScript type is intentionally explicit so editors\n * can suggest valid modes and flag invalid field combinations.\n */\nexport type XaiVideoModelOptions =\n | XaiVideoGenerationOptions\n | XaiVideoEditModeOptions\n | XaiVideoExtendModeOptions\n | XaiVideoReferenceToVideoOptions\n | XaiLegacyEditVideoOptions\n | XaiLegacyReferenceToVideoOptions;\n\n// ── Runtime schemas ───────────────────────────────────────────────────\nconst baseFields = {\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n resolution: resolutionSchema.nullish(),\n};\n\nconst runtimeSchema = z.looseObject({\n mode: modeSchema.optional(),\n videoUrl: nonEmptyStringSchema.optional(),\n referenceImageUrls: z.array(nonEmptyStringSchema).min(1).max(7).optional(),\n referenceVoiceIds: z.array(nonEmptyStringSchema).max(3).optional(),\n user: z.string().optional(),\n ...baseFields,\n});\n\nexport type XaiParsedVideoModelOptions = z.infer<typeof runtimeSchema>;\n\nexport const xaiVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(runtimeSchema),\n);\n","import type { SharedV4Warning, SpeechModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { xaiSpeechModelOptionsSchema } from './xai-speech-model-options';\n\ninterface XaiSpeechModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\ntype XaiSpeechCodec = 'mp3' | 'wav' | 'pcm' | 'mulaw' | 'alaw';\n\nexport class XaiSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiSpeechModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiSpeechModelConfig;\n }) {\n return new XaiSpeechModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'eve',\n outputFormat = 'mp3',\n instructions,\n speed,\n language = 'auto',\n providerOptions,\n }: Parameters<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiSpeechModelOptionsSchema,\n });\n\n let codec: XaiSpeechCodec = 'mp3';\n if (['mp3', 'wav', 'pcm', 'mulaw', 'alaw'].includes(outputFormat)) {\n codec = outputFormat as XaiSpeechCodec;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n\n if (instructions != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details:\n 'xAI speech models do not support the `instructions` option. ' +\n 'Use xAI speech tags in `text` to control delivery.',\n });\n }\n\n const output_format: {\n codec: XaiSpeechCodec;\n sample_rate?: number;\n bit_rate?: number;\n } = {\n codec,\n };\n\n if (xaiOptions?.sampleRate != null) {\n output_format.sample_rate = xaiOptions.sampleRate;\n }\n\n if (xaiOptions?.bitRate != null) {\n if (codec === 'mp3') {\n output_format.bit_rate = xaiOptions.bitRate;\n } else {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details:\n 'xAI `bitRate` is supported only for mp3 output. It was ignored.',\n });\n }\n }\n\n const requestBody = {\n text,\n voice_id: voice,\n language,\n output_format,\n speed,\n optimize_streaming_latency: xaiOptions?.optimizeStreamingLatency,\n text_normalization: xaiOptions?.textNormalization,\n with_timestamps: xaiOptions?.withTimestamps,\n replace: xaiOptions?.replace,\n };\n\n return {\n requestBody,\n warnings,\n withTimestamps: xaiOptions?.withTimestamps === true,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings, withTimestamps } =\n await this.getArgs(options);\n\n // With `with_timestamps` the API returns a JSON envelope carrying\n // base64-encoded audio plus character-level timings instead of raw\n // audio bytes.\n const { value, responseHeaders, rawValue } = await postJsonToApi<\n Uint8Array | XaiSpeechTimestampsResponse\n >({\n url: `${this.config.baseURL}/tts`,\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n options.headers,\n ),\n body: requestBody,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: withTimestamps\n ? createJsonResponseHandler(xaiSpeechTimestampsResponseSchema)\n : createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let audio: Uint8Array;\n let envelope: XaiSpeechTimestampsResponse | undefined;\n if (value instanceof Uint8Array) {\n audio = value;\n } else {\n envelope = value;\n // Empty audio is returned as-is so the core layer throws\n // NoSpeechGeneratedError.\n audio =\n envelope.audio != null\n ? convertBase64ToUint8Array(envelope.audio)\n : new Uint8Array(0);\n }\n\n // xAI returns a trace id on every response (success and error).\n const traceId = responseHeaders?.['x-trace-id'];\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawValue,\n },\n providerMetadata: {\n xai: {\n ...(traceId != null ? { traceId } : {}),\n ...(envelope?.duration != null\n ? { duration: envelope.duration }\n : {}),\n ...(envelope?.content_type != null\n ? { contentType: envelope.content_type }\n : {}),\n ...(envelope?.audio_timestamps != null\n ? {\n audioTimestamps: {\n graphChars: envelope.audio_timestamps.graph_chars,\n graphTimes: envelope.audio_timestamps.graph_times,\n },\n }\n : {}),\n },\n },\n };\n }\n}\n\n// Minimal schema for the `with_timestamps` JSON envelope: only the fields\n// the implementation reads, with `.nullish()` so provider API changes don't\n// break parsing.\nconst xaiSpeechTimestampsResponseSchema = z.object({\n audio: z.string().nullish(),\n content_type: z.string().nullish(),\n duration: z.number().nullish(),\n audio_timestamps: z\n .object({\n graph_chars: z.array(z.string()),\n graph_times: z.array(z.tuple([z.number(), z.number()])),\n })\n .nullish(),\n});\n\ntype XaiSpeechTimestampsResponse = z.infer<\n typeof xaiSpeechTimestampsResponseSchema\n>;\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiSpeechModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Sample rate of the generated audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * MP3 bit rate in bits per second. Only applies when outputFormat is mp3.\n */\n bitRate: z\n .union([\n z.literal(32000),\n z.literal(64000),\n z.literal(96000),\n z.literal(128000),\n z.literal(192000),\n ])\n .nullish(),\n\n /**\n * Reduce time to first audio chunk, trading some quality for latency.\n */\n optimizeStreamingLatency: z\n .union([z.literal(0), z.literal(1), z.literal(2)])\n .nullish(),\n\n /**\n * Normalize written-form text into spoken-form text before synthesis.\n */\n textNormalization: z.boolean().nullish(),\n\n /**\n * Return character-level timing metadata alongside the audio. When\n * enabled, the response carries per-character start/end times and the\n * total duration, exposed via `providerMetadata.xai`.\n */\n withTimestamps: z.boolean().nullish(),\n\n /**\n * Map of phrases to spoken substitutions applied before synthesis.\n * Values may be respellings (`{ 'Acme Mobile': 'Acme Mobull' }`) or IPA\n * phonetics (`{ nginx: '/ˈɛndʒɪn ˈɛks/' }`).\n */\n replace: z.record(z.string(), z.string()).nullish(),\n }),\n ),\n);\n\nexport type XaiSpeechModelOptions = InferSchema<\n typeof xaiSpeechModelOptionsSchema\n>;\n","import {\n InvalidArgumentError,\n type Experimental_TranscriptionModelV4StreamOptions as TranscriptionModelV4StreamOptions,\n type SharedV4Warning,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n connectToWebSocket,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n safeParseJSON,\n serializeModelOptions,\n toWebSocketUrl,\n waitForWebSocketBufferDrain,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type WebSocketConnection,\n type WebSocketConstructor,\n type WebSocketLike,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport {\n xaiTranscriptionModelOptionsSchema,\n type XaiTranscriptionModelOptions,\n} from './xai-transcription-model-options';\n\ninterface XaiTranscriptionModelConfig {\n provider: string;\n baseURL: string | undefined;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n webSocket?: WebSocketConstructor;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\ntype XaiStreamingTranscriptionEvent = {\n type?: string;\n text?: string;\n words?: Array<{ text?: string; start?: number; end?: number }>;\n is_final?: boolean;\n speech_final?: boolean;\n start?: number;\n duration?: number;\n channel_index?: number;\n message?: string;\n};\n\nexport class XaiTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: XaiTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: '';\n config: XaiTranscriptionModelConfig;\n }) {\n return new XaiTranscriptionModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: '',\n private readonly config: XaiTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiTranscriptionModelOptionsSchema,\n });\n\n const formData = new FormData();\n const transcriptionOptions = {\n audio_format: xaiOptions?.audioFormat,\n sample_rate: xaiOptions?.sampleRate,\n language: xaiOptions?.language,\n format: xaiOptions?.format,\n multichannel: xaiOptions?.multichannel,\n channels: xaiOptions?.channels,\n diarize: xaiOptions?.diarize,\n filler_words: xaiOptions?.fillerWords,\n };\n\n for (const [key, value] of Object.entries(transcriptionOptions)) {\n if (value != null) {\n formData.append(key, String(value));\n }\n }\n\n if (xaiOptions?.keyterm != null) {\n const keyterms = Array.isArray(xaiOptions.keyterm)\n ? xaiOptions.keyterm\n : [xaiOptions.keyterm];\n\n for (const keyterm of keyterms) {\n formData.append('keyterm', keyterm);\n }\n }\n\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n const fileExtension = mediaTypeToExtension(mediaType);\n\n // xAI requires `file` to be the final multipart field.\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n return { formData, warnings };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/stt`,\n headers: combineHeaders(this.config.headers?.(), options.headers),\n formData,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: response.language || undefined,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n\n async doStream(\n options: TranscriptionModelV4StreamOptions,\n ): Promise<\n Awaited<ReturnType<NonNullable<TranscriptionModelV4['doStream']>>>\n > {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n const xaiOptions = await parseProviderOptions({\n provider: 'xai',\n providerOptions: options.providerOptions,\n schema: xaiTranscriptionModelOptionsSchema,\n });\n\n if (xaiOptions?.multichannel === true && xaiOptions.channels == null) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message:\n 'providerOptions.xai.channels is required when providerOptions.xai.multichannel is true',\n });\n }\n\n if (xaiOptions?.format != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions.xai.format',\n details: 'xAI streaming transcription does not support format.',\n });\n }\n\n if (\n xaiOptions?.audioFormat == null &&\n !isKnownInputAudioFormat(options.inputAudioFormat.type)\n ) {\n warnings.push({\n type: 'other',\n message:\n `Unrecognized inputAudioFormat.type \"${options.inputAudioFormat.type}\"; ` +\n `falling back to raw PCM encoding. ` +\n `Use audio/pcm, audio/pcmu, or audio/pcma, ` +\n `or set providerOptions.xai.audioFormat explicitly.`,\n });\n }\n\n const url = buildXaiStreamingTranscriptionUrl({\n baseURL: this.config.baseURL ?? 'https://api.x.ai/v1',\n inputAudioFormat: options.inputAudioFormat,\n providerOptions: xaiOptions,\n });\n const headers = combineHeaders(this.config.headers?.(), options.headers);\n\n return {\n request: { body: url.toString() },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n },\n stream: createXaiStreamingTranscriptionStream({\n webSocket: this.config.webSocket,\n url,\n headers,\n warnings,\n language: xaiOptions?.language ?? undefined,\n expectedDoneCount:\n xaiOptions?.multichannel === true ? xaiOptions.channels! : 1,\n audio: options.audio,\n abortSignal: options.abortSignal,\n includeRawChunks: options.includeRawChunks,\n }),\n };\n }\n}\n\nfunction createXaiStreamingTranscriptionStream({\n webSocket,\n url,\n headers,\n warnings,\n language,\n expectedDoneCount,\n audio,\n abortSignal,\n includeRawChunks,\n}: {\n webSocket: WebSocketConstructor | undefined;\n url: URL;\n headers: Record<string, string | undefined>;\n warnings: SharedV4Warning[];\n language: string | undefined;\n expectedDoneCount: number;\n audio: ReadableStream<Uint8Array | string>;\n abortSignal: AbortSignal | undefined;\n includeRawChunks: boolean | undefined;\n}) {\n let finished = false;\n let cleanup: (closeCode?: number) => void = () => {};\n\n return new ReadableStream({\n start: controller => {\n const doneTexts = new Map<number, string>();\n // per-channel finalized utterances + latest revisable text, used to\n // reconstruct the finish text (xAI's `transcript.done` has empty text):\n const finalizedTexts = new Map<number, string[]>();\n const pendingTexts = new Map<number, string>();\n let doneDuration: number | undefined;\n let audioReader:\n | ReadableStreamDefaultReader<Uint8Array | string>\n | undefined;\n let connection: WebSocketConnection | undefined;\n\n cleanup = (closeCode?: number) => {\n if (audioReader != null) {\n void audioReader.cancel().catch(() => {});\n } else {\n // pre-open failure or abort: cancel the caller's audio stream so an\n // upstream producer piping into it does not hang:\n void audio.cancel().catch(() => {});\n }\n connection?.close(closeCode);\n };\n\n const finishWithError = (error: unknown) => {\n if (finished) return;\n finished = true;\n cleanup();\n controller.error(error);\n };\n\n const maybeFinish = () => {\n if (finished || doneTexts.size < expectedDoneCount) return;\n finished = true;\n const text = [...doneTexts.entries()]\n .sort(([a], [b]) => a - b)\n .map(([, value]) => value)\n .join('\\n');\n controller.enqueue({\n type: 'finish',\n text,\n segments: [],\n language,\n durationInSeconds: doneDuration,\n });\n controller.close();\n cleanup(1000);\n };\n\n const sendAudio = async (socket: WebSocketLike) => {\n audioReader = audio.getReader();\n try {\n while (true) {\n const { done, value } = await audioReader.read();\n if (done || finished) break;\n socket.send(\n value instanceof Uint8Array\n ? value\n : convertBase64ToUint8Array(value),\n );\n // backpressure: pause reads while the socket buffer is full\n await waitForWebSocketBufferDrain(socket);\n }\n } finally {\n audioReader.releaseLock();\n // unlocked again: cleanup must cancel `audio`, not the reader\n audioReader = undefined;\n }\n if (!finished) {\n socket.send(JSON.stringify({ type: 'audio.done' }));\n }\n };\n\n connection = connectToWebSocket({\n url,\n headers,\n webSocket,\n abortSignal,\n onAbort: finishWithError,\n onProcessingError: finishWithError,\n onMessageText: async text => {\n const parsed = await safeParseJSON({ text });\n if (!parsed.success) return;\n const raw = parsed.value as XaiStreamingTranscriptionEvent;\n\n if (includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: raw });\n }\n\n switch (raw.type) {\n case 'transcript.created': {\n controller.enqueue({ type: 'stream-start', warnings });\n const socket = connection?.socket;\n if (socket == null) {\n finishWithError(new Error('WebSocket is not connected.'));\n break;\n }\n void sendAudio(socket).catch(finishWithError);\n break;\n }\n\n case 'transcript.partial': {\n const id = channelId(raw.channel_index);\n const channelIndex = raw.channel_index ?? 0;\n // only `speech_final` completes an utterance; `is_final`\n // fragments are re-sent/revised later, so they stay partials:\n if (raw.is_final && raw.speech_final) {\n const timing = timingFromXaiEvent(raw);\n if (raw.text) {\n finalizedTexts.set(channelIndex, [\n ...(finalizedTexts.get(channelIndex) ?? []),\n raw.text,\n ]);\n }\n pendingTexts.delete(channelIndex);\n controller.enqueue({\n type: 'transcript-final',\n id,\n text: raw.text ?? '',\n ...timing,\n channelIndex: raw.channel_index,\n });\n } else {\n pendingTexts.set(channelIndex, raw.text ?? '');\n controller.enqueue({\n type: 'transcript-partial',\n id,\n text: raw.text ?? '',\n startSecond: raw.start,\n durationInSeconds: raw.duration,\n channelIndex: raw.channel_index,\n });\n }\n break;\n }\n\n case 'transcript.done': {\n const channelIndex = raw.channel_index ?? 0;\n // `transcript.done` text is empty; fall back to the\n // accumulated utterances plus any trailing unfinalized text:\n const accumulated = [\n ...(finalizedTexts.get(channelIndex) ?? []),\n ...(pendingTexts.get(channelIndex)\n ? [pendingTexts.get(channelIndex) as string]\n : []),\n ].join(' ');\n doneTexts.set(channelIndex, raw.text || accumulated);\n doneDuration = raw.duration ?? doneDuration;\n maybeFinish();\n break;\n }\n\n case 'error': {\n // xAI STT errors are terminal: surface the server message\n // instead of letting the socket close mask it.\n finishWithError(new Error(raw.message ?? 'xAI STT error'));\n break;\n }\n }\n },\n onSocketError: () => {\n finishWithError(\n new Error(\n 'xAI streaming transcription error.' +\n (webSocket == null\n ? ' Note: the native WebSocket implementation in browsers,' +\n ' Node.js, Deno, and Bun cannot send the Authorization' +\n ' header required by xAI. Pass a header-capable WebSocket' +\n \" implementation (e.g. the 'ws' package) via\" +\n ' createXai({ webSocket }).'\n : ''),\n ),\n );\n },\n onClose: () => {\n if (finished) return;\n finished = true;\n cleanup();\n controller.close();\n },\n });\n },\n\n cancel: () => {\n if (finished) return;\n finished = true;\n cleanup();\n },\n });\n}\n\nfunction buildXaiStreamingTranscriptionUrl({\n baseURL,\n inputAudioFormat,\n providerOptions,\n}: {\n baseURL: string;\n inputAudioFormat: TranscriptionModelV4StreamOptions['inputAudioFormat'];\n providerOptions: XaiTranscriptionModelOptions | undefined;\n}) {\n const url = toWebSocketUrl(`${baseURL}/stt`);\n\n appendSearchParam(\n url,\n 'sample_rate',\n providerOptions?.sampleRate ?? inputAudioFormat.rate,\n );\n appendSearchParam(\n url,\n 'encoding',\n providerOptions?.audioFormat ??\n encodingFromInputAudioFormat(inputAudioFormat.type),\n );\n appendSearchParam(url, 'language', providerOptions?.language);\n appendSearchParam(url, 'diarize', providerOptions?.diarize);\n appendSearchParam(url, 'filler_words', providerOptions?.fillerWords);\n appendSearchParam(url, 'multichannel', providerOptions?.multichannel);\n appendSearchParam(url, 'channels', providerOptions?.channels);\n appendSearchParam(\n url,\n 'interim_results',\n providerOptions?.streaming?.interimResults,\n );\n appendSearchParam(\n url,\n 'endpointing',\n providerOptions?.streaming?.endpointing,\n );\n appendSearchParam(url, 'smart_turn', providerOptions?.streaming?.smartTurn);\n appendSearchParam(\n url,\n 'smart_turn_timeout',\n providerOptions?.streaming?.smartTurnTimeout,\n );\n\n if (providerOptions?.keyterm != null) {\n const keyterms = Array.isArray(providerOptions.keyterm)\n ? providerOptions.keyterm\n : [providerOptions.keyterm];\n for (const keyterm of keyterms) {\n url.searchParams.append('keyterm', keyterm);\n }\n }\n\n return url;\n}\n\nfunction appendSearchParam(\n url: URL,\n key: string,\n value: string | number | boolean | null | undefined,\n) {\n if (value != null) {\n url.searchParams.set(key, String(value));\n }\n}\n\nfunction isKnownInputAudioFormat(type: string): boolean {\n return type === 'audio/pcm' || type === 'audio/pcmu' || type === 'audio/pcma';\n}\n\nfunction encodingFromInputAudioFormat(type: string): 'pcm' | 'mulaw' | 'alaw' {\n switch (type) {\n case 'audio/pcmu':\n return 'mulaw';\n case 'audio/pcma':\n return 'alaw';\n default:\n return 'pcm';\n }\n}\n\nfunction channelId(channelIndex: number | undefined): string | undefined {\n return channelIndex == null ? undefined : `channel-${channelIndex}`;\n}\n\nfunction timingFromXaiEvent(event: XaiStreamingTranscriptionEvent) {\n return {\n ...(event.start != null ? { startSecond: event.start } : {}),\n ...(event.start != null && event.duration != null\n ? { endSecond: event.start + event.duration }\n : {}),\n };\n}\n\nconst xaiTranscriptionResponseSchema = z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n text: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xaiTranscriptionModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * Audio encoding for raw, headerless input audio.\n */\n audioFormat: z.enum(['pcm', 'mulaw', 'alaw']).nullish(),\n\n /**\n * Sample rate of the input audio in Hz.\n */\n sampleRate: z\n .union([\n z.literal(8000),\n z.literal(16000),\n z.literal(22050),\n z.literal(24000),\n z.literal(44100),\n z.literal(48000),\n ])\n .nullish(),\n\n /**\n * Language code used for inverse text normalization.\n */\n language: z.string().nullish(),\n\n /**\n * Enable inverse text normalization. Requires `language`.\n */\n format: z.boolean().nullish(),\n\n /**\n * Enable per-channel transcription for multichannel audio.\n */\n multichannel: z.boolean().nullish(),\n\n /**\n * Number of interleaved audio channels.\n */\n channels: z.number().int().min(2).max(8).nullish(),\n\n /**\n * Enable speaker diarization.\n */\n diarize: z.boolean().nullish(),\n\n /**\n * Terms to bias transcription toward.\n */\n keyterm: z.union([z.string(), z.array(z.string())]).nullish(),\n\n /**\n * Include filler words such as \"uh\" and \"um\" in the transcript.\n */\n fillerWords: z.boolean().nullish(),\n\n /**\n * Options for streaming speech-to-text over WebSocket.\n */\n streaming: z\n .object({\n /**\n * Emit interim transcript results while speech is being processed.\n */\n interimResults: z.boolean().optional(),\n\n /**\n * Silence duration in milliseconds before an utterance-final event.\n */\n endpointing: z.number().int().min(0).max(5000).optional(),\n\n /**\n * End-of-turn detection threshold. When set, enables Smart Turn.\n */\n smartTurn: z.number().min(0).max(1).optional(),\n\n /**\n * Maximum silence duration in milliseconds before forcing speech_final.\n */\n smartTurnTimeout: z.number().int().min(1).max(5000).optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport type XaiTranscriptionModelOptions = InferSchema<\n typeof xaiTranscriptionModelOptionsSchema\n>;\n"],"mappings":";AAAA;AAAA,EAQE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;;;ACnBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,KAAAA,UAAS;;;ACflB,SAAS,sCAAsC;AAC/C,SAAS,SAAS;AAElB,IAAM,iBAAiB,EAAE,OAAO;AAAA,EAC9B,OAAO,EAAE,OAAO;AAAA,IACd,SAAS,EAAE,OAAO;AAAA,IAClB,MAAM,EAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA,IACvB,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ;AAAA,EAClD,CAAC;AACH,CAAC;AAED,IAAM,uBAAuB,EAAE,OAAO;AAAA,EACpC,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,OAAO;AAClB,CAAC;AAGD,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,OAAO,EAAE,OAAO;AAClB,CAAC;AAEM,IAAM,qBAAqB,EAAE,MAAM;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,2BAA2B,+BAA+B;AAAA,EACrE,aAAa;AAAA,EACb,gBAAgB,UAAQ;AACtB,QAAI,OAAO,KAAK,UAAU,UAAU;AAClC,aAAO,UAAU,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,IAC/D;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AACF,CAAC;;;ACtCD,SAAS,KAAAC,UAAS;AAEX,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EAC3C,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,EACnC,WAAWA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,EAC1C,SAASA,GAAE,KAAK,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA,EACpD,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;;;AFqBM,IAAM,gBAAN,MAAM,eAAsC;AAAA,EAsBjD,YACW,SACD,QACR;AAFS;AACD;AAvBV,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAAA,EAuBzB;AAAA,EArBH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,QAAQ,kBAAkB,EAAE,OAAsB;AAChD,WAAO,sBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,oBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,eAAc,QAAQ,SAAS,QAAQ,MAAM;AAAA,EAC1D;AAAA,EAOA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AAtEJ;AAuEI,UAAM,WAAmC,CAAC;AAE1C,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,aAAa,MAAM,qBAAqB;AAAA,MAC5C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,WAAW,SAAS,QAAQ,MAAM,SAAS;AACjD,UAAM,YAAY,WACd,MAAM,IAAI,UAAQ,+BAA+B,IAAI,CAAC,IACtD,CAAC;AAEL,UAAM,WAAW,WAAW,kBAAkB;AAE9C,UAAM,OAAgC;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,IACnB;AAEA,QAAI,eAAe,MAAM;AACvB,WAAK,eAAe;AAAA,IACtB;AAEA,SAAI,yCAAY,kBAAiB,MAAM;AACrC,WAAK,gBAAgB,WAAW;AAAA,IAClC;AAEA,SAAI,yCAAY,cAAa,MAAM;AACjC,WAAK,YAAY,WAAW;AAAA,IAC9B;AAEA,SAAI,yCAAY,iBAAgB,QAAQ,eAAe,MAAM;AAC3D,WAAK,eAAe,WAAW;AAAA,IACjC;AAEA,SAAI,yCAAY,eAAc,MAAM;AAClC,WAAK,aAAa,WAAW;AAAA,IAC/B;AAEA,SAAI,yCAAY,YAAW,MAAM;AAC/B,WAAK,UAAU,WAAW;AAAA,IAC5B;AAEA,SAAI,yCAAY,SAAQ,MAAM;AAC5B,WAAK,OAAO,WAAW;AAAA,IACzB;AAEA,QAAI,UAAU,WAAW,GAAG;AAC1B,WAAK,QAAQ,EAAE,KAAK,UAAU,CAAC,GAAG,MAAM,YAAY;AAAA,IACtD,WAAW,UAAU,SAAS,GAAG;AAC/B,WAAK,SAAS,UAAU,IAAI,UAAQ,EAAE,KAAK,MAAM,YAAY,EAAE;AAAA,IACjE;AAEA,UAAM,WAAU,UAAK,OAAO,YAAZ,YAAuB;AACvC,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,OAAO,UAAU,gBAAgB,IAAI,MAAM,cAAc;AAAA,MAC/D,KAAK,GAAG,OAAO,GAAG,QAAQ;AAAA,MAC1B,SAAS,gBAAe,gBAAK,QAAO,YAAZ,6BAAyB,OAAO;AAAA,MACxD;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,SAAS,KAAK,KAAK,WAAS,MAAM,uBAAuB,KAAK,GAAG;AACnE,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,eAAe,SAAS,KAAK,MAAM,WAAS,MAAM,YAAY,IAAI;AAExE,UAAM,SAAS,eACX,SAAS,KAAK,IAAI,WAAS,MAAM,QAAS,IAC1C,MAAM,QAAQ;AAAA,MACZ,SAAS,KAAK;AAAA,QAAI,WAChB,KAAK,cAAc,MAAM,KAAM,WAAW;AAAA,MAC5C;AAAA,IACF;AAEJ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,MACA,kBAAkB;AAAA,QAChB,KAAK;AAAA,UACH,QAAQ,SAAS,KAAK,IAAI,WAAS;AAAA,YACjC,GAAI,KAAK,iBACL,EAAE,eAAe,KAAK,eAAe,IACrC,CAAC;AAAA,UACP,EAAE;AAAA,UACF,KAAI,cAAS,UAAT,mBAAgB,sBAAqB,OACrC,EAAE,gBAAgB,SAAS,MAAM,kBAAkB,IACnD,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,cACZ,KACA,aACqB;AACrB,UAAM,EAAE,MAAM,IAAI,MAAM,WAAW;AAAA,MACjC;AAAA;AAAA,MAEA,aAAa;AAAA,MACb,eAAe,KAAK,OAAO;AAAA,MAC3B;AAAA,MACA,uBAAuB,qCAAqC;AAAA,MAC5D,2BAA2B,4BAA4B;AAAA,MACvD,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AACD,WAAO;AAAA,EACT;AACF;AAEA,IAAM,yBAAyBC,GAAE,OAAO;AAAA,EACtC,MAAMA,GAAE;AAAA,IACNA,GAAE,OAAO;AAAA,MACP,KAAKA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACxB,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC7B,gBAAgBA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACnC,oBAAoBA,GAAE,QAAQ,EAAE,QAAQ;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EACA,OAAOA,GACJ,OAAO;AAAA,IACN,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACxC,CAAC,EACA,QAAQ;AACb,CAAC;;;AG3OD;AAAA,EACE;AAAA,EACA,iCAAAC;AAAA,OAoBK;AACP;AAAA,EACE,kBAAAC;AAAA,EACA,kCAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;;;ACzClB,SAAS,2CAA2C;AAE7C,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,SAAO,oCAAoC;AAAA,IACzC;AAAA,IACA;AAAA,IACA,SAAS,4BAAW;AAAA,EACtB,CAAC;AACH;;;AChBO,SAAS,mBACd,cACwC;AACxC,UAAQ,cAAc;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AClBA,SAAS,YAAY,iBAAiB;AACtC,SAAS,KAAAC,UAAS;AAEX,IAAM,yBAAyB;AAAA,EAAW,MAC/C;AAAA,IACEA,GAAE,OAAO;AAAA,MACP,IAAIA,GAAE,OAAO;AAAA,MACb,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC3B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC1B,YAAYA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC/B,YAAYA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC/B,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC7B,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC5B,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAC7B,CAAC;AAAA,EACH;AACF;AAEO,IAAM,8BAA8B;AAAA,EAAW,MACpD;AAAA,IACEA,GAAE,OAAO;AAAA,MACP,IAAIA,GAAE,OAAO;AAAA,MACb,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC3B,SAASA,GAAE,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AACF;;;ACfA;AAAA,EACE,kBAAAC;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,wBAAAC;AAAA,OAIK;;;ACnBP,IAAM,+BAA+B;AAE9B,SAAS,wBAAwB,SAA0B;AAChE,SAAO,CAAC,6BAA6B,KAAK,OAAO;AACnD;;;ACXA;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACXP,SAAS,KAAAC,UAAS;AAGX,IAAM,6BAA6BA,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYjD,aAAaA,GAAE,KAAK,CAAC,OAAO,QAAQ,MAAM,CAAC,EAAE,SAAS;AACxD,CAAC;;;ADGD,eAAsB,2BAA2B;AAAA,EAC/C;AACF,GAMG;AA3BH;AA4BE,QAAM,QAA2B,CAAC;AAClC,QAAM,gBAAmC,CAAC;AAE1C,aAAW,WAAW,QAAQ;AAC5B,YAAQ,QAAQ,MAAM;AAAA,MACpB,KAAK,UAAU;AACb,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,SAAS,QAAQ;AAAA,QACnB,CAAC;AACD;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,cAAM,eAAqD,CAAC;AAE5D,mBAAW,SAAS,QAAQ,SAAS;AACnC,kBAAQ,MAAM,MAAM;AAAA,YAClB,KAAK,QAAQ;AACX,2BAAa,KAAK,EAAE,MAAM,cAAc,MAAM,MAAM,KAAK,CAAC;AAC1D;AAAA,YACF;AAAA,YAEA,KAAK,QAAQ;AACX,sBAAQ,MAAM,KAAK,MAAM;AAAA,gBACvB,KAAK,aAAa;AAChB,+BAAa,KAAK;AAAA,oBAChB,MAAM;AAAA,oBACN,SAAS,yBAAyB;AAAA,sBAChC,WAAW,MAAM,KAAK;AAAA,sBACtB,UAAU;AAAA,oBACZ,CAAC;AAAA,kBACH,CAAC;AACD;AAAA,gBACF;AAAA,gBACA,KAAK,QAAQ;AACX,wBAAM,IAAI,8BAA8B;AAAA,oBACtC,eAAe;AAAA,kBACjB,CAAC;AAAA,gBACH;AAAA,gBACA,KAAK;AAAA,gBACL,KAAK,QAAQ;AACX,sBAAI,qBAAqB,MAAM,SAAS,MAAM,SAAS;AACrD,0BAAM,WACJ,MAAM,KAAK,SAAS,QAChB,MAAM,KAAK,IAAI,SAAS,IACxB,QAAQ,qBAAqB,EAAE,MAAM,MAAM,CAAC,CAAC,WAAW,gBAAgB,MAAM,KAAK,IAAI,CAAC;AAE9F,0BAAM,kBAAkB,MAAMC,sBAAqB;AAAA,sBACjD,UAAU;AAAA,sBACV,iBAAiB,MAAM;AAAA,sBACvB,QAAQ;AAAA,oBACV,CAAC;AAED,iCAAa,KAAK;AAAA,sBAChB,MAAM;AAAA,sBACN,WAAW;AAAA,sBACX,IAAI,mDAAiB,gBAAe,QAAQ;AAAA,wBAC1C,QAAQ,gBAAgB;AAAA,sBAC1B;AAAA,oBACF,CAAC;AAAA,kBACH,WAAW,MAAM,KAAK,SAAS,OAAO;AAMpC,iCAAa,KAAK;AAAA,sBAChB,MAAM;AAAA,sBACN,UAAU,MAAM,KAAK,IAAI,SAAS;AAAA,oBACpC,CAAC;AAAA,kBACH,OAAO;AACL,0BAAM,IAAI,8BAA8B;AAAA,sBACtC,eAAe,wBAAwB,MAAM,SAAS;AAAA,oBACxD,CAAC;AAAA,kBACH;AACA;AAAA,gBACF;AAAA,cACF;AACA;AAAA,YACF;AAAA,YAEA,SAAS;AACP,oBAAM,mBAA0B;AAChC,4BAAc,KAAK;AAAA,gBACjB,MAAM;AAAA,gBACN,SACE;AAAA,cACJ,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AACD;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,mBAAW,QAAQ,QAAQ,SAAS;AAClC,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,oBAAM,KACJ,SAAO,gBAAK,oBAAL,mBAAsB,QAAtB,mBAA2B,YAAW,WACzC,KAAK,gBAAgB,IAAI,SACzB;AAEN,oBAAM,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,SAAS,KAAK;AAAA,gBACd;AAAA,cACF,CAAC;AAED;AAAA,YACF;AAAA,YAEA,KAAK,aAAa;AAChB,kBAAI,KAAK,kBAAkB;AACzB;AAAA,cACF;AAEA,oBAAM,KACJ,SAAO,gBAAK,oBAAL,mBAAsB,QAAtB,mBAA2B,YAAW,WACzC,KAAK,gBAAgB,IAAI,SACzB;AAEN,oBAAM,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,IAAI,kBAAM,KAAK;AAAA,gBACf,SAAS,KAAK;AAAA,gBACd,MAAM,KAAK;AAAA,gBACX,WAAW,KAAK,UAAU,KAAK,KAAK;AAAA,gBACpC,QAAQ;AAAA,cACV,CAAC;AACD;AAAA,YACF;AAAA,YAEA,KAAK,eAAe;AAClB;AAAA,YACF;AAAA,YAEA,KAAK,aAAa;AAChB,oBAAM,SACJ,SAAO,gBAAK,oBAAL,mBAAsB,QAAtB,mBAA2B,YAAW,WACzC,KAAK,gBAAgB,IAAI,SACzB;AACN,oBAAM,mBACJ,SAAO,gBAAK,oBAAL,mBAAsB,QAAtB,mBAA2B,+BAClC,WACI,KAAK,gBAAgB,IAAI,4BACzB;AAEN,kBAAI,UAAU,QAAQ,oBAAoB,MAAM;AAC9C,sBAAM,eAGD,CAAC;AACN,oBAAI,KAAK,KAAK,SAAS,GAAG;AACxB,+BAAa,KAAK;AAAA,oBAChB,MAAM;AAAA,oBACN,MAAM,KAAK;AAAA,kBACb,CAAC;AAAA,gBACH;AAEA,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,IAAI,0BAAU;AAAA,kBACd,SAAS;AAAA,kBACT,QAAQ;AAAA,kBACR,GAAI,oBAAoB,QAAQ;AAAA,oBAC9B,mBAAmB;AAAA,kBACrB;AAAA,gBACF,CAAC;AAAA,cACH,OAAO;AACL,8BAAc,KAAK;AAAA,kBACjB,MAAM;AAAA,kBACN,SACE;AAAA,gBACJ,CAAC;AAAA,cACH;AACA;AAAA,YACF;AAAA,YAEA,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,QAAQ;AACX,4BAAc,KAAK;AAAA,gBACjB,MAAM;AAAA,gBACN,SAAS,sCAAsC,KAAK,IAAI;AAAA,cAC1D,CAAC;AACD;AAAA,YACF;AAAA,YAEA,SAAS;AACP,oBAAM,mBAA0B;AAChC,4BAAc,KAAK;AAAA,gBACjB,MAAM;AAAA,gBACN,SACE;AAAA,cACJ,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,mBAAW,QAAQ,QAAQ,SAAS;AAClC,cAAI,KAAK,SAAS,0BAA0B;AAC1C;AAAA,UACF;AACA,gBAAM,SAAS,KAAK;AAEpB,cAAI;AACJ,kBAAQ,OAAO,MAAM;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,4BAAc,OAAO;AACrB;AAAA,YACF,KAAK;AACH,6BAAc,YAAO,WAAP,YAAiB;AAC/B;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,4BAAc,KAAK,UAAU,OAAO,KAAK;AACzC;AAAA,YACF,KAAK;AACH,4BAAc,CAAC;AACf,yBAAW,QAAQ,OAAO,OAAO;AAC/B,wBAAQ,KAAK,MAAM;AAAA,kBACjB,KAAK,QAAQ;AACX,gCAAY,KAAK;AAAA,sBACf,MAAM;AAAA,sBACN,MAAM,KAAK;AAAA,oBACb,CAAC;AACD;AAAA,kBACF;AAAA,kBACA,KAAK,QAAQ;AACX,wBACE,qBAAqB,KAAK,SAAS,MAAM,YACxC,KAAK,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,QACjD;AACA,kCAAY,KAAK;AAAA,wBACf,MAAM;AAAA,wBACN,WACE,KAAK,KAAK,SAAS,QACf,KAAK,KAAK,IAAI,SAAS,IACvB,QAAQ,qBAAqB,EAAE,MAAM,KAAK,CAAC,CAAC,WAAW,gBAAgB,KAAK,KAAK,IAAI,CAAC;AAAA,sBAC9F,CAAC;AAAA,oBACH;AACA;AAAA,kBACF;AAAA,kBACA,KAAK,UAAU;AACb;AAAA,kBACF;AAAA,kBACA,SAAS;AACP,0BAAM,mBAA0B;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AACA;AAAA,YACF,SAAS;AACP,oBAAM,mBAA0B;AAChC,4BAAc;AAAA,YAChB;AAAA,UACF;AAEA,gBAAM,KAAK;AAAA,YACT,MAAM;AAAA,YACN,SAAS,KAAK;AAAA,YACd,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,sBAAc,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,cAAc;AAChC;;;AE5TO,SAAS,yBACd,OACsB;AALxB;AAME,QAAM,mBAAkB,iBAAM,yBAAN,mBAA4B,kBAA5B,YAA6C;AACrE,QAAM,mBAAkB,iBAAM,0BAAN,mBAA6B,qBAA7B,YAAiD;AAEzE,QAAM,4BAA4B,mBAAmB,MAAM;AAE3D,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO,4BACH,MAAM,eACN,MAAM,eAAe;AAAA,MACzB,SAAS,4BACL,MAAM,eAAe,kBACrB,MAAM;AAAA,MACV,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,MAAM,MAAM,gBAAgB;AAAA,MAC5B,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;AC3BO,SAAS,4BACd,cACwC;AACxC,UAAQ,cAAc;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ACpBA,SAAS,KAAAC,UAAS;AAyIlB,IAAM,mBAAmBA,GAAE,MAAM;AAAA,EAC/BA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,cAAc;AAAA,IAC9B,KAAKA,GAAE,OAAO;AAAA,IACd,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,OAAO;AAAA,EACjB,CAAC;AACH,CAAC;AAED,IAAM,2BAA2BA,GAAE,OAAO;AAAA,EACxC,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,GAAE,MAAMA,GAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpC,aAAaA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAClD,CAAC;AAED,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EAC1C,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,OAAO;AACjB,CAAC;AAED,IAAM,iBAAiBA,GAAE,OAAO;AAAA,EAC9B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,IAAIA,GAAE,OAAO;AAAA,EACb,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,IAAI,EAAE,SAAS;AAC3B,CAAC;AAEM,IAAM,4BAA4BA,GAAE,OAAO;AAAA,EAChD,MAAMA,GAAE,QAAQ,KAAK;AAAA,EACrB,KAAKA,GAAE,OAAO;AAChB,CAAC;AAEM,IAAM,4BAA4BA,GAAE,mBAAmB,QAAQ;AAAA,EACpEA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,QAAQ;AAAA,IACxB,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAC1B,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,IACrC,SAASA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,QAAQ;AAAA,EACxC,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,WAAW;AAAA,IAC3B,KAAKA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACxB,SAASA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,QAAQ;AAAA,EACxC,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,cAAc;AAAA,IAC9B,KAAKA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACxB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAC5B,SAASA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,QAAQ;AAAA,EACxC,CAAC;AACH,CAAC;AAED,IAAM,gBAAgBA,GAAE,OAAO;AAAA,EAC7B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,IAAIA,GAAE,OAAO;AAAA,EACb,QAAQA,GAAE,OAAO;AAAA,EACjB,cAAcA,GAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAED,IAAM,mBAAmBA,GAAE,mBAAmB,QAAQ;AAAA,EACpDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,iBAAiB;AAAA,IACjC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,eAAe;AAAA,IAC/B,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uBAAuB;AAAA,IACvC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,qBAAqB;AAAA,IACrC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,iBAAiB;AAAA,IACjC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,mBAAmB;AAAA,IACnC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kBAAkB;AAAA,IAClC,IAAIA,GAAE,OAAO;AAAA,IACb,QAAQA,GAAE,OAAO;AAAA,IACjB,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IACtC,SAASA,GACN;AAAA,MACCA,GAAE,OAAO;AAAA,QACP,SAASA,GAAE,OAAO;AAAA,QAClB,UAAUA,GAAE,OAAO;AAAA,QACnB,OAAOA,GAAE,OAAO;AAAA,QAChB,MAAMA,GAAE,OAAO;AAAA,MACjB,CAAC;AAAA,IACH,EACC,QAAQ;AAAA,EACb,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uBAAuB;AAAA,IACvC,IAAIA,GAAE,OAAO;AAAA,IACb,QAAQA,GAAE,OAAO;AAAA,IACjB,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA,IAC3B,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kBAAkB;AAAA,IAClC,GAAG,eAAe;AAAA,EACpB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,UAAU;AAAA,IAC1B,GAAG,cAAc;AAAA,EACnB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,SAAS;AAAA,IACzB,MAAMA,GAAE,OAAO;AAAA,IACf,SAASA,GAAE,MAAM,wBAAwB;AAAA,IACzC,IAAIA,GAAE,OAAO;AAAA,IACb,QAAQA,GAAE,OAAO;AAAA,EACnB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,eAAe;AAAA,IAC/B,MAAMA,GAAE,OAAO;AAAA,IACf,WAAWA,GAAE,OAAO;AAAA,IACpB,SAASA,GAAE,OAAO;AAAA,IAClB,IAAIA,GAAE,OAAO;AAAA,EACf,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,WAAW;AAAA,IAC3B,IAAIA,GAAE,OAAO;AAAA,IACb,SAASA,GAAE,MAAM,0BAA0B;AAAA,IAC3C,SAASA,GACN,MAAMA,GAAE,OAAO,EAAE,MAAMA,GAAE,OAAO,GAAG,MAAMA,GAAE,OAAO,EAAE,CAAC,CAAC,EACtD,QAAQ;AAAA,IACX,QAAQA,GAAE,OAAO;AAAA,IACjB,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACxC,CAAC;AACH,CAAC;AAEM,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,cAAcA,GAAE,OAAO;AAAA,EACvB,eAAeA,GAAE,OAAO;AAAA,EACxB,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,sBAAsBA,GACnB,OAAO;AAAA,IACN,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,CAAC,EACA,SAASA,GAAE,KAAK,CAAC,EACjB,SAAS;AAAA,EACZ,uBAAuBA,GACpB,OAAO;AAAA,IACN,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACxC,CAAC,EACA,SAASA,GAAE,KAAK,CAAC,EACjB,SAAS;AAAA,EACZ,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACtC,4BAA4BA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChD,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AACxC,CAAC,EACA,SAASA,GAAE,KAAK,CAAC;AAEb,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EACjD,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACvB,YAAYA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC/B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,QAAQA,GAAE,QAAQ,UAAU;AAAA,EAC5B,QAAQA,GAAE,MAAM,gBAAgB;AAAA,EAChC,OAAO,wBAAwB,QAAQ;AAAA,EACvC,QAAQA,GAAE,OAAO;AAAA,EACjB,cAAcA,GAAE,OAAO,EAAE,QAAQ;AACnC,CAAC;AAEM,IAAM,0BAA0BA,GAAE,MAAM;AAAA,EAC7CA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kBAAkB;AAAA,IAClC,UAAU,2BAA2B,QAAQ,EAAE,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,EAC5E,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,sBAAsB;AAAA,IACtC,UAAU,2BAA2B,QAAQ,EAAE,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,EAC5E,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,4BAA4B;AAAA,IAC5C,MAAM;AAAA,IACN,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,2BAA2B;AAAA,IAC3C,MAAM;AAAA,IACN,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,6BAA6B;AAAA,IAC7C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAM;AAAA,EACR,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,4BAA4B;AAAA,IAC5C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAM;AAAA,EACR,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,4BAA4B;AAAA,IAC5C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,OAAOA,GAAE,OAAO;AAAA,IAChB,UAAUA,GAAE,MAAMA,GAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACtC,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,2BAA2B;AAAA,IAC3C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAMA,GAAE,OAAO;AAAA,IACf,UAAUA,GAAE,MAAMA,GAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IACpC,aAAaA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EAClD,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,kBAAkBA,GAAE,OAAO;AAAA,IAC3B,YAAY;AAAA,EACd,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAM;AAAA,EACR,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,sCAAsC;AAAA,IACtD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAM;AAAA,EACR,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,sCAAsC;AAAA,IACtD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAMA,GAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,+BAA+B;AAAA,IAC/C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,8BAA8B;AAAA,IAC9C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,eAAeA,GAAE,OAAO;AAAA,IACxB,MAAMA,GAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,sCAAsC;AAAA,IACtD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,oCAAoC;AAAA,IACpD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,oCAAoC;AAAA,IACpD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,oCAAoC;AAAA,IACpD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kCAAkC;AAAA,IAClD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kCAAkC;AAAA,IAClD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,qCAAqC;AAAA,IACrD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,qCAAqC;AAAA,IACrD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,4CAA4C;AAAA,IAC5D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,2CAA2C;AAAA,IAC3D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,IAC1D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,IAC1D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,wCAAwC;AAAA,IACxD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,wCAAwC;AAAA,IACxD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,4CAA4C;AAAA,IAC5D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,IAC1D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,6CAA6C;AAAA,IAC7D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,IAC1D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA;AAAA,EAEDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,2CAA2C;AAAA,IAC3D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0CAA0C;AAAA,IAC1D,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,MAAMA,GAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,sCAAsC;AAAA,IACtD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA;AAAA,EAEDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,wCAAwC;AAAA,IACxD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,uCAAuC;AAAA,IACvD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,WAAWA,GAAE,OAAO;AAAA,EACtB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,+BAA+B;AAAA,IAC/C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,6BAA6B;AAAA,IAC7C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,6BAA6B;AAAA,IAC7C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,0BAA0B;AAAA,IAC1C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,mCAAmC;AAAA,IACnD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,kCAAkC;AAAA,IAClD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,gCAAgC;AAAA,IAChD,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,OAAOA,GAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,+BAA+B;AAAA,IAC/C,SAASA,GAAE,OAAO;AAAA,IAClB,cAAcA,GAAE,OAAO;AAAA,IACvB,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,qBAAqB;AAAA,IACrC,UAAUA,GAAE,OAAO;AAAA,MACjB,oBAAoBA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,MAC7D,OAAO,wBAAwB,QAAQ;AAAA,MACvC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACnC,CAAC;AAAA,EACH,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,iBAAiB;AAAA,IACjC,UAAUA,GAAE,OAAO;AAAA,MACjB,OAAOA,GACJ,OAAO;AAAA,QACN,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACzB,SAASA,GAAE,OAAO;AAAA,MACpB,CAAC,EACA,QAAQ;AAAA,MACX,oBAAoBA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,MAC7D,OAAO,wBAAwB,QAAQ;AAAA,IACzC,CAAC;AAAA,EACH,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,OAAO;AAAA,IACvB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,SAASA,GAAE,OAAO;AAAA,IAClB,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC5B,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,eAAe;AAAA,IAC/B,UAAU;AAAA,EACZ,CAAC;AAAA,EACDA,GAAE,OAAO;AAAA,IACP,MAAMA,GAAE,QAAQ,oBAAoB;AAAA,IACpC,UAAU;AAAA,EACZ,CAAC;AACH,CAAC;;;ACznBD,SAAS,KAAAC,UAAS;AAeX,IAAM,mCAAmCA,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvD,iBAAiBA,GACd,KAAK,CAAC,QAAQ,OAAO,UAAU,QAAQ,OAAO,CAAC,EAC/C,SAAS;AAAA,EACZ,kBAAkBA,GAAE,KAAK,CAAC,QAAQ,WAAW,UAAU,CAAC,EAAE,SAAS;AAAA,EACnE,UAAUA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,aAAaA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACrD,aAAaA,GAAE,KAAK,CAAC,WAAW,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtD,OAAOA,GAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,EAI5B,oBAAoBA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,SAASA,GAAE,MAAMA,GAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,QAAQ;AACjE,CAAC;;;AChDD;AAAA,EACE,iCAAAC;AAAA,OAGK;AACP,SAAS,qBAAqB;;;ACL9B;AAAA,EACE;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,UAAS;AAMX,IAAM,uBAAuBF;AAAA,EAAW,MAC7CC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,gBAAgBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,MAClC,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,IACrC,CAAC;AAAA,EACH;AACF;AAEA,IAAM,yBAAyBF;AAAA,EAAW,MACxCC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,MAC3B,SAASA,GACN;AAAA,QACCA,GAAE,OAAO;AAAA,UACP,QAAQA,GAAE,OAAO;AAAA,UACjB,UAAUA,GAAE,OAAO;AAAA,UACnB,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,UAC9B,MAAMA,GAAE,OAAO;AAAA,QACjB,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,IAAM,wBAAwB,kCA+C5B;AAAA,EACA,IAAI;AAAA,EACJ,aAAaF,YAAW,MAAMC,WAAUC,GAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACrD,cAAc;AAChB,CAAC;AAEM,IAAM,aAAa,CAAC,SACzB,sBAAsB,IAAI;;;AC5F5B;AAAA,EACE,qCAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,UAAS;AAMX,IAAM,4BAA4BF;AAAA,EAAW,MAClDC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,QAAQA,GAAE,KAAK,CAAC,QAAQ,YAAY,MAAM,CAAC,EAAE,SAAS;AAAA,IACxD,CAAC;AAAA,EACH;AACF;AAEA,IAAM,6BAA6BF,YAAW,MAAMC,WAAUC,GAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E,IAAM,8BAA8BF;AAAA,EAAW,MAC7CC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,QAAQA,GAAE,OAAO;AAAA,MACjB,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;AAEA,IAAM,6BAA6BH,mCAuBjC;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEM,IAAM,kBAAkB,CAC7B,OAAyD,CAAC,MACvD,2BAA2B,IAAI;;;AC7DpC;AAAA,EACE,qCAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsBF;AAAA,EAAW,MAC5CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,WAAWA,IAAE,OAAO,EAAE,SAAS,2BAA2B;AAAA,MAC1D,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,MACxE,mBAAmBA,IAChB,OAAO,EACP,SAAS,EACT,SAAS,+BAA+B;AAAA,MAC3C,cAAcA,IACX,MAAMA,IAAE,OAAO,CAAC,EAChB,SAAS,EACT,SAAS,4BAA4B;AAAA,MACxC,SAASA,IACN,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAC7B,SAAS,EACT,SAAS,wBAAwB;AAAA,MACpC,eAAeA,IACZ,OAAO,EACP,SAAS,EACT,SAAS,4BAA4B;AAAA,IAC1C,CAAC;AAAA,EACH;AACF;AAGA,IAAM,wBAAwBF;AAAA,EAAW,MACvCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,WAAWA,IAAE,OAAO;AAAA,MACpB,QAAQA,IAAE,QAAQ;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AAEA,IAAM,uBAAuBH,mCAe3B;AAAA,EACA,IAAI;AAAA,EACJ,aAAaC,YAAW,MAAMC,WAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACrD,cAAc;AAChB,CAAC;AAEM,IAAM,YAAY,CAAC,SACxB,qBAAqB,IAAI;;;ACjE3B;AAAA,EACE,qCAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsBF;AAAA,EAAW,MAC5CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpD,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACrD,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAAA,MACxC,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,IACjD,CAAC;AAAA,EACH;AACF;AAEO,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IACL,mBAAmB,QAAQ;AAAA,QAC1BA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,UACxB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,UAC3B,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,QACxC,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,UAC1B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,UAC5B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,UACxB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC9B,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,MACZ,SAASA,IACN,MAAMA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC,CAAC,EAC3D,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,IAAM,uBAAuBH,mCA0B3B;AAAA,EACA,IAAI;AAAA,EACJ,aAAaC,YAAW,MAAMC,WAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACrD,cAAc;AAChB,CAAC;AAEM,IAAM,YAAY,CACvB,OAAmD,CAAC,MACjD,qBAAqB,IAAI;;;AChF9B;AAAA,EACE,qCAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,oBAAoBF;AAAA,EAAW,MAC1CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,MACtD,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,MACvD,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC5B,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,MAC/C,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,IACjD,CAAC;AAAA,EACH;AACF;AAEA,IAAM,sBAAsBF;AAAA,EAAW,MACrCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,OAAOA,IAAE,OAAO;AAAA,MAChB,OAAOA,IAAE;AAAA,QACPA,IAAE,OAAO;AAAA,UACP,QAAQA,IAAE,OAAO;AAAA,UACjB,MAAMA,IAAE,OAAO;AAAA,UACf,KAAKA,IAAE,OAAO;AAAA,UACd,OAAOA,IAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAM,qBAAqBH,mCAmBzB;AAAA,EACA,IAAI;AAAA,EACJ,aAAaC,YAAW,MAAMC,WAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACrD,cAAc;AAChB,CAAC;AAEM,IAAM,UAAU,CAAC,OAAiD,CAAC,MACxE,mBAAmB,IAAI;;;AL3CzB,eAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAOG;AACD,QAAM,mBAAkB,+BAAO,UAAS,QAAQ;AAEhD,QAAM,eAAkC,CAAC;AAEzC,MAAI,mBAAmB,MAAM;AAC3B,WAAO,EAAE,OAAO,QAAW,YAAY,QAAW,aAAa;AAAA,EACjE;AAEA,QAAMC,YAAoC,CAAC;AAC3C,QAAM,aAAa,oBAAI,IAA8C;AAErE,aAAW,QAAQ,iBAAiB;AAClC,eAAW,IAAI,KAAK,MAAM,IAAI;AAE9B,QAAI,KAAK,SAAS,YAAY;AAC5B,cAAQ,KAAK,IAAI;AAAA,QACf,KAAK,kBAAkB;AACrB,gBAAM,OAAO,MAAM,cAAc;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,QAAQ;AAAA,UACV,CAAC;AAED,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,iBAAiB,KAAK;AAAA,YACtB,kBAAkB,KAAK;AAAA,YACvB,qBAAqB,KAAK;AAAA,YAC1B,4BAA4B,KAAK;AAAA,UACnC,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,gBAAgB;AACnB,gBAAM,OAAO,MAAM,cAAc;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,QAAQ;AAAA,UACV,CAAC;AAED,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,mBAAmB,KAAK;AAAA,YACxB,oBAAoB,KAAK;AAAA,YACzB,WAAW,KAAK;AAAA,YAChB,SAAS,KAAK;AAAA,YACd,4BAA4B,KAAK;AAAA,YACjC,4BAA4B,KAAK;AAAA,UACnC,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,sBAAsB;AACzB,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,kBAAkB;AACrB,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,wBAAwB;AAC3B,gBAAM,OAAO,MAAM,cAAc;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,QAAQ;AAAA,UACV,CAAC;AAED,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,UACf,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,mBAAmB;AACtB,gBAAM,OAAO,MAAM,cAAc;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,QAAQ;AAAA,UACV,CAAC;AAED,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,kBAAkB,KAAK;AAAA,YACvB,iBAAiB,KAAK;AAAA,UACxB,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,WAAW;AACd,gBAAM,OAAO,MAAM,cAAc;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,QAAQ;AAAA,UACV,CAAC;AAED,UAAAA,UAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,cAAc,KAAK;AAAA,YACnB,oBAAoB,KAAK;AAAA,YACzB,eAAe,KAAK;AAAA,YACpB,SAAS,KAAK;AAAA,YACd,eAAe,KAAK;AAAA,UACtB,CAAC;AACD;AAAA,QACF;AAAA,QAEA,SAAS;AACP,uBAAa,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,SAAS,yBAAyB,KAAK,IAAI;AAAA,UAC7C,CAAC;AACD;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAAA,UAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK;AAAA,QACjB,GAAI,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,cAAc,MAAM;AACtB,WAAO,EAAE,OAAOA,WAAU,YAAY,QAAW,aAAa;AAAA,EAChE;AAEA,QAAM,OAAO,WAAW;AAExB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,OAAOA,WAAU,YAAY,MAAM,aAAa;AAAA,IAC3D,KAAK;AACH,aAAO,EAAE,OAAOA,WAAU,YAAY,YAAY,aAAa;AAAA,IACjE,KAAK,QAAQ;AACX,YAAM,eAAe,WAAW,IAAI,WAAW,QAAQ;AAEvD,UAAI,gBAAgB,MAAM;AACxB,eAAO;AAAA,UACL,OAAOA;AAAA,UACP,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,SAAS,YAAY;AAGpC,qBAAa,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,oCAAoC,aAAa,IAAI;AAAA,QAChE,CAAC;AACD,eAAO,EAAE,OAAOA,WAAU,YAAY,QAAW,aAAa;AAAA,MAChE;AAEA,aAAO;AAAA,QACL,OAAOA;AAAA,QACP,YAAY,EAAE,MAAM,YAAY,MAAM,aAAa,KAAK;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AACP,YAAM,mBAA0B;AAChC,YAAM,IAAIC,+BAA8B;AAAA,QACtC,eAAe,qBAAqB,gBAAgB;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AR3JA,SAAS,8BAA8B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,aAAa,kBAAkB,IAAI;AAEzC,SAAO,0BAA0B;AAAA,IAC/B;AAAA,IACA,MAAM;AAAA,IACN,MAAM,sBAAQ;AAAA,IACd,GAAI,cAAc,OACd;AAAA,MACE;AAAA,MACA,aAAa,sBAAsB,UAAU;AAAA,IAC/C,IACA,mCAAmC,IAAI;AAAA,IAC3C;AAAA,EACF,CAAC;AACH;AAEA,SAAS,mCAAmC,MAG1C;AACA,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AAEA,SAAS,kBAAkB,OAAoC;AAC7D,QAAM,aACJ,OAAO,UAAU,YAAY,UAAU,KAAK,KAAK,IAAI,OAAO,KAAK,IAAI;AAEvE,SAAO,OAAO,eAAe,YAC3B,OAAO,UAAU,UAAU,KAC3B,cAAc,OACd,cAAc,MACZ,aACA;AACN;AAEA,SAAS,sBAAsB,YAA6B;AAC1D,SACE,eAAe,OACf,eAAe,OACf,eAAe,OACf,cAAc;AAElB;AAEO,IAAM,4BAAsD;AAAA,EACjE,WAAW,CAAC,iBAAiB;AAAA;AAAA;AAAA;AAAA,EAI7B,mBAAmB,CAAC,iBAAiB;AAAA,EACrC,UAAU,CAAC,iBAAiB;AAC9B;AAEO,IAAM,4BAAN,MAAM,2BAAqD;AAAA,EAqBhE,YAAY,SAA8B,QAA4B;AApBtE,SAAS,uBAAuB;AA6BhC,SAAS,gBAAgB;AARvB,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAjBA,QAAQC,mBAAkB,EAAE,OAAkC;AAC5D,WAAOC,uBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQC,qBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,2BAA0B,QAAQ,SAAS,QAAQ,MAAM;AAAA,EACtE;AAAA,EAOA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAIA,aAAa,eAAe;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAGG;AA3ML;AA4MI,UAAM,WAA8B,CAAC;AAErC,UAAM,WACH,WAAMC,sBAAqB;AAAA,MAC1B,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,MAJA,YAIM,CAAC;AAEV,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,QAAI,oBAAoB,MAAM;AAC5B,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,mBAAmB,CAAC;AAAA,IACpE;AAEA,QAAI,mBAAmB,MAAM;AAC3B,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,kBAAkB,CAAC;AAAA,IACnE;AAEA,QAAI,iBAAiB,MAAM;AACzB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,gBAAgB,CAAC;AAAA,IACjE;AAEA,UAAM,qBAAoB,oCAAO;AAAA,MAC/B,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UADxB,mBAEvB;AAEH,UAAM,mBAAkB,oCAAO;AAAA,MAC7B,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UAD1B,mBAErB;AAEH,UAAM,yBAAwB,oCAAO;AAAA,MACnC,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UADpB,mBAE3B;AAEH,UAAM,eAAc,oCAAO;AAAA,MACzB,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UAD9B,mBAEjB;AAEH,UAAM,sBAAqB,oCAAO;AAAA,MAChC,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UADvB,mBAExB;AAEH,UAAM,2BAA0B,oCAAO;AAAA,MACrC,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UADlB,mBAE7B;AAEH,UAAM,EAAE,OAAO,cAAc,IAAI,MAAM,2BAA2B;AAAA,MAChE;AAAA,MACA,QAAO,aAAQ,UAAR,YAAiB;AAAA,IAC1B,CAAC;AACD,aAAS,KAAK,GAAG,aAAa;AAE9B,UAAM;AAAA,MACJ,OAAOC;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACF,IAAI,MAAM,sBAAsB;AAAA,MAC9B;AAAA,MACA;AAAA,IACF,CAAC;AACD,aAAS,KAAK,GAAG,YAAY;AAG7B,QAAI,UAAsC,QAAQ,UAC9C,CAAC,GAAG,QAAQ,OAAO,IACnB;AAEJ,QAAI,QAAQ,UAAU,OAAO;AAG3B,UAAI,WAAW,MAAM;AACnB,kBAAU,CAAC,6BAA6B;AAAA,MAC1C,OAAO;AACL,kBAAU,CAAC,GAAG,SAAS,6BAA6B;AAAA,MACtD;AAAA,IACF;AAEA,QAAI,0BAA0B,QAAQ;AACtC,QAAI,2BAA2B,QAAQ,kBAAkB,SAAS,GAAG;AACnE,UAAI,CAAC,wBAAwB,OAAO,GAAG;AACrC,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,cAAc,SAAS;AAAA,QAClC,CAAC;AAAA,MACH,WAAW,cAAc,QAAQ;AAC/B,kCAA0B;AAAA,MAC5B,OAAO;AACL,kCAA0B,6BAA6B;AAAA,UACrD;AAAA,UACA,WAAW;AAAA,YACT,SAAS;AAAA,YACT,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO,YAAY,aAAa,UAAU;AAAA,UAC5C;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,WAAoC;AAAA,MACxC,OAAO;AAAA,MACP;AAAA,MACA,UACE,QAAQ,aAAa,QAAQ,QAAQ,eAAe,OAChD,OACA;AAAA,MACN,cAAc,QAAQ;AAAA,MACtB,mBAAmB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,IAAI,iDAAgB,UAAS,UAAU;AAAA,QACrC,MAAM;AAAA,UACJ,QACE,eAAe,UAAU,OACrB;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,OAAM,oBAAe,SAAf,YAAuB;AAAA,YAC7B,aAAa,eAAe;AAAA,YAC5B,QAAQ,eAAe;AAAA,UACzB,IACA,EAAE,MAAM,cAAc;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,IAAK,2BAA2B,QAC9B,QAAQ,oBAAoB,SAAS;AAAA,QACrC,WAAW;AAAA,UACT,GAAI,2BAA2B,QAAQ;AAAA,YACrC,QAAQ;AAAA,UACV;AAAA,UACA,GAAI,QAAQ,oBAAoB,QAAQ;AAAA,YACtC,SAAS,QAAQ;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,MACA,GAAI,QAAQ,UAAU,SAAS;AAAA,QAC7B,OAAO,QAAQ;AAAA,MACjB;AAAA,MACA,GAAI,WAAW,QAAQ;AAAA,QACrB;AAAA,MACF;AAAA,MACA,GAAI,QAAQ,sBAAsB,QAAQ;AAAA,QACxC,sBAAsB,QAAQ;AAAA,MAChC;AAAA,MACA,GAAI,QAAQ,eAAe,QAAQ;AAAA,QACjC,cAAc,QAAQ;AAAA,MACxB;AAAA,IACF;AAEA,QAAIA,aAAYA,UAAS,SAAS,GAAG;AACnC,eAAS,QAAQA;AAAA,IACnB;AAEA,QAAI,iBAAiB,MAAM;AACzB,eAAS,cAAc;AAAA,IACzB;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,QAAQ,SAAqC;AACnD,WAAO,2BAA0B,eAAe;AAAA,MAC9C,SAAS,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,SACwC;AArY5C;AAsYI,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,MAAM,KAAK,QAAQ,OAAO;AAE9B,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,IAAI,MAAMC,eAAc;AAAA,MACtB,KAAK,IAAG,UAAK,OAAO,YAAZ,YAAuB,qBAAqB;AAAA,MACpD,SAASC,iBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAAA,MAChE;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,UAAyC,CAAC;AAChD,QAAI,kBAAkB;AAEtB,UAAM,oBAAoB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,kBAAkB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,eAAW,QAAQ,SAAS,QAAQ;AAClC,UAAI,KAAK,SAAS,oBAAoB;AACpC,cAAM,WAAW,kDAAsB;AAEvC,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB;AAAA,UACA,OAAO;AAAA,UACP,kBAAkB;AAAA,QACpB,CAAC;AAED,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB;AAAA,UACA,QAAQ;AAAA,YACN,UAAS,UAAK,YAAL,YAAgB,CAAC;AAAA,YAC1B,UACE,gBAAK,YAAL,mBAAc,IAAI,aAAW;AAAA,cAC3B,QAAQ,OAAO;AAAA,cACf,UAAU,OAAO;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,MAAM,OAAO;AAAA,YACf,QALA,YAKO;AAAA,UACX;AAAA,QACF,CAAC;AAED;AAAA,MACF;AAEA,UAAI,KAAK,SAAS,yBAAyB;AACzC,cAAM,WAAW,4DAA2B;AAE5C,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB;AAAA,UACA,OAAO;AAAA,UACP,kBAAkB;AAAA,QACpB,CAAC;AAED,YAAI,KAAK,UAAU,MAAM;AACvB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB;AAAA,YACA,QAAQ;AAAA,cACN,QAAQ,KAAK;AAAA,cACb,GAAI,KAAK,UAAU,QAAQ,EAAE,QAAQ,KAAK,OAAO;AAAA,YACnD;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB;AAAA,YACA,SAAS;AAAA,YACT,QAAQ,oCAAoC,KAAK,MAAM;AAAA,UACzD,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAEA,UACE,KAAK,SAAS,qBACd,KAAK,SAAS,mBACd,KAAK,SAAS,2BACd,KAAK,SAAS,yBACd,KAAK,SAAS,qBACd,KAAK,SAAS,uBACd,KAAK,SAAS,sBACd,KAAK,SAAS,YACd;AACA,YAAI,YAAW,UAAK,SAAL,YAAa;AAC5B,YACE,kBAAkB,UAAS,UAAK,SAAL,YAAa,EAAE,KAC1C,KAAK,SAAS,mBACd;AACA,qBAAW,gDAAqB;AAAA,QAClC,WACE,gBAAgB,UAAS,UAAK,SAAL,YAAa,EAAE,KACxC,KAAK,SAAS,iBACd;AACA,qBAAW,4CAAmB;AAAA,QAChC,WACE,KAAK,SAAS,oBACd,KAAK,SAAS,2BACd,KAAK,SAAS,uBACd;AACA,qBAAW,wDAAyB;AAAA,QACtC,WAAW,KAAK,SAAS,YAAY;AACnC,sBAAW,yCAAe,KAAK,SAApB,YAA4B;AAAA,QACzC;AAEA,cAAM,YACJ,KAAK,SAAS,sBACT,UAAK,UAAL,YAAc,KACf,KAAK,SAAS,cACX,UAAK,cAAL,YAAkB,MAClB,UAAK,cAAL,YAAkB;AAE3B,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB;AAAA,UACA,OAAO;AAAA,UACP,kBAAkB;AAAA,QACpB,CAAC;AAED,YAAI,KAAK,SAAS,mBAAmB;AACnC,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB;AAAA,YACA,QAAQ,mBAAmB,KAAK,MAAM;AAAA,UACxC,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAEA,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK,WAAW;AACd,qBAAW,eAAe,KAAK,SAAS;AACtC,gBAAI,YAAY,MAAM;AACpB,sBAAQ,KAAK;AAAA,gBACX,MAAM;AAAA,gBACN,MAAM,YAAY;AAAA,cACpB,CAAC;AAAA,YACH;AAEA,gBAAI,YAAY,aAAa;AAC3B,yBAAW,cAAc,YAAY,aAAa;AAChD,oBAAI,WAAW,SAAS,kBAAkB,SAAS,YAAY;AAC7D,0BAAQ,KAAK;AAAA,oBACX,MAAM;AAAA,oBACN,YAAY;AAAA,oBACZ,IAAI,KAAK,OAAO,WAAW;AAAA,oBAC3B,KAAK,WAAW;AAAA,oBAChB,QAAO,gBAAW,UAAX,YAAoB,WAAW;AAAA,kBACxC,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA;AAAA,QACF;AAAA,QAEA,KAAK,iBAAiB;AACpB,4BAAkB;AAClB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,KAAK;AAAA,YACf,OAAO,KAAK;AAAA,UACd,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,aAAa;AAChB,gBAAM,QACJ,KAAK,QAAQ,SAAS,IAClB,KAAK,QAAQ,IAAI,OAAK,EAAE,IAAI,MAC3B,UAAK,YAAL,YAAgB,CAAC,GAAG,IAAI,OAAK,EAAE,IAAI;AAE1C,gBAAM,gBAAgB,MACnB,OAAO,UAAQ,QAAQ,KAAK,SAAS,CAAC,EACtC,KAAK,EAAE;AAGV,cAAI,iBAAiB,KAAK,mBAAmB;AAC3C,kBAAM,cAAc,KAAK,qBAAqB,KAAK;AACnD,oBAAQ,KAAK;AAAA,cACX,MAAM;AAAA,cACN,MAAM;AAAA,cACN,GAAI,eAAe;AAAA,gBACjB,kBAAkB;AAAA,kBAChB,KAAK;AAAA,oBACH,GAAI,KAAK,qBAAqB;AAAA,sBAC5B,2BAA2B,KAAK;AAAA,oBAClC;AAAA,oBACA,GAAI,KAAK,MAAM,EAAE,QAAQ,KAAK,GAAG;AAAA,kBACnC;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AACA;AAAA,QACF;AAAA,QAEA,SAAS;AACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,kBACL,eACA,4BAA4B,SAAS,MAAM;AAAA,QAC/C,MAAK,cAAS,WAAT,YAAmB;AAAA,MAC1B;AAAA,MACA,OAAO,SAAS,QACZ,yBAAyB,SAAS,KAAK,IACvC;AAAA,QACE,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,EAAE;AAAA,QACjE,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,EAAE;AAAA,MAClD;AAAA,MACJ,MAAK,cAAS,UAAT,mBAAgB,sBAAqB,QACxC,SAAS,gBAAgB,SAAS;AAAA,QAClC,kBAAkB;AAAA,UAChB,KAAK;AAAA,YACH,KAAI,cAAS,UAAT,mBAAgB,sBAAqB,QAAQ;AAAA,cAC/C,gBAAgB,SAAS,MAAM;AAAA,YACjC;AAAA,YACA,GAAI,SAAS,gBAAgB,QAAQ;AAAA,cACnC,aAAa,SAAS;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU;AAAA,QACR,GAAG,oBAAoB,QAAQ;AAAA,QAC/B,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACsC;AA9pB1C;AA+pBI,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,MAAM,KAAK,QAAQ,OAAO;AAC9B,UAAM,OAAO;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAEA,UAAM,EAAE,iBAAiB,OAAO,SAAS,IAAI,MAAMF,eAAc;AAAA,MAC/D,KAAK,IAAG,UAAK,OAAO,YAAZ,YAAuB,qBAAqB;AAAA,MACpD,SAASC,iBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAAA,MAChE;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,eAA4C;AAAA,MAC9C,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AACA,QAAI,kBAAkB;AACtB,QAAI,QAA0C;AAC9C,QAAI,iBAAqC;AACzC,QAAI,cAAkC;AACtC,QAAI,eAAe;AACnB,UAAM,gBAAkD,CAAC;AACzD,UAAM,gBAAgB,oBAAI,IAAY;AAItC,UAAM,mBAGF,CAAC;AAEL,UAAM,kBAGF,CAAC;AAEL,UAAM,OAAO;AAEb,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,QACf,IAAI,gBAGF;AAAA,UACA,MAAM,YAAY;AAChB,uBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,UACvD;AAAA,UAEA,UAAU,OAAO,YAAY;AA9tBvC,gBAAAE,KAAAC,KAAAC,KAAA;AA+tBY,gBAAI,QAAQ,kBAAkB;AAC5B,yBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,YAC9D;AAEA,gBAAI,CAAC,MAAM,SAAS;AAClB,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM;AAEpB,gBACE,MAAM,SAAS,sBACf,MAAM,SAAS,wBACf;AACA,kBAAI,cAAc;AAChB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,GAAG,oBAAoB,MAAM,QAAQ;AAAA,gBACvC,CAAC;AACD,+BAAe;AAAA,cACjB;AACA;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,yCAAyC;AAC1D,oBAAM,UAAU,aAAa,MAAM,OAAO;AAE1C,kBAAI,gBAAgB,MAAM,OAAO,KAAK,MAAM;AAC1C,gCAAgB,MAAM,OAAO,IAAI,CAAC;AAClC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,kBACJ,kBAAkB;AAAA,oBAChB,KAAK;AAAA,sBACH,QAAQ,MAAM;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,yCAAyC;AAC1D,oBAAM,UAAU,aAAa,MAAM,OAAO;AAE1C,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,MAAM;AAAA,gBACb,kBAAkB;AAAA,kBAChB,KAAK;AAAA,oBACH,QAAQ,MAAM;AAAA,kBAChB;AAAA,gBACF;AAAA,cACF,CAAC;AAED;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,wCAAwC;AACzD;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,iCAAiC;AAClD,oBAAM,UAAU,aAAa,MAAM,OAAO;AAE1C,kBAAI,gBAAgB,MAAM,OAAO,KAAK,MAAM;AAC1C,gCAAgB,MAAM,OAAO,IAAI,CAAC;AAClC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,kBACJ,kBAAkB;AAAA,oBAChB,KAAK;AAAA,sBACH,QAAQ,MAAM;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,MAAM;AAAA,gBACb,kBAAkB;AAAA,kBAChB,KAAK;AAAA,oBACH,QAAQ,MAAM;AAAA,kBAChB;AAAA,gBACF;AAAA,cACF,CAAC;AAED;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,gCAAgC;AACjD;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,8BAA8B;AAC/C,oBAAM,UAAU,QAAQ,MAAM,OAAO;AAErC,kBAAI,cAAc,OAAO,KAAK,MAAM;AAClC,8BAAc,OAAO,IAAI,EAAE,MAAM,OAAO;AACxC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,gBACN,CAAC;AAAA,cACH;AAEA,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,MAAM;AAAA,cACf,CAAC;AAED;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,6BAA6B;AAC9C,kBAAI,MAAM,aAAa;AACrB,2BAAW,cAAc,MAAM,aAAa;AAC1C,sBACE,WAAW,SAAS,kBACpB,SAAS,YACT;AACA,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,YAAY;AAAA,sBACZ,IAAI,KAAK,OAAO,WAAW;AAAA,sBAC3B,KAAK,WAAW;AAAA,sBAChB,QAAOF,MAAA,WAAW,UAAX,OAAAA,MAAoB,WAAW;AAAA,oBACxC,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AAEA;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,yCAAyC;AAC1D,oBAAM,aAAa,MAAM;AACzB,kBAAI,WAAW,SAAS,kBAAkB,SAAS,YAAY;AAC7D,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,IAAI,KAAK,OAAO,WAAW;AAAA,kBAC3B,KAAK,WAAW;AAAA,kBAChB,QAAOC,MAAA,WAAW,UAAX,OAAAA,MAAoB,WAAW;AAAA,gBACxC,CAAC;AAAA,cACH;AAEA;AAAA,YACF;AAEA,gBACE,MAAM,SAAS,mBACf,MAAM,SAAS,wBACf,MAAM,SAAS,uBACf;AACA,oBAAME,YAAW,MAAM;AAEvB,kBAAIA,UAAS,OAAO;AAClB,wBAAQ,yBAAyBA,UAAS,KAAK;AAC/C,kCAAiBD,MAAAC,UAAS,MAAM,sBAAf,OAAAD,MAAoC;AAAA,cACvD;AAEA,6BAAc,KAAAC,UAAS,iBAAT,YAAyB;AAEvC,kBAAI,MAAM,SAAS,uBAAuB;AACxC,sBAAM,SACJ,wBAAwBA,aACpB,KAAAA,UAAS,uBAAT,mBAA6B,SAC7B;AACN,+BAAe;AAAA,kBACb,SAAS,SACL,4BAA4B,MAAM,IAClC;AAAA,kBACJ,KAAK,0BAAU;AAAA,gBACjB;AAAA,cACF,WAAW,YAAYA,aAAYA,UAAS,QAAQ;AAClD,+BAAe;AAAA,kBACb,SAAS,kBACL,eACA,4BAA4BA,UAAS,MAAM;AAAA,kBAC/C,KAAKA,UAAS;AAAA,gBAChB;AAAA,cACF;AAEA;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,mBAAmB;AACpC,oBAAM,UAAS,WAAM,SAAS,uBAAf,mBAAmC;AAClD,6BAAe;AAAA,gBACb,SAAS,SAAS,4BAA4B,MAAM,IAAI;AAAA,gBACxD,KAAK,0BAAU;AAAA,cACjB;AAEA,kBAAI,MAAM,SAAS,OAAO;AACxB,wBAAQ,yBAAyB,MAAM,SAAS,KAAK;AAAA,cACvD;AAEA,kBAAI,MAAM,SAAS,SAAS,MAAM;AAChC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,OAAO,8BAA8B;AAAA,oBACnC,SAAS,MAAM,SAAS,MAAM;AAAA,oBAC9B,MAAM,MAAM,SAAS,MAAM;AAAA,oBAC3B,WAAW,MAAM;AAAA,oBACjB,MAAM;AAAA,kBACR,CAAC;AAAA,gBACH,CAAC;AAAA,cACH;AAEA;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,SAAS;AAC1B,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO,8BAA8B;AAAA,kBACnC,SAAS,MAAM;AAAA,kBACf,MAAM,MAAM;AAAA,kBACZ,WAAW,MAAM;AAAA,kBACjB,MAAM;AAAA,gBACR,CAAC;AAAA,cACH,CAAC;AACD;AAAA,YACF;AAGA,gBACE,MAAM,SAAS,2CACf,MAAM,SAAS,wCACf;AACA;AAAA,YACF;AAGA,gBAAI,MAAM,SAAS,0CAA0C;AAC3D,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AACpD,kBAAI,YAAY,MAAM;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO,MAAM;AAAA,gBACf,CAAC;AAAA,cACH;AACA;AAAA,YACF;AACA,gBAAI,MAAM,SAAS,yCAAyC;AAG1D;AAAA,YACF;AAEA,gBACE,MAAM,SAAS,gDACf,MAAM,SAAS,+CACf,MAAM,SAAS,4CACf;AACA,kBAAI,CAAC,cAAc,IAAI,MAAM,OAAO,GAAG;AACrC,8BAAc,IAAI,MAAM,OAAO;AAE/B,sBAAM,WAAW,4DAA2B;AAE5C,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM;AAAA,kBACV;AAAA,gBACF,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM;AAAA,kBACV,OAAO;AAAA,gBACT,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM;AAAA,gBACZ,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM;AAAA,kBAClB;AAAA,kBACA,OAAO;AAAA,kBACP,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH;AAEA;AAAA,YACF;AAEA,gBACE,MAAM,SAAS,gCACf,MAAM,SAAS,6BACf;AACA,oBAAM,OAAO,MAAM;AACnB,kBAAI,KAAK,SAAS,aAAa;AAC7B,oBAAI,MAAM,SAAS,6BAA6B;AAC9C,wBAAM,UAAU,aAAa,KAAK,EAAE;AAIpC,sBAAI,EAAE,KAAK,MAAM,kBAAkB;AACjC,oCAAgB,KAAK,EAAE,IAAI,CAAC;AAC5B,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,IAAI;AAAA,sBACJ,kBAAkB;AAAA,wBAChB,KAAK;AAAA,0BACH,GAAI,KAAK,MAAM,EAAE,QAAQ,KAAK,GAAG;AAAA,wBACnC;AAAA,sBACF;AAAA,oBACF,CAAC;AAAA,kBACH;AAEA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,oBACJ,kBAAkB;AAAA,sBAChB,KAAK;AAAA,wBACH,GAAI,KAAK,qBAAqB;AAAA,0BAC5B,2BAA2B,KAAK;AAAA,wBAClC;AAAA,wBACA,GAAI,KAAK,MAAM,EAAE,QAAQ,KAAK,GAAG;AAAA,sBACnC;AAAA,oBACF;AAAA,kBACF,CAAC;AACD,yBAAO,gBAAgB,KAAK,EAAE;AAAA,gBAChC;AACA;AAAA,cACF;AAEA,kBAAI,KAAK,SAAS,oBAAoB;AACpC,sBAAM,WAAW,kDAAsB;AAEvC,oBAAI,CAAC,cAAc,IAAI,KAAK,EAAE,GAAG;AAC/B,gCAAc,IAAI,KAAK,EAAE;AAEzB,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT;AAAA,kBACF,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT,OAAO;AAAA,kBACT,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,kBACX,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB;AAAA,oBACA,OAAO;AAAA,oBACP,kBAAkB;AAAA,kBACpB,CAAC;AAAA,gBACH;AAEA,oBAAI,MAAM,SAAS,6BAA6B;AAC9C,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAS,UAAK,YAAL,YAAgB,CAAC;AAAA,sBAC1B,UACE,gBAAK,YAAL,mBAAc,IAAI,aAAW;AAAA,wBAC3B,QAAQ,OAAO;AAAA,wBACf,UAAU,OAAO;AAAA,wBACjB,OAAO,OAAO;AAAA,wBACd,MAAM,OAAO;AAAA,sBACf,QALA,YAKO;AAAA,oBACX;AAAA,kBACF,CAAC;AAAA,gBACH;AAEA;AAAA,cACF;AAEA,kBAAI,KAAK,SAAS,yBAAyB;AACzC,sBAAM,WAAW,4DAA2B;AAE5C,oBAAI,CAAC,cAAc,IAAI,KAAK,EAAE,GAAG;AAC/B,gCAAc,IAAI,KAAK,EAAE;AAEzB,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT;AAAA,kBACF,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT,OAAO;AAAA,kBACT,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,kBACX,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB;AAAA,oBACA,OAAO;AAAA,oBACP,kBAAkB;AAAA,kBACpB,CAAC;AAAA,gBACH;AAEA,oBAAI,MAAM,SAAS,6BAA6B;AAC9C,sBAAI,KAAK,UAAU,MAAM;AACvB,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,YAAY,KAAK;AAAA,sBACjB;AAAA,sBACA,QAAQ;AAAA,wBACN,QAAQ,KAAK;AAAA,wBACb,GAAI,KAAK,UAAU,QAAQ,EAAE,QAAQ,KAAK,OAAO;AAAA,sBACnD;AAAA,oBACF,CAAC;AAAA,kBACH,OAAO;AACL,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,YAAY,KAAK;AAAA,sBACjB;AAAA,sBACA,SAAS;AAAA,sBACT,QAAQ,oCAAoC,KAAK,MAAM;AAAA,oBACzD,CAAC;AAAA,kBACH;AAAA,gBACF;AAEA;AAAA,cACF;AAEA,kBACE,KAAK,SAAS,qBACd,KAAK,SAAS,mBACd,KAAK,SAAS,2BACd,KAAK,SAAS,yBACd,KAAK,SAAS,qBACd,KAAK,SAAS,uBACd,KAAK,SAAS,sBACd,KAAK,SAAS,YACd;AACA,sBAAM,oBAAoB;AAAA,kBACxB;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AACA,sBAAM,kBAAkB;AAAA,kBACtB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAEA,oBAAI,YAAW,UAAK,SAAL,YAAa;AAC5B,oBACE,kBAAkB,UAAS,UAAK,SAAL,YAAa,EAAE,KAC1C,KAAK,SAAS,mBACd;AACA,6BAAW,gDAAqB;AAAA,gBAClC,WACE,gBAAgB,UAAS,UAAK,SAAL,YAAa,EAAE,KACxC,KAAK,SAAS,iBACd;AACA,6BAAW,4CAAmB;AAAA,gBAChC,WACE,KAAK,SAAS,oBACd,KAAK,SAAS,2BACd,KAAK,SAAS,uBACd;AACA,6BAAW,wDAAyB;AAAA,gBACtC,WAAW,KAAK,SAAS,YAAY;AACnC,8BAAW,yCAAe,KAAK,SAApB,YAA4B;AAAA,gBACzC;AAEA,sBAAM,YACJ,KAAK,SAAS,sBACT,UAAK,UAAL,YAAc,KACf,KAAK,SAAS,cACX,UAAK,cAAL,YAAkB,MAClB,UAAK,cAAL,YAAkB;AAE3B,sBAAM,aACJ,KAAK,SAAS,qBACV,MAAM,SAAS,8BACf,CAAC,cAAc,IAAI,KAAK,EAAE;AAEhC,oBAAI,cAAc,CAAC,cAAc,IAAI,KAAK,EAAE,GAAG;AAC7C,gCAAc,IAAI,KAAK,EAAE;AAEzB,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT;AAAA,kBACF,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT,OAAO;AAAA,kBACT,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,kBACX,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB;AAAA,oBACA,OAAO;AAAA,oBACP,kBAAkB;AAAA,kBACpB,CAAC;AAAA,gBACH;AAEA,oBAAI,MAAM,SAAS,6BAA6B;AAC9C,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB;AAAA,oBACA,QACE,KAAK,SAAS,oBACV,mBAAmB,KAAK,MAAM,IAC9B,CAAC;AAAA,kBACT,CAAC;AAAA,gBACH;AAEA;AAAA,cACF;AAEA,kBAAI,KAAK,SAAS,WAAW;AAC3B,2BAAW,eAAe,KAAK,SAAS;AACtC,sBAAI,YAAY,QAAQ,YAAY,KAAK,SAAS,GAAG;AACnD,0BAAM,UAAU,QAAQ,KAAK,EAAE;AAG/B,wBAAI,cAAc,OAAO,KAAK,MAAM;AAClC,oCAAc,OAAO,IAAI,EAAE,MAAM,OAAO;AACxC,iCAAW,QAAQ;AAAA,wBACjB,MAAM;AAAA,wBACN,IAAI;AAAA,sBACN,CAAC;AAED,iCAAW,QAAQ;AAAA,wBACjB,MAAM;AAAA,wBACN,IAAI;AAAA,wBACJ,OAAO,YAAY;AAAA,sBACrB,CAAC;AAAA,oBACH;AAAA,kBACF;AAEA,sBAAI,YAAY,aAAa;AAC3B,+BAAW,cAAc,YAAY,aAAa;AAChD,0BACE,WAAW,SAAS,kBACpB,SAAS,YACT;AACA,mCAAW,QAAQ;AAAA,0BACjB,MAAM;AAAA,0BACN,YAAY;AAAA,0BACZ,IAAI,KAAK,OAAO,WAAW;AAAA,0BAC3B,KAAK,WAAW;AAAA,0BAChB,QAAO,gBAAW,UAAX,YAAoB,WAAW;AAAA,wBACxC,CAAC;AAAA,sBACH;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,oBAAI,MAAM,SAAS,8BAA8B;AAG/C,mCAAiB,MAAM,YAAY,IAAI;AAAA,oBACrC,UAAU,KAAK;AAAA,oBACf,YAAY,KAAK;AAAA,kBACnB;AAEA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,oBACT,UAAU,KAAK;AAAA,kBACjB,CAAC;AAAA,gBACH,WAAW,MAAM,SAAS,6BAA6B;AACrD,oCAAkB;AAClB,mCAAiB,MAAM,YAAY,IAAI;AAEvC,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,KAAK;AAAA,kBACX,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,KAAK;AAAA,oBACjB,UAAU,KAAK;AAAA,oBACf,OAAO,KAAK;AAAA,kBACd,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,uBAAW,CAAC,SAAS,KAAK,KAAK,OAAO,QAAQ,aAAa,GAAG;AAC5D,kBAAI,MAAM,SAAS,QAAQ;AACzB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,gBACN,CAAC;AAAA,cACH;AAAA,YACF;AAEA,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA,OAAO,wBAAS;AAAA,gBACd,aAAa;AAAA,kBACX,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,WAAW;AAAA,kBACX,YAAY;AAAA,gBACd;AAAA,gBACA,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,EAAE;AAAA,cAClD;AAAA,cACA,IAAK,kBAAkB,QAAQ,eAAe,SAAS;AAAA,gBACrD,kBAAkB;AAAA,kBAChB,KAAK;AAAA,oBACH,GAAI,kBAAkB,QAAQ,EAAE,eAAe;AAAA,oBAC/C,GAAI,eAAe,QAAQ,EAAE,YAAY;AAAA,kBAC3C;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU,EAAE,SAAS,gBAAgB;AAAA,IACvC;AAAA,EACF;AACF;AAEA,SAAS,mBACP,QAC2C;AAj3C7C;AAk3CE,QAAM,SAAS,0BAA0B,UAAU,MAAM;AACzD,MAAI,CAAC,OAAO,QAAS,QAAO,CAAC;AAE7B,QAAM,IAAI,OAAO;AACjB,QAAM,WAAU,OAAE,YAAF,mBAAW,QAAQ,OAAK;AACtC,UAAM,SAAS,0BAA0B,UAAU,CAAC;AACpD,WAAO,OAAO,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC;AAAA,EAC3C;AACA,QAAM,eAAe,WAAW,QAAQ,QAAQ,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;AAE5E,UAAQ,EAAE,MAAM;AAAA,IACd,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,GAAI,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,MAAM;AAAA,UACxC,GAAI,EAAE,WAAW,QAAQ,EAAE,SAAS,EAAE,QAAQ;AAAA,QAChD;AAAA,QACA,GAAG;AAAA,MACL;AAAA,IACF,KAAK;AACH,aAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,KAAK,EAAE,IAAI,GAAG,GAAG,aAAa;AAAA,IACrE,KAAK;AACH,aAAO;AAAA,QACL,QAAQ,EAAE,MAAM,cAAc,KAAK,EAAE,KAAK,SAAS,EAAE,QAAQ;AAAA,QAC7D,GAAG;AAAA,MACL;AAAA,EACJ;AACF;;;AJv1CA,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAM,0BAA0B;AAEhC,IAAM,gCAAgCC;AAAA,EAAW,MAC/CC;AAAA,IACEC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,uBAAuBA,IACpB,OAAO,EACP,IAAI,EACJ,IAAI,IAAI,EACR,IAAI,MAAS,EACb,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AASA,SAAS,6BACP,UACA;AACA,aAAW,WAAW,UAAU;AAC9B,UAAM,cAAc,QAAQ;AAC5B,QAAI,gBAAgB,UAAU,gBAAgB,SAAS;AACrD,YAAM,IAAIC,+BAA8B;AAAA,QACtC,eAAe,uBAAuB,WAAW;AAAA,QACjD,SAAS,gEAAgE,WAAW;AAAA,MACtF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAQA,IAAM,8BAA8BD,IAAE,OAAO;AAAA,EAC3C,MAAMA,IAAE;AAAA,IACNA,IAAE,OAAO;AAAA,MACP,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,MACxB,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,MAC7B,gBAAgBA,IAAE,OAAO,EAAE,QAAQ;AAAA,MACnC,oBAAoBA,IAAE,QAAQ,EAAE,QAAQ;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EACA,OAAOA,IAAE,OAAO,EAAE,mBAAmBA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ;AACvE,CAAC;AAMD,IAAM,4BAA4B,MAChCA,IAAE,OAAO;AAAA,EACP,UAAUA,IAAE,OAAO;AAAA,EACnB,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACzB,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAChC,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAChC,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAChC,uBAAuBA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC1C,OAAOA,IACJ,OAAO;AAAA,IACN,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACjC,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,IAChC,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,IAChC,WAAWA,IAAE,OAAO,EAAE,QAAQ;AAAA,IAC9B,eAAeA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACpC,CAAC,EACA,QAAQ;AACb,CAAC;AAEH,IAAM,yBAAyBF;AAAA,EAAW,MACxCC,WAAU,0BAA0B,CAAC;AACvC;AAIA,IAAM,sBAAsBC,IAAE,OAAO;AAAA,EACnC,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,QAAQ;AAAA,EAChD,SAASA,IAAE,OAAO,EAAE,QAAQ;AAC9B,CAAC;AAED,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACpC,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,cAAcA,IACX,OAAO;AAAA,IACN,UAAUA,IACP,OAAO;AAAA,MACN,qBAAqBA,IAAE,QAAQ,EAAE,QAAQ;AAAA,MACzC,kBAAkBA,IAAE,QAAQ,EAAE,QAAQ;AAAA,IACxC,CAAC,EACA,QAAQ;AAAA,IACX,OAAO,oBAAoB,QAAQ;AAAA,EACrC,CAAC,EACA,QAAQ;AAAA,EACX,eAAeA,IAAE,OAAO,EAAE,QAAQ;AACpC,CAAC;AAMD,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EAC1C,IAAIA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACvB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC5B,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,SAASA,IACN;AAAA,IACCA,IAAE,OAAO;AAAA,MACP,SAASA,IAAE,OAAO;AAAA,QAChB,MAAMA,IAAE,KAAK,CAAC,aAAa,MAAM,CAAC;AAAA,QAClC,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,QACtC,YAAYA,IACT;AAAA,UACCA,IAAE,OAAO;AAAA,YACP,IAAIA,IAAE,OAAO;AAAA,YACb,MAAMA,IAAE,QAAQ,UAAU;AAAA,YAC1B,UAAUA,IAAE,OAAO;AAAA,cACjB,MAAMA,IAAE,OAAO;AAAA,cACf,WAAWA,IAAE,OAAO;AAAA,YACtB,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,QAAQ;AAAA,MACb,CAAC;AAAA,MACD,OAAOA,IAAE,OAAO;AAAA,MAChB,eAAeA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAOA,IACJ,OAAO;AAAA,IACN,eAAeA,IAAE,OAAO;AAAA,IACxB,mBAAmBA,IAAE,OAAO;AAAA,IAC5B,cAAcA,IAAE,OAAO;AAAA,IACvB,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACtC,uBAAuBA,IACpB,OAAO,EAAE,eAAeA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAC9C,QAAQ;AAAA,IACX,2BAA2BA,IACxB,OAAO,EAAE,kBAAkBA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACjD,QAAQ;AAAA,EACb,CAAC,EACA,QAAQ;AAAA,EACX,WAAWA,IAAE,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ;AAAA,EAC7C,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACjC,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACzB,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAC5B,CAAC;AAID,IAAM,4BAA4BF;AAAA,EAAW,MAC3CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,SAASA,IAAE,MAAM,oBAAoB;AAAA,MACrC,kBAAkBA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AAEA,IAAM,6BAA6BF;AAAA,EAAW,MAC5CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,SAASA,IAAE,MAAM,0BAA0B,CAAC;AAAA,MAC5C,kBAAkBA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AAEO,IAAM,WAAN,MAAoD;AAAA,EAKzD,YACmB,SAIjB;AAJiB;AALnB,SAAS,uBAAuB;AAEhC,SAAS,gBAAgB;AAQvB,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAAA,EAEA,MAAM,aACJ,SAC6B;AA/PjC;AAgQI,iCAA6B,QAAQ,QAAQ;AAC7C,UAAM,YAAsB,CAAC;AAC7B,UAAM,WACJ,QAAQ,cAAc,OAClB,CAAC,IACD;AAAA,MACE;AAAA,QACE,SAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEN,UAAM,eAAe,MAAME,sBAAqB;AAAA,MAC9C,UAAU;AAAA,MACV,iBAAiB,QAAQ;AAAA,MACzB,QAAQ;AAAA,IACV,CAAC;AAED,eAAW,WAAW,QAAQ,UAAU;AACtC,YAAM,kBAAkB,MAAM,KAAK,eAAe,OAAO;AAEzD,gBAAU;AAAA,QACR,KAAK,UAAU;AAAA,UACb,WAAW,QAAQ;AAAA,UACnB,QAAQ;AAAA,UACR,KAAK,gBAAgB;AAAA,UACrB,MAAM,gBAAgB;AAAA,QACxB,CAAC;AAAA,QACD;AAAA,MACF;AAEA,iBAAW,WAAW,gBAAgB,UAAU;AAC9C,iBAAS,KAAK,EAAE,WAAW,QAAQ,IAAI,QAAQ,CAAC;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,WAAW;AACjB,UAAM,OAAO,IAAI,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,cAAU,SAAS;AACnB,UAAM,WAAW,IAAI,SAAS;AAG9B,SAAI,6CAAc,0BAAyB,MAAM;AAC/C,eAAS;AAAA,QACP;AAAA,QACA,OAAO,aAAa,qBAAqB;AAAA,MAC3C;AAAA,IACF;AACA,aAAS,OAAO,QAAQ,MAAM,QAAQ;AAEtC,UAAM,UAAUC;AAAA,OACd,gBAAK,QAAQ,QAAO,YAApB;AAAA,MACA,QAAQ;AAAA,IACV;AAEA,UAAM,EAAE,OAAO,aAAa,IAAI,MAAM,kBAAkB;AAAA,MACtD,KAAK,KAAK,OAAO,QAAQ;AAAA,MACzB;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,IAC7B,CAAC;AAED,UAAM,EAAE,OAAO,MAAM,IAAI,MAAMC,eAAc;AAAA,MAC3C,KAAK,KAAK,OAAO,UAAU;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,eAAe,aAAa;AAAA,MAC9B;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BD;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,GAAG,sBAAsB,KAAK;AAAA,MAC9B,kBAAkB;AAAA,QAChB,KAAK;AAAA,UACH,aAAa,aAAa;AAAA,UAC1B,GAAI,aAAa,cAAc,OAC3B;AAAA,YACE,oBAAoB,IAAI;AAAA,cACtB,aAAa,aAAa;AAAA,YAC5B,EAAE,YAAY;AAAA,UAChB,IACA,CAAC;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBACJ,SACwB;AACxB,WAAO,sBAAsB,MAAM,KAAK,cAAc,OAAO,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,cACJ,SAC8B;AAjXlC;AAkXI,UAAMC,eAAc;AAAA,MAClB,KAAK,KAAK;AAAA,QACR,YAAY,mBAAmB,QAAQ,OAAO,CAAC;AAAA,MACjD;AAAA,MACA,SAASF,iBAAe,gBAAK,QAAQ,QAAO,YAApB,6BAAiC,QAAQ,OAAO;AAAA,MACxE,MAAM,CAAC;AAAA,MACP,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,cAAc,SAAyD;AAnY/E;AAoYI,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,UAAU,CAAC;AAC3C,QAAI,QAAQ,SAAS,MAAM;AACzB,UAAI,aAAa,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AAAA,IACrD;AACA,QAAI,QAAQ,UAAU,MAAM;AAC1B,UAAI,aAAa,IAAI,oBAAoB,QAAQ,MAAM;AAAA,IACzD;AAEA,UAAM,EAAE,OAAO,KAAK,IAAI,MAAME,YAAW;AAAA,MACvC,KAAK,IAAI,SAAS;AAAA,MAClB,SAASH,iBAAe,gBAAK,QAAQ,QAAO,YAApB,6BAAiC,QAAQ,OAAO;AAAA,MACxE,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,MAC3B,aAAa;AAAA,IACf,CAAC;AAED,WAAO;AAAA,MACL,SAAS,KAAK,QAAQ,IAAI,YAAU;AAAA,QAClC,SAAS,MAAM;AAAA,QACf,GAAG,sBAAsB,KAAK;AAAA,MAChC,EAAE;AAAA,MACF,GAAI,KAAK,oBAAoB,OACzB,EAAE,YAAY,KAAK,iBAAiB,IACpC,CAAC;AAAA,IACP;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,SAC4C;AAC5C,UAAM,QAAQ,MAAM,KAAK,cAAc,OAAO;AAC9C,QAAI,sBAAsB,KAAK,EAAE,WAAW,WAAW;AACrD,YAAM,IAAI,qBAAqB;AAAA,QAC7B,UAAU;AAAA,QACV,SAAS,cAAc,QAAQ,OAAO;AAAA,MACxC,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL,KAAK,oBAAoB,OAAO;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,MAAc,cACZ,SAC2B;AArb/B;AAsbI,UAAM,EAAE,OAAO,MAAM,IAAI,MAAME,YAAW;AAAA,MACxC,KAAK,KAAK,OAAO,YAAY,mBAAmB,QAAQ,OAAO,CAAC,EAAE;AAAA,MAClE,SAASH,iBAAe,gBAAK,QAAQ,QAAO,YAApB,6BAAiC,QAAQ,OAAO;AAAA,MACxE,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,MAC3B,aAAa;AAAA,IACf,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,oBACb,SACmC;AAvcvC;AAwcI,QAAI;AAEJ,OAAG;AACD,YAAM,QAAQ,IAAI,gBAAgB;AAAA,QAChC,OAAO,OAAO,uBAAuB;AAAA,MACvC,CAAC;AACD,UAAI,mBAAmB,MAAM;AAC3B,cAAM,IAAI,oBAAoB,eAAe;AAAA,MAC/C;AAEA,YAAM,EAAE,OAAO,KAAK,IAAI,MAAME,YAAW;AAAA,QACvC,KAAK,KAAK;AAAA,UACR,YAAY,mBAAmB,QAAQ,OAAO,CAAC,YAAY,KAAK;AAAA,QAClE;AAAA,QACA,SAASH;AAAA,WACP,gBAAK,QAAQ,QAAO,YAApB;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA,uBAAuB;AAAA,QACvB,2BAA2BC;AAAA,UACzB;AAAA,QACF;AAAA,QACA,aAAa,QAAQ;AAAA,QACrB,OAAO,KAAK,QAAQ,OAAO;AAAA,QAC3B,aAAa;AAAA,MACf,CAAC;AAED,iBAAW,UAAU,KAAK,SAAS;AACjC,cAAM,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,WAAW;AAAA,MACjE;AAEA,yBAAkB,UAAK,qBAAL,YAAyB;AAAA,IAC7C,SAAS,mBAAmB;AAAA,EAC9B;AAAA,EAEA,MAAc,mBACZ,QACA,aACyD;AA9e7D;AA+eI,UAAM,SAAQ,YAAO,iBAAP,mBAAqB;AACnC,UACG,kBAAO,kBAAP,mBAAsB,WAAtB,YAAgC,KAAK,MACrC,+BAAO,SAAQ,QAAQ,MAAM,SAAS,KAAK,MAAM,SAAS,QAC1D,+BAAO,SAAQ,UAAS,0CAAO,YAAP,mBAAgB,WAAhB,YAA0B,KAAK,GACxD;AACA,YAAM,iBAAiB,qBAAqB,MAAM;AAClD,aAAO;AAAA,QACL,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,QAAQ,uBAAuB,+BAAO,IAAI,IAAI,cAAc;AAAA,QAC5D,OAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,YAAW,YAAO,iBAAP,mBAAqB;AACtC,SAAI,qCAAU,wBAAuB,MAAM;AACzC,YAAM,aAAa,MAAM,kBAAkB;AAAA,QACzC,OAAO,SAAS;AAAA,QAChB,QAAQL,WAAU,0BAA0B;AAAA,MAC9C,CAAC;AACD,UAAI,CAAC,WAAW,SAAS;AACvB,eAAO,sBAAsB,OAAO,gBAAgB;AAAA,MACtD;AAEA,YAAM,aAAa,4BAA4B,WAAW,KAAK;AAC/D,aAAO,WAAW,UACd;AAAA,QACE,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ,WAAW;AAAA,MACrB,IACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,QAAQ;AAAA,QACR,OAAO,WAAW;AAAA,MACpB;AAAA,IACN;AAEA,SAAI,qCAAU,qBAAoB,MAAM;AACtC,YAAM,aAAa,MAAM,kBAAkB;AAAA,QACzC,OAAO,SAAS;AAAA,QAChB,QAAQA,WAAU,2BAA2B;AAAA,MAC/C,CAAC;AACD,UAAI,CAAC,WAAW,SAAS;AACvB,eAAO,2BAA2B,OAAO,gBAAgB;AAAA,MAC3D;AACA,UACE,WAAW,MAAM,KAAK,KAAK,WAAS,MAAM,uBAAuB,KAAK,GACtE;AACA,eAAO;AAAA,UACL,MAAM;AAAA,UACN,IAAI,OAAO;AAAA,UACX,QAAQ;AAAA,UACR,OAAO;AAAA,YACL,SACE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,YAAM,cAAc,MAAM,KAAK;AAAA,QAC7B,WAAW;AAAA,QACX;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,IAAI,OAAO;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,sBAAsB,OAAO,gBAAgB;AAAA,EACtD;AAAA,EAEA,MAAc,eACZ,SACkC;AAClC,QAAI,QAAQ,SAAS,QAAQ;AAC3B,YAAM,EAAE,MAAMQ,OAAM,UAAAC,UAAS,IAC3B,MAAM,0BAA0B,eAAe;AAAA,QAC7C,SAAS,QAAQ;AAAA,QACjB,SAAS,QAAQ;AAAA,MACnB,CAAC;AACH,aAAO,EAAE,UAAU,kBAAkB,MAAAD,OAAM,UAAAC,UAAS;AAAA,IACtD;AAEA,UAAM,EAAE,QAAQ,GAAG,MAAM,aAAa,MAAM,OAAO,MAAM,gBAAgB,IACvE,QAAQ;AACV,UAAM,WAA8B,CAAC;AACrC,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AACA,QAAI,QAAQ,KAAM,UAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AACxE,QAAI,QAAQ,KAAM,UAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAExE,UAAM,aAAa,MAAMN,sBAAqB;AAAA,MAC5C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AACD,UAAM,aAAa,wBAAS,CAAC,GAAG,IAAIO,+BAA8B;AAClE,UAAM,OAAgC;AAAA,MACpC,OAAO,QAAQ;AAAA,MACf;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,IACnB;AACA,QAAI,eAAe,KAAM,MAAK,eAAe;AAC7C,SAAI,yCAAY,kBAAiB;AAC/B,WAAK,gBAAgB,WAAW;AAClC,SAAI,yCAAY,cAAa,KAAM,MAAK,YAAY,WAAW;AAC/D,SAAI,yCAAY,iBAAgB,QAAQ,eAAe;AACrD,WAAK,eAAe,WAAW;AACjC,SAAI,yCAAY,eAAc,KAAM,MAAK,aAAa,WAAW;AACjE,SAAI,yCAAY,YAAW,KAAM,MAAK,UAAU,WAAW;AAC3D,SAAI,yCAAY,SAAQ,KAAM,MAAK,OAAO,WAAW;AACrD,QAAI,UAAU,WAAW,GAAG;AAC1B,WAAK,QAAQ,EAAE,KAAK,UAAU,CAAC,GAAG,MAAM,YAAY;AAAA,IACtD,WAAW,UAAU,SAAS,GAAG;AAC/B,WAAK,SAAS,UAAU,IAAI,UAAQ,EAAE,KAAK,MAAM,YAAY,EAAE;AAAA,IACjE;AAEA,WAAO;AAAA,MACL,WAAU,+BAAO,UAAS,qBAAqB;AAAA,MAC/C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,0BACZ,UACA,aAC6B;AA3nBjC;AA4nBI,UAAM,eAAe,SAAS,KAAK,MAAM,WAAS,MAAM,YAAY,IAAI;AACxE,UAAM,SAAS,eACX,SAAS,KAAK,IAAI,WAAS,MAAM,QAAS,IAC1C,MAAM,QAAQ;AAAA,MACZ,SAAS,KAAK,IAAI,OAAM,UAAS;AAC/B,YAAI,MAAM,YAAY,MAAM;AAC1B,iBAAO,0BAA0B,MAAM,QAAQ;AAAA,QACjD;AACA,YAAI,MAAM,OAAO,MAAM;AACrB,gBAAM,IAAI,qBAAqB;AAAA,YAC7B,UAAU;AAAA,YACV,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,cAAM,EAAE,MAAM,IAAI,MAAMH,YAAW;AAAA,UACjC,KAAK,MAAM;AAAA,UACX,aAAa;AAAA,UACb,eAAe,KAAK,QAAQ,OAAO;AAAA,UACnC;AAAA,UACA,uBAAuB;AAAA,UACvB,2BAA2BI,6BAA4B;AAAA,UACvD,OAAO,KAAK,QAAQ,OAAO;AAAA,QAC7B,CAAC;AACD,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACJ,WAAO;AAAA,MACL;AAAA,MACA,UAAU,CAAC;AAAA,MACX,UAAU,EAAE,WAAW,oBAAI,KAAK,GAAG,SAAS,IAAI,SAAS,OAAU;AAAA,MACnE,kBAAkB;AAAA,QAChB,KAAK;AAAA,UACH,QAAQ,SAAS,KAAK;AAAA,YAAI,UACxB,KAAK,kBAAkB,OACnB,EAAE,eAAe,KAAK,eAAe,IACrC,CAAC;AAAA,UACP;AAAA,UACA,KAAI,cAAS,UAAT,mBAAgB,sBAAqB,OACrC,EAAE,gBAAgB,SAAS,MAAM,kBAAkB,IACnD,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,OAAO,MAAc;AAzqB/B;AA0qBI,WAAO,IAAG,UAAK,QAAQ,OAAO,YAApB,YAA+B,qBAAqB,GAAG,IAAI;AAAA,EACvE;AACF;AAEA,SAAS,sBAAsB,OAAwC;AA9qBvE;AA+qBE,QAAM,gBAAgB,4BAA4B;AAAA,IAChD,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,UAAS,WAAM,UAAN,mBAAa;AAAA,IACtB,YAAW,WAAM,UAAN,mBAAa;AAAA,IACxB,UACE,WAAM,UAAN,mBAAa,cAAa,UAAQ,WAAM,UAAN,mBAAa,kBAAiB,OAC5D,MAAM,MAAM,YAAY,MAAM,MAAM,gBACpC;AAAA,EACR,CAAC;AACD,QAAM,cACJ,MAAM,eAAe,QAAQ,MAAM,yBAAyB;AAC9D,QAAM,YAAY,WAAW,MAAM,WAAW;AAC9C,QAAM,SACJ,eAAe,YACX,WACA,iBAAiB,QACf,cAAc,QAAQ,KACtB,cAAc,YAAY,IAC1B,cACA;AAER,SAAO;AAAA,IACL;AAAA,IACA,GAAI,iBAAiB,OAAO,EAAE,cAAc,IAAI,CAAC;AAAA,IACjD,GAAI,cACA;AAAA,MACE,OAAO;AAAA,QACL,UACE,WAAM,0BAAN,YACA,cAAc,MAAM,QAAQ;AAAA,QAC9B,MAAM;AAAA,MACR;AAAA,IACF,IACA,YACE;AAAA,MACE,OAAO;AAAA,QACL,SAAS,cAAc,MAAM,QAAQ;AAAA,QACrC,MAAM;AAAA,MACR;AAAA,IACF,IACA,CAAC;AAAA,IACP,GAAI,MAAM,eAAe,OAAO,EAAE,WAAW,MAAM,YAAY,IAAI,CAAC;AAAA,IACpE,GAAI,MAAM,eAAe,OAAO,EAAE,WAAW,MAAM,YAAY,IAAI,CAAC;AAAA,EACtE;AACF;AAEA,SAAS,WAAW,OAAkC;AACpD,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AACA,QAAM,YAAY,KAAK,MAAM,KAAK;AAClC,SAAO,CAAC,OAAO,MAAM,SAAS,KAAK,aAAa,KAAK,IAAI;AAC3D;AAEA,SAAS,qBAAqB,QAAsC;AAruBpE;AAsuBE,QAAM,SAAQ,YAAO,iBAAP,mBAAqB;AACnC,SAAO;AAAA,IACL,SACE,OAAO,kBAAiB,+BAAO,YAAW;AAAA,IAC5C,IAAI,+BAAO,SAAQ,QAAQ,MAAM,SAAS,KAAK,MAAM,SAAS,MAC1D,EAAE,MAAM,OAAO,MAAM,IAAI,EAAE,IAC3B,CAAC;AAAA,EACP;AACF;AAEA,SAAS,uBAAuB,MAA0C;AACxE,QAAM,iBAAiB,OAAO,IAAI,EAAE,YAAY;AAChD,SACE,SAAS,KACT,mBAAmB,OACnB,mBAAmB,eACnB,mBAAmB;AAEvB;AAEA,SAAS,sBAAsB,IAAmC;AAChE,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,2BAA2B,IAAoC;AACtE,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,4BACP,UAC4B;AApxB9B;AAqxBE,MAAI,SAAS,SAAS,MAAM;AAC1B,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL,SAAS,SAAS;AAAA,QAClB,GAAI,SAAS,QAAQ,OAAO,EAAE,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,SAAS;AACzB,MAAI,WAAW,QAAQ,QAAQ,WAAW,GAAG;AAC3C,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAoC,CAAC;AAC3C,QAAM,8BAA8B,IAAI;AAAA,IACtC,QACG,OAAO,YAAU,OAAO,QAAQ,SAAS,MAAM,EAC/C;AAAA,MAAQ,YAAO;AA9yBtB,YAAAC;AA+yBS,iBAAAA,MAAA,OAAO,QAAQ,eAAf,OAAAA,MAA6B,CAAC,GAAG,IAAI,cAAY,SAAS,EAAE;AAAA;AAAA,IAC/D;AAAA,EACJ;AACA,MAAI;AAEJ,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,QAAQ,SAAS,QAAQ;AAClC,UAAI,OAAO,QAAQ,WAAW,MAAM;AAClC,mBAAW,aAAY,YAAO,QAAQ,eAAf,YAA6B,CAAC,GAAG;AACtD,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,YACrB,UAAU,SAAS,SAAS;AAAA,YAC5B,QAAQ,OAAO,QAAQ;AAAA,YACvB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAEA,0BAAsB;AAEtB,QAAI,OAAO,QAAQ,SAAS;AAC1B,cAAQ,KAAK,EAAE,MAAM,QAAQ,MAAM,OAAO,QAAQ,QAAQ,CAAC;AAAA,IAC7D;AACA,QAAI,OAAO,QAAQ,mBAAmB;AACpC,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,MAAM,OAAO,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AACA,eAAW,aAAY,YAAO,QAAQ,eAAf,YAA6B,CAAC,GAAG;AACtD,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,YAAY,SAAS;AAAA,QACrB,UAAU,SAAS,SAAS;AAAA,QAC5B,OAAO,SAAS,SAAS;AAAA,QACzB,GAAI,4BAA4B,IAAI,SAAS,EAAE,IAC3C,EAAE,kBAAkB,MAAM,SAAS,KAAK,IACxC,CAAC;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AACA,aAAW,QAAO,cAAS,cAAT,YAAsB,CAAC,GAAG;AAC1C,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,MACN;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,mBAAmB,2DAAqB,aAAa;AAAA,QAC9D,MAAK,gEAAqB,kBAArB,YAAsC;AAAA,MAC7C;AAAA,MACA,OAAO,SAAS,QACZ,yBAAyB,SAAS,KAAK,IACvC,6BAA6B;AAAA,MACjC,UAAU,oBAAoB,QAAQ;AAAA,MACtC,UAAU,CAAC;AAAA,MACX,MAAK,cAAS,UAAT,mBAAgB,sBAAqB,QACxC,SAAS,gBAAgB,SAAS;AAAA,QAClC,kBAAkB;AAAA,UAChB,KAAK;AAAA,YACH,KAAI,cAAS,UAAT,mBAAgB,sBAAqB,OACrC,EAAE,gBAAgB,SAAS,MAAM,kBAAkB,IACnD,CAAC;AAAA,YACL,GAAI,SAAS,gBAAgB,OACzB,EAAE,aAAa,SAAS,aAAa,IACrC,CAAC;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,yBACP,OACA;AAp4BF;AAq4BE,QAAM,mBAAkB,iBAAM,0BAAN,mBAA6B,kBAA7B,YAA8C;AACtE,QAAM,mBACJ,iBAAM,8BAAN,mBAAiC,qBAAjC,YAAqD;AACvD,QAAM,6BAA6B,mBAAmB,MAAM;AAE5D,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO,6BACH,MAAM,gBACN,MAAM,gBAAgB;AAAA,MAC1B,SAAS,6BACL,MAAM,gBAAgB,kBACtB,MAAM;AAAA,MACV,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,MAAM,oBAAoB;AAAA,MACjC,MAAM,MAAM;AAAA,MACZ,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;AkBn4BO,SAAS,4BACd,KAC4B;AA3B9B;AA4BE,QAAM,QAAQ;AACd,QAAM,OAAO,MAAM;AAEnB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAW,WAAM,YAAN,mBAAe;AAAA,QAC1B;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO,EAAE,MAAM,mBAAmB,IAAI;AAAA,IAExC,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,SAAS,MAAM,IAAI;AAAA,IAE9C,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,QACd,gBAAgB,MAAM;AAAA,QACtB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAQ,iBAAM,SAAN,mBAAY,OAAZ,YAAkB,MAAM;AAAA,QAChC,MAAM,MAAM;AAAA,QACZ;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,QACd,aAAY,WAAM,eAAN,YAAoB;AAAA,QAChC;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,aAAY,iBAAM,aAAN,mBAAgB,OAAhB,YAAsB,MAAM;AAAA,QACxC;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,aAAY,iBAAM,aAAN,mBAAgB,OAAhB,YAAsB,MAAM;AAAA,QACxC,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,YAA0B;AAAA,QAClC;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,SAAQ,iBAAM,SAAN,mBAAY,OAAZ,YAAkB,MAAM;AAAA,QAChC;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,SAAQ,iBAAM,SAAN,mBAAY,OAAZ,YAAkB,MAAM;AAAA,QAChC;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,YAAY,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QACZ;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QACZ,WAAW,MAAM;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,SAAS,MAAM,IAAI;AAAA,IAE9C,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAS,uBAAM,UAAN,mBAAa,YAAb,YAAwB,MAAM,YAA9B,YAAyC;AAAA,QAClD,OAAM,iBAAM,UAAN,mBAAa,SAAb,YAAqB,MAAM;AAAA,QACjC;AAAA,MACF;AAAA,IAEF;AACE,aAAO,EAAE,MAAM,UAAU,SAAS,MAAM,IAAI;AAAA,EAChD;AACF;AAEO,SAAS,gCACd,OACS;AACT,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,sBAAsB,MAAM,MAAM;AAAA,MAC7C;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,MACf;AAAA,IAEF,KAAK;AACH,aAAO,EAAE,MAAM,4BAA4B;AAAA,IAE7C,KAAK;AACH,aAAO,EAAE,MAAM,2BAA2B;AAAA,IAE5C,KAAK,4BAA4B;AAC/B,YAAM,OAAO,MAAM;AACnB,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,cACX,SAAS,CAAC,EAAE,MAAM,cAAc,MAAM,KAAK,KAAK,CAAC;AAAA,YACnD;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,cACX,SAAS,CAAC,EAAE,MAAM,eAAe,OAAO,KAAK,MAAM,CAAC;AAAA,YACtD;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ,KAAK;AAAA,YACf;AAAA,UACF;AAAA,MACJ;AACA;AAAA,IACF;AAAA,IAEA,KAAK;AAKH,aAAO;AAAA,IAET,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,GAAI,MAAM,WAAW,OACjB;AAAA,UACE,UAAU;AAAA,YACR,GAAI,MAAM,QAAQ,cAAc,OAC5B,EAAE,YAAY,MAAM,QAAQ,WAAW,IACvC,CAAC;AAAA,YACL,GAAI,MAAM,QAAQ,gBAAgB,OAC9B,EAAE,cAAc,MAAM,QAAQ,aAAa,IAC3C,CAAC;AAAA,UACP;AAAA,QACF,IACA,CAAC;AAAA,MACP;AAAA,IAEF,KAAK;AACH,aAAO,EAAE,MAAM,kBAAkB;AAAA,EACrC;AACF;AAEO,SAAS,sBACd,QACyB;AA1T3B;AA2TE,QAAM,UAAmC,CAAC;AAE1C,MAAI,OAAO,gBAAgB,MAAM;AAC/B,YAAQ,eAAe,OAAO;AAAA,EAChC;AAEA,MAAI,OAAO,SAAS,MAAM;AACxB,YAAQ,QAAQ,OAAO;AAAA,EACzB;AAEA,QAAM,QAAiC,CAAC;AAExC,MAAI,OAAO,oBAAoB,MAAM;AACnC,UAAM,QAAQ;AAAA,MACZ,QAAQ;AAAA,QACN,MAAM,OAAO,iBAAiB;AAAA,QAC9B,GAAI,OAAO,iBAAiB,QAAQ,OAChC,EAAE,MAAM,OAAO,iBAAiB,KAAK,IACrC,CAAC;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,qBAAqB,MAAM;AACpC,UAAM,SAAS;AAAA,MACb,QAAQ;AAAA,QACN,MAAM,OAAO,kBAAkB;AAAA,QAC/B,GAAI,OAAO,kBAAkB,QAAQ,OACjC,EAAE,MAAM,OAAO,kBAAkB,KAAK,IACtC,CAAC;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AACjC,YAAQ,QAAQ;AAAA,EAClB;AAEA,MAAI,OAAO,iBAAiB,MAAM;AAChC,QAAI,OAAO,cAAc,SAAS,YAAY;AAC5C,cAAQ,iBAAiB;AAAA,IAC3B,OAAO;AACL,YAAM,KAA8B;AAAA,QAClC,MAAM;AAAA,MACR;AACA,UAAI,OAAO,cAAc,aAAa,MAAM;AAC1C,WAAG,YAAY,OAAO,cAAc;AAAA,MACtC;AACA,UAAI,OAAO,cAAc,qBAAqB,MAAM;AAClD,WAAG,sBAAsB,OAAO,cAAc;AAAA,MAChD;AACA,UAAI,OAAO,cAAc,mBAAmB,MAAM;AAChD,WAAG,oBAAoB,OAAO,cAAc;AAAA,MAC9C;AACA,cAAQ,iBAAiB;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,QAAQ,OAAO,MAAM,SAAS,GAAG;AACnD,YAAQ,QAAQ,OAAO,MAAM,IAAI,WAAS;AAAA,MACxC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,IACnB,EAAE;AAAA,EACJ;AAEA,MAAI,OAAO,mBAAmB,MAAM;AAClC,UAAM,aAAa,OAAO;AAE1B,QAAI,MAAM,QAAQ,WAAW,KAAK,GAAG;AACnC,YAAM,iBAAiB,aAAQ,UAAR,YAA+B,CAAC;AACvD,cAAQ,QAAQ,CAAC,GAAG,eAAe,GAAG,WAAW,KAAK;AAAA,IACxD;AAEA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,UAAI,QAAQ,SAAS;AACnB,gBAAQ,GAAG,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACxXO,IAAM,mBAAN,MAAkD;AAAA,EAOvD,YAAY,SAAiB,QAAgC;AAN7D,SAAS,uBAAuB;AAO9B,SAAK,UAAU;AACf,SAAK,WAAW,OAAO;AACvB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,qBACJ,SAC4C;AArChD;AAsCI,UAAM,WAAU,UAAK,OAAO,UAAZ,YAAqB;AACrC,UAAM,MAAM,GAAG,KAAK,OAAO,OAAO;AAElC,UAAM,OAAgC,CAAC;AACvC,QAAI,QAAQ,uBAAuB,MAAM;AACvC,WAAK,gBAAgB,EAAE,SAAS,QAAQ,oBAAoB;AAAA,IAC9D;AAEA,UAAM,WAAW,MAAM,QAAQ,KAAK;AAAA,MAClC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,GAAG,KAAK,OAAO,QAAQ;AAAA,QACvB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAM,IAAI;AAAA,QACR,8CAA8C,SAAS,MAAM,IAAI,IAAI;AAAA,MACvE;AAAA,IACF;AAEA,UAAM,OAAQ,MAAM,SAAS,KAAK;AAKlC,WAAO;AAAA,MACL,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,MAIZ,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,OAAO,EAAE,IAAI,sBAAsB,mBAAmB,KAAK,OAAO,CAAC;AAAA,MACrG,WAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,mBAAmB,SAGjB;AACA,WAAO;AAAA,MACL,KAAK,QAAQ;AAAA,MACb,WAAW,CAAC,qBAAqB,QAAQ,KAAK,EAAE;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,iBAAiB,KAA0C;AACzD,WAAO,4BAA4B,GAAG;AAAA,EACxC;AAAA,EAEA,qBAAqB,OAA4C;AAC/D,WAAO,gCAAgC,KAAK;AAAA,EAC9C;AAAA,EAEA,mBACE,QACyB;AACzB,WAAO,sBAAsB,MAAM;AAAA,EACrC;AACF;;;ACpGA,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,KAAAC,WAAS;AAElB,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EACzC,QAAQA,IAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,EAC9D,OAAOA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,yBAAyB;AACjE,CAAC;AAED,IAAM,2BAA2BD,mCAAkC;AAAA,EACjE,IAAI;AAAA,EACJ,aAAaC,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS,qBAAqB;AAAA,EACxD,cAAc;AAChB,CAAC;AAEM,IAAM,gBAAgB,CAC3B,OAAuD,CAAC,MACrD,yBAAyB,IAAI;;;AChBlC,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,KAAAC,WAAS;AAElB,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EACrC,aAAaA,IAAE,OAAO,EAAE,SAAS,0BAA0B;AAAA,EAC3D,SAASA,IACN,MAAMA,IAAE,OAAO,CAAC,EAChB,SAAS,EACT,SAAS,+BAA+B;AAC7C,CAAC;AAED,IAAM,uBAAuBD,mCAAkC;AAAA,EAC7D,IAAI;AAAA,EACJ,aAAaC,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS,qBAAqB;AAAA,EACxD,cAAc;AAChB,CAAC;AAEM,IAAM,YAAY,CACvB,OAAmD,CAAC,MACjD,qBAAqB,IAAI;;;ACnB9B,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,KAAAC,WAAS;AAElB,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EACtC,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,yBAAyB;AAAA,EACpE,aAAaA,IAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,EACnE,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,qBAAqB;AAChE,CAAC;AAED,IAAM,wBAAwBD,mCAAkC;AAAA,EAC9D,IAAI;AAAA,EACJ,aAAaC,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS,qBAAqB;AAAA,EACxD,cAAc;AAChB,CAAC;AAEM,IAAM,aAAa,CACxB,OAAoD,CAAC,MAClD,sBAAsB,IAAI;;;ACGxB,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC3BO,IAAM,UACX,OACI,UACA;;;ACLN;AAAA,EACE,wBAAAC;AAAA,OAWK;AACP;AAAA,EACE,kBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA;AAAA,OAIK;;;AC1BP;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,YAAY;AAAA,MACZ,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC5B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM9B,cAAcA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,MAAS,EAAE,SAAS;AAAA,IACnE,CAAC;AAAA,EACH;AACF;;;AD0BA,SAAS,kBAAkB,OAAuB;AAChD,QAAM,eAAe,mBAAmB,KAAK;AAG7C,SAAO,iBAAiB,MACpB,UACA,iBAAiB,OACf,eACA;AACR;AAEO,IAAM,WAAN,MAAkC;AAAA,EAOvC,YAA6B,QAAwB;AAAxB;AAN7B,SAAS,uBAAuB;AAAA,EAMsB;AAAA,EAJtD,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAIQ,UAAU,MAAyC;AACzD,UAAM,SAAS,KAAK;AACpB,QAAI,UAAU,QAAQ,OAAO,KAAK,MAAM,IAAI;AAC1C,YAAM,IAAIC,sBAAqB;AAAA,QAC7B,UAAU;AAAA,QACV,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,WACN,SACoC;AACpC,WAAOC,gBAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,EACtD;AAAA,EAEA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmE;AA1FrE;AA2FI,QAAI;AACJ,QAAI;AACF,mBAAc,MAAMC,sBAAqB;AAAA,QACvC,UAAU;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,UAAI,KAAK,SAAS,UAAU;AAC1B,cAAM,KAAK,OAAO,OAAO,KAAK,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MAChD;AACA,YAAM;AAAA,IACR;AAEA,UAAM,iBAAiB,KAAK,WAAW,OAAO;AAC9C,UAAM,MAAM,GAAG,KAAK,OAAO,OAAO;AAElC,QAAI;AAEJ,QAAI,KAAK,SAAS,UAAU;AAG1B,YAAM,QAAoC,CAAC;AAE3C,WAAI,yCAAY,iBAAgB,MAAM;AACpC,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,OAAO,WAAW,YAAY;AAAA,QACvC,CAAC;AAAA,MACH;AAEA,WAAI,yCAAY,WAAU,MAAM;AAC9B,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO,WAAW;AAAA,QACpB,CAAC;AAAA,MACH;AAEA,YAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,SAAS,KAAK;AAAA,MAChB,CAAC;AAED,OAAC,EAAE,OAAO,SAAS,IAAI,MAAM,yBAAyB;AAAA,QACpD;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,uBAAuB;AAAA,QACvB,2BAA2BC;AAAA,UACzB;AAAA,QACF;AAAA,QACA;AAAA,QACA,OAAO,KAAK,OAAO;AAAA,MACrB,CAAC;AAAA,IACH,OAAO;AACL,YAAM,YAAY,kCAAkC,IAAI;AAExD,YAAM,OAAO,IAAI,KAAK,CAAC,SAAS,GAAG;AAAA,QACjC,MAAM;AAAA,MACR,CAAC;AAGD,YAAM,WAAW,IAAI,SAAS;AAE9B,WAAI,yCAAY,iBAAgB,MAAM;AACpC,iBAAS,OAAO,iBAAiB,OAAO,WAAW,YAAY,CAAC;AAAA,MAClE;AAEA,WAAI,yCAAY,WAAU,MAAM;AAC9B,iBAAS,OAAO,WAAW,WAAW,MAAM;AAAA,MAC9C;AAEA,UAAI,YAAY,MAAM;AACpB,iBAAS,OAAO,QAAQ,MAAM,QAAQ;AAAA,MACxC,OAAO;AACL,iBAAS,OAAO,QAAQ,IAAI;AAAA,MAC9B;AAEA,OAAC,EAAE,OAAO,SAAS,IAAI,MAAMC,mBAAkB;AAAA,QAC7C;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,uBAAuB;AAAA,QACvB,2BAA2BD;AAAA,UACzB;AAAA,QACF;AAAA,QACA;AAAA,QACA,OAAO,KAAK,OAAO;AAAA,MACrB,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,mBAAmB,EAAE,KAAK,SAAS,GAAG;AAAA,MACtC,KAAK,cAAS,aAAT,YAAqB,YACtB,EAAE,WAAU,cAAS,aAAT,YAAqB,SAAS,IAC1C,CAAC;AAAA,MACL,GAAI,aAAa,OAAO,EAAE,UAAU,IAAI,CAAC;AAAA,MACzC,GAAI,SAAS,SAAS,OAAO,EAAE,UAAU,SAAS,MAAM,IAAI,CAAC;AAAA,MAC7D,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,IAAI,KAAK,SAAS,aAAa,GAAI,EAAE,IAClD,CAAC;AAAA,MACL,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,IAAI,KAAK,SAAS,aAAa,GAAI,EAAE,IAClD,CAAC;AAAA,MACL,kBAAkB;AAAA,QAChB,KAAK,KAAK,eAAe,QAAQ;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA6E;AAC3E,UAAM,SAAS,KAAK,UAAU,IAAI;AAElC,UAAM,EAAE,OAAO,SAAS,IAAI,MAAME,YAAW;AAAA,MAC3C,KAAK,GAAG,KAAK,OAAO,OAAO,UAAU,kBAAkB,MAAM,CAAC;AAAA,MAC9D,SAAS,KAAK,WAAW,OAAO;AAAA,MAChC,uBAAuB;AAAA,MACvB,2BAA2BF;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB,aAAa;AAAA,IACf,CAAC;AAED,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,mBAAmB,EAAE,KAAK,SAAS,GAAG;AAAA,MACtC,GAAI,SAAS,YAAY,OAAO,EAAE,UAAU,SAAS,SAAS,IAAI,CAAC;AAAA,MACnE,GAAI,SAAS,SAAS,OAAO,EAAE,UAAU,SAAS,MAAM,IAAI,CAAC;AAAA,MAC7D,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,IAAI,KAAK,SAAS,aAAa,GAAI,EAAE,IAClD,CAAC;AAAA,MACL,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,IAAI,KAAK,SAAS,aAAa,GAAI,EAAE,IAClD,CAAC;AAAA,MACL,kBAAkB;AAAA,QAChB,KAAK,KAAK,eAAe,QAAQ;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAuE;AAxPzE;AAyPI,UAAM,SAAS,KAAK,UAAU,IAAI;AAElC,UAAM,EAAE,OAAO,SAAS,gBAAgB,IAAI,MAAME,YAAW;AAAA,MAC3D,KAAK,GAAG,KAAK,OAAO,OAAO,UAAU,kBAAkB,MAAM,CAAC;AAAA,MAC9D,SAAS,KAAK,WAAW,OAAO;AAAA,MAChC,uBAAuB;AAAA,MACvB,2BAA2B,kCAAkC;AAAA,MAC7D;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB,aAAa;AAAA,IACf,CAAC;AAGD,UAAM,aAAY,wDAAkB,oBAAlB,mBAAmC,MAAM,KAAK,GAAG;AAEnE,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX;AAAA,MACA,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmE;AACjE,UAAM,SAAS,KAAK,UAAU,IAAI;AAElC,UAAM,EAAE,OAAO,SAAS,IAAI,MAAM,cAAc;AAAA,MAC9C,KAAK,GAAG,KAAK,OAAO,OAAO,UAAU,kBAAkB,MAAM,CAAC;AAAA,MAC9D,SAAS,KAAK,WAAW,OAAO;AAAA,MAChC,uBAAuB;AAAA,MACvB,2BAA2BF;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,mBAAmB,EAAE,KAAK,SAAS,GAAG;AAAA,MACtC,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA,EAEQ,eACN,UACiC;AACjC,WAAO;AAAA,MACL,GAAI,SAAS,YAAY,OAAO,EAAE,UAAU,SAAS,SAAS,IAAI,CAAC;AAAA,MACnE,GAAI,SAAS,WAAW,OAAO,EAAE,SAAS,SAAS,QAAQ,IAAI,CAAC;AAAA,MAChE,GAAI,SAAS,SAAS,OAAO,EAAE,OAAO,SAAS,MAAM,IAAI,CAAC;AAAA,MAC1D,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,SAAS,WAAW,IACjC,CAAC;AAAA,MACL,GAAI,SAAS,UAAU,OAAO,EAAE,QAAQ,SAAS,OAAO,IAAI,CAAC;AAAA,MAC7D,GAAI,SAAS,cAAc,OACvB,EAAE,WAAW,SAAS,WAAW,IACjC,CAAC;AAAA,IACP;AAAA,EACF;AACF;;;AExTA;AAAA,EACE;AAAA,EACA;AAAA,OAOK;AACP;AAAA,EACE,kBAAAG;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,OAGK;AACP,SAAS,KAAAC,WAAS;;;ACvBlB,SAAS,cAAAC,aAAY,aAAAC,kBAAiB;AACtC,SAAS,KAAAC,WAAS;AAElB,IAAM,uBAAuBA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC7C,IAAM,mBAAmBA,IAAE,KAAK,CAAC,QAAQ,QAAQ,OAAO,CAAC;AACzD,IAAM,aAAaA,IAAE,KAAK,CAAC,cAAc,gBAAgB,oBAAoB,CAAC;AAyG9E,IAAM,aAAa;AAAA,EACjB,gBAAgBA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC9C,eAAeA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC7C,YAAY,iBAAiB,QAAQ;AACvC;AAEA,IAAM,gBAAgBA,IAAE,YAAY;AAAA,EAClC,MAAM,WAAW,SAAS;AAAA,EAC1B,UAAU,qBAAqB,SAAS;AAAA,EACxC,oBAAoBA,IAAE,MAAM,oBAAoB,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzE,mBAAmBA,IAAE,MAAM,oBAAoB,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACjE,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,GAAG;AACL,CAAC;AAIM,IAAM,6BAA6BF;AAAA,EAAW,MACnDC,WAAU,aAAa;AACzB;;;ADxFA,SAASE,mBAAkB,OAAuB;AAChD,QAAM,eAAe,mBAAmB,KAAK;AAG7C,SAAO,iBAAiB,MACpB,UACA,iBAAiB,OACf,eACA;AACR;AAEA,IAAM,iBAAyC;AAAA,EAC7C,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;AAIA,SAAS,mBACP,SAC8B;AA/DhC;AAgEE,UAAO,mBAAQ,gBAAR,mBAAqB,KAAK,WAAS,MAAM,cAAc,mBAAvD,mBACH;AACN;AAEA,SAAS,kBACP,SAC8B;AAtEhC;AAuEE,UAAO,mBAAQ,gBAAR,mBAAqB,KAAK,WAAS,MAAM,cAAc,kBAAvD,mBACH;AACN;AAEA,SAAS,kBACP,SAC8B;AA7EhC;AA8EE,UAAO,wBAAmB,OAAO,MAA1B,YAA+B,QAAQ;AAChD;AAEA,IAAM,cAAc,CAAC,SACnB,KAAK,aAAa,QAAQC,sBAAqB,KAAK,SAAS,MAAM;AAIrE,IAAM,mBAAmB,CAAC,SACxB,KAAK,aAAa,QAAQA,sBAAqB,KAAK,SAAS,MAAM;AAErE,SAAS,aAAa,MAAgC;AACpD,MAAI,KAAK,SAAS,OAAO;AACvB,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,aACJ,OAAO,KAAK,SAAS,WACjB,KAAK,OACL,0BAA0B,KAAK,IAAI;AACzC,SAAO,QAAQ,KAAK,SAAS,WAAW,UAAU;AACpD;AAMA,SAAS,kBACP,SACA,YACA,UACoC;AACpC,MAAI,QAAQ,mBAAmB,QAAQ,QAAQ,gBAAgB,SAAS,GAAG;AACzE,UAAM,aAAiC,CAAC;AAExC,eAAW,aAAa,QAAQ,iBAAiB;AAC/C,UAAI,CAAC,iBAAiB,SAAS,GAAG;AAChC,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,YAAY,SAAS,IAC1B,iKAGA;AAAA,QAEN,CAAC;AACD;AAAA,MACF;AAEA,iBAAW,KAAK,SAAS;AAAA,IAC3B;AAEA,WAAO,WAAW,SAAS,IACvB,WAAW,IAAI,gBAAc,EAAE,KAAK,aAAa,SAAS,EAAE,EAAE,IAC9D;AAAA,EACN;AAEA,OACE,yCAAY,uBAAsB,QAClC,WAAW,mBAAmB,SAAS,GACvC;AACA,WAAO,WAAW,mBAAmB,IAAI,UAAQ,EAAE,IAAI,EAAE;AAAA,EAC3D;AAEA,SAAO;AACT;AAGA,SAAS,uBAAuB,SAAuC;AAnJvE;AAoJE,UAAO,mBAAQ,oBAAR,mBAAyB,KAAK,sBAA9B,YAAmD;AAC5D;AAEA,SAAS,iBACP,SACA,YACgD;AAChD,OAAI,yCAAY,SAAQ,MAAM;AAC5B,WAAO,WAAW;AAAA,EACpB;AAEA,OAAI,yCAAY,aAAY,MAAM;AAChC,WAAO;AAAA,EACT;AAIA,QAAM,iBACJ,QAAQ,eAAe,QAAQ,QAAQ,YAAY,SAAS;AAC9D,QAAM,0BACJ,yCAAY,uBAAsB,QAClC,WAAW,mBAAmB,SAAS;AAKzC,MACE,CAAC,mBACA,uBAAuB,OAAO,KAAK,yBACpC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,gBAAN,MAA4C;AAAA,EAQjD,YACW,SACD,QACR;AAFS;AACD;AATV,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAAA,EASzB;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,iBAAiB,SAQ5B;AACD,UAAM,WAA8B,CAAC;AAErC,UAAM,aAAc,MAAMC,sBAAqB;AAAA,MAC7C,UAAU;AAAA,MACV,iBAAiB,QAAQ;AAAA,MACzB,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,gBAAgB,iBAAiB,SAAS,UAAU;AAE1D,UAAM,SAAS,kBAAkB;AACjC,UAAM,cAAc,kBAAkB;AACtC,UAAM,qBAAqB,kBAAkB;AAE7C,QAAI,QAAQ,OAAO,MAAM;AACvB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,QAAQ,MAAM;AACxB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,KAAK,QAAQ,QAAQ,IAAI,GAAG;AACtC,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAGA,QAAI,UAAU,QAAQ,YAAY,MAAM;AACtC,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,UAAU,QAAQ,eAAe,MAAM;AACzC,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QACE,YACC,yCAAY,eAAc,QAAQ,QAAQ,cAAc,OACzD;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAGA,QAAI,eAAe,QAAQ,eAAe,MAAM;AAC9C,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QACE,iBACC,yCAAY,eAAc,QAAQ,QAAQ,cAAc,OACzD;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,OAAgC;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ,QAAQ,QAAQ;AAAA,IAClB;AAEA,UAAM,gBAAgB,CAAC;AACvB,UAAM,mBAAmB,CAAC,UAAU,CAAC;AACrC,UAAM,kBAAkB,CAAC,UAAU,CAAC;AAEpC,QAAI,iBAAiB,QAAQ,YAAY,MAAM;AAC7C,WAAK,WAAW,QAAQ;AAAA,IAC1B;AAEA,QAAI,oBAAoB,QAAQ,eAAe,MAAM;AACnD,WAAK,eAAe,QAAQ;AAAA,IAC9B;AAEA,QAAI,oBAAmB,yCAAY,eAAc,MAAM;AACrD,WAAK,aAAa,WAAW;AAAA,IAC/B,WAAW,mBAAmB,QAAQ,cAAc,MAAM;AACxD,YAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,UAAI,UAAU,MAAM;AAClB,aAAK,aAAa;AAAA,MACpB,OAAO;AACL,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE,4BAA4B,QAAQ,UAAU;AAAA,QAGlD,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,QAAQ;AACV,WAAK,QAAQ,EAAE,KAAK,WAAY,SAAS;AAAA,IAC3C;AAGA,QAAI,aAAa;AACf,WAAK,QAAQ,EAAE,KAAK,WAAY,SAAS;AAAA,IAC3C;AAIA,UAAM,aAAa,kBAAkB,OAAO;AAC5C,QAAI,cAAc,MAAM;AACtB,UAAI,YAAY,UAAU,GAAG;AAC3B,cAAM,kBAAkB,mBAAmB,OAAO,KAAK;AACvD,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,kBAAkB,gBAAgB;AAAA,UAC3C,SACE;AAAA,QAGJ,CAAC;AAAA,MACH,OAAO;AACL,aAAK,QAAQ,EAAE,KAAK,aAAa,UAAU,EAAE;AAAA,MAC/C;AAAA,IACF;AAGA,UAAM,iBAAiB,kBAAkB,OAAO;AAChD,QAAI,kBAAkB,MAAM;AAC1B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,YAAY,cAAc,IAC/B,wKAGA;AAAA,MAGN,CAAC;AAAA,IACH;AAGA,QAAI,oBAAoB;AACtB,YAAM,kBAAkB,kBAAkB,SAAS,YAAY,QAAQ;AAEvE,UAAI,mBAAmB,MAAM;AAC3B,aAAK,mBAAmB;AAAA,MAC1B,OAAO;AAGL,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QAEJ,CAAC;AAAA,MACH;AAEA,YAAM,oBAAoB,yCAAY;AACtC,UAAI,qBAAqB,QAAQ,kBAAkB,SAAS,GAAG;AAC7D,aAAK,mBAAmB,kBAAkB,IAAI,cAAY;AAAA,UACxD,UAAU;AAAA,QACZ,EAAE;AAAA,MACJ;AAGA,UAAI,KAAK,eAAe,SAAS;AAC/B,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QAEJ,CAAC;AACD,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAIA,QAAI,KAAK,eAAe,WAAW,KAAK,YAAY,sBAAsB;AACxE,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAGJ,CAAC;AAAA,IACH;AAKA,QACE,QAAQ,mBAAmB,QAC3B,QAAQ,gBAAgB,SAAS,KACjC,CAAC,oBACD;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,uBAAuB,OAAO,IACnC,4GAEA;AAAA,MAEN,CAAC;AAAA,IACH;AAGA,SACE,yCAAY,sBAAqB,QACjC,WAAW,kBAAkB,SAAS,KACtC,CAAC,oBACD;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,gBAAe,yCAAY,UAAS,QAAW;AAClD,WAAK,OAAO,WAAW;AAAA,IACzB;AAEA,QAAI,cAAc,MAAM;AACtB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,YACE,CAAC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,EAAE,SAAS,GAAG,GACd;AACA,eAAK,GAAG,IAAI;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QACJ,SAC2C;AA/e/C;AAgfI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,MAAM,UAAU,QAAQ,YAAY,IAC1C,MAAM,KAAK,iBAAiB,OAAO;AAErC,UAAM,WAAU,UAAK,OAAO,YAAZ,YAAuB;AAGvC,QAAI;AACJ,QAAI,QAAQ;AACV,iBAAW,GAAG,OAAO;AAAA,IACvB,WAAW,aAAa;AACtB,iBAAW,GAAG,OAAO;AAAA,IACvB,OAAO;AACL,iBAAW,GAAG,OAAO;AAAA,IACvB;AAEA,UAAM,EAAE,OAAO,gBAAgB,gBAAgB,IAAI,MAAMC,eAAc;AAAA,MACrE,KAAK;AAAA,MACL,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,YAAY,eAAe;AACjC,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL,WAAW,EAAE,UAAU;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SAC4C;AAjiBhD;AAkiBI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,UAAU,IAAI,QAAQ;AAC9B,UAAM,WAAU,UAAK,OAAO,YAAZ,YAAuB;AAEvC,UAAM,EAAE,OAAO,gBAAgB,gBAAgB,IAAI,MAAMC,YAAW;AAAA,MAClE,KAAK,GAAG,OAAO,WAAWN,mBAAkB,SAAS,CAAC;AAAA,MACtD,aAAa;AAAA,MACb,SAASI,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D,2BAA2B;AAAA,MAC3B,uBAAuB;AAAA,MACvB,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,eAAe,WAAW,WAAW;AACvC,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,QAAI,eAAe,WAAW,UAAU;AACtC,YAAM,gBACJ,0BAAe,UAAf,mBAAsB,YAAtB,aAAiC,oBAAe,UAAf,mBAAsB;AAEzD,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,OACE,gBAAgB,OACZ,4BAA4B,YAAY,KACxC;AAAA,QACN,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,QACE,eAAe,WAAW,UACzB,eAAe,UAAU,UAAQ,oBAAe,UAAf,mBAAsB,MACxD;AAEA,YAAI,oBAAe,UAAf,mBAAsB,wBAAuB,OAAO;AACtD,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,OACE;AAAA,UACF,UAAU;AAAA,YACR,WAAW;AAAA,YACX,SAAS,KAAK;AAAA,YACd,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAEA,UAAI,GAAC,oBAAe,UAAf,mBAAsB,MAAK;AAC9B,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,UAAU;AAAA,YACR,WAAW;AAAA,YACX,SAAS,KAAK;AAAA,YACd,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK,eAAe,MAAM;AAAA,YAC1B,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,UAAU,CAAC;AAAA,QACX,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAAS;AAAA,QACX;AAAA,QACA,kBAAkB;AAAA,UAChB,KAAK;AAAA,YACH;AAAA,YACA,UAAU,eAAe,MAAM;AAAA,YAC/B,GAAI,eAAe,MAAM,YAAY,OACjC,EAAE,UAAU,eAAe,MAAM,SAAS,IAC1C,CAAC;AAAA,YACL,KAAI,oBAAe,UAAf,mBAAsB,sBAAqB,OAC3C,EAAE,gBAAgB,eAAe,MAAM,kBAAkB,IACzD,CAAC;AAAA,YACL,GAAI,eAAe,YAAY,OAC3B,EAAE,UAAU,eAAe,SAAS,IACpC,CAAC;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,+BAA+BG,IAAE,OAAO;AAAA,EAC5C,YAAYA,IAAE,OAAO,EAAE,QAAQ;AACjC,CAAC;AAED,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EAC5C,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,OAAOA,IACJ,OAAO;AAAA,IACN,KAAKA,IAAE,OAAO;AAAA,IACd,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,IAC7B,oBAAoBA,IAAE,QAAQ,EAAE,QAAQ;AAAA,EAC1C,CAAC,EACA,QAAQ;AAAA,EACX,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,OAAOA,IACJ,OAAO;AAAA,IACN,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACxC,CAAC,EACA,QAAQ;AAAA,EACX,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,OAAOA,IACJ,OAAO;AAAA,IACN,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC9B,CAAC,EACA,QAAQ;AACb,CAAC;AAED,IAAM,oCAAoCF;AAAA,EACxC;AACF;AAGA,IAAM,yBAAyB,OAAO;AAEtC,IAAM,cAAc,IAAI,YAAY;AAKpC,eAAe,gBAAgB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,MAAI,SAAS,QAAQ,MAAM;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,SAAuB,CAAC;AAC9B,MAAI,aAAa;AAEjB,MAAI;AACF,WAAO,MAAM;AACX,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AAEV,oBAAc,MAAM;AACpB,UAAI,aAAa,wBAAwB;AACvC,cAAM,IAAI,aAAa;AAAA,UACrB,SAAS,sCAAsC,sBAAsB;AAAA,UACrE;AAAA,UACA;AAAA,UACA,YAAY,SAAS;AAAA,UACrB,iBAAiB,uBAAuB,QAAQ;AAAA,QAClD,CAAC;AAAA,MACH;AAEA,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF,UAAE;AACA,WAAO,YAAY;AAAA,EACrB;AAEA,QAAM,SAAS,IAAI,WAAW,UAAU;AACxC,MAAI,SAAS;AACb,aAAW,SAAS,QAAQ;AAC1B,WAAO,IAAI,OAAO,MAAM;AACxB,cAAU,MAAM;AAAA,EAClB;AACA,SAAO,YAAY,OAAO,MAAM;AAClC;AAEA,IAAM,gCAEF,OAAM,YAAW;AAInB,MAAI,QAAQ,SAAS,WAAW,KAAK;AACnC,UAAM,kBAAkB,uBAAuB,QAAQ,QAAQ;AAC/D,UAAM,OAAO,MAAM,gBAAgB,OAAO;AAE1C,QAAI,KAAK,KAAK,EAAE,WAAW,GAAG;AAC5B,aAAO,EAAE,iBAAiB,OAAO,EAAE,QAAQ,UAAU,EAAE;AAAA,IACzD;AAEA,UAAM,SAAS,MAAM,cAAc;AAAA,MACjC;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA,OAAO,OAAO,UAAU,OAAO,QAAQ,EAAE,QAAQ,UAAU;AAAA,IAC7D;AAAA,EACF;AAEA,SAAO,kCAAkC,OAAO;AAClD;;;AEtwBA;AAAA,EACE,kBAAAG;AAAA,EACA,6BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA,yBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,sBAAAC;AAAA,OAGK;AACP,SAAS,KAAAC,WAAS;;;ACflB;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,8BAA8BF;AAAA,EAAW,MACpDC;AAAA,IACEC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA,MAIP,YAAYA,IACT,MAAM;AAAA,QACLA,IAAE,QAAQ,GAAI;AAAA,QACdA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,KAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,KAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,MACjB,CAAC,EACA,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKX,SAASA,IACN,MAAM;AAAA,QACLA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,KAAM;AAAA,QAChBA,IAAE,QAAQ,KAAM;AAAA,MAClB,CAAC,EACA,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKX,0BAA0BA,IACvB,MAAM,CAACA,IAAE,QAAQ,CAAC,GAAGA,IAAE,QAAQ,CAAC,GAAGA,IAAE,QAAQ,CAAC,CAAC,CAAC,EAChD,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKX,mBAAmBA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOvC,gBAAgBA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOpC,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,IACpD,CAAC;AAAA,EACH;AACF;;;ADjCO,IAAM,iBAAN,MAAM,gBAAwC;AAAA,EAqBnD,YACW,SACQ,QACjB;AAFS;AACQ;AAtBnB,SAAS,uBAAuB;AAAA,EAuB7B;AAAA,EArBH,QAAQC,mBAAkB,EAAE,OAAuB;AACjD,WAAOC,uBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQC,qBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,gBAAe,QAAQ,SAAS,QAAQ,MAAM;AAAA,EAC3D;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF,GAA+C;AAC7C,UAAM,WAA8B,CAAC;AACrC,UAAM,aAAa,MAAMC,sBAAqB;AAAA,MAC5C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,QAAwB;AAC5B,QAAI,CAAC,OAAO,OAAO,OAAO,SAAS,MAAM,EAAE,SAAS,YAAY,GAAG;AACjE,cAAQ;AAAA,IACV,OAAO;AACL,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,8BAA8B,YAAY;AAAA,MACrD,CAAC;AAAA,IACH;AAEA,QAAI,gBAAgB,MAAM;AACxB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MAEJ,CAAC;AAAA,IACH;AAEA,UAAM,gBAIF;AAAA,MACF;AAAA,IACF;AAEA,SAAI,yCAAY,eAAc,MAAM;AAClC,oBAAc,cAAc,WAAW;AAAA,IACzC;AAEA,SAAI,yCAAY,YAAW,MAAM;AAC/B,UAAI,UAAU,OAAO;AACnB,sBAAc,WAAW,WAAW;AAAA,MACtC,OAAO;AACL,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,cAAc;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,4BAA4B,yCAAY;AAAA,MACxC,oBAAoB,yCAAY;AAAA,MAChC,iBAAiB,yCAAY;AAAA,MAC7B,SAAS,yCAAY;AAAA,IACvB;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAgB,yCAAY,oBAAmB;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC2D;AA5I/D;AA6II,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,aAAa,UAAU,eAAe,IAC5C,MAAM,KAAK,QAAQ,OAAO;AAK5B,UAAM,EAAE,OAAO,iBAAiB,SAAS,IAAI,MAAMC,eAEjD;AAAA,MACA,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,SAASC;AAAA,QACP,KAAK,OAAO,UAAU,MAAM,QAAQ,KAAK,OAAO,OAAO,IAAI;AAAA,QAC3D,QAAQ;AAAA,MACV;AAAA,MACA,MAAM;AAAA,MACN,uBAAuB;AAAA,MACvB,2BAA2B,iBACvBC,2BAA0B,iCAAiC,IAC3DC,6BAA4B;AAAA,MAChC,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI;AACJ,QAAI;AACJ,QAAI,iBAAiB,YAAY;AAC/B,cAAQ;AAAA,IACV,OAAO;AACL,iBAAW;AAGX,cACE,SAAS,SAAS,OACdC,2BAA0B,SAAS,KAAK,IACxC,IAAI,WAAW,CAAC;AAAA,IACxB;AAGA,UAAM,UAAU,mDAAkB;AAElC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,kBAAkB;AAAA,QAChB,KAAK;AAAA,UACH,GAAI,WAAW,OAAO,EAAE,QAAQ,IAAI,CAAC;AAAA,UACrC,IAAI,qCAAU,aAAY,OACtB,EAAE,UAAU,SAAS,SAAS,IAC9B,CAAC;AAAA,UACL,IAAI,qCAAU,iBAAgB,OAC1B,EAAE,aAAa,SAAS,aAAa,IACrC,CAAC;AAAA,UACL,IAAI,qCAAU,qBAAoB,OAC9B;AAAA,YACE,iBAAiB;AAAA,cACf,YAAY,SAAS,iBAAiB;AAAA,cACtC,YAAY,SAAS,iBAAiB;AAAA,YACxC;AAAA,UACF,IACA,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAKA,IAAM,oCAAoCC,IAAE,OAAO;AAAA,EACjD,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACjC,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,kBAAkBA,IACf,OAAO;AAAA,IACN,aAAaA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,IAC/B,aAAaA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC;AAAA,EACxD,CAAC,EACA,QAAQ;AACb,CAAC;;;AEtOD;AAAA,EACE,wBAAAC;AAAA,OAIK;AACP;AAAA,EACE,kBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,sBAAAC;AAAA,OAKK;AACP,SAAS,KAAAC,WAAS;;;ACzBlB;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,qCAAqCF;AAAA,EAAW,MAC3DC;AAAA,IACEC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA,MAIP,aAAaA,IAAE,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKtD,YAAYA,IACT,MAAM;AAAA,QACLA,IAAE,QAAQ,GAAI;AAAA,QACdA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,KAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,QACfA,IAAE,QAAQ,KAAK;AAAA,QACfA,IAAE,QAAQ,IAAK;AAAA,MACjB,CAAC,EACA,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKX,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAK7B,QAAQA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAK5B,cAAcA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKlC,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKjD,SAASA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAK7B,SAASA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAK5D,aAAaA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKjC,WAAWA,IACR,OAAO;AAAA;AAAA;AAAA;AAAA,QAIN,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,QAKrC,aAAaA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,QAKxD,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,QAK7C,kBAAkBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,MAC/D,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ADrCO,IAAM,wBAAN,MAAM,uBAAsD;AAAA,EAqBjE,YACW,SACQ,QACjB;AAFS;AACQ;AAtBnB,SAAS,uBAAuB;AAAA,EAuB7B;AAAA,EArBH,QAAQC,mBAAkB,EAAE,OAA8B;AACxD,WAAOC,uBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQC,qBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,uBAAsB,QAAQ,SAAS,QAAQ,MAAM;AAAA,EAClE;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsD;AACpD,UAAM,WAA8B,CAAC;AACrC,UAAM,aAAa,MAAMC,sBAAqB;AAAA,MAC5C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,WAAW,IAAI,SAAS;AAC9B,UAAM,uBAAuB;AAAA,MAC3B,cAAc,yCAAY;AAAA,MAC1B,aAAa,yCAAY;AAAA,MACzB,UAAU,yCAAY;AAAA,MACtB,QAAQ,yCAAY;AAAA,MACpB,cAAc,yCAAY;AAAA,MAC1B,UAAU,yCAAY;AAAA,MACtB,SAAS,yCAAY;AAAA,MACrB,cAAc,yCAAY;AAAA,IAC5B;AAEA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,oBAAoB,GAAG;AAC/D,UAAI,SAAS,MAAM;AACjB,iBAAS,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MACpC;AAAA,IACF;AAEA,SAAI,yCAAY,YAAW,MAAM;AAC/B,YAAM,WAAW,MAAM,QAAQ,WAAW,OAAO,IAC7C,WAAW,UACX,CAAC,WAAW,OAAO;AAEvB,iBAAW,WAAW,UAAU;AAC9B,iBAAS,OAAO,WAAW,OAAO;AAAA,MACpC;AAAA,IACF;AAEA,UAAM,OACJ,iBAAiB,aACb,IAAI,KAAK,CAAC,KAAK,CAAC,IAChB,IAAI,KAAK,CAACC,2BAA0B,KAAK,CAAC,CAAC;AACjD,UAAM,gBAAgB,qBAAqB,SAAS;AAGpD,aAAS;AAAA,MACP;AAAA,MACA,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,MAC7C,SAAS,aAAa;AAAA,IACxB;AAEA,WAAO,EAAE,UAAU,SAAS;AAAA,EAC9B;AAAA,EAEA,MAAM,WACJ,SACkE;AA3ItE;AA4II,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,UAAU,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAEzD,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IACZ,IAAI,MAAMC,mBAAkB;AAAA,MAC1B,KAAK,IAAG,UAAK,OAAO,YAAZ,YAAuB,qBAAqB;AAAA,MACpD,SAASC,iBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAAA,MAChE;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,MAAM,SAAS;AAAA,MACf,WACE,oBAAS,UAAT,mBAAgB,IAAI,WAAS;AAAA,QAC3B,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,MAClB,QAJA,YAIO,CAAC;AAAA,MACV,UAAU,SAAS,YAAY;AAAA,MAC/B,oBAAmB,cAAS,aAAT,YAAqB;AAAA,MACxC;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SAGA;AAvLJ;AAwLI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,WAA8B,CAAC;AACrC,UAAM,aAAa,MAAMJ,sBAAqB;AAAA,MAC5C,UAAU;AAAA,MACV,iBAAiB,QAAQ;AAAA,MACzB,QAAQ;AAAA,IACV,CAAC;AAED,SAAI,yCAAY,kBAAiB,QAAQ,WAAW,YAAY,MAAM;AACpE,YAAM,IAAIK,sBAAqB;AAAA,QAC7B,UAAU;AAAA,QACV,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,SAAI,yCAAY,WAAU,MAAM;AAC9B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,SACE,yCAAY,gBAAe,QAC3B,CAAC,wBAAwB,QAAQ,iBAAiB,IAAI,GACtD;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SACE,uCAAuC,QAAQ,iBAAiB,IAAI;AAAA,MAIxE,CAAC;AAAA,IACH;AAEA,UAAM,MAAM,kCAAkC;AAAA,MAC5C,UAAS,UAAK,OAAO,YAAZ,YAAuB;AAAA,MAChC,kBAAkB,QAAQ;AAAA,MAC1B,iBAAiB;AAAA,IACnB,CAAC;AACD,UAAM,UAAUF,iBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAEvE,WAAO;AAAA,MACL,SAAS,EAAE,MAAM,IAAI,SAAS,EAAE;AAAA,MAChC,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,MAChB;AAAA,MACA,QAAQ,sCAAsC;AAAA,QAC5C,WAAW,KAAK,OAAO;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAU,8CAAY,aAAZ,YAAwB;AAAA,QAClC,oBACE,yCAAY,kBAAiB,OAAO,WAAW,WAAY;AAAA,QAC7D,OAAO,QAAQ;AAAA,QACf,aAAa,QAAQ;AAAA,QACrB,kBAAkB,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,sCAAsC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAUG;AACD,MAAI,WAAW;AACf,MAAI,UAAwC,MAAM;AAAA,EAAC;AAEnD,SAAO,IAAI,eAAe;AAAA,IACxB,OAAO,gBAAc;AACnB,YAAM,YAAY,oBAAI,IAAoB;AAG1C,YAAM,iBAAiB,oBAAI,IAAsB;AACjD,YAAM,eAAe,oBAAI,IAAoB;AAC7C,UAAI;AACJ,UAAI;AAGJ,UAAI;AAEJ,gBAAU,CAAC,cAAuB;AAChC,YAAI,eAAe,MAAM;AACvB,eAAK,YAAY,OAAO,EAAE,MAAM,MAAM;AAAA,UAAC,CAAC;AAAA,QAC1C,OAAO;AAGL,eAAK,MAAM,OAAO,EAAE,MAAM,MAAM;AAAA,UAAC,CAAC;AAAA,QACpC;AACA,iDAAY,MAAM;AAAA,MACpB;AAEA,YAAM,kBAAkB,CAAC,UAAmB;AAC1C,YAAI,SAAU;AACd,mBAAW;AACX,gBAAQ;AACR,mBAAW,MAAM,KAAK;AAAA,MACxB;AAEA,YAAM,cAAc,MAAM;AACxB,YAAI,YAAY,UAAU,OAAO,kBAAmB;AACpD,mBAAW;AACX,cAAM,OAAO,CAAC,GAAG,UAAU,QAAQ,CAAC,EACjC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EACxB,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK,EACxB,KAAK,IAAI;AACZ,mBAAW,QAAQ;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA,UAAU,CAAC;AAAA,UACX;AAAA,UACA,mBAAmB;AAAA,QACrB,CAAC;AACD,mBAAW,MAAM;AACjB,gBAAQ,GAAI;AAAA,MACd;AAEA,YAAM,YAAY,OAAO,WAA0B;AACjD,sBAAc,MAAM,UAAU;AAC9B,YAAI;AACF,iBAAO,MAAM;AACX,kBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,YAAY,KAAK;AAC/C,gBAAI,QAAQ,SAAU;AACtB,mBAAO;AAAA,cACL,iBAAiB,aACb,QACAF,2BAA0B,KAAK;AAAA,YACrC;AAEA,kBAAM,4BAA4B,MAAM;AAAA,UAC1C;AAAA,QACF,UAAE;AACA,sBAAY,YAAY;AAExB,wBAAc;AAAA,QAChB;AACA,YAAI,CAAC,UAAU;AACb,iBAAO,KAAK,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,mBAAa,mBAAmB;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,mBAAmB;AAAA,QACnB,eAAe,OAAM,SAAQ;AAnWrC;AAoWU,gBAAM,SAAS,MAAMK,eAAc,EAAE,KAAK,CAAC;AAC3C,cAAI,CAAC,OAAO,QAAS;AACrB,gBAAM,MAAM,OAAO;AAEnB,cAAI,kBAAkB;AACpB,uBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,IAAI,CAAC;AAAA,UACnD;AAEA,kBAAQ,IAAI,MAAM;AAAA,YAChB,KAAK,sBAAsB;AACzB,yBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AACrD,oBAAM,SAAS,yCAAY;AAC3B,kBAAI,UAAU,MAAM;AAClB,gCAAgB,IAAI,MAAM,6BAA6B,CAAC;AACxD;AAAA,cACF;AACA,mBAAK,UAAU,MAAM,EAAE,MAAM,eAAe;AAC5C;AAAA,YACF;AAAA,YAEA,KAAK,sBAAsB;AACzB,oBAAM,KAAK,UAAU,IAAI,aAAa;AACtC,oBAAM,gBAAe,SAAI,kBAAJ,YAAqB;AAG1C,kBAAI,IAAI,YAAY,IAAI,cAAc;AACpC,sBAAM,SAAS,mBAAmB,GAAG;AACrC,oBAAI,IAAI,MAAM;AACZ,iCAAe,IAAI,cAAc;AAAA,oBAC/B,IAAI,oBAAe,IAAI,YAAY,MAA/B,YAAoC,CAAC;AAAA,oBACzC,IAAI;AAAA,kBACN,CAAC;AAAA,gBACH;AACA,6BAAa,OAAO,YAAY;AAChC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN;AAAA,kBACA,OAAM,SAAI,SAAJ,YAAY;AAAA,kBAClB,GAAG;AAAA,kBACH,cAAc,IAAI;AAAA,gBACpB,CAAC;AAAA,cACH,OAAO;AACL,6BAAa,IAAI,eAAc,SAAI,SAAJ,YAAY,EAAE;AAC7C,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN;AAAA,kBACA,OAAM,SAAI,SAAJ,YAAY;AAAA,kBAClB,aAAa,IAAI;AAAA,kBACjB,mBAAmB,IAAI;AAAA,kBACvB,cAAc,IAAI;AAAA,gBACpB,CAAC;AAAA,cACH;AACA;AAAA,YACF;AAAA,YAEA,KAAK,mBAAmB;AACtB,oBAAM,gBAAe,SAAI,kBAAJ,YAAqB;AAG1C,oBAAM,cAAc;AAAA,gBAClB,IAAI,oBAAe,IAAI,YAAY,MAA/B,YAAoC,CAAC;AAAA,gBACzC,GAAI,aAAa,IAAI,YAAY,IAC7B,CAAC,aAAa,IAAI,YAAY,CAAW,IACzC,CAAC;AAAA,cACP,EAAE,KAAK,GAAG;AACV,wBAAU,IAAI,cAAc,IAAI,QAAQ,WAAW;AACnD,8BAAe,SAAI,aAAJ,YAAgB;AAC/B,0BAAY;AACZ;AAAA,YACF;AAAA,YAEA,KAAK,SAAS;AAGZ,8BAAgB,IAAI,OAAM,SAAI,YAAJ,YAAe,eAAe,CAAC;AACzD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,eAAe,MAAM;AACnB;AAAA,YACE,IAAI;AAAA,cACF,wCACG,aAAa,OACV,8OAKA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS,MAAM;AACb,cAAI,SAAU;AACd,qBAAW;AACX,kBAAQ;AACR,qBAAW,MAAM;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,QAAQ,MAAM;AACZ,UAAI,SAAU;AACd,iBAAW;AACX,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;AAEA,SAAS,kCAAkC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AA1dH;AA2dE,QAAM,MAAM,eAAe,GAAG,OAAO,MAAM;AAE3C;AAAA,IACE;AAAA,IACA;AAAA,KACA,wDAAiB,eAAjB,YAA+B,iBAAiB;AAAA,EAClD;AACA;AAAA,IACE;AAAA,IACA;AAAA,KACA,wDAAiB,gBAAjB,YACE,6BAA6B,iBAAiB,IAAI;AAAA,EACtD;AACA,oBAAkB,KAAK,YAAY,mDAAiB,QAAQ;AAC5D,oBAAkB,KAAK,WAAW,mDAAiB,OAAO;AAC1D,oBAAkB,KAAK,gBAAgB,mDAAiB,WAAW;AACnE,oBAAkB,KAAK,gBAAgB,mDAAiB,YAAY;AACpE,oBAAkB,KAAK,YAAY,mDAAiB,QAAQ;AAC5D;AAAA,IACE;AAAA,IACA;AAAA,KACA,wDAAiB,cAAjB,mBAA4B;AAAA,EAC9B;AACA;AAAA,IACE;AAAA,IACA;AAAA,KACA,wDAAiB,cAAjB,mBAA4B;AAAA,EAC9B;AACA,oBAAkB,KAAK,eAAc,wDAAiB,cAAjB,mBAA4B,SAAS;AAC1E;AAAA,IACE;AAAA,IACA;AAAA,KACA,wDAAiB,cAAjB,mBAA4B;AAAA,EAC9B;AAEA,OAAI,mDAAiB,YAAW,MAAM;AACpC,UAAM,WAAW,MAAM,QAAQ,gBAAgB,OAAO,IAClD,gBAAgB,UAChB,CAAC,gBAAgB,OAAO;AAC5B,eAAW,WAAW,UAAU;AAC9B,UAAI,aAAa,OAAO,WAAW,OAAO;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBACP,KACA,KACA,OACA;AACA,MAAI,SAAS,MAAM;AACjB,QAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,EACzC;AACF;AAEA,SAAS,wBAAwB,MAAuB;AACtD,SAAO,SAAS,eAAe,SAAS,gBAAgB,SAAS;AACnE;AAEA,SAAS,6BAA6B,MAAwC;AAC5E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,UAAU,cAAsD;AACvE,SAAO,gBAAgB,OAAO,SAAY,WAAW,YAAY;AACnE;AAEA,SAAS,mBAAmB,OAAuC;AACjE,SAAO;AAAA,IACL,GAAI,MAAM,SAAS,OAAO,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC;AAAA,IAC1D,GAAI,MAAM,SAAS,QAAQ,MAAM,YAAY,OACzC,EAAE,WAAW,MAAM,QAAQ,MAAM,SAAS,IAC1C,CAAC;AAAA,EACP;AACF;AAEA,IAAM,iCAAiCC,IAAE,OAAO;AAAA,EAC9C,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,OAAOA,IACJ;AAAA,IACCA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,OAAOA,IAAE,OAAO;AAAA,MAChB,KAAKA,IAAE,OAAO;AAAA,IAChB,CAAC;AAAA,EACH,EACC,QAAQ;AACb,CAAC;;;AnC9aM,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA/I1E;AAgJE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,MACjB;AAAA,IACE;AAAA,MACE,eAAe,UAAU,WAAW;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,cAAc,OAAO;AAAA,EACvB;AAEF,QAAM,+BAA+B,CAAC,YAAiC;AACrE,WAAO,IAAI,0BAA0B,SAAS;AAAA,MAC5C,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,YAA6B;AACrD,WAAO,IAAI,cAAc,SAAS;AAAA,MAChC,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,YAA6B;AACrD,WAAO,IAAI,cAAc,SAAS;AAAA,MAChC,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,sBAAsB,CAAC,YAAoB;AAC/C,WAAO,IAAI,iBAAiB,SAAS;AAAA,MACnC,UAAU;AAAA,MACV,SAAS,4BAAW;AAAA,MACpB,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,oBAAoB,MAAM;AAC9B,WAAO,IAAI,eAAe,IAAI;AAAA,MAC5B,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,2BAA2B,MAAM;AACrC,WAAO,IAAI,sBAAsB,IAAI;AAAA,MACnC,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,8BAA8B,OAAO;AAAA,IACzC,CAAC,YAAoB,oBAAoB,OAAO;AAAA,IAChD;AAAA,MACE,UAAU,OAAO,iBAAmD;AAClE,cAAM,QAAQ,oBAAoB,aAAa,KAAK;AACpD,cAAM,SAAS,MAAM,MAAM,qBAAqB;AAAA,UAC9C,eAAe,aAAa;AAAA,UAC5B,qBAAqB,aAAa;AAAA,QACpC,CAAC;AAED,eAAO;AAAA,UACL,OAAO,OAAO;AAAA,UACd,KAAK,OAAO;AAAA,UACZ,WAAW,OAAO;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,MAClB,IAAI,SAAS;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,cAAc,MAClB,IAAI,SAAS;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,OAAO,QAAQ;AAAA,IACjB;AAAA,EACF,CAAC;AAEH,QAAM,WAAW,CAAC,YAChB,6BAA6B,OAAO;AAEtC,WAAS,uBAAuB;AAChC,WAAS,gBAAgB;AACzB,WAAS,YAAY;AACrB,WAAS,iBAAiB,CAAC,YAAoB;AAC7C,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,iBAAiB,CAAC;AAAA,EACrE;AACA,WAAS,qBAAqB,SAAS;AACvC,WAAS,aAAa;AACtB,WAAS,QAAQ;AACjB,WAAS,aAAa;AACtB,WAAS,QAAQ;AACjB,WAAS,wBAAwB;AACjC,WAAS,cAAc;AACvB,WAAS,SAAS;AAClB,WAAS,qBAAqB;AAC9B,WAAS,gBAAgB;AACzB,WAAS,QAAQ;AACjB,WAAS,qBAAqB;AAC9B,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":["z","z","z","UnsupportedFunctionalityError","combineHeaders","convertImageModelFileToDataUri","createJsonResponseHandler","createBinaryResponseHandler","getFromApi","lazySchema","parseProviderOptions","postJsonToApi","zodSchema","z","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","parseProviderOptions","z","parseProviderOptions","z","z","UnsupportedFunctionalityError","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","createProviderExecutedToolFactory","lazySchema","zodSchema","z","xaiTools","UnsupportedFunctionalityError","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","xaiTools","postJsonToApi","combineHeaders","createJsonResponseHandler","_a","_b","_c","response","lazySchema","zodSchema","z","UnsupportedFunctionalityError","parseProviderOptions","combineHeaders","createJsonResponseHandler","postJsonToApi","getFromApi","body","warnings","convertImageModelFileToDataUri","createBinaryResponseHandler","_a","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","createProviderExecutedToolFactory","z","InvalidArgumentError","combineHeaders","createJsonResponseHandler","getFromApi","parseProviderOptions","postFormDataToApi","lazySchema","zodSchema","z","InvalidArgumentError","combineHeaders","parseProviderOptions","createJsonResponseHandler","postFormDataToApi","getFromApi","combineHeaders","createJsonResponseHandler","getFromApi","getTopLevelMediaType","parseProviderOptions","postJsonToApi","z","lazySchema","zodSchema","z","encodePathSegment","getTopLevelMediaType","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","getFromApi","z","combineHeaders","convertBase64ToUint8Array","createBinaryResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","createBinaryResponseHandler","convertBase64ToUint8Array","z","InvalidArgumentError","combineHeaders","convertBase64ToUint8Array","createJsonResponseHandler","parseProviderOptions","postFormDataToApi","safeParseJSON","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","lazySchema","zodSchema","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","convertBase64ToUint8Array","postFormDataToApi","combineHeaders","createJsonResponseHandler","InvalidArgumentError","safeParseJSON","z"]}
|