@mastra/core 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/CHANGELOG.md +462 -0
  2. package/datasets.d.ts +1 -0
  3. package/dist/agent/agent.d.ts +1 -1
  4. package/dist/agent/index.cjs +13 -13
  5. package/dist/agent/index.js +2 -2
  6. package/dist/agent/message-list/adapters/AIV4Adapter.d.ts.map +1 -1
  7. package/dist/agent/message-list/adapters/AIV5Adapter.d.ts.map +1 -1
  8. package/dist/agent/message-list/conversion/output-converter.d.ts +2 -1
  9. package/dist/agent/message-list/conversion/output-converter.d.ts.map +1 -1
  10. package/dist/agent/message-list/index.cjs +18 -18
  11. package/dist/agent/message-list/index.js +1 -1
  12. package/dist/agent/workflows/prepare-stream/index.d.ts +1 -1
  13. package/dist/chunk-3JVFFAJX.cjs +1207 -0
  14. package/dist/chunk-3JVFFAJX.cjs.map +1 -0
  15. package/dist/{chunk-WL3AW3YA.js → chunk-3X3CZUXI.js} +4070 -3983
  16. package/dist/chunk-3X3CZUXI.js.map +1 -0
  17. package/dist/{chunk-2GWTJFVM.js → chunk-4EHGOATH.js} +46 -14
  18. package/dist/chunk-4EHGOATH.js.map +1 -0
  19. package/dist/{chunk-YNXIGRQE.cjs → chunk-4IJ4UDZX.cjs} +319 -83
  20. package/dist/chunk-4IJ4UDZX.cjs.map +1 -0
  21. package/dist/{chunk-CGPH7CMG.cjs → chunk-4KFEMXTV.cjs} +46 -14
  22. package/dist/chunk-4KFEMXTV.cjs.map +1 -0
  23. package/dist/{chunk-PHYJYZ32.js → chunk-4TQ4EBYX.js} +16 -8
  24. package/dist/chunk-4TQ4EBYX.js.map +1 -0
  25. package/dist/{chunk-SIZEIYNH.js → chunk-4XSAZPPS.js} +254 -18
  26. package/dist/chunk-4XSAZPPS.js.map +1 -0
  27. package/dist/{chunk-KUTU2YZF.js → chunk-5Q5Y34SS.js} +5 -5
  28. package/dist/{chunk-KUTU2YZF.js.map → chunk-5Q5Y34SS.js.map} +1 -1
  29. package/dist/{chunk-EH6SAGEO.cjs → chunk-64WGYTQK.cjs} +72 -53
  30. package/dist/{chunk-EH6SAGEO.cjs.map → chunk-64WGYTQK.cjs.map} +1 -1
  31. package/dist/{chunk-OOCEAC6U.cjs → chunk-65PHUUMF.cjs} +3 -3
  32. package/dist/{chunk-OOCEAC6U.cjs.map → chunk-65PHUUMF.cjs.map} +1 -1
  33. package/dist/{chunk-JNE2ABVB.js → chunk-7NKUSQEV.js} +1094 -10
  34. package/dist/chunk-7NKUSQEV.js.map +1 -0
  35. package/dist/{chunk-ZHFM7HCQ.js → chunk-AXHBJ4GX.js} +3 -3
  36. package/dist/{chunk-ZHFM7HCQ.js.map → chunk-AXHBJ4GX.js.map} +1 -1
  37. package/dist/{chunk-ILQXPZCD.js → chunk-AY6DBRS3.js} +37 -21
  38. package/dist/chunk-AY6DBRS3.js.map +1 -0
  39. package/dist/{chunk-TERSHTY5.cjs → chunk-BP7VYTOP.cjs} +1116 -21
  40. package/dist/chunk-BP7VYTOP.cjs.map +1 -0
  41. package/dist/{chunk-UE2G2LRP.cjs → chunk-CZ4NQANZ.cjs} +37 -21
  42. package/dist/chunk-CZ4NQANZ.cjs.map +1 -0
  43. package/dist/{chunk-NCC45KOB.cjs → chunk-DBSVT6AR.cjs} +7 -7
  44. package/dist/{chunk-NCC45KOB.cjs.map → chunk-DBSVT6AR.cjs.map} +1 -1
  45. package/dist/{chunk-BXLLXTT4.js → chunk-FLPEGTEK.js} +4 -4
  46. package/dist/{chunk-BXLLXTT4.js.map → chunk-FLPEGTEK.js.map} +1 -1
  47. package/dist/{chunk-ON2KVIUJ.cjs → chunk-HYRYTTMT.cjs} +7 -7
  48. package/dist/{chunk-ON2KVIUJ.cjs.map → chunk-HYRYTTMT.cjs.map} +1 -1
  49. package/dist/chunk-NJ7TL3LQ.js +1196 -0
  50. package/dist/chunk-NJ7TL3LQ.js.map +1 -0
  51. package/dist/{chunk-EUG4AON3.cjs → chunk-NKYWDNCI.cjs} +8 -7
  52. package/dist/{chunk-EUG4AON3.cjs.map → chunk-NKYWDNCI.cjs.map} +1 -1
  53. package/dist/{chunk-UHVG25VW.cjs → chunk-NZG2JAKS.cjs} +23 -15
  54. package/dist/chunk-NZG2JAKS.cjs.map +1 -0
  55. package/dist/{chunk-44SUGDBR.js → chunk-PS5ONCXY.js} +109 -5
  56. package/dist/chunk-PS5ONCXY.js.map +1 -0
  57. package/dist/{chunk-57QAF2ZQ.js → chunk-QTTWRCB5.js} +4 -4
  58. package/dist/{chunk-57QAF2ZQ.js.map → chunk-QTTWRCB5.js.map} +1 -1
  59. package/dist/{chunk-VM25PDSW.js → chunk-RZ4CIIZR.js} +4 -4
  60. package/dist/{chunk-VM25PDSW.js.map → chunk-RZ4CIIZR.js.map} +1 -1
  61. package/dist/{chunk-C3XU7ZDC.cjs → chunk-SU5APAM6.cjs} +123 -4
  62. package/dist/chunk-SU5APAM6.cjs.map +1 -0
  63. package/dist/{chunk-3MJCJLZS.js → chunk-U2HKJZCI.js} +24 -5
  64. package/dist/{chunk-3MJCJLZS.js.map → chunk-U2HKJZCI.js.map} +1 -1
  65. package/dist/{chunk-GCTAD6B7.cjs → chunk-VD5YA6RH.cjs} +12 -12
  66. package/dist/{chunk-GCTAD6B7.cjs.map → chunk-VD5YA6RH.cjs.map} +1 -1
  67. package/dist/{chunk-KAJNBNWP.cjs → chunk-YNNJLLFN.cjs} +4071 -3984
  68. package/dist/chunk-YNNJLLFN.cjs.map +1 -0
  69. package/dist/datasets/dataset.d.ts +153 -0
  70. package/dist/datasets/dataset.d.ts.map +1 -0
  71. package/dist/datasets/experiment/analytics/aggregate.d.ts +46 -0
  72. package/dist/datasets/experiment/analytics/aggregate.d.ts.map +1 -0
  73. package/dist/datasets/experiment/analytics/compare.d.ts +33 -0
  74. package/dist/datasets/experiment/analytics/compare.d.ts.map +1 -0
  75. package/dist/datasets/experiment/analytics/index.d.ts +9 -0
  76. package/dist/datasets/experiment/analytics/index.d.ts.map +1 -0
  77. package/dist/datasets/experiment/analytics/types.d.ts +103 -0
  78. package/dist/datasets/experiment/analytics/types.d.ts.map +1 -0
  79. package/dist/datasets/experiment/executor.d.ts +40 -0
  80. package/dist/datasets/experiment/executor.d.ts.map +1 -0
  81. package/dist/datasets/experiment/index.d.ts +31 -0
  82. package/dist/datasets/experiment/index.d.ts.map +1 -0
  83. package/dist/datasets/experiment/scorer.d.ts +21 -0
  84. package/dist/datasets/experiment/scorer.d.ts.map +1 -0
  85. package/dist/datasets/experiment/types.d.ts +140 -0
  86. package/dist/datasets/experiment/types.d.ts.map +1 -0
  87. package/dist/datasets/index.cjs +69 -0
  88. package/dist/datasets/index.cjs.map +1 -0
  89. package/dist/datasets/index.d.ts +6 -0
  90. package/dist/datasets/index.d.ts.map +1 -0
  91. package/dist/datasets/index.js +4 -0
  92. package/dist/datasets/index.js.map +1 -0
  93. package/dist/datasets/manager.d.ts +73 -0
  94. package/dist/datasets/manager.d.ts.map +1 -0
  95. package/dist/datasets/validation/errors.d.ts +44 -0
  96. package/dist/datasets/validation/errors.d.ts.map +1 -0
  97. package/dist/datasets/validation/index.d.ts +3 -0
  98. package/dist/datasets/validation/index.d.ts.map +1 -0
  99. package/dist/datasets/validation/validator.d.ts +24 -0
  100. package/dist/datasets/validation/validator.d.ts.map +1 -0
  101. package/dist/docs/SKILL.md +1 -3
  102. package/dist/docs/assets/SOURCE_MAP.json +436 -346
  103. package/dist/docs/references/docs-memory-observational-memory.md +86 -11
  104. package/dist/docs/references/docs-streaming-events.md +23 -0
  105. package/dist/docs/references/docs-workspace-filesystem.md +72 -1
  106. package/dist/docs/references/docs-workspace-overview.md +95 -12
  107. package/dist/docs/references/docs-workspace-sandbox.md +2 -0
  108. package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +6 -2
  109. package/dist/docs/references/reference-ai-sdk-with-mastra.md +1 -1
  110. package/dist/docs/references/reference-memory-observational-memory.md +318 -9
  111. package/dist/docs/references/reference-streaming-workflows-stream.md +1 -0
  112. package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +30 -0
  113. package/dist/docs/references/reference.md +3 -0
  114. package/dist/editor/index.d.ts +1 -1
  115. package/dist/editor/index.d.ts.map +1 -1
  116. package/dist/editor/types.d.ts +21 -3
  117. package/dist/editor/types.d.ts.map +1 -1
  118. package/dist/evals/index.cjs +20 -20
  119. package/dist/evals/index.js +3 -3
  120. package/dist/evals/scoreTraces/index.cjs +5 -5
  121. package/dist/evals/scoreTraces/index.js +2 -2
  122. package/dist/features/index.cjs +1 -1
  123. package/dist/features/index.cjs.map +1 -1
  124. package/dist/features/index.d.ts.map +1 -1
  125. package/dist/features/index.js +1 -1
  126. package/dist/features/index.js.map +1 -1
  127. package/dist/index.cjs +2 -7
  128. package/dist/index.d.ts +0 -9
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +1 -2
  131. package/dist/llm/index.cjs +10 -10
  132. package/dist/llm/index.js +2 -2
  133. package/dist/llm/model/provider-types.generated.d.ts +1694 -1659
  134. package/dist/loop/index.cjs +12 -12
  135. package/dist/loop/index.js +1 -1
  136. package/dist/loop/network/index.d.ts +1 -1
  137. package/dist/loop/workflows/agentic-execution/index.d.ts +1 -1
  138. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  139. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  140. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  141. package/dist/loop/workflows/agentic-loop/index.d.ts +1 -1
  142. package/dist/loop/workflows/errors.d.ts +4 -0
  143. package/dist/loop/workflows/errors.d.ts.map +1 -0
  144. package/dist/mastra/index.cjs +2 -2
  145. package/dist/mastra/index.d.ts +2 -0
  146. package/dist/mastra/index.d.ts.map +1 -1
  147. package/dist/mastra/index.js +1 -1
  148. package/dist/memory/index.cjs +14 -14
  149. package/dist/memory/index.js +1 -1
  150. package/dist/memory/memory.d.ts +5 -0
  151. package/dist/memory/memory.d.ts.map +1 -1
  152. package/dist/memory/types.d.ts +56 -0
  153. package/dist/memory/types.d.ts.map +1 -1
  154. package/dist/processors/index.cjs +41 -41
  155. package/dist/processors/index.js +1 -1
  156. package/dist/processors/processors/skills.d.ts +1 -1
  157. package/dist/processors/processors/skills.d.ts.map +1 -1
  158. package/dist/processors/runner.d.ts.map +1 -1
  159. package/dist/processors/trailing-assistant-guard.d.ts +34 -0
  160. package/dist/processors/trailing-assistant-guard.d.ts.map +1 -0
  161. package/dist/provider-registry-6LZAGQET.cjs +40 -0
  162. package/dist/{provider-registry-C6XCYX44.cjs.map → provider-registry-6LZAGQET.cjs.map} +1 -1
  163. package/dist/provider-registry-QUNT7S55.js +3 -0
  164. package/dist/{provider-registry-NWU4YFQW.js.map → provider-registry-QUNT7S55.js.map} +1 -1
  165. package/dist/provider-registry.json +4068 -3981
  166. package/dist/relevance/index.cjs +3 -3
  167. package/dist/relevance/index.js +1 -1
  168. package/dist/storage/base.d.ts +4 -1
  169. package/dist/storage/base.d.ts.map +1 -1
  170. package/dist/storage/constants.cjs +87 -27
  171. package/dist/storage/constants.d.ts +21 -2
  172. package/dist/storage/constants.d.ts.map +1 -1
  173. package/dist/storage/constants.js +1 -1
  174. package/dist/storage/domains/agents/inmemory.d.ts.map +1 -1
  175. package/dist/storage/domains/datasets/base.d.ts +83 -0
  176. package/dist/storage/domains/datasets/base.d.ts.map +1 -0
  177. package/dist/storage/domains/datasets/index.d.ts +3 -0
  178. package/dist/storage/domains/datasets/index.d.ts.map +1 -0
  179. package/dist/storage/domains/datasets/inmemory.d.ts +40 -0
  180. package/dist/storage/domains/datasets/inmemory.d.ts.map +1 -0
  181. package/dist/storage/domains/experiments/base.d.ts +28 -0
  182. package/dist/storage/domains/experiments/base.d.ts.map +1 -0
  183. package/dist/storage/domains/experiments/index.d.ts +3 -0
  184. package/dist/storage/domains/experiments/index.d.ts.map +1 -0
  185. package/dist/storage/domains/experiments/inmemory.d.ts +28 -0
  186. package/dist/storage/domains/experiments/inmemory.d.ts.map +1 -0
  187. package/dist/storage/domains/index.d.ts +3 -0
  188. package/dist/storage/domains/index.d.ts.map +1 -1
  189. package/dist/storage/domains/inmemory-db.d.ts +9 -1
  190. package/dist/storage/domains/inmemory-db.d.ts.map +1 -1
  191. package/dist/storage/domains/mcp-clients/base.d.ts +47 -0
  192. package/dist/storage/domains/mcp-clients/base.d.ts.map +1 -0
  193. package/dist/storage/domains/mcp-clients/index.d.ts +3 -0
  194. package/dist/storage/domains/mcp-clients/index.d.ts.map +1 -0
  195. package/dist/storage/domains/mcp-clients/inmemory.d.ts +31 -0
  196. package/dist/storage/domains/mcp-clients/inmemory.d.ts.map +1 -0
  197. package/dist/storage/domains/operations/inmemory.d.ts.map +1 -1
  198. package/dist/storage/index.cjs +201 -117
  199. package/dist/storage/index.js +2 -2
  200. package/dist/storage/mock.d.ts.map +1 -1
  201. package/dist/storage/types.d.ts +338 -3
  202. package/dist/storage/types.d.ts.map +1 -1
  203. package/dist/stream/base/output.d.ts.map +1 -1
  204. package/dist/stream/index.cjs +11 -11
  205. package/dist/stream/index.js +2 -2
  206. package/dist/stream/types.d.ts +15 -0
  207. package/dist/stream/types.d.ts.map +1 -1
  208. package/dist/test-utils/llm-mock.cjs +4 -4
  209. package/dist/test-utils/llm-mock.js +1 -1
  210. package/dist/tool-loop-agent/index.cjs +4 -4
  211. package/dist/tool-loop-agent/index.js +1 -1
  212. package/dist/tool-provider/index.cjs +4 -0
  213. package/dist/tool-provider/index.cjs.map +1 -0
  214. package/dist/tool-provider/index.d.ts +2 -0
  215. package/dist/tool-provider/index.d.ts.map +1 -0
  216. package/dist/tool-provider/index.js +3 -0
  217. package/dist/tool-provider/index.js.map +1 -0
  218. package/dist/tool-provider/types.d.ts +113 -0
  219. package/dist/tool-provider/types.d.ts.map +1 -0
  220. package/dist/utils.cjs +23 -23
  221. package/dist/utils.d.ts +1 -1
  222. package/dist/utils.d.ts.map +1 -1
  223. package/dist/utils.js +1 -1
  224. package/dist/vector/index.cjs +7 -7
  225. package/dist/vector/index.js +1 -1
  226. package/dist/workflows/evented/index.cjs +10 -10
  227. package/dist/workflows/evented/index.js +1 -1
  228. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  229. package/dist/workflows/handlers/control-flow.d.ts.map +1 -1
  230. package/dist/workflows/index.cjs +25 -25
  231. package/dist/workflows/index.js +1 -1
  232. package/dist/workflows/workflow.d.ts +2 -2
  233. package/dist/workflows/workflow.d.ts.map +1 -1
  234. package/dist/workspace/filesystem/filesystem.d.ts +5 -15
  235. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  236. package/dist/workspace/filesystem/local-filesystem.d.ts +18 -2
  237. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  238. package/dist/workspace/filesystem/mastra-filesystem.d.ts +21 -1
  239. package/dist/workspace/filesystem/mastra-filesystem.d.ts.map +1 -1
  240. package/dist/workspace/index.cjs +41 -41
  241. package/dist/workspace/index.d.ts +1 -1
  242. package/dist/workspace/index.d.ts.map +1 -1
  243. package/dist/workspace/index.js +1 -1
  244. package/dist/workspace/lifecycle.d.ts +49 -53
  245. package/dist/workspace/lifecycle.d.ts.map +1 -1
  246. package/dist/workspace/sandbox/local-sandbox.d.ts +1 -1
  247. package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
  248. package/dist/workspace/sandbox/mastra-sandbox.d.ts +3 -2
  249. package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
  250. package/dist/workspace/sandbox/sandbox.d.ts +3 -4
  251. package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
  252. package/dist/workspace/workspace.d.ts +2 -15
  253. package/dist/workspace/workspace.d.ts.map +1 -1
  254. package/package.json +7 -7
  255. package/src/llm/model/provider-types.generated.d.ts +1694 -1659
  256. package/tool-provider.d.ts +1 -0
  257. package/dist/chunk-2GWTJFVM.js.map +0 -1
  258. package/dist/chunk-44SUGDBR.js.map +0 -1
  259. package/dist/chunk-C3XU7ZDC.cjs.map +0 -1
  260. package/dist/chunk-CGPH7CMG.cjs.map +0 -1
  261. package/dist/chunk-ILQXPZCD.js.map +0 -1
  262. package/dist/chunk-JNE2ABVB.js.map +0 -1
  263. package/dist/chunk-KAJNBNWP.cjs.map +0 -1
  264. package/dist/chunk-PHYJYZ32.js.map +0 -1
  265. package/dist/chunk-SIZEIYNH.js.map +0 -1
  266. package/dist/chunk-TERSHTY5.cjs.map +0 -1
  267. package/dist/chunk-UE2G2LRP.cjs.map +0 -1
  268. package/dist/chunk-UHVG25VW.cjs.map +0 -1
  269. package/dist/chunk-WL3AW3YA.js.map +0 -1
  270. package/dist/chunk-YNXIGRQE.cjs.map +0 -1
  271. package/dist/docs/references/reference-cli-mastra.md +0 -336
  272. package/dist/docs/references/reference-deployer-cloudflare.md +0 -56
  273. package/dist/provider-registry-C6XCYX44.cjs +0 -40
  274. package/dist/provider-registry-NWU4YFQW.js +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/llm/model/aisdk/v6/model.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/types/tool.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/provider-defined-tool-factory.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/get-relative-path.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/any.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/array.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/bigint.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/boolean.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/branded.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/catch.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/date.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/default.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/effects.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/intersection.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/literal.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/string.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/record.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/map.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/native-enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/never.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/null.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/union.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/number.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/object.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/optional.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/pipeline.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/set.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/tuple.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/undefined.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/unknown.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/readonly.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/select-parser.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parse-def.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/refs.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/zod-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/index.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/index.ts","../src/llm/model/router.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["createStreamFromGenerateResult","_AISDKError","name","marker","symbol","_a","_TypeValidationError","validator","TypeValidationError","EventSourceParserStream","InvalidArgumentError","getOriginalFetch","fetch","APICallError","tool","ZodFirstPartyTypeKind","types","x","jsonSchema","schema","zodSchema","z4","z","lazyValidator","UnsupportedFunctionalityError","toolCall","getResponseMetadata","mapOpenAIFinishReason","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","createEventSourceResponseHandler","_b","_c","convertToBase64","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","validateTypes","generateId","supportsFlexProcessing","supportsPriorityProcessing","VERSION","MastraModelGateway","InMemoryServerCache","MastraError","PROVIDER_REGISTRY","NetlifyGateway","ModelsDevGateway","parseModelRouterId","AISDKV5LanguageModel","createHash","modelInstance","createOpenAICompatible","RequestContext","GatewayRegistry","createOpenAI","createGoogleGenerativeAI"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,uBAAN,MAA4D;AAAA;AAAA;AAAA;AAAA,EAIxD,oBAAA,GAA6B,IAAA;AAAA;AAAA;AAAA;AAAA,EAI7B,QAAA;AAAA;AAAA;AAAA;AAAA,EAIA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUT,aAAA;AAAA,EAEA,MAAA;AAAA,EAEA,YAAY,MAAA,EAAyB;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,QAAA,GAAW,KAAK,MAAA,CAAO,QAAA;AAC5B,IAAA,IAAA,CAAK,OAAA,GAAU,KAAK,MAAA,CAAO,OAAA;AAC3B,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAK,MAAA,CAAO,aAAA;AAAA,EACnC;AAAA,EAEA,MAAM,WAAW,OAAA,EAAqC;AACpD,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA,CAAO,WAAW,OAAO,CAAA;AAEnD,IAAA,OAAO;AAAA,MACL,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,MAAA,EAAQA,iDAA+B,MAAM;AAAA,KAC/C;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,OAAA,EAAqC;AAClD,IAAA,OAAO,MAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA,EAC3C;AACF,CAAA;;;ACpDA,IAAM,MAAA,GAAS,iBAAA;AACf,IAAM,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AALhC,IAAA,EAAA;AAWO,IAAM,WAAA,GAAN,MAAMC,YAAAA,SAAmB,KAAA,CAAM;;;;;;;;;EAgBpC,WAAA,CAAY;IACV,IAAA,EAAAC,MAAAA;AACA,IAAA,OAAA;AACA,IAAA;GACF,EAIG;AACD,IAAA,KAAA,CAAM,OAAO,CAAA;AAxBf,IAAA,IAAA,CAAkB,EAAA,CAAA,GAAU,IAAA;AA0B1B,IAAA,IAAA,CAAK,IAAA,GAAOA,MAAAA;AACZ,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACf,EAAA;;;;;;AAOA,EAAA,OAAO,WAAW,KAAA,EAAqC;AACrD,IAAA,OAAOD,YAAAA,CAAW,SAAA,CAAU,KAAA,EAAO,MAAM,CAAA;AAC3C,EAAA;EAEA,OAAiB,SAAA,CAAU,OAAgBE,QAAAA,EAAyB;AAClE,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAM,CAAA;AACtC,IAAA,OACE,KAAA,IAAS,IAAA,IACT,OAAO,KAAA,KAAU,YACjB,YAAA,IAAgB,KAAA,IAChB,OAAO,KAAA,CAAM,YAAY,CAAA,KAAM,SAAA,IAC/B,KAAA,CAAM,YAAY,CAAA,KAAM,IAAA;AAE5B,EAAA;AACF,CAAA;AAjDoB,EAAA,GAAA,MAAA;AADb,IAAM,UAAA,GAAN,WAAA;ACTP,IAAM,IAAA,GAAO,iBAAA;AACb,IAAMA,OAAAA,GAAS,mBAAmB,IAAI,CAAA,CAAA;AACtC,IAAMC,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAMO,IAAM,YAAA,GAAN,cAA2B,UAAA,CAAW;EAa3C,WAAA,CAAY;AACV,IAAA,OAAA;AACA,IAAA,GAAA;AACA,IAAA,iBAAA;AACA,IAAA,UAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,KAAA;IACA,WAAA,GAAc,UAAA,IAAc,SACzB,UAAA,KAAe,GAAA;IACd,UAAA,KAAe,GAAA;IACf,UAAA,KAAe,GAAA;IACf,UAAA,IAAc,GAAA,CAAA;;AAClB,IAAA;GACF,EAUG;AACD,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA;AArChC,IAAA,IAAA,CAAkBA,GAAAA,CAAAA,GAAU,IAAA;AAuC1B,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,IAAA,CAAK,iBAAA,GAAoB,iBAAA;AACzB,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AACvB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACd,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAAuC;AACvD,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAnDoBE,GAAAA,GAAAD,OAAAA;ACLpB,IAAMF,KAAAA,GAAO,2BAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAMO,IAAM,sBAAA,GAAN,cAAqC,UAAA,CAAW;;AAGrD,EAAA,WAAA,CAAY,EAAE,OAAA,GAAU,qBAAA,EAAsB,GAA0B,EAAC,EAAG;AAC1E,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,KAAAA,EAAM,OAAA,EAAS,CAAA;AAHzB,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAI5B,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAAiD;AACjE,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAToBE,GAAAA,GAAAD,OAAAA;ACPb,SAAS,gBAAgB,KAAA,EAA4B;AAC1D,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,eAAA;AACT,EAAA;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,KAAA;AACT,EAAA;AAEA,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,IAAA,OAAO,KAAA,CAAM,OAAA;AACf,EAAA;AAEA,EAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC7B;ACZA,IAAMF,KAAAA,GAAO,yBAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AASO,IAAM,oBAAA,GAAN,cAAmC,UAAA,CAAW;EAKnD,WAAA,CAAY;AACV,IAAA,OAAA;AACA,IAAA,KAAA;AACA,IAAA;GACF,EAIG;AACD,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,KAAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAbhC,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAe1B,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAA+C;AAC/D,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AArBoBE,GAAAA,GAAAD,OAAAA;ACRpB,IAAMF,KAAAA,GAAO,uBAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAUO,IAAM,kBAAA,GAAN,cAAiC,UAAA,CAAW;EAKjD,WAAA,CAAY;AACV,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA;GACF,EAIG;AACD,IAAA,KAAA,CAAM,EAAE,MAAAH,KAAAA,EAAM,OAAA,EAAS,mBAAmB,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA;AAb9D,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAe1B,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAA6C;AAC7D,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AArBoBE,GAAAA,GAAAD,OAAAA;ACTpB,IAAMF,KAAAA,GAAO,6BAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAUO,IAAM,wBAAA,GAAN,cAAuC,UAAA,CAAW;EAKvD,WAAA,CAAY;AACV,IAAA,IAAA;AACA,IAAA,OAAA,GAAU,CAAA,uBAAA,EAA0B,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;GAC1D,EAGG;AACD,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,KAAAA,EAAM,OAAA,EAAS,CAAA;AAXzB,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAa1B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACd,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAAmD;AACnE,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAnBoBE,GAAAA,GAAAD,OAAAA;ACRpB,IAAMF,KAAAA,GAAO,mBAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AALhC,IAAAE,GAAAA;AAQO,IAAM,cAAA,GAAN,cAA6B,UAAA,CAAW;EAK7C,WAAA,CAAY,EAAE,IAAA,EAAM,KAAA,EAAM,EAAqC;AAC7D,IAAA,KAAA,CAAM;MACJ,IAAA,EAAAH,KAAAA;AACA,MAAA,OAAA,EACE,8BACS,IAAI,CAAA;AACK,eAAA,EAAA,eAAA,CAAgB,KAAK,CAAC,CAAA,CAAA;AAC1C,MAAA;KACD,CAAA;AAZH,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAc1B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACd,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAAyC;AACzD,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AApBoBE,GAAAA,GAAAD,OAAAA;ACPpB,IAAMF,KAAAA,GAAO,oBAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAMO,IAAM,eAAA,GAAN,cAA8B,UAAA,CAAW;;EAG9C,WAAA,CAAY,EAAE,SAAQ,EAAwB;AAC5C,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,KAAAA,EAAM,OAAA,EAAS,CAAA;AAHzB,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAI5B,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAA0C;AAC1D,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAToBE,GAAAA,GAAAD,OAAAA;ACLpB,IAAMF,KAAAA,GAAO,qBAAA;AACb,IAAMC,OAAAA,GAAS,mBAAmBD,KAAI,CAAA,CAAA;AACtC,IAAME,OAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,OAAM,CAAA;AAJhC,IAAAE,GAAAA;AAMO,IAAM,gBAAA,GAAN,cAA+B,UAAA,CAAW;;EAG/C,WAAA,CAAY,EAAE,SAAQ,EAAwB;AAC5C,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,KAAAA,EAAM,OAAA,EAAS,CAAA;AAHzB,IAAA,IAAA,CAAkBG,GAAAA,CAAAA,GAAU,IAAA;AAI5B,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAA2C;AAC3D,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,OAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAToBE,GAAAA,GAAAD,OAAAA;ACLpB,IAAMF,MAAAA,GAAO,uCAAA;AACb,IAAMC,QAAAA,GAAS,mBAAmBD,MAAI,CAAA,CAAA;AACtC,IAAME,QAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,QAAM,CAAA;AAJhC,IAAAE,IAAAA;AAMO,IAAM,kCAAA,GAAN,cAAiD,UAAA,CAAW;AAQjE,EAAA,WAAA,CAAY,OAAA,EAKT;AACD,IAAA,KAAA,CAAM;MACJ,IAAA,EAAAH,MAAAA;AACA,MAAA,OAAA,EACE,CAAA,iDAAA,EACO,OAAA,CAAQ,QAAQ,CAAA,QAAA,EAAW,OAAA,CAAQ,OAAO,CAAA,uBAAA,EAC9C,OAAA,CAAQ,oBAAoB,CAAA,sBAAA,EAAyB,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,sBAAA;KAChF,CAAA;AAnBH,IAAA,IAAA,CAAkBG,IAAAA,CAAAA,GAAU,IAAA;AAqB1B,IAAA,IAAA,CAAK,WAAW,OAAA,CAAQ,QAAA;AACxB,IAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,OAAA;AACvB,IAAA,IAAA,CAAK,uBAAuB,OAAA,CAAQ,oBAAA;AACpC,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACxB,EAAA;AAEA,EAAA,OAAO,WACL,KAAA,EAC6C;AAC7C,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,QAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAhCoBE,IAAAA,GAAAD,QAAAA;ACJpB,IAAMF,MAAAA,GAAO,wBAAA;AACb,IAAMC,QAAAA,GAAS,mBAAmBD,MAAI,CAAA,CAAA;AACtC,IAAME,QAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,QAAM,CAAA;AALhC,IAAAE,IAAAA;AAOO,IAAM,oBAAA,GAAN,MAAMC,qBAAAA,SAA4B,UAAA,CAAW;EAKlD,WAAA,CAAY,EAAE,KAAA,EAAO,KAAA,EAAM,EAAuC;AAChE,IAAA,KAAA,CAAM;MACJ,IAAA,EAAAJ,MAAAA;AACA,MAAA,OAAA,EACE,CAAA,+BAAA,EACU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AACb,eAAA,EAAA,eAAA,CAAgB,KAAK,CAAC,CAAA,CAAA;AAC1C,MAAA;KACD,CAAA;AAZH,IAAA,IAAA,CAAkBG,IAAAA,CAAAA,GAAU,IAAA;AAc1B,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACf,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAA8C;AAC9D,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,QAAM,CAAA;AAC3C,EAAA;;;;;;;;;;;AAYA,EAAA,OAAO,IAAA,CAAK;AACV,IAAA,KAAA;AACA,IAAA;GACF,EAGwB;AACtB,IAAA,OAAOG,qBAAAA,CAAoB,UAAA,CAAW,KAAK,CAAA,IAAK,KAAA,CAAM,KAAA,KAAU,KAAA,GAC5D,KAAA,GACA,IAAIA,qBAAAA,CAAoB,EAAE,KAAA,EAAO,OAAO,CAAA;AAC9C,EAAA;AACF,CAAA;AA1CoBD,IAAAA,GAAAD,QAAAA;AADb,IAAM,mBAAA,GAAN,oBAAA;ACLP,IAAMF,MAAAA,GAAO,kCAAA;AACb,IAAMC,QAAAA,GAAS,mBAAmBD,MAAI,CAAA,CAAA;AACtC,IAAME,QAAAA,GAAS,MAAA,CAAO,GAAA,CAAID,QAAM,CAAA;AAJhC,IAAAE,IAAAA;AAMO,IAAM,6BAAA,GAAN,cAA4C,UAAA,CAAW;EAK5D,WAAA,CAAY;AACV,IAAA,aAAA;AACA,IAAA,OAAA,GAAU,IAAI,aAAa,CAAA,8BAAA;GAC7B,EAGG;AACD,IAAA,KAAA,CAAM,EAAE,IAAA,EAAAH,MAAAA,EAAM,OAAA,EAAS,CAAA;AAXzB,IAAA,IAAA,CAAkBG,IAAAA,CAAAA,GAAU,IAAA;AAY1B,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACvB,EAAA;AAEA,EAAA,OAAO,WAAW,KAAA,EAAwD;AACxE,IAAA,OAAO,UAAA,CAAW,SAAA,CAAU,KAAA,EAAOF,QAAM,CAAA;AAC3C,EAAA;AACF,CAAA;AAlBoBE,IAAAA,GAAAD,QAAAA;ACPb,SAAS,kBACX,OAAA,EACiC;AACpC,EAAA,OAAO,OAAA,CAAQ,MAAA;AACb,IAAA,CAAC,iBAAiB,cAAA,MAAoB;MACpC,GAAG,eAAA;MACH,GAAI,cAAA,IAAA,IAAA,GAAA,cAAA,GAAkB;AACxB,KAAA,CAAA;IACA;AACF,GAAA;AACF;ACJO,SAAS,uBAAuB,QAAA,EAAoB;AACzD,EAAA,OAAO,OAAO,WAAA,CAAoB,CAAC,GAAG,QAAA,CAAS,OAAO,CAAC,CAAA;AACzD;ACIO,IAAM,oBAAoB,CAAC;AAChC,EAAA,MAAA;EACA,IAAA,GAAO,EAAA;EACP,QAAA,GAAW,gEAAA;EACX,SAAA,GAAY;AACd,CAAA,GAKI,EAAC,KAAmB;AACtB,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,IAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,IAAI,CAAA;AAC5B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,MAAA,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA,CAAU,KAAK,MAAA,EAAO,GAAI,iBAAkB,CAAC,CAAA;AAC1D,IAAA;AACA,IAAA,OAAO,KAAA,CAAM,KAAK,EAAE,CAAA;AACtB,EAAA,CAAA;AAEA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,OAAO,SAAA;AACT,EAAA;AAGA,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,SAAS,CAAA,EAAG;AAChC,IAAA,MAAM,IAAI,oBAAA,CAAqB;MAC7B,QAAA,EAAU,WAAA;MACV,OAAA,EAAS,CAAA,eAAA,EAAkB,SAAS,CAAA,oCAAA,EAAuC,QAAQ,CAAA,EAAA;KACpF,CAAA;AACH,EAAA;AAEA,EAAA,OAAO,MAAM,CAAA,EAAG,MAAM,GAAG,SAAS,CAAA,EAAG,WAAW,CAAA,CAAA;AAClD,CAAA;AAWO,IAAM,aAAa,iBAAA,EAAkB;ACxDrC,SAAS,aAAa,KAAA,EAAgC;AAC3D,EAAA,OAAA,CACG,KAAA,YAAiB,SAAS,KAAA,YAAiB,YAAA,MAC3C,MAAM,IAAA,KAAS,YAAA,IACd,MAAM,IAAA,KAAS,iBAAA;AACf,EAAA,KAAA,CAAM,IAAA,KAAS,cAAA,CAAA;AAErB;ACJA,IAAM,2BAAA,GAA8B,CAAC,cAAA,EAAgB,iBAAiB,CAAA;AAE/D,SAAS,gBAAA,CAAiB;AAC/B,EAAA,KAAA;AACA,EAAA,GAAA;AACA,EAAA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AACvB,IAAA,OAAO,KAAA;AACT,EAAA;AAGA,EAAA,IACE,KAAA,YAAiB,aACjB,2BAAA,CAA4B,QAAA,CAAS,MAAM,OAAA,CAAQ,WAAA,EAAa,CAAA,EAChE;AACA,IAAA,MAAM,QAAS,KAAA,CAAc,KAAA;AAE7B,IAAA,IAAI,SAAS,IAAA,EAAM;AAEjB,MAAA,OAAO,IAAI,YAAA,CAAa;QACtB,OAAA,EAAS,CAAA,uBAAA,EAA0B,MAAM,OAAO,CAAA,CAAA;AAChD,QAAA,KAAA;AACA,QAAA,GAAA;AACA,QAAA,iBAAA;QACA,WAAA,EAAa;;OACd,CAAA;AACH,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,KAAA;AACT;ACtCO,SAAS,8BAAA,CACd,gBAAqB,UAAA,EACb;AAFV,EAAA,IAAAC,MAAA,EAAA,EAAA,EAAA;AAIE,EAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,IAAA,OAAO,CAAA,eAAA,CAAA;AACT,EAAA;AAGA,EAAA,IAAA,CAAIA,OAAA,aAAA,CAAc,SAAA,KAAd,IAAA,GAAA,MAAA,GAAAA,KAAyB,SAAA,EAAW;AACtC,IAAA,OAAO,CAAA,QAAA,EAAW,aAAA,CAAc,SAAA,CAAU,SAAA,CAAU,aAAa,CAAA,CAAA;AACnE,EAAA;AAGA,EAAA,IAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,CAAc,OAAA,KAAd,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuB,QAAA,KAAvB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiC,IAAA,EAAM;AACzC,IAAA,OAAO,mBAAmB,aAAA,CAAc,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAC,CAAA,CAAA;AACtE,EAAA;AAEA,EAAA,IAAI,cAAc,WAAA,EAAa;AAC7B,IAAA,OAAO,CAAA,mBAAA,CAAA;AACT,EAAA;AAEA,EAAA,OAAO,iBAAA;AACT;AChBO,SAAS,iBACd,OAAA,EAKwB;AACxB,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,EAAC;AACV,EAAA;AAEA,EAAA,MAAM,aAAqC,EAAC;AAE5C,EAAA,IAAI,mBAAmB,OAAA,EAAS;AAC9B,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC9B,MAAA,UAAA,CAAW,GAAA,CAAI,WAAA,EAAa,CAAA,GAAI,KAAA;IAClC,CAAC,CAAA;EACH,CAAA,MAAO;AACL,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC3B,MAAA,OAAA,GAAU,MAAA,CAAO,QAAQ,OAAO,CAAA;AAClC,IAAA;AAEA,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,OAAA,EAAS;AAClC,MAAA,IAAI,SAAS,IAAA,EAAM;AACjB,QAAA,UAAA,CAAW,GAAA,CAAI,WAAA,EAAa,CAAA,GAAI,KAAA;AAClC,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,UAAA;AACT;ACzBO,SAAS,mBAAA,CACd,YACG,oBAAA,EACqB;AACxB,EAAA,MAAM,iBAAA,GAAoB,IAAI,OAAA,CAAQ,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAE/D,EAAA,MAAM,sBAAA,GAAyB,iBAAA,CAAkB,GAAA,CAAI,YAAY,CAAA,IAAK,EAAA;AAEtE,EAAA,iBAAA,CAAkB,GAAA;AAChB,IAAA,YAAA;IACA,CAAC,sBAAA,EAAwB,GAAG,oBAAoB,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAC5E,GAAA;AAEA,EAAA,OAAO,MAAA,CAAO,WAAA,CAAY,iBAAA,CAAkB,OAAA,EAAS,CAAA;AACvD;ACxBO,IAAM,OAAA,GAEP,QAAA,CACA;ACHC,SAAS,UAAA,CAAW;AACzB,EAAA,MAAA;AACA,EAAA,uBAAA;EACA,mBAAA,GAAsB,QAAA;AACtB,EAAA;AACF,CAAA,EAKW;AACT,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAO,MAAA;AACT,EAAA;AAEA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,MAAM,IAAI,eAAA,CAAgB;AACxB,MAAA,OAAA,EAAS,GAAG,WAAW,CAAA,0BAAA;KACxB,CAAA;AACH,EAAA;AAEA,EAAA,IAAI,OAAO,YAAY,WAAA,EAAa;AAClC,IAAA,MAAM,IAAI,eAAA,CAAgB;MACxB,OAAA,EAAS,CAAA,EAAG,WAAW,CAAA,wCAAA,EAA2C,mBAAmB,CAAA,wEAAA;KACtF,CAAA;AACH,EAAA;AAEA,EAAA,MAAA,GAAS,OAAA,CAAQ,IAAI,uBAAuB,CAAA;AAE5C,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,MAAM,IAAI,eAAA,CAAgB;AACxB,MAAA,OAAA,EAAS,CAAA,EAAG,WAAW,CAAA,wCAAA,EAA2C,mBAAmB,sBAAsB,uBAAuB,CAAA,sBAAA;KACnI,CAAA;AACH,EAAA;AAEA,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,IAAI,eAAA,CAAgB;MACxB,OAAA,EAAS,CAAA,EAAG,WAAW,CAAA,4CAAA,EAA+C,uBAAuB,CAAA,sCAAA;KAC9F,CAAA;AACH,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;ACjCO,SAAS,WAAA,CAAY;AAC1B,EAAA,YAAA;AACA,EAAA,uBAAA;AACA,EAAA,WAAA;AACA,EAAA;AACF,CAAA,EAKW;AACT,EAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,IAAA,OAAO,YAAA;AACT,EAAA;AAEA,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,MAAM,IAAI,gBAAA,CAAiB;AACzB,MAAA,OAAA,EAAS,GAAG,WAAW,CAAA,0BAAA;KACxB,CAAA;AACH,EAAA;AAEA,EAAA,IAAI,OAAO,YAAY,WAAA,EAAa;AAClC,IAAA,MAAM,IAAI,gBAAA,CAAiB;MACzB,OAAA,EACE,CAAA,EAAG,WAAW,CAAA,wCAAA,EACQ,WAAW,CAAA,wEAAA;KAEpC,CAAA;AACH,EAAA;AAEA,EAAA,YAAA,GAAe,OAAA,CAAQ,IAAI,uBAAuB,CAAA;AAElD,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,MAAM,IAAI,gBAAA,CAAiB;AACzB,MAAA,OAAA,EACE,CAAA,EAAG,WAAW,CAAA,wCAAA,EACQ,WAAW,sBACvB,uBAAuB,CAAA,sBAAA;KACpC,CAAA;AACH,EAAA;AAEA,EAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,IAAA,MAAM,IAAI,gBAAA,CAAiB;MACzB,OAAA,EACE,CAAA,EAAG,WAAW,CAAA,4CAAA,EACM,uBAAuB,CAAA,sCAAA;KAC9C,CAAA;AACH,EAAA;AAEA,EAAA,OAAO,YAAA;AACT;ACpDO,SAAS,qBAAqB,SAAA,EAAmB;AATxD,EAAA,IAAAA,IAAAA;AAUE,EAAA,MAAM,CAAC,OAAO,OAAA,GAAU,EAAE,IAAI,SAAA,CAAU,WAAA,EAAY,CAAE,KAAA,CAAM,GAAG,CAAA;AAE/D,EAAA,OAAA,CACEA,IAAAA,GAAA;IACE,IAAA,EAAM,KAAA;IACN,OAAA,EAAS,KAAA;IACT,IAAA,EAAM,KAAA;IACN,GAAA,EAAK,KAAA;IACL,OAAA,EAAS;GACX,CAAE,OAAO,CAAA,KANT,IAAA,GAAAA,IAAAA,GAMc,OAAA;AAElB;ACEA,IAAM,cAAA,GAAiB,iBAAA;AACvB,IAAM,oBAAA,GAAuB,mBAAA;AAE7B,SAAS,OAAO,IAAA,EAAc;AAE5B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAG3B,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC3C,IAAA,OAAO,GAAA;AACT,EAAA;AAEA,EAAA,IACE,cAAA,CAAe,KAAK,IAAI,CAAA,KAAM,SAC9B,oBAAA,CAAqB,IAAA,CAAK,IAAI,CAAA,KAAM,KAAA,EACpC;AACA,IAAA,OAAO,GAAA;AACT,EAAA;AAGA,EAAA,OAAO,OAAO,GAAG,CAAA;AACnB;AAEA,SAAS,OAAO,GAAA,EAAU;AACxB,EAAA,IAAI,IAAA,GAAO,CAAC,GAAG,CAAA;AAEf,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,MAAM,KAAA,GAAQ,IAAA;AACd,IAAA,IAAA,GAAO,EAAC;AAER,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA,EAAG;AAC3D,QAAA,MAAM,IAAI,YAAY,8CAA8C,CAAA;AACtE,MAAA;AAEA,MAAA,IACE,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,MAAM,aAAa,CAAA,IACxD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,IAAA,CAAK,WAAA,EAAa,WAAW,CAAA,EAClE;AACA,QAAA,MAAM,IAAI,YAAY,8CAA8C,CAAA;AACtE,MAAA;AAEA,MAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,QAAA,MAAM,KAAA,GAAQ,KAAK,GAAG,CAAA;AACtB,QAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,UAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACjB,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,gBAAgB,IAAA,EAAc;AAC5C,EAAA,MAAM,EAAE,iBAAgB,GAAI,KAAA;AAC5B,EAAA,IAAI;AAEF,IAAA,KAAA,CAAM,eAAA,GAAkB,CAAA;AAC1B,EAAA,CAAA,CAAA,OAAS,CAAA,EAAG;AAEV,IAAA,OAAO,OAAO,IAAI,CAAA;AACpB,EAAA;AAEA,EAAA,IAAI;AACF,IAAA,OAAO,OAAO,IAAI,CAAA;EACpB,CAAA,SAAA;AACE,IAAA,KAAA,CAAM,eAAA,GAAkB,eAAA;AAC1B,EAAA;AACF;ACrFO,IAAM,eAAA,mBAAkB,MAAA,CAAO,GAAA,CAAI,qBAAqB,CAAA;AA0BxD,SAAS,UACd,QAAA,EAKmB;AACnB,EAAA,OAAO,EAAE,CAAC,eAAe,GAAG,MAAM,QAAA,EAAS;AAC7C;AAEO,SAAS,YAAY,KAAA,EAAoC;AAC9D,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,eAAA,IAAmB,KAAA,IACnB,KAAA,CAAM,eAAe,CAAA,KAAM,IAAA,IAC3B,UAAA,IAAc,KAAA;AAElB;AAUO,SAAS,cACd,eAAA,EACuB;AAEvB,EAAA,IAAIE,UAAAA;AACJ,EAAA,OAAO,MAAM;AACX,IAAA,IAAIA,cAAa,IAAA,EAAM;AACrBA,MAAAA,UAAAA,GAAY,eAAA,EAAgB;AAC9B,IAAA;AACA,IAAA,OAAOA,UAAAA;AACT,EAAA,CAAA;AACF;AAkBO,SAAS,YACd,KAAA,EACmB;AACnB,EAAA,OAAO,WAAA,CAAY,KAAK,CAAA,GACpB,KAAA,GACA,OAAO,UAAU,UAAA,GACf,KAAA,EAAM,GACN,uBAAA,CAAwB,KAAK,CAAA;AACrC;AAEO,SAAS,wBACd,cAAA,EACmB;AACnB,EAAA,OAAO,SAAA,CAAU,OAAM,KAAA,KAAS;AAC9B,IAAA,MAAM,SAAS,MAAM,cAAA,CAAe,WAAW,CAAA,CAAE,SAAS,KAAK,CAAA;AAE/D,IAAA,OAAO,MAAA,CAAO,UAAU,IAAA,GACpB,EAAE,SAAS,IAAA,EAAM,KAAA,EAAO,MAAA,CAAO,KAAA,EAAM,GACrC;MACE,OAAA,EAAS,KAAA;AACT,MAAA,KAAA,EAAO,IAAI,mBAAA,CAAoB;AAC7B,QAAA,KAAA;AACA,QAAA,KAAA,EAAO,MAAA,CAAO;OACf;AACH,KAAA;EACN,CAAC,CAAA;AACH;ACvGA,eAAsB,aAAA,CAAsB;AAC1C,EAAA,KAAA;AACA,EAAA;AACF,CAAA,EAGoB;AAClB,EAAA,MAAM,SAAS,MAAM,iBAAA,CAAkB,EAAE,KAAA,EAAO,QAAQ,CAAA;AAExD,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAMC,oBAAoB,IAAA,CAAK,EAAE,OAAO,KAAA,EAAO,MAAA,CAAO,OAAO,CAAA;AAC/D,EAAA;AAEA,EAAA,OAAO,MAAA,CAAO,KAAA;AAChB;AAWA,eAAsB,iBAAA,CAA0B;AAC9C,EAAA,KAAA;AACA,EAAA;AACF,CAAA,EAcE;AACA,EAAA,MAAMD,UAAAA,GAAY,YAAY,MAAM,CAAA;AAEpC,EAAA,IAAI;AACF,IAAA,IAAIA,UAAAA,CAAU,YAAY,IAAA,EAAM;AAC9B,MAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAwB,UAAU,KAAA,EAAM;AAClE,IAAA;AAEA,IAAA,MAAM,MAAA,GAAS,MAAMA,UAAAA,CAAU,QAAA,CAAS,KAAK,CAAA;AAE7C,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAO,MAAA,CAAO,KAAA,EAAO,UAAU,KAAA,EAAM;AAC/D,IAAA;AAEA,IAAA,OAAO;MACL,OAAA,EAAS,KAAA;AACT,MAAA,KAAA,EAAOC,oBAAoB,IAAA,CAAK,EAAE,OAAO,KAAA,EAAO,MAAA,CAAO,OAAO,CAAA;MAC9D,QAAA,EAAU;AACZ,KAAA;AACF,EAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,IAAA,OAAO;MACL,OAAA,EAAS,KAAA;AACT,MAAA,KAAA,EAAOA,oBAAoB,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;MACvD,QAAA,EAAU;AACZ,KAAA;AACF,EAAA;AACF;ACjDA,eAAsB,SAAA,CAAa;AACjC,EAAA,IAAA;AACA,EAAA;AACF,CAAA,EAGe;AACb,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,gBAAgB,IAAI,CAAA;AAElC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,OAAO,aAAA,CAAiB,EAAE,KAAA,EAAO,MAAA,EAAQ,CAAA;AAC3C,EAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,IAAA,IACE,eAAe,UAAA,CAAW,KAAK,KAC/BA,mBAAAA,CAAoB,UAAA,CAAW,KAAK,CAAA,EACpC;AACA,MAAA,MAAM,KAAA;AACR,IAAA;AAEA,IAAA,MAAM,IAAI,cAAA,CAAe,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,CAAA;AACjD,EAAA;AACF;AAgCA,eAAsB,aAAA,CAAiB;AACrC,EAAA,IAAA;AACA,EAAA;AACF,CAAA,EAG4B;AAC1B,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,gBAAgB,IAAI,CAAA;AAElC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAmB,UAAU,KAAA,EAAM;AAC7D,IAAA;AAEA,IAAA,OAAO,MAAM,iBAAA,CAAqB,EAAE,KAAA,EAAO,QAAQ,CAAA;AACrD,EAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,IAAA,OAAO;MACL,OAAA,EAAS,KAAA;MACT,KAAA,EAAO,cAAA,CAAe,UAAA,CAAW,KAAK,CAAA,GAClC,KAAA,GACA,IAAI,cAAA,CAAe,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA;MAC7C,QAAA,EAAU;AACZ,KAAA;AACF,EAAA;AACF;AAEO,SAAS,eAAe,KAAA,EAAwB;AACrD,EAAA,IAAI;AACF,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,OAAO,IAAA;AACT,EAAA,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,IAAA,OAAO,KAAA;AACT,EAAA;AACF;AC/GO,SAAS,oBAAA,CAAwB;AACtC,EAAA,MAAA;AACA,EAAA;AACF,CAAA,EAGmC;AACjC,EAAA,OAAO,MAAA,CACJ,WAAA,CAAY,IAAI,iBAAA,EAAmB,EACnC,WAAA,CAAY,IAAIC,yCAAA,EAAyB,CAAA,CACzC,WAAA;AACC,IAAA,IAAI,eAAA,CAAoD;AACtD,MAAA,MAAM,SAAA,CAAU,EAAE,IAAA,EAAK,EAAG,UAAA,EAAY;AAEpC,QAAA,IAAI,SAAS,QAAA,EAAU;AACrB,UAAA;AACF,QAAA;AAEA,QAAA,UAAA,CAAW,OAAA,CAAQ,MAAM,aAAA,CAAc,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,CAAC,CAAA;AAChE,MAAA;KACD;AACH,GAAA;AACJ;AC5BA,eAAsB,oBAAA,CAA8B;AAClD,EAAA,QAAA;AACA,EAAA,eAAA;AACA,EAAA;AACF,CAAA,EAIiC;AAC/B,EAAA,IAAA,CAAI,mBAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAkB,QAAA,MAAa,IAAA,EAAM;AACvC,IAAA,OAAO,MAAA;AACT,EAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,MAAM,iBAAA,CAAuC;AACzE,IAAA,KAAA,EAAO,gBAAgB,QAAQ,CAAA;AAC/B,IAAA;GACD,CAAA;AAED,EAAA,IAAI,CAAC,sBAAsB,OAAA,EAAS;AAClC,IAAA,MAAM,IAAIC,oBAAAA,CAAqB;MAC7B,QAAA,EAAU,iBAAA;AACV,MAAA,OAAA,EAAS,WAAW,QAAQ,CAAA,iBAAA,CAAA;AAC5B,MAAA,KAAA,EAAO,qBAAA,CAAsB;KAC9B,CAAA;AACH,EAAA;AAEA,EAAA,OAAO,qBAAA,CAAsB,KAAA;AAC/B;ACpBA,IAAMC,iBAAAA,GAAmB,MAAM,UAAA,CAAW,KAAA;AAEnC,IAAM,gBAAgB,OAAU;AACrC,EAAA,GAAA;AACA,EAAA,OAAA;AACA,EAAA,IAAA;AACA,EAAA,qBAAA;AACA,EAAA,yBAAA;AACA,EAAA,WAAA;EACA,KAAA,EAAAC;AACF,CAAA,KASE,SAAA,CAAU;AACR,EAAA,GAAA;EACA,OAAA,EAAS;IACP,cAAA,EAAgB,kBAAA;IAChB,GAAG;AACL,GAAA;EACA,IAAA,EAAM;IACJ,OAAA,EAAS,IAAA,CAAK,UAAU,IAAI,CAAA;IAC5B,MAAA,EAAQ;AACV,GAAA;AACA,EAAA,qBAAA;AACA,EAAA,yBAAA;AACA,EAAA,WAAA;EACA,KAAA,EAAAA;AACF,CAAC,CAAA;AAEI,IAAM,oBAAoB,OAAU;AACzC,EAAA,GAAA;AACA,EAAA,OAAA;AACA,EAAA,QAAA;AACA,EAAA,qBAAA;AACA,EAAA,yBAAA;AACA,EAAA,WAAA;EACA,KAAA,EAAAA;AACF,CAAA,KASE,SAAA,CAAU;AACR,EAAA,GAAA;AACA,EAAA,OAAA;EACA,IAAA,EAAM;IACJ,OAAA,EAAS,QAAA;AACT,IAAA,MAAA,EAAQ,MAAA,CAAO,WAAA,CAAa,QAAA,CAAiB,OAAA,EAAS;AACxD,GAAA;AACA,EAAA,qBAAA;AACA,EAAA,yBAAA;AACA,EAAA,WAAA;EACA,KAAA,EAAAA;AACF,CAAC,CAAA;AAEI,IAAM,YAAY,OAAU;AACjC,EAAA,GAAA;AACA,EAAA,OAAA,GAAU,EAAC;AACX,EAAA,IAAA;AACA,EAAA,yBAAA;AACA,EAAA,qBAAA;AACA,EAAA,WAAA;AACA,EAAA,KAAA,EAAAA,SAAQD,iBAAAA;AACV,CAAA,KAWM;AACJ,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,MAAMC,MAAAA,CAAM,GAAA,EAAK;MAChC,MAAA,EAAQ,MAAA;MACR,OAAA,EAAS,mBAAA;AACP,QAAA,OAAA;AACA,QAAA,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAA;QAChC,8BAAA;AACF,OAAA;AACA,MAAA,IAAA,EAAM,IAAA,CAAK,OAAA;MACX,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,MAAM,eAAA,GAAkB,uBAAuB,QAAQ,CAAA;AAEvD,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,IAAI,gBAAA;AAKJ,MAAA,IAAI;AACF,QAAA,gBAAA,GAAmB,MAAM,qBAAA,CAAsB;AAC7C,UAAA,QAAA;AACA,UAAA,GAAA;AACA,UAAA,iBAAA,EAAmB,IAAA,CAAK;SACzB,CAAA;AACH,MAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,QAAA,IAAI,aAAa,KAAK,CAAA,IAAKC,YAAAA,CAAa,UAAA,CAAW,KAAK,CAAA,EAAG;AACzD,UAAA,MAAM,KAAA;AACR,QAAA;AAEA,QAAA,MAAM,IAAIA,YAAAA,CAAa;UACrB,OAAA,EAAS,kCAAA;UACT,KAAA,EAAO,KAAA;AACP,UAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,UAAA,GAAA;AACA,UAAA,eAAA;AACA,UAAA,iBAAA,EAAmB,IAAA,CAAK;SACzB,CAAA;AACH,MAAA;AAEA,MAAA,MAAM,gBAAA,CAAiB,KAAA;AACzB,IAAA;AAEA,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,yBAAA,CAA0B;AACrC,QAAA,QAAA;AACA,QAAA,GAAA;AACA,QAAA,iBAAA,EAAmB,IAAA,CAAK;OACzB,CAAA;AACH,IAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,MAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,QAAA,IAAI,aAAa,KAAK,CAAA,IAAKA,YAAAA,CAAa,UAAA,CAAW,KAAK,CAAA,EAAG;AACzD,UAAA,MAAM,KAAA;AACR,QAAA;AACF,MAAA;AAEA,MAAA,MAAM,IAAIA,YAAAA,CAAa;QACrB,OAAA,EAAS,uCAAA;QACT,KAAA,EAAO,KAAA;AACP,QAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,QAAA,GAAA;AACA,QAAA,eAAA;AACA,QAAA,iBAAA,EAAmB,IAAA,CAAK;OACzB,CAAA;AACH,IAAA;AACF,EAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,IAAA,MAAM,iBAAiB,EAAE,KAAA,EAAO,KAAK,iBAAA,EAAmB,IAAA,CAAK,QAAQ,CAAA;AACvE,EAAA;AACF,CAAA;AC6BO,SAAS,KAAKC,KAAAA,EAAgB;AACnC,EAAA,OAAOA,KAAAA;AACT;ACjIO,SAAS,gDAAA,CAId;AACA,EAAA,EAAA;EACA,IAAA,EAAAZ,MAAAA;AACA,EAAA,WAAA;AACA,EAAA;AACF,CAAA,EAKoE;AAClE,EAAA,OAAO,CAAC;AACN,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,gBAAA;IACA,GAAG;AACL,GAAA,KAOE,IAAA,CAAK;IACH,IAAA,EAAM,kBAAA;AACN,IAAA,EAAA;IACA,IAAA,EAAAA,MAAAA;AACA,IAAA,IAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA;GACD,CAAA;AACL;AC5FO,IAAM,iCACX,CAAI;AACF,EAAA,WAAA;AACA,EAAA,cAAA;AACA,EAAA;AACF,CAAA,KAKA,OAAO,EAAE,QAAA,EAAU,GAAA,EAAK,mBAAkB,KAAM;AAC9C,EAAA,MAAM,YAAA,GAAe,MAAM,QAAA,CAAS,IAAA,EAAK;AACzC,EAAA,MAAM,eAAA,GAAkB,uBAAuB,QAAQ,CAAA;AAGvD,EAAA,IAAI,YAAA,CAAa,IAAA,EAAK,KAAM,EAAA,EAAI;AAC9B,IAAA,OAAO;AACL,MAAA,eAAA;AACA,MAAA,KAAA,EAAO,IAAIW,YAAAA,CAAa;AACtB,QAAA,OAAA,EAAS,QAAA,CAAS,UAAA;AAClB,QAAA,GAAA;AACA,QAAA,iBAAA;AACA,QAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,QAAA,eAAA;AACA,QAAA,YAAA;AACA,QAAA,WAAA,EAAa,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,QAAA;OAC5B;AACH,KAAA;AACF,EAAA;AAGA,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAc,MAAM,SAAA,CAAU;MAClC,IAAA,EAAM,YAAA;MACN,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,OAAO;AACL,MAAA,eAAA;AACA,MAAA,KAAA,EAAO,IAAIA,YAAAA,CAAa;AACtB,QAAA,OAAA,EAAS,eAAe,WAAW,CAAA;AACnC,QAAA,GAAA;AACA,QAAA,iBAAA;AACA,QAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,QAAA,eAAA;AACA,QAAA,YAAA;QACA,IAAA,EAAM,WAAA;AACN,QAAA,WAAA,EAAa,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,UAAU,WAAA;OACtC;AACH,KAAA;AACF,EAAA,CAAA,CAAA,OAAS,UAAA,EAAY;AACnB,IAAA,OAAO;AACL,MAAA,eAAA;AACA,MAAA,KAAA,EAAO,IAAIA,YAAAA,CAAa;AACtB,QAAA,OAAA,EAAS,QAAA,CAAS,UAAA;AAClB,QAAA,GAAA;AACA,QAAA,iBAAA;AACA,QAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,QAAA,eAAA;AACA,QAAA,YAAA;AACA,QAAA,WAAA,EAAa,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,QAAA;OAC5B;AACH,KAAA;AACF,EAAA;AACF,CAAA;AAEK,IAAM,mCACX,CACE,WAAA,KAEF,OAAO,EAAE,UAAS,KAA8B;AAC9C,EAAA,MAAM,eAAA,GAAkB,uBAAuB,QAAQ,CAAA;AAEvD,EAAA,IAAI,QAAA,CAAS,QAAQ,IAAA,EAAM;AACzB,IAAA,MAAM,IAAI,sBAAA,CAAuB,EAAE,CAAA;AACrC,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,eAAA;AACA,IAAA,KAAA,EAAO,oBAAA,CAAqB;AAC1B,MAAA,MAAA,EAAQ,QAAA,CAAS,IAAA;MACjB,MAAA,EAAQ;KACT;AACH,GAAA;AACF,CAAA;AAqCK,IAAM,yBAAA,GACX,CAAI,cAAA,KACJ,OAAO,EAAE,QAAA,EAAU,GAAA,EAAK,mBAAkB,KAAM;AAC9C,EAAA,MAAM,YAAA,GAAe,MAAM,QAAA,CAAS,IAAA,EAAK;AAEzC,EAAA,MAAM,YAAA,GAAe,MAAM,aAAA,CAAc;IACvC,IAAA,EAAM,YAAA;IACN,MAAA,EAAQ;GACT,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,uBAAuB,QAAQ,CAAA;AAEvD,EAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AACzB,IAAA,MAAM,IAAIA,YAAAA,CAAa;MACrB,OAAA,EAAS,uBAAA;AACT,MAAA,KAAA,EAAO,YAAA,CAAa,KAAA;AACpB,MAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,MAAA,eAAA;AACA,MAAA,YAAA;AACA,MAAA,GAAA;AACA,MAAA;KACD,CAAA;AACH,EAAA;AAEA,EAAA,OAAO;AACL,IAAA,eAAA;AACA,IAAA,KAAA,EAAO,YAAA,CAAa,KAAA;AACpB,IAAA,QAAA,EAAU,YAAA,CAAa;AACzB,GAAA;AACF,CAAA;AAEK,IAAM,8BACX,MACA,OAAO,EAAE,QAAA,EAAU,GAAA,EAAK,mBAAkB,KAAM;AAC9C,EAAA,MAAM,eAAA,GAAkB,uBAAuB,QAAQ,CAAA;AAEvD,EAAA,IAAI,CAAC,SAAS,IAAA,EAAM;AAClB,IAAA,MAAM,IAAIA,YAAAA,CAAa;MACrB,OAAA,EAAS,wBAAA;AACT,MAAA,GAAA;AACA,MAAA,iBAAA;AACA,MAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,MAAA,eAAA;MACA,YAAA,EAAc;KACf,CAAA;AACH,EAAA;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,WAAA,EAAY;AAC1C,IAAA,OAAO;AACL,MAAA,eAAA;MACA,KAAA,EAAO,IAAI,WAAW,MAAM;AAC9B,KAAA;AACF,EAAA,CAAA,CAAA,OAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAIA,YAAAA,CAAa;MACrB,OAAA,EAAS,yCAAA;AACT,MAAA,GAAA;AACA,MAAA,iBAAA;AACA,MAAA,UAAA,EAAY,QAAA,CAAS,MAAA;AACrB,MAAA,eAAA;MACA,YAAA,EAAc,MAAA;MACd,KAAA,EAAO;KACR,CAAA;AACH,EAAA;AACF,CAAA;AC1MK,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAiB,KAAA,KAAoB;AACnE,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,OAAO,IAAI,KAAA,CAAM,MAAA,IAAU,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAChD,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAA,EAAG;AAC7B,EAAA;AACA,EAAA,OAAO,CAAA,CAAE,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,QAAA,EAAS,EAAG,GAAG,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AACpE,CAAA;ACIO,IAAM,cAAA,mBAAiB,MAAA;AAC5B,EAAA;AACF,CAAA;AAoDO,IAAM,cAAA,GAA0B;EACrC,IAAA,EAAM,MAAA;EACN,YAAA,EAAc,MAAA;AACd,EAAA,QAAA,EAAU,CAAC,GAAG,CAAA;EACd,cAAA,EAAgB,OAAA;EAChB,YAAA,EAAc,KAAA;EACd,YAAA,EAAc,kBAAA;EACd,WAAA,EAAa,SAAA;EACb,wBAAA,EAA0B,aAAA;EAC1B,2BAAA,EAA6B,IAAA;EAC7B,4BAAA,EAA8B,KAAA;EAC9B,cAAA,EAAgB,aAAA;EAChB,YAAA,EAAc,KAAA;AACd,EAAA,WAAA,EAAa,EAAC;EACd,aAAA,EAAe,KAAA;EACf,eAAA,EAAiB,QAAA;EACjB,eAAA,EAAiB,KAAA;EACjB,aAAA,EAAe,cAAA;EACf,cAAA,EAAgB,wBAAA;EAChB,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAC/B,OAAA,KAEC,OAAO,YAAY,QAAA,GAChB;EACE,GAAG,cAAA;EACH,IAAA,EAAM;AACR,CAAA,GACA;EACE,GAAG,cAAA;EACH,GAAG;AACL,CAAA;AC/FC,SAAS,WAAA,GAAkC;AAChD,EAAA,OAAO,EAAC;AACV;ACQO,SAAS,aAAA,CAAc,KAAkB,IAAA,EAAY;AAZ5D,EAAA,IAAAR,MAAA,EAAA,EAAA,EAAA;AAaE,EAAA,MAAM,GAAA,GAA4B;IAChC,IAAA,EAAM;AACR,GAAA;AACA,EAAA,IAAA,CAAA,CACEA,IAAAA,GAAA,IAAI,IAAA,KAAJ,IAAA,GAAA,SAAAA,IAAAA,CAAU,IAAA,KAAA,CAAA,CACV,MAAA,EAAA,GAAA,GAAA,CAAI,SAAJ,IAAA,GAAA,MAAA,GAAA,GAAU,IAAA,KAAV,IAAA,GAAA,SAAA,EAAA,CAAgB,QAAA,MAAaU,yBAAsB,MAAA,EACnD;AACA,IAAA,GAAA,CAAI,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM;MAClC,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,OAAO;KAC3C,CAAA;AACH,EAAA;AAEA,EAAA,IAAI,IAAI,SAAA,EAAW;AACjB,IAAA,GAAA,CAAI,QAAA,GAAW,IAAI,SAAA,CAAU,KAAA;AAC/B,EAAA;AACA,EAAA,IAAI,IAAI,SAAA,EAAW;AACjB,IAAA,GAAA,CAAI,QAAA,GAAW,IAAI,SAAA,CAAU,KAAA;AAC/B,EAAA;AACA,EAAA,IAAI,IAAI,WAAA,EAAa;AACnB,IAAA,GAAA,CAAI,QAAA,GAAW,IAAI,WAAA,CAAY,KAAA;AAC/B,IAAA,GAAA,CAAI,QAAA,GAAW,IAAI,WAAA,CAAY,KAAA;AACjC,EAAA;AACA,EAAA,OAAO,GAAA;AACT;ACzBO,SAAS,eAAe,GAAA,EAA0C;AACvE,EAAA,MAAM,GAAA,GAA6B;IACjC,IAAA,EAAM,SAAA;IACN,MAAA,EAAQ;AACV,GAAA;AAEA,EAAA,IAAI,CAAC,GAAA,CAAI,MAAA,EAAQ,OAAO,GAAA;AAExB,EAAA,KAAA,MAAW,KAAA,IAAS,IAAI,MAAA,EAAQ;AAC9B,IAAA,QAAQ,MAAM,IAAA;MACZ,KAAK,KAAA;AACH,QAAA,IAAI,MAAM,SAAA,EAAW;AACnB,UAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;QACtB,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,mBAAmB,KAAA,CAAM,KAAA;AAC/B,QAAA;AACA,QAAA;MACF,KAAK,KAAA;AACH,QAAA,IAAI,MAAM,SAAA,EAAW;AACnB,UAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;QACtB,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,mBAAmB,KAAA,CAAM,KAAA;AAC/B,QAAA;AAEA,QAAA;MACF,KAAK,YAAA;AACH,QAAA,GAAA,CAAI,aAAa,KAAA,CAAM,KAAA;AACvB,QAAA;AACJ;AACF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;ACvCO,SAAS,eAAA,GAA0C;AACxD,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;ACFO,SAAS,eAAA,CAAgB,MAA0B,IAAA,EAAY;AACpE,EAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AACtC;ACFO,IAAM,aAAA,GAAgB,CAAC,GAAA,EAAuB,IAAA,KAAe;AAClE,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAC1C,CAAA;ACSO,SAAS,YAAA,CACd,GAAA,EACA,IAAA,EACA,oBAAA,EACqB;AACrB,EAAA,MAAM,QAAA,GAAW,oBAAA,IAAA,IAAA,GAAA,oBAAA,GAAwB,IAAA,CAAK,YAAA;AAE9C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC3B,IAAA,OAAO;MACL,KAAA,EAAO,QAAA,CAAS,IAAI,CAAC,IAAA,EAAM,MAAM,YAAA,CAAa,GAAA,EAAK,IAAA,EAAM,IAAI,CAAC;AAChE,KAAA;AACF,EAAA;AAEA,EAAA,QAAQ,QAAA;IACN,KAAK,QAAA;IACL,KAAK,kBAAA;AACH,MAAA,OAAO;QACL,IAAA,EAAM,QAAA;QACN,MAAA,EAAQ;AACV,OAAA;IACF,KAAK,aAAA;AACH,MAAA,OAAO;QACL,IAAA,EAAM,QAAA;QACN,MAAA,EAAQ;AACV,OAAA;IACF,KAAK,SAAA;AACH,MAAA,OAAO,kBAAkB,GAAG,CAAA;AAChC;AACF;AAEA,IAAM,iBAAA,GAAoB,CAAC,GAAA,KAAoB;AAC7C,EAAA,MAAM,GAAA,GAA2B;IAC/B,IAAA,EAAM,SAAA;IACN,MAAA,EAAQ;AACV,GAAA;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,IAAI,MAAA,EAAQ;AAC9B,IAAA,QAAQ,MAAM,IAAA;MACZ,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;AACpB,QAAA;MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;AACpB,QAAA;AACJ;AACF,EAAA;AAEA,EAAA,OAAO,GAAA;AACT,CAAA;AC1DO,SAAS,eAAA,CACd,MACA,IAAA,EACoC;AACpC,EAAA,OAAO;AACL,IAAA,GAAG,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AACrC,IAAA,OAAA,EAAS,KAAK,YAAA;AAChB,GAAA;AACF;ACPO,SAAS,eAAA,CACd,MACA,IAAA,EAC6B;AAC7B,EAAA,OAAO,IAAA,CAAK,mBAAmB,OAAA,GAC3B,QAAA,CAAS,KAAK,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA,GAC/B,WAAA,EAAY;AAClB;ACNO,SAAS,aAAa,GAAA,EAAsC;AACjE,EAAA,OAAO;IACL,IAAA,EAAM,QAAA;IACN,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,MAAM;AAC7B,GAAA;AACF;ACDA,IAAM,sBAAA,GAAyB,CAC7B,IAAA,KACiC;AACjC,EAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,UAAU,OAAO,KAAA;AACrD,EAAA,OAAO,OAAA,IAAW,IAAA;AACpB,CAAA;AAEO,SAAS,oBAAA,CACd,KACA,IAAA,EACoD;AACpD,EAAA,MAAM,KAAA,GAAQ;IACZ,QAAA,CAAS,GAAA,CAAI,KAAK,IAAA,EAAM;MACtB,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,SAAS,GAAG;KAChD,CAAA;IACD,QAAA,CAAS,GAAA,CAAI,MAAM,IAAA,EAAM;MACvB,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,SAAS,GAAG;KAChD;AACH,GAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAA4B,CAAC,CAAC,CAAC,CAAA;AAEzC,EAAA,MAAM,cAAiC,EAAC;AAExC,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAA,MAAA,KAAU;AACtB,IAAA,IAAI,sBAAA,CAAuB,MAAM,CAAA,EAAG;AAClC,MAAA,WAAA,CAAY,IAAA,CAAK,GAAG,MAAA,CAAO,KAAK,CAAA;IAClC,CAAA,MAAO;AACL,MAAA,IAAI,YAAA,GAAgC,MAAA;AACpC,MAAA,IACE,sBAAA,IAA0B,MAAA,IAC1B,MAAA,CAAO,oBAAA,KAAyB,KAAA,EAChC;AACA,QAAA,MAAM,EAAE,oBAAA,EAAsB,GAAG,IAAA,EAAK,GAAI,MAAA;AAC1C,QAAA,YAAA,GAAe,IAAA;AACjB,MAAA;AACA,MAAA,WAAA,CAAY,KAAK,YAAY,CAAA;AAC/B,IAAA;EACF,CAAC,CAAA;AACD,EAAA,OAAO,WAAA,CAAY,MAAA,GAAS,EAAE,KAAA,EAAO,aAAY,GAAI,MAAA;AACvD;ACxCO,SAAS,gBAAgB,GAAA,EAA4C;AAC1E,EAAA,MAAM,UAAA,GAAa,OAAO,GAAA,CAAI,KAAA;AAC9B,EAAA,IACE,eAAe,QAAA,IACf,UAAA,KAAe,YACf,UAAA,KAAe,SAAA,IACf,eAAe,QAAA,EACf;AACA,IAAA,OAAO;AACL,MAAA,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,IAAI,OAAA,GAAU;AAC7C,KAAA;AACF,EAAA;AAEA,EAAA,OAAO;IACL,IAAA,EAAM,UAAA,KAAe,WAAW,SAAA,GAAY,UAAA;AAC5C,IAAA,KAAA,EAAO,GAAA,CAAI;AACb,GAAA;AACF;ACzBA,IAAI,UAAA,GAAiC,MAAA;AAQ9B,IAAM,WAAA,GAAc;;;;EAIzB,IAAA,EAAM,kBAAA;EACN,KAAA,EAAO,aAAA;EACP,IAAA,EAAM,0BAAA;;;;EAIN,KAAA,EACE,kGAAA;;;;;;;;;;;;AAYF,EAAA,KAAA,EAAO,MAAM;AACX,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,UAAA,GAAa,MAAA;AACX,QAAA,sDAAA;AACA,QAAA;AACF,OAAA;AACF,IAAA;AACA,IAAA,OAAO,UAAA;AACT,EAAA,CAAA;;;;EAIA,IAAA,EAAM,uFAAA;;;;EAIN,IAAA,EAAM,qHAAA;EACN,QAAA,EACE,0IAAA;;;;EAIF,IAAA,EAAM,8XAAA;EACN,QAAA,EACE,yrBAAA;EACF,MAAA,EAAQ,kEAAA;EACR,SAAA,EACE,wEAAA;EACF,MAAA,EAAQ,qBAAA;EACR,GAAA,EAAK;AACP,CAAA;AA2BO,SAAS,cAAA,CACd,KACA,IAAA,EACuB;AACvB,EAAA,MAAM,GAAA,GAA6B;IACjC,IAAA,EAAM;AACR,GAAA;AAEA,EAAA,IAAI,IAAI,MAAA,EAAQ;AACd,IAAA,KAAA,MAAW,KAAA,IAAS,IAAI,MAAA,EAAQ;AAC9B,MAAA,QAAQ,MAAM,IAAA;QACZ,KAAK,KAAA;AACH,UAAA,GAAA,CAAI,SAAA,GACF,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GACrB,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,KAAA,CAAM,KAAK,CAAA,GACnC,KAAA,CAAM,KAAA;AACZ,UAAA;QACF,KAAK,KAAA;AACH,UAAA,GAAA,CAAI,SAAA,GACF,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GACrB,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,KAAA,CAAM,KAAK,CAAA,GACnC,KAAA,CAAM,KAAA;AAEZ,UAAA;QACF,KAAK,OAAA;AACH,UAAA,QAAQ,KAAK,aAAA;YACX,KAAK,cAAA;AACH,cAAA,SAAA,CAAU,GAAA,EAAK,OAAA,EAAS,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC3C,cAAA;YACF,KAAK,kBAAA;AACH,cAAA,SAAA,CAAU,GAAA,EAAK,WAAA,EAAa,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC/C,cAAA;YACF,KAAK,aAAA;AACH,cAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,KAAA,EAAO,KAAA,CAAM,SAAS,IAAI,CAAA;AACtD,cAAA;AACJ;AAEA,UAAA;QACF,KAAK,KAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AACzC,UAAA;QACF,KAAK,MAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC1C,UAAA;QACF,KAAK,OAAA;AACH,UAAA,UAAA,CAAW,GAAA,EAAK,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,SAAS,IAAI,CAAA;AAChD,UAAA;QACF,KAAK,MAAA;AACH,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,IAAA,EAAM,KAAA,CAAM,SAAS,IAAI,CAAA;AACrD,UAAA;QACF,KAAK,OAAA;AACH,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,KAAA,EAAO,KAAA,CAAM,SAAS,IAAI,CAAA;AACtD,UAAA;QACF,KAAK,YAAA;AACH,UAAA,UAAA;AACE,YAAA,GAAA;AACA,YAAA,MAAA,CAAO,IAAI,uBAAA,CAAwB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA;YACvD,KAAA,CAAM,OAAA;AACN,YAAA;AACF,WAAA;AACA,UAAA;QACF,KAAK,UAAA;AACH,UAAA,UAAA;AACE,YAAA,GAAA;AACA,YAAA,MAAA,CAAO,GAAG,uBAAA,CAAwB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;YACvD,KAAA,CAAM,OAAA;AACN,YAAA;AACF,WAAA;AACA,UAAA;QACF,KAAK,UAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,WAAA,EAAa,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC/C,UAAA;QACF,KAAK,MAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC1C,UAAA;QACF,KAAK,MAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC1C,UAAA;QACF,KAAK,UAAA;AACH,UAAA,SAAA,CAAU,GAAA,EAAK,UAAA,EAAY,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC9C,UAAA;QACF,KAAK,QAAA;AACH,UAAA,GAAA,CAAI,SAAA,GACF,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GACrB,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,KAAA,CAAM,KAAK,CAAA,GACnC,KAAA,CAAM,KAAA;AACZ,UAAA,GAAA,CAAI,SAAA,GACF,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GACrB,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,KAAA,CAAM,KAAK,CAAA,GACnC,KAAA,CAAM,KAAA;AACZ,UAAA;AACF,QAAA,KAAK,UAAA,EAAY;AACf,UAAA,UAAA;AACE,YAAA,GAAA;AACA,YAAA,MAAA,CAAO,uBAAA,CAAwB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAC,CAAA;YACjD,KAAA,CAAM,OAAA;AACN,YAAA;AACF,WAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA,KAAK,IAAA,EAAM;AACT,UAAA,IAAI,KAAA,CAAM,YAAY,IAAA,EAAM;AAC1B,YAAA,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC5C,UAAA;AACA,UAAA,IAAI,KAAA,CAAM,YAAY,IAAA,EAAM;AAC1B,YAAA,SAAA,CAAU,GAAA,EAAK,MAAA,EAAQ,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC5C,UAAA;AACA,UAAA;AACF,QAAA;QACA,KAAK,WAAA;AACH,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,SAAA,EAAW,KAAA,CAAM,SAAS,IAAI,CAAA;AAC1D,UAAA;QACF,KAAK,KAAA;AACH,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,GAAA,EAAK,KAAA,CAAM,SAAS,IAAI,CAAA;AACpD,UAAA;AACF,QAAA,KAAK,MAAA,EAAQ;AACX,UAAA,IAAI,KAAA,CAAM,YAAY,IAAA,EAAM;AAC1B,YAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,QAAA,EAAU,KAAA,CAAM,SAAS,IAAI,CAAA;AAC3D,UAAA;AACA,UAAA,IAAI,KAAA,CAAM,YAAY,IAAA,EAAM;AAC1B,YAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,QAAA,EAAU,KAAA,CAAM,SAAS,IAAI,CAAA;AAC3D,UAAA;AACA,UAAA;AACF,QAAA;QACA,KAAK,OAAA;AACH,UAAA,UAAA,CAAW,KAAK,WAAA,CAAY,KAAA,EAAM,EAAG,KAAA,CAAM,SAAS,IAAI,CAAA;AACxD,UAAA;AACF,QAAA,KAAK,MAAA,EAAQ;AACX,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,IAAA,EAAM,KAAA,CAAM,SAAS,IAAI,CAAA;AACrD,UAAA;AACF,QAAA;AACA,QAAA,KAAK,QAAA,EAAU;AACb,UAAA,QAAQ,KAAK,cAAA;AACX,YAAA,KAAK,eAAA,EAAiB;AACpB,cAAA,SAAA,CAAU,GAAA,EAAK,QAAA,EAAiB,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AACnD,cAAA;AACF,YAAA;AAEA,YAAA,KAAK,wBAAA,EAA0B;AAC7B,cAAA,GAAA,CAAI,eAAA,GAAkB,QAAA;AACtB,cAAA;AACF,YAAA;AAEA,YAAA,KAAK,aAAA,EAAe;AAClB,cAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,MAAA,EAAQ,KAAA,CAAM,SAAS,IAAI,CAAA;AACvD,cAAA;AACF,YAAA;AACF;AACA,UAAA;AACF,QAAA;AACA,QAAA,KAAK,QAAA,EAAU;AACb,UAAA,UAAA,CAAW,GAAA,EAAK,WAAA,CAAY,MAAA,EAAQ,KAAA,CAAM,SAAS,IAAI,CAAA;AACzD,QAAA;AAQF;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,uBAAA,CAAwB,SAAiB,IAAA,EAAoB;AACpE,EAAA,OAAO,IAAA,CAAK,eAAA,KAAoB,QAAA,GAC5B,qBAAA,CAAsB,OAAO,CAAA,GAC7B,OAAA;AACN;AAEA,IAAM,gBAAgB,IAAI,GAAA;AACxB,EAAA;AACF,CAAA;AAEA,SAAS,sBAAsB,MAAA,EAAgB;AAC7C,EAAA,IAAI,MAAA,GAAS,EAAA;AAEb,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG;AACjC,MAAA,MAAA,IAAU,IAAA;AACZ,IAAA;AAEA,IAAA,MAAA,IAAU,OAAO,CAAC,CAAA;AACpB,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;AAGA,SAAS,SAAA,CACP,MAAA,EACA,KAAA,EACA,OAAA,EACA,IAAA,EACA;AAhSF,EAAA,IAAAV,IAAAA;AAiSE,EAAA,IAAI,MAAA,CAAO,MAAA,KAAA,CAAUA,IAAAA,GAAA,MAAA,CAAO,KAAA,KAAP,IAAA,GAAA,MAAA,GAAAA,IAAAA,CAAc,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,MAAA,CAAA,CAAA,EAAS;AACtD,IAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,MAAA,MAAA,CAAO,QAAQ,EAAC;AAClB,IAAA;AAEA,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,MAAA,CAAO,MAAO,IAAA,CAAK;AACjB,QAAA,MAAA,EAAQ,MAAA,CAAO;OAChB,CAAA;AACD,MAAA,OAAO,MAAA,CAAO,MAAA;AAChB,IAAA;AAEA,IAAA,MAAA,CAAO,MAAO,IAAA,CAAK;MACjB,MAAA,EAAQ,KAAA;MACR,GAAI,OAAA,IACF,KAAK,aAAA,IAAiB,EAAE,cAAc,EAAE,MAAA,EAAQ,SAAQ;KAC3D,CAAA;EACH,CAAA,MAAO;AACL,IAAA,MAAA,CAAO,MAAA,GAAS,KAAA;AAClB,EAAA;AACF;AAGA,SAAS,UAAA,CACP,MAAA,EACA,KAAA,EACA,OAAA,EACA,IAAA,EACA;AA7TF,EAAA,IAAAA,IAAAA;AA8TE,EAAA,IAAI,MAAA,CAAO,OAAA,KAAA,CAAWA,IAAAA,GAAA,MAAA,CAAO,KAAA,KAAP,IAAA,GAAA,MAAA,GAAAA,IAAAA,CAAc,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAA,CAAA,CAAA,EAAU;AACxD,IAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,MAAA,MAAA,CAAO,QAAQ,EAAC;AAClB,IAAA;AAEA,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,MAAA,CAAO,MAAO,IAAA,CAAK;AACjB,QAAA,OAAA,EAAS,MAAA,CAAO;OACjB,CAAA;AACD,MAAA,OAAO,MAAA,CAAO,OAAA;AAChB,IAAA;AAEA,IAAA,MAAA,CAAO,MAAO,IAAA,CAAK;MACjB,OAAA,EAAS,wBAAA,CAAyB,OAAO,IAAI,CAAA;MAC7C,GAAI,OAAA,IACF,KAAK,aAAA,IAAiB,EAAE,cAAc,EAAE,OAAA,EAAS,SAAQ;KAC5D,CAAA;EACH,CAAA,MAAO;AACL,IAAA,MAAA,CAAO,OAAA,GAAU,wBAAA,CAAyB,KAAA,EAAO,IAAI,CAAA;AACvD,EAAA;AACF;AAGA,SAAS,wBAAA,CAAyB,OAAe,IAAA,EAAoB;AArVrE,EAAA,IAAAA,IAAAA;AAsVE,EAAA,IAAI,CAAC,IAAA,CAAK,eAAA,IAAmB,CAAC,MAAM,KAAA,EAAO;AACzC,IAAA,OAAO,KAAA,CAAM,MAAA;AACf,EAAA;AAGA,EAAA,MAAM,KAAA,GAAQ;IACZ,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA;;IAC3B,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA;;IAC3B,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,GAAG;;AAC7B,GAAA;AAGA,EAAA,MAAM,SAAS,KAAA,CAAM,CAAA,GAAI,MAAM,MAAA,CAAO,WAAA,KAAgB,KAAA,CAAM,MAAA;AAC5D,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,IAAI,SAAA,GAAY,KAAA;AAChB,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI,WAAA,GAAc,KAAA;AAElB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAA,IAAW,OAAO,CAAC,CAAA;AACnB,MAAA,SAAA,GAAY,KAAA;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,IAAI,MAAA,CAAO,CAAC,CAAA,CAAE,KAAA,CAAM,OAAO,CAAA,EAAG;AAC5B,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,OAAA,IAAW,OAAO,CAAC,CAAA;AACnB,YAAA,OAAA,IAAW,CAAA,EAAG,MAAA,CAAO,CAAA,GAAI,CAAC,CAAC,IAAI,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA,CAAG,WAAA,EAAY;AACvD,YAAA,WAAA,GAAc,KAAA;AAChB,UAAA,CAAA,MAAA,IAAW,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,KAAM,SAAOA,IAAAA,GAAA,MAAA,CAAO,CAAA,GAAI,CAAC,MAAZ,IAAA,GAAA,MAAA,GAAAA,IAAAA,CAAe,KAAA,CAAM,OAAA,CAAA,CAAA,EAAU;AACjE,YAAA,OAAA,IAAW,OAAO,CAAC,CAAA;AACnB,YAAA,WAAA,GAAc,IAAA;UAChB,CAAA,MAAO;AACL,YAAA,OAAA,IAAW,CAAA,EAAG,OAAO,CAAC,CAAC,GAAG,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA;AACnD,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA,CAAA,MAAA,IAAW,MAAA,CAAO,CAAC,CAAA,CAAE,KAAA,CAAM,OAAO,CAAA,EAAG;AACnC,QAAA,OAAA,IAAW,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,GAAG,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA,CAAA;AAClD,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AACrB,QAAA,OAAA,IAAW,CAAA;;AACX,QAAA;MACF,CAAA,MAAA,IAAW,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AAC5B,QAAA,OAAA,IAAW,CAAA;;AACX,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,KAAA,CAAM,CAAA,IAAK,MAAA,CAAO,CAAC,MAAM,GAAA,EAAK;AAChC,MAAA,OAAA,IAAW,WAAA,GAAc,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;IAAS,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAC,CAAA;;AAC3D,MAAA;AACF,IAAA;AAEA,IAAA,OAAA,IAAW,OAAO,CAAC,CAAA;AACnB,IAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,IAAA,EAAM;AACtB,MAAA,SAAA,GAAY,IAAA;AACd,IAAA,CAAA,MAAA,IAAW,WAAA,IAAe,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3C,MAAA,WAAA,GAAc,KAAA;AAChB,IAAA,CAAA,MAAA,IAAW,CAAC,WAAA,IAAe,MAAA,CAAO,CAAC,MAAM,GAAA,EAAK;AAC5C,MAAA,WAAA,GAAc,IAAA;AAChB,IAAA;AACF,EAAA;AAaA,EAAA,OAAO,OAAA;AACT;AClZO,SAAS,cAAA,CACd,KACA,IAAA,EACuB;AA1BzB,EAAA,IAAAA,IAAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2BE,EAAA,MAAM,MAAA,GAAgC;IACpC,IAAA,EAAM,QAAA;AACN,IAAA,oBAAA,EAAA,CACEA,IAAAA,GAAA,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM;MAC3B,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,sBAAsB;KAC1D,CAAA,KAHD,IAAA,GAAAA,IAAAA,GAGM,IAAA,CAAK;AACf,GAAA;AAEA,EAAA,IAAA,CAAA,CACE,KAAA,GAAA,CAAI,OAAA,KAAJ,OAAA,MAAA,GAAA,EAAA,CAAa,KAAK,QAAA,MAAaU,wBAAAA,CAAsB,SAAA,KAAA,CACrD,EAAA,GAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,WAAjB,IAAA,GAAA,MAAA,GAAA,GAAyB,MAAA,CAAA,EACzB;AACA,IAAA,MAAM,EAAE,MAAM,GAAG,OAAA,KAAY,cAAA,CAAe,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAElE,IAAA,OAAO;MACL,GAAG,MAAA;MACH,aAAA,EAAe;AACjB,KAAA;EACF,CAAA,MAAA,IAAA,CAAA,CAAW,EAAA,GAAA,IAAI,OAAA,KAAJ,IAAA,GAAA,SAAA,EAAA,CAAa,IAAA,CAAK,QAAA,MAAaA,wBAAAA,CAAsB,OAAA,EAAS;AACvE,IAAA,OAAO;MACL,GAAG,MAAA;MACH,aAAA,EAAe;QACb,IAAA,EAAM,GAAA,CAAI,QAAQ,IAAA,CAAK;AACzB;AACF,KAAA;AACF,EAAA,CAAA,MAAA,IAAA,CAAA,CACE,EAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,IAAA,CAAK,QAAA,MAAaA,wBAAAA,CAAsB,UAAA,IACrD,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,QAAA,KAAaA,wBAAAA,CAAsB,SAAA,KAAA,CAC9D,EAAA,GAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,KAA3B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,MAAA,CAAA,EACnC;AACA,IAAA,MAAM,EAAE,IAAA,EAAM,GAAG,OAAA,EAAQ,GAAI,eAAA;AAC3B,MAAA,GAAA,CAAI,OAAA,CAAQ,IAAA;AACZ,MAAA;AACF,KAAA;AAEA,IAAA,OAAO;MACL,GAAG,MAAA;MACH,aAAA,EAAe;AACjB,KAAA;AACF,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;ACpDO,SAAS,WAAA,CACd,KACA,IAAA,EAC4C;AAC5C,EAAA,IAAI,IAAA,CAAK,gBAAgB,QAAA,EAAU;AACjC,IAAA,OAAO,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC,EAAA;AAEA,EAAA,MAAM,IAAA,GACJ,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM;IACzB,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,OAAA,EAAS,SAAS,GAAG;AAC1D,GAAC,KAAK,WAAA,EAAY;AACpB,EAAA,MAAM,MAAA,GACJ,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM;IAC3B,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,OAAA,EAAS,SAAS,GAAG;AAC1D,GAAC,KAAK,WAAA,EAAY;AACpB,EAAA,OAAO;IACL,IAAA,EAAM,OAAA;IACN,QAAA,EAAU,GAAA;IACV,KAAA,EAAO;MACL,IAAA,EAAM,OAAA;MACN,KAAA,EAAO,CAAC,MAAM,MAAM,CAAA;MACpB,QAAA,EAAU,CAAA;MACV,QAAA,EAAU;AACZ;AACF,GAAA;AACF;ACvCO,SAAS,mBACd,GAAA,EAC2B;AAC3B,EAAA,MAAM,SAAS,GAAA,CAAI,MAAA;AACnB,EAAA,MAAM,UAAA,GAAa,OAAO,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,KAAgB;AACjE,IAAA,OAAO,OAAO,MAAA,CAAO,MAAA,CAAO,GAAG,CAAC,CAAA,KAAM,QAAA;EACxC,CAAC,CAAA;AAED,EAAA,MAAM,eAAe,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,KAAgB,MAAA,CAAO,GAAG,CAAC,CAAA;AAEhE,EAAA,MAAM,cAAc,KAAA,CAAM,IAAA;AACxB,IAAA,IAAI,IAAI,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,KAA4B,OAAO,MAAM,CAAC;AACtE,GAAA;AAEA,EAAA,OAAO;IACL,IAAA,EACE,WAAA,CAAY,MAAA,KAAW,CAAA,GACnB,WAAA,CAAY,CAAC,CAAA,KAAM,QAAA,GACjB,QAAA,GACA,QAAA,GACF,CAAC,QAAA,EAAU,QAAQ,CAAA;IACzB,IAAA,EAAM;AACR,GAAA;AACF;ACxBO,SAAS,aAAA,GAAkD;AAChE,EAAA,OAAO,EAAE,GAAA,EAAK,WAAA,EAAY,EAAE;AAC9B;ACJO,SAAS,YAAA,GAAoC;AAClD,EAAA,OAAO;IACL,IAAA,EAAM;AACR,GAAA;AACF;ACEO,IAAM,iBAAA,GAAoB;EAC/B,SAAA,EAAW,QAAA;EACX,SAAA,EAAW,QAAA;EACX,SAAA,EAAW,SAAA;EACX,UAAA,EAAY,SAAA;EACZ,OAAA,EAAS;AACX,CAAA;AAsBO,SAAS,aAAA,CACd,KACA,IAAA,EACkE;AAClE,EAAA,MAAM,OAAA,GACJ,GAAA,CAAI,OAAA,YAAmB,GAAA,GAAM,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,GAAI,GAAA,CAAI,OAAA;AAGtE,EAAA,IACE,OAAA,CAAQ,KAAA;AACN,IAAA,CAAA,CAAA,KACE,CAAA,CAAE,IAAA,CAAK,QAAA,IAAY,iBAAA,KAClB,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,IAAU,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,MAAA;GACtC,EACA;AAGA,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,CAACC,QAA+B,CAAA,KAAM;AACjE,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,CAAA,CAAE,IAAA,CAAK,QAAwB,CAAA;AAC9D,MAAA,OAAO,IAAA,IAAQ,CAACA,MAAAA,CAAM,QAAA,CAAS,IAAI,IAAI,CAAC,GAAGA,MAAAA,EAAO,IAAI,CAAA,GAAIA,MAAAA;AAC5D,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,OAAO;AACL,MAAA,IAAA,EAAM,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAM,CAAC;AAC1C,KAAA;EACF,CAAA,MAAA,IACE,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,CAAK,QAAA,KAAa,YAAA,IAAgB,CAAC,CAAA,CAAE,WAAW,CAAA,EACrE;AAGA,IAAA,MAAM,QAAQ,OAAA,CAAQ,MAAA;AACpB,MAAA,CAAC,KAA6B,CAAA,KAA+B;AAC3D,QAAA,MAAM,IAAA,GAAO,OAAO,CAAA,CAAE,IAAA,CAAK,KAAA;AAC3B,QAAA,QAAQ,IAAA;UACN,KAAK,QAAA;UACL,KAAK,QAAA;UACL,KAAK,SAAA;AACH,YAAA,OAAO,CAAC,GAAG,GAAA,EAAK,IAAI,CAAA;UACtB,KAAK,QAAA;AACH,YAAA,OAAO,CAAC,GAAG,GAAA,EAAK,SAAkB,CAAA;UACpC,KAAK,QAAA;AACH,YAAA,IAAI,CAAA,CAAE,KAAK,KAAA,KAAU,IAAA,SAAa,CAAC,GAAG,KAAK,MAAe,CAAA;UAC5D,KAAK,QAAA;UACL,KAAK,WAAA;UACL,KAAK,UAAA;AACL,UAAA;AACE,YAAA,OAAO,GAAA;AACX;AACF,MAAA,CAAA;MACA;AACF,KAAA;AAEA,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,CAAQ,MAAA,EAAQ;AAGnC,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAA;AAChE,MAAA,OAAO;AACL,QAAA,IAAA,EAAM,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,WAAA,GAAc,YAAY,CAAC,CAAA;AAC1D,QAAA,IAAA,EAAM,OAAA,CAAQ,MAAA;AACZ,UAAA,CAAC,KAAK,CAAA,KAAM;AACV,YAAA,OAAO,GAAA,CAAI,QAAA,CAAS,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,GAAA,EAAK,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AACjE,UAAA,CAAA;UACA;AACF;AACF,OAAA;AACF,IAAA;EACF,CAAA,MAAA,IAAW,OAAA,CAAQ,MAAM,CAAA,CAAA,KAAK,EAAE,IAAA,CAAK,QAAA,KAAa,SAAS,CAAA,EAAG;AAC5D,IAAA,OAAO;MACL,IAAA,EAAM,QAAA;AACN,MAAA,IAAA,EAAM,OAAA,CAAQ,MAAA;AACZ,QAAA,CAAC,KAAe,CAAA,KAAM;UACpB,GAAG,GAAA;UACH,GAAG,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,CAACC,OAAc,CAAC,GAAA,CAAI,QAAA,CAASA,EAAC,CAAC;AACzD,SAAA;QACA;AACF;AACF,KAAA;AACF,EAAA;AAEA,EAAA,OAAO,OAAA,CAAQ,KAAK,IAAI,CAAA;AAC1B;AAEA,IAAM,OAAA,GAAU,CACd,GAAA,EACA,IAAA,KACqE;AACrE,EAAA,MAAM,KAAA,GAAA,CACH,GAAA,CAAI,OAAA,YAAmB,GAAA,GACpB,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,GAC/B,GAAA,CAAI,OAAA,EAEP,GAAA;AAAI,IAAA,CAAC,CAAA,EAAG,CAAA,KACP,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM;MACf,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,aAAa,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA,CAAE;KACnD;GACH,CACC,MAAA;AACC,IAAA,CAAC,CAAA,KACC,CAAC,CAAC,CAAA,KACD,CAAC,IAAA,CAAK,YAAA,IACJ,OAAO,CAAA,KAAM,QAAA,IAAY,MAAA,CAAO,IAAA,CAAK,CAAC,EAAE,MAAA,GAAS,CAAA;AACxD,GAAA;AAEF,EAAA,OAAO,KAAA,CAAM,MAAA,GAAS,EAAE,KAAA,EAAM,GAAI,MAAA;AACpC,CAAA;AChIO,SAAS,gBAAA,CACd,KACA,IAAA,EACqC;AACrC,EAAA,IACE,CAAC,WAAA,EAAa,WAAA,EAAa,WAAA,EAAa,YAAA,EAAc,SAAS,CAAA,CAAE,QAAA;AAC/D,IAAA,GAAA,CAAI,UAAU,IAAA,CAAK;GACrB,KACC,CAAC,GAAA,CAAI,SAAA,CAAU,IAAA,CAAK,MAAA,IAAU,CAAC,GAAA,CAAI,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,MAAA,CAAA,EAC1D;AACA,IAAA,OAAO;MACL,IAAA,EAAM;QACJ,iBAAA,CACE,GAAA,CAAI,SAAA,CAAU,IAAA,CAAK,QACrB,CAAA;AACA,QAAA;AACF;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM;IACxC,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,SAAS,GAAG;GAChD,CAAA;AAED,EAAA,OAAO,IAAA,IAAQ,EAAE,KAAA,EAAO,CAAC,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,EAAE;AACnD;AC9BO,SAAS,eAAe,GAAA,EAA0C;AACvE,EAAA,MAAM,GAAA,GAA6B;IACjC,IAAA,EAAM;AACR,GAAA;AAEA,EAAA,IAAI,CAAC,GAAA,CAAI,MAAA,EAAQ,OAAO,GAAA;AAExB,EAAA,KAAA,MAAW,KAAA,IAAS,IAAI,MAAA,EAAQ;AAC9B,IAAA,QAAQ,MAAM,IAAA;MACZ,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,IAAA,GAAO,SAAA;AACX,QAAA;MACF,KAAK,KAAA;AACH,QAAA,IAAI,MAAM,SAAA,EAAW;AACnB,UAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;QACtB,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,mBAAmB,KAAA,CAAM,KAAA;AAC/B,QAAA;AACA,QAAA;MACF,KAAK,KAAA;AACH,QAAA,IAAI,MAAM,SAAA,EAAW;AACnB,UAAA,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA;QACtB,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,mBAAmB,KAAA,CAAM,KAAA;AAC/B,QAAA;AACA,QAAA;MACF,KAAK,YAAA;AACH,QAAA,GAAA,CAAI,aAAa,KAAA,CAAM,KAAA;AACvB,QAAA;AACJ;AACF,EAAA;AACA,EAAA,OAAO,GAAA;AACT;AC/BO,SAAS,cAAA,CAAe,KAAmB,IAAA,EAAY;AAC5D,EAAA,MAAM,MAAA,GAAgC;IACpC,IAAA,EAAM,QAAA;AACN,IAAA,UAAA,EAAY;AACd,GAAA;AAEA,EAAA,MAAM,WAAqB,EAAC;AAE5B,EAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,EAAM;AAExB,EAAA,KAAA,MAAW,YAAY,KAAA,EAAO;AAC5B,IAAA,IAAI,OAAA,GAAU,MAAM,QAAQ,CAAA;AAE5B,IAAA,IAAI,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,IAAA,KAAS,MAAA,EAAW;AACvD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,YAAA,GAAe,eAAe,OAAO,CAAA;AAE3C,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM;MACvC,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,cAAc,QAAQ,CAAA;AACzD,MAAA,YAAA,EAAc,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,cAAc,QAAQ;KAC3D,CAAA;AAED,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA;AACF,IAAA;AAEA,IAAA,MAAA,CAAO,UAAA,CAAW,QAAQ,CAAA,GAAI,SAAA;AAE9B,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AACxB,IAAA;AACF,EAAA;AAEA,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AACpB,EAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,0BAAA,CAA2B,GAAA,EAAK,IAAI,CAAA;AAEjE,EAAA,IAAI,yBAAyB,MAAA,EAAW;AACtC,IAAA,MAAA,CAAO,oBAAA,GAAuB,oBAAA;AAChC,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,0BAAA,CAA2B,KAAmB,IAAA,EAAY;AACjE,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,QAAA,KAAa,UAAA,EAAY;AAC7C,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,QAAA,CAAS,IAAA,EAAM;MACjC,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,sBAAsB;KAC1D,CAAA;AACH,EAAA;AAEA,EAAA,QAAQ,IAAI,WAAA;IACV,KAAK,aAAA;AACH,MAAA,OAAO,IAAA,CAAK,2BAAA;IACd,KAAK,QAAA;AACH,MAAA,OAAO,IAAA,CAAK,4BAAA;IACd,KAAK,OAAA;AACH,MAAA,OAAO,IAAA,CAAK,wBAAA,KAA6B,QAAA,GACrC,IAAA,CAAK,8BACL,IAAA,CAAK,4BAAA;AACb;AACF;AAEA,SAAS,eAAe,MAAA,EAA6B;AACnD,EAAA,IAAI;AACF,IAAA,OAAO,OAAO,UAAA,EAAW;AAC3B,EAAA,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,IAAA,OAAO,IAAA;AACT,EAAA;AACF;ACjFO,IAAM,gBAAA,GAAmB,CAC9B,GAAA,EACA,IAAA,KACgC;AATlC,EAAA,IAAAZ,IAAAA;AAUE,EAAA,IAAI,IAAA,CAAK,WAAA,CAAY,QAAA,EAAS,MAAA,CAAMA,IAAAA,GAAA,IAAA,CAAK,YAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,IAAAA,CAAmB,QAAA,EAAA,CAAA,EAAY;AACjE,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAC1C,EAAA;AAEA,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM;IAC/C,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,SAAS,GAAG;GAChD,CAAA;AAED,EAAA,OAAO,WAAA,GACH,EAAE,KAAA,EAAO,CAAC,EAAE,GAAA,EAAK,WAAA,EAAY,EAAE,EAAG,WAAW,CAAA,EAAE,GAC/C,WAAA,EAAY;AAClB,CAAA;AChBO,IAAM,gBAAA,GAAmB,CAC9B,GAAA,EACA,IAAA,KACuD;AACvD,EAAA,IAAI,IAAA,CAAK,iBAAiB,OAAA,EAAS;AACjC,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,EAAA,CAAG,IAAA,EAAM,IAAI,CAAA;EACnC,CAAA,MAAA,IAAW,IAAA,CAAK,iBAAiB,QAAA,EAAU;AACzC,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,GAAA,CAAI,IAAA,EAAM,IAAI,CAAA;AACpC,EAAA;AAEA,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,EAAA,CAAG,IAAA,EAAM;IAC9B,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,SAAS,GAAG;GAChD,CAAA;AACD,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,GAAA,CAAI,IAAA,EAAM;IAC/B,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,aAAa,OAAA,EAAS,CAAA,GAAI,MAAM,GAAG;GAC1D,CAAA;AAED,EAAA,OAAO;IACL,KAAA,EAAO,CAAC,GAAG,CAAC,CAAA,CAAE,OAAO,CAAC,CAAA,KAA4B,MAAM,MAAS;AACnE,GAAA;AACF,CAAA;ACvBO,SAAS,eAAA,CACd,KACA,IAAA,EAC6B;AAC7B,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AACrC;ACGO,SAAS,WAAA,CAAY,KAAgB,IAAA,EAAgC;AAC1E,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM;IACzC,GAAG,IAAA;AACH,IAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,OAAO;GAC3C,CAAA;AAED,EAAA,MAAM,MAAA,GAA6B;IACjC,IAAA,EAAM,OAAA;IACN,WAAA,EAAa,IAAA;AACb,IAAA;AACF,GAAA;AAEA,EAAA,IAAI,IAAI,OAAA,EAAS;AACf,IAAA,MAAA,CAAO,QAAA,GAAW,IAAI,OAAA,CAAQ,KAAA;AAChC,EAAA;AAEA,EAAA,IAAI,IAAI,OAAA,EAAS;AACf,IAAA,MAAA,CAAO,QAAA,GAAW,IAAI,OAAA,CAAQ,KAAA;AAChC,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;AChBO,SAAS,aAAA,CACd,KACA,IAAA,EACsB;AACtB,EAAA,IAAI,IAAI,IAAA,EAAM;AACZ,IAAA,OAAO;MACL,IAAA,EAAM,OAAA;AACN,MAAA,QAAA,EAAU,IAAI,KAAA,CAAM,MAAA;AACpB,MAAA,KAAA,EAAO,IAAI,KAAA,CACR,GAAA;AAAI,QAAA,CAAC,CAAA,EAAG,CAAA,KACP,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM;UACf,GAAG,IAAA;AACH,UAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,aAAa,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA,CAAE;SACnD;OACH,CACC,MAAA;QACC,CAAC,GAAA,EAAwB,MAAO,CAAA,KAAM,MAAA,GAAY,MAAM,CAAC,GAAG,KAAK,CAAC,CAAA;QAClE;AACF,OAAA;MACF,eAAA,EAAiB,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM;QACvC,GAAG,IAAA;AACH,QAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,WAAA,EAAa,iBAAiB;OACrD;AACH,KAAA;EACF,CAAA,MAAO;AACL,IAAA,OAAO;MACL,IAAA,EAAM,OAAA;AACN,MAAA,QAAA,EAAU,IAAI,KAAA,CAAM,MAAA;AACpB,MAAA,QAAA,EAAU,IAAI,KAAA,CAAM,MAAA;AACpB,MAAA,KAAA,EAAO,IAAI,KAAA,CACR,GAAA;AAAI,QAAA,CAAC,CAAA,EAAG,CAAA,KACP,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM;UACf,GAAG,IAAA;AACH,UAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,aAAa,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA,CAAE;SACnD;OACH,CACC,MAAA;QACC,CAAC,GAAA,EAAwB,MAAO,CAAA,KAAM,MAAA,GAAY,MAAM,CAAC,GAAG,KAAK,CAAC,CAAA;QAClE;AACF;AACJ,KAAA;AACF,EAAA;AACF;ACtDO,SAAS,iBAAA,GAA8C;AAC5D,EAAA,OAAO;AACL,IAAA,GAAA,EAAK,WAAA;AACP,GAAA;AACF;ACNO,SAAS,eAAA,GAA0C;AACxD,EAAA,OAAO,WAAA,EAAY;AACrB;ACFO,IAAM,gBAAA,GAAmB,CAAC,GAAA,EAA0B,IAAA,KAAe;AACxE,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAC1C,CAAA;AC8BO,IAAM,YAAA,GAAe,CAC1B,GAAA,EACA,QAAA,EACA,IAAA,KACiD;AACjD,EAAA,QAAQ,QAAA;AACN,IAAA,KAAKU,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC,IAAA,KAAKA,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,eAAe,GAAG,CAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC,IAAA,KAAKA,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,eAAe,GAAG,CAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,EAAgB;AACzB,IAAA,KAAKA,wBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,YAAA,CAAa,KAAK,IAAI,CAAA;AAC/B,IAAA,KAAKA,wBAAAA,CAAsB,YAAA;AACzB,MAAA,OAAO,iBAAA,EAAkB;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,YAAA,EAAa;AACtB,IAAA,KAAKA,wBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAChC,IAAA,KAAKA,wBAAAA,CAAsB,QAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,qBAAA;AACzB,MAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAChC,IAAA,KAAKA,wBAAAA,CAAsB,eAAA;AACzB,MAAA,OAAO,oBAAA,CAAqB,KAAK,IAAI,CAAA;AACvC,IAAA,KAAKA,wBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAChC,IAAA,KAAKA,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,gBAAgB,GAAG,CAAA;AAC5B,IAAA,KAAKA,wBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,aAAa,GAAG,CAAA;AACzB,IAAA,KAAKA,wBAAAA,CAAsB,aAAA;AACzB,MAAA,OAAO,mBAAmB,GAAG,CAAA;AAC/B,IAAA,KAAKA,wBAAAA,CAAsB,WAAA;AACzB,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AACnC,IAAA,KAAKA,wBAAAA,CAAsB,WAAA;AACzB,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AACnC,IAAA,KAAKA,wBAAAA,CAAsB,MAAA;AACzB,MAAA,OAAO,WAAA,CAAY,KAAK,IAAI,CAAA;AAC9B,IAAA,KAAKA,wBAAAA,CAAsB,MAAA;AACzB,MAAA,OAAO,WAAA,CAAY,KAAK,IAAI,CAAA;AAC9B,IAAA,KAAKA,wBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,MAAO,GAAA,CAAY,MAAA,EAAO,CAAE,IAAA;AACrC,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAClC,IAAA,KAAKA,wBAAAA,CAAsB,MAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO,aAAA,EAAc;AACvB,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAClC,IAAA,KAAKA,wBAAAA,CAAsB,MAAA;AACzB,MAAA,OAAO,WAAA,EAAY;AACrB,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,EAAgB;AACzB,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAClC,IAAA,KAAKA,wBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAClC,IAAA,KAAKA,wBAAAA,CAAsB,WAAA;AACzB,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AACnC,IAAA,KAAKA,wBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO,aAAA,CAAc,KAAK,IAAI,CAAA;AAChC,IAAA,KAAKA,wBAAAA,CAAsB,WAAA;AACzB,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AACnC,IAAA,KAAKA,wBAAAA,CAAsB,WAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,OAAA;AAC3B,IAAA,KAAKA,wBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,MAAA;AACT,IAAA;AAEE,MAAA,uBAAQ,CAAA,CAAC,CAAA,KAAa,MAAA,EAAmB,CAAA;AAC7C;AACF,CAAA;AC1GO,SAAS,QAAA,CACd,GAAA,EACA,IAAA,EACA,eAAA,GAAkB,KAAA,EACW;AAZ/B,EAAA,IAAAV,IAAAA;AAaE,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAElC,EAAA,IAAI,KAAK,QAAA,EAAU;AACjB,IAAA,MAAM,kBAAiBA,IAAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,SAAAA,IAAAA,CAAA,IAAA;AAAA,MAAA,IAAA;AACrB,MAAA,GAAA;AACA,MAAA,IAAA;AACA,MAAA,QAAA;AACA,MAAA;AAAA,KAAA;AAGF,IAAA,IAAI,mBAAmB,cAAA,EAAgB;AACrC,MAAA,OAAO,cAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA,IAAI,QAAA,IAAY,CAAC,eAAA,EAAiB;AAChC,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,EAAU,IAAI,CAAA;AAEzC,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,OAAO,UAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA,MAAM,UAAgB,EAAE,GAAA,EAAK,MAAM,IAAA,CAAK,WAAA,EAAa,YAAY,MAAA,EAAU;AAE3E,EAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,OAAO,CAAA;AAE1B,EAAA,MAAM,kBAAA,GAAqB,YAAA,CAAa,GAAA,EAAM,GAAA,CAAY,UAAU,IAAI,CAAA;AAGxE,EAAA,MAAMa,WAAAA,GACJ,OAAO,kBAAA,KAAuB,UAAA,GAC1B,SAAS,kBAAA,EAAmB,EAAG,IAAI,CAAA,GACnC,kBAAA;AAEN,EAAA,IAAIA,WAAAA,EAAY;AACd,IAAA,OAAA,CAAQ,GAAA,EAAK,MAAMA,WAAU,CAAA;AAC/B,EAAA;AAEA,EAAA,IAAI,KAAK,WAAA,EAAa;AACpB,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,WAAA,CAAYA,WAAAA,EAAY,KAAK,IAAI,CAAA;AAEhE,IAAA,OAAA,CAAQ,UAAA,GAAaA,WAAAA;AAErB,IAAA,OAAO,iBAAA;AACT,EAAA;AAEA,EAAA,OAAA,CAAQ,UAAA,GAAaA,WAAAA;AAErB,EAAA,OAAOA,WAAAA;AACT;AAEA,IAAM,OAAA,GAAU,CACd,IAAA,EACA,IAAA,KAMe;AACf,EAAA,QAAQ,KAAK,YAAA;IACX,KAAK,MAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAE;IACrC,KAAK,UAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,eAAA,CAAgB,KAAK,WAAA,EAAa,IAAA,CAAK,IAAI,CAAA,EAAE;IAC9D,KAAK,MAAA;AACL,IAAA,KAAK,MAAA,EAAQ;AACX,MAAA,IACE,KAAK,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,UACpC,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAC,OAAO,KAAA,KAAU,IAAA,CAAK,YAAY,KAAK,CAAA,KAAM,KAAK,CAAA,EACnE;AACA,QAAA,OAAA,CAAQ,IAAA;AACN,UAAA,CAAA,gCAAA,EAAmC,KAAK,WAAA,CAAY,IAAA;AAClD,YAAA;WACD,CAAA,mBAAA;AACH,SAAA;AAEA,QAAA,OAAO,WAAA,EAAY;AACrB,MAAA;AAEA,MAAA,OAAO,IAAA,CAAK,YAAA,KAAiB,MAAA,GAAS,WAAA,EAAY,GAAI,MAAA;AACxD,IAAA;AACF;AACF,CAAA;AAEA,IAAM,OAAA,GAAU,CACd,GAAA,EACA,IAAA,EACAA,WAAAA,KACoB;AACpB,EAAA,IAAI,IAAI,WAAA,EAAa;AACnBA,IAAAA,WAAAA,CAAW,cAAc,GAAA,CAAI,WAAA;AAC/B,EAAA;AACA,EAAA,OAAOA,WAAAA;AACT,CAAA;AC5FO,IAAM,OAAA,GAAU,CAAC,OAAA,KAA8C;AACpE,EAAA,MAAM,QAAA,GAAW,kBAAkB,OAAO,CAAA;AAC1C,EAAA,MAAM,WAAA,GACJ,QAAA,CAAS,IAAA,KAAS,MAAA,GACd,CAAC,GAAG,QAAA,CAAS,QAAA,EAAU,QAAA,CAAS,cAAA,EAAgB,QAAA,CAAS,IAAI,IAC7D,QAAA,CAAS,QAAA;AACf,EAAA,OAAO;IACL,GAAG,QAAA;AACH,IAAA,WAAA;IACA,YAAA,EAAc,MAAA;AACd,IAAA,IAAA,EAAM,IAAI,GAAA;MACR,MAAA,CAAO,OAAA,CAAQ,SAAS,WAAW,CAAA,CAAE,IAAI,CAAC,CAAChB,MAAAA,EAAM,GAAG,CAAA,KAAM;QACxD,GAAA,CAAI,IAAA;AACJ,QAAA;AACE,UAAA,GAAA,EAAK,GAAA,CAAI,IAAA;AACT,UAAA,IAAA,EAAM,CAAC,GAAG,QAAA,CAAS,QAAA,EAAU,QAAA,CAAS,gBAAgBA,MAAI,CAAA;;UAE1D,UAAA,EAAY;AACd;OACD;AACH;AACF,GAAA;AACF,CAAA;AC/BA,IAAM,eAAA,GAAkB,CACtB,MAAA,EACA,OAAA,KAMG;AAfL,EAAA,IAAAG,IAAAA;AAgBE,EAAA,MAAM,IAAA,GAAO,QAAQ,OAAO,CAAA;AAE5B,EAAA,IAAI,WAAA,GACF,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,CAAQ,cACnC,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA,CAAE,MAAA;AAClC,IAAA,CAAC,GAAA,EAAyC,CAACH,MAAAA,EAAMiB,OAAM,CAAA,KAAG;AArBpE,MAAA,IAAAd,IAAAA;AAqBwE,MAAA,OAAA;QAC5D,GAAG,GAAA;QACH,CAACH,MAAI,IACHG,IAAAA,GAAA,QAAA;UACEc,OAAAA,CAAO,IAAA;AACP,UAAA;YACE,GAAG,IAAA;AACH,YAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,gBAAgBjB,MAAI;AAC3D,WAAA;AACA,UAAA;SACF,KAPA,IAAA,GAAAG,OAOK,WAAA;AACT,OAAA;AAAA,IAAA,CAAA;IACA;GACF,GACA,MAAA;AAEN,EAAA,MAAMH,MAAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GACf,WACA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,kBAAiB,OAAA,GACxB,MAAA,GACA,OAAA,IAAA,IAAA,GAAA,SAAA,OAAA,CAAS,IAAA;AAEjB,EAAA,MAAM,QACJG,IAAAA,GAAA,QAAA;IACE,MAAA,CAAO,IAAA;AACPH,IAAAA,MAAAA,KAAS,SACL,IAAA,GACA;MACE,GAAG,IAAA;AACH,MAAA,WAAA,EAAa,CAAC,GAAG,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,gBAAgBA,MAAI;AAC3D,KAAA;AACJ,IAAA;GACF,KATA,IAAA,GAAAG,OASM,WAAA,EAAY;AAEpB,EAAA,MAAM,KAAA,GACJ,OAAO,OAAA,KAAY,QAAA,IACnB,OAAA,CAAQ,IAAA,KAAS,MAAA,IACjB,OAAA,CAAQ,YAAA,KAAiB,OAAA,GACrB,OAAA,CAAQ,IAAA,GACR,MAAA;AAEN,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACf,EAAA;AAEA,EAAA,MAAM,QAAA,GACJH,MAAAA,KAAS,MAAA,GACL,WAAA,GACE;IACE,GAAG,IAAA;IACH,CAAC,IAAA,CAAK,cAAc,GAAG;AACzB,GAAA,GACA,IAAA,GACF;IACE,IAAA,EAAM;AACJ,MAAA,GAAI,IAAA,CAAK,YAAA,KAAiB,UAAA,GAAa,KAAK,IAAA,CAAK,QAAA;MACjD,IAAA,CAAK,cAAA;AACLA,MAAAA;AACF,KAAA,CAAE,KAAK,GAAG,CAAA;IACV,CAAC,IAAA,CAAK,cAAc,GAAG;MACrB,GAAG,WAAA;AACH,MAAA,CAACA,MAAI,GAAG;AACV;AACF,GAAA;AAEN,EAAA,QAAA,CAAS,OAAA,GAAU,yCAAA;AAEnB,EAAA,OAAO,QAAA;AACT,CAAA;ACpDA,IAAO,0BAAA,GAAQ,eAAA;AChCR,SAAS,UAAA,CACdkB,YACA,OAAA,EASgB;AAjBlB,EAAA,IAAAf,IAAAA;AAmBE,EAAA,MAAM,aAAA,GAAA,CAAgBA,OAAA,OAAS,KAAT,OAAAA,IAAAA,GAA0B,KAAA;AAEhD,EAAA,OAAO,UAAA;;AAEL,IAAA,MACE,2BAAgBe,UAAAA,EAAW;AACzB,MAAA,YAAA,EAAc,gBAAgB,MAAA,GAAS;KACxC,CAAA;AACH,IAAA;AACE,MAAA,QAAA,EAAU,OAAM,KAAA,KAAS;AACvB,QAAA,MAAM,MAAA,GAAS,MAAMA,UAAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AACnD,QAAA,OAAO,MAAA,CAAO,OAAA,GACV,EAAE,OAAA,EAAS,MAAM,KAAA,EAAO,MAAA,CAAO,IAAA,EAAK,GACpC,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAM;AAC5C,MAAA;AACF;AACF,GAAA;AACF;AAEO,SAAS,UAAA,CACdA,YACA,OAAA,EASgB;AAjDlB,EAAA,IAAAf,IAAAA;AAmDE,EAAA,MAAM,aAAA,GAAA,CAAgBA,OAAA,OAAS,KAAT,OAAAA,IAAAA,GAA0B,KAAA;AAEhD,EAAA,OAAO,UAAA;;AAEL,IAAA,MACKgB,2BAAaD,UAAAA,EAAW;MACzB,MAAA,EAAQ,SAAA;MACR,EAAA,EAAI,QAAA;AACJ,MAAA,MAAA,EAAQ,gBAAgB,KAAA,GAAQ;KACjC,CAAA;AACH,IAAA;AACE,MAAA,QAAA,EAAU,OAAM,KAAA,KAAS;AACvB,QAAA,MAAM,MAAA,GAAS,MAASC,aAAA,CAAA,cAAA,CAAeD,UAAAA,EAAW,KAAK,CAAA;AACvD,QAAA,OAAO,MAAA,CAAO,OAAA,GACV,EAAE,OAAA,EAAS,MAAM,KAAA,EAAO,MAAA,CAAO,IAAA,EAAK,GACpC,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAM;AAC5C,MAAA;AACF;AACF,GAAA;AACF;AAEO,SAAS,aACdA,UAAAA,EACyC;AAEzC,EAAA,OAAO,MAAA,IAAUA,UAAAA;AACnB;AAEO,SAAS,SAAA,CACdA,YAGA,OAAA,EASgB;AAChB,EAAA,IAAI,YAAA,CAAaA,UAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,UAAA,CAAWA,UAAkB,CAAA;EACtC,CAAA,MAAO;AACL,IAAA,OAAO,UAAA,CAAWA,UAAkB,CAAA;AACtC,EAAA;AACF;ACzFA,IAAM,YAAA,mBAAe,MAAA,CAAO,GAAA,CAAI,kBAAkB,CAAA;AA2B3C,SAAS,WACd,YAAA,EACoB;AAEpB,EAAA,IAAI,MAAA;AACJ,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,MAAA,GAAS,YAAA,EAAa;AACxB,IAAA;AACA,IAAA,OAAO,MAAA;AACT,EAAA,CAAA;AACF;AA4BO,SAAS,WACdF,WAAAA,EACA;AACE,EAAA;AACF,CAAA,GAII,EAAC,EACW;AAChB,EAAA,OAAO;AACL,IAAA,CAAC,YAAY,GAAG,IAAA;IAChB,KAAA,EAAO,MAAA;;AACP,IAAA,CAAC,eAAe,GAAG,IAAA;AACnB,IAAA,IAAI,UAAA,GAAa;AACf,MAAA,IAAI,OAAOA,gBAAe,UAAA,EAAY;AACpCA,QAAAA,WAAAA,GAAaA,WAAAA,EAAW;AAC1B,MAAA;AACA,MAAA,OAAOA,WAAAA;AACT,IAAA,CAAA;AACA,IAAA;AACF,GAAA;AACF;AC9FA,IAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,UAAA;AAEhB,SAAS,0BAA0B,YAAA,EAAsB;AAC9D,EAAA,MAAM,SAAA,GAAY,aAAa,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG,CAAA;AACnE,EAAA,MAAM,YAAA,GAAe,KAAK,SAAS,CAAA;AACnC,EAAA,OAAO,UAAA,CAAW,KAAK,YAAA,EAAc,CAAA,SAAQ,IAAA,CAAK,WAAA,CAAY,CAAC,CAAE,CAAA;AACnE;AAEO,SAAS,0BAA0B,KAAA,EAA2B;AACnE,EAAA,IAAI,YAAA,GAAe,EAAA;AAInB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,YAAA,IAAgB,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/C,EAAA;AAEA,EAAA,OAAO,KAAK,YAAY,CAAA;AAC1B;AAEO,SAAS,gBAAgB,KAAA,EAAoC;AAClE,EAAA,OAAO,KAAA,YAAiB,UAAA,GAAa,yBAAA,CAA0B,KAAK,CAAA,GAAI,KAAA;AAC1E;ACtBO,IAAM,qBAAA,GAAwBI,KAAE,MAAA,CAAO;AAC5C,EAAA,KAAA,EAAOA,KAAE,MAAA,CAAO;AACd,IAAA,OAAA,EAASA,KAAE,MAAA,EAAO;;;;IAKlB,IAAA,EAAMA,IAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;IACzB,KAAA,EAAOA,IAAA,CAAE,GAAA,EAAI,CAAE,OAAA,EAAQ;IACvB,IAAA,EAAMA,IAAA,CAAE,KAAA,CAAM,CAACA,IAAA,CAAE,MAAA,EAAO,EAAGA,IAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,OAAA;GACzC;AACH,CAAC,CAAA;AAIM,IAAM,8BAA8B,8BAAA,CAA+B;EACxE,WAAA,EAAa,qBAAA;EACb,cAAA,EAAgB,CAAA,IAAA,KAAQ,IAAA,CAAK,KAAA,CAAM;AACrC,CAAC,CAAA;ACbM,SAAS,2BAAA,CAA4B;AAC1C,EAAA,MAAA;EACA,iBAAA,GAAoB;AACtB,CAAA,EAME;AACA,EAAA,MAAM,WAA6B,EAAC;AACpC,EAAA,MAAM,WAA8C,EAAC;AAErD,EAAA,KAAA,MAAW,EAAE,IAAA,EAAM,OAAA,EAAQ,IAAK,MAAA,EAAQ;AACtC,IAAA,QAAQ,IAAA;AACN,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,QAAQ,iBAAA;AACN,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,CAAA;AACzC,YAAA;AACF,UAAA;AACA,UAAA,KAAK,WAAA,EAAa;AAChB,YAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,WAAA,EAAa,SAAS,CAAA;AAC5C,YAAA;AACF,UAAA;AACA,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,QAAA,CAAS,IAAA,CAAK;cACZ,IAAA,EAAM,OAAA;cACN,OAAA,EAAS;aACV,CAAA;AACD,YAAA;AACF,UAAA;UACA,SAAS;AACP,YAAA,MAAM,gBAAA,GAA0B,iBAAA;AAChC,YAAA,MAAM,IAAI,KAAA;AACR,cAAA,CAAA,iCAAA,EAAoC,gBAAgB,CAAA;AACtD,aAAA;AACF,UAAA;AACF;AACA,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,IAAI,QAAQ,MAAA,KAAW,CAAA,IAAK,QAAQ,CAAC,CAAA,CAAE,SAAS,MAAA,EAAQ;AACtD,UAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA;AACxD,UAAA;AACF,QAAA;AAEA,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,MAAA;AACN,UAAA,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AA1DhD,YAAA,IAAAjB,MAAA,EAAA,EAAA,EAAA;AA2DY,YAAA,QAAQ,KAAK,IAAA;AACX,cAAA,KAAK,MAAA,EAAQ;AACX,gBAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,IAAA,EAAK;AACzC,cAAA;AACA,cAAA,KAAK,MAAA,EAAQ;AACX,gBAAA,IAAI,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,EAAG;AACvC,kBAAA,MAAM,SAAA,GACJ,IAAA,CAAK,SAAA,KAAc,SAAA,GACf,eACA,IAAA,CAAK,SAAA;AAEX,kBAAA,OAAO;oBACL,IAAA,EAAM,WAAA;oBACN,SAAA,EAAW;AACT,sBAAA,GAAA,EACE,IAAA,CAAK,IAAA,YAAgB,GAAA,GACjB,IAAA,CAAK,IAAA,CAAK,QAAA,EAAS,GACnB,CAAA,KAAA,EAAQ,SAAS,CAAA,QAAA,EAAW,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;;sBAG5D,MAAA,EAAA,CAAQ,EAAA,GAAA,CAAAA,IAAAA,GAAA,IAAA,CAAK,eAAA,KAAL,IAAA,GAAA,SAAAA,IAAAA,CAAsB,MAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8B;AACxC;AACF,mBAAA;AACF,gBAAA,CAAA,MAAA,IAAW,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC9C,kBAAA,IAAI,IAAA,CAAK,gBAAgB,GAAA,EAAK;AAC5B,oBAAA,MAAM,IAAI,6BAAA,CAA8B;sBACtC,aAAA,EAAe;qBAChB,CAAA;AACH,kBAAA;AAEA,kBAAA,QAAQ,KAAK,SAAA;AACX,oBAAA,KAAK,WAAA,EAAa;AAChB,sBAAA,OAAO;wBACL,IAAA,EAAM,aAAA;wBACN,WAAA,EAAa;0BACX,IAAA,EAAM,eAAA,CAAgB,KAAK,IAAI,CAAA;0BAC/B,MAAA,EAAQ;AACV;AACF,uBAAA;AACF,oBAAA;oBACA,KAAK,WAAA;AACL,oBAAA,KAAK,YAAA,EAAc;AACjB,sBAAA,OAAO;wBACL,IAAA,EAAM,aAAA;wBACN,WAAA,EAAa;0BACX,IAAA,EAAM,eAAA,CAAgB,KAAK,IAAI,CAAA;0BAC/B,MAAA,EAAQ;AACV;AACF,uBAAA;AACF,oBAAA;oBAEA,SAAS;AACP,sBAAA,MAAM,IAAI,6BAAA,CAA8B;wBACtC,aAAA,EAAe,CAAA,oCAAA,EAAuC,KAAK,SAAS,CAAA;uBACrE,CAAA;AACH,oBAAA;AACF;gBACF,CAAA,MAAA,IAAW,IAAA,CAAK,cAAc,iBAAA,EAAmB;AAC/C,kBAAA,IAAI,IAAA,CAAK,gBAAgB,GAAA,EAAK;AAC5B,oBAAA,MAAM,IAAI,6BAAA,CAA8B;sBACtC,aAAA,EAAe;qBAChB,CAAA;AACH,kBAAA;AAEA,kBAAA,OAAO;oBACL,IAAA,EAAM,MAAA;AACN,oBAAA,IAAA,EACE,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IACrB,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,GACxB,EAAE,OAAA,EAAS,IAAA,CAAK,MAAK,GACrB;AACE,sBAAA,QAAA,EAAA,CAAU,KAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,EAAA,GAAiB,QAAQ,KAAK,CAAA,IAAA,CAAA;AACxC,sBAAA,SAAA,EAAW,CAAA,4BAAA,EAA+B,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAA;AACtE;AACR,mBAAA;gBACF,CAAA,MAAO;AACL,kBAAA,MAAM,IAAI,6BAAA,CAA8B;oBACtC,aAAA,EAAe,CAAA,qBAAA,EAAwB,KAAK,SAAS,CAAA;mBACtD,CAAA;AACH,gBAAA;AACF,cAAA;AACF;UACF,CAAC;SACF,CAAA;AAED,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,WAAA,EAAa;AAChB,QAAA,IAAI,IAAA,GAAO,EAAA;AACX,QAAA,MAAM,YAID,EAAC;AAEN,QAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,UAAA,QAAQ,KAAK,IAAA;AACX,YAAA,KAAK,MAAA,EAAQ;AACX,cAAA,IAAA,IAAQ,IAAA,CAAK,IAAA;AACb,cAAA;AACF,YAAA;AACA,YAAA,KAAK,WAAA,EAAa;AAChB,cAAA,SAAA,CAAU,IAAA,CAAK;AACb,gBAAA,EAAA,EAAI,IAAA,CAAK,UAAA;gBACT,IAAA,EAAM,UAAA;gBACN,QAAA,EAAU;AACR,kBAAA,IAAA,EAAM,IAAA,CAAK,QAAA;kBACX,SAAA,EAAW,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK;AACtC;eACD,CAAA;AACD,cAAA;AACF,YAAA;AACF;AACF,QAAA;AAEA,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,WAAA;UACN,OAAA,EAAS,IAAA;UACT,UAAA,EAAY,SAAA,CAAU,MAAA,GAAS,CAAA,GAAI,SAAA,GAAY;SAChD,CAAA;AAED,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,KAAA,MAAW,gBAAgB,OAAA,EAAS;AAClC,UAAA,MAAM,SAAS,YAAA,CAAa,MAAA;AAE5B,UAAA,IAAI,YAAA;AACJ,UAAA,QAAQ,OAAO,IAAA;YACb,KAAK,MAAA;YACL,KAAK,YAAA;AACH,cAAA,YAAA,GAAe,MAAA,CAAO,KAAA;AACtB,cAAA;YACF,KAAK,SAAA;YACL,KAAK,MAAA;YACL,KAAK,YAAA;AACH,cAAA,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAK,CAAA;AAC1C,cAAA;AACJ;AAEA,UAAA,QAAA,CAAS,IAAA,CAAK;YACZ,IAAA,EAAM,MAAA;AACN,YAAA,YAAA,EAAc,YAAA,CAAa,UAAA;YAC3B,OAAA,EAAS;WACV,CAAA;AACH,QAAA;AACA,QAAA;AACF,MAAA;MAEA,SAAS;AACP,QAAA,MAAM,gBAAA,GAA0B,IAAA;AAChC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,gBAAgB,CAAA,CAAE,CAAA;AACzD,MAAA;AACF;AACF,EAAA;AAEA,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AC1NO,SAAS,mBAAA,CAAoB;AAClC,EAAA,EAAA;AACA,EAAA,KAAA;AACA,EAAA;AACF,CAAA,EAIG;AACD,EAAA,OAAO;IACL,EAAA,EAAI,EAAA,IAAA,OAAA,EAAA,GAAM,MAAA;IACV,OAAA,EAAS,KAAA,IAAA,OAAA,KAAA,GAAS,MAAA;AAClB,IAAA,SAAA,EAAW,OAAA,GAAU,IAAI,IAAA,CAAK,OAAA,GAAU,GAAI,CAAA,GAAI;AAClD,GAAA;AACF;ACZO,SAAS,sBACd,YAAA,EAC6B;AAC7B,EAAA,QAAQ,YAAA;IACN,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;IACT,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;IACT,KAAK,gBAAA;AACH,MAAA,OAAO,gBAAA;IACT,KAAK,eAAA;IACL,KAAK,YAAA;AACH,MAAA,OAAO,YAAA;AACT,IAAA;AACE,MAAA,OAAO,SAAA;AACX;AACF;ACSO,IAAM,wBAAA,GAA2B,aAAA;EAAc,MACpD,SAAA;AACEiB,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACvB,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MAC5B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,MAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,OAAA,EAASA,KAAE,MAAA,CAAO;AAChB,YAAA,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,WAAW,CAAA,CAAE,OAAA,EAAQ;YACrC,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC5B,YAAA,UAAA,EAAYA,IAAAA,CACT,KAAA;AACCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;gBACvB,IAAA,EAAMA,IAAAA,CAAE,QAAQ,UAAU,CAAA;AAC1B,gBAAA,QAAA,EAAUA,KAAE,MAAA,CAAO;AACjB,kBAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,kBAAA,SAAA,EAAWA,KAAE,MAAA;iBACd;eACF;AACH,aAAA,CACC,OAAA,EAAQ;AACX,YAAA,WAAA,EAAaA,IAAAA,CACV,KAAA;AACCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,cAAc,CAAA;AAC9B,gBAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,gBAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;AACpB,gBAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,gBAAA,KAAA,EAAOA,KAAE,MAAA;eACV;AACH,aAAA,CACC,OAAA;WACJ,CAAA;AACD,UAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,UAAA,QAAA,EAAUA,KACP,MAAA,CAAO;AACN,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,gBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,gBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,gBAAA,YAAA,EAAcA,IAAAA,CAAE,KAAA;AACdA,kBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,oBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,oBAAA,OAAA,EAASA,KAAE,MAAA;mBACZ;AACH;eACD;AACH,aAAA,CACC,OAAA;AACL,WAAC,EACA,OAAA,EAAQ;UACX,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;SAC3B;AACH,OAAA;AACA,MAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;QACN,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QAClC,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QACtC,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACjC,QAAA,qBAAA,EAAuBA,KACpB,MAAA,CAAO;UACN,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;AAC5B,SAAC,EACA,OAAA,EAAQ;AACX,QAAA,yBAAA,EAA2BA,KACxB,MAAA,CAAO;UACN,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;UACrC,0BAAA,EAA4BA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;UAC/C,0BAAA,EAA4BA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;AACzC,SAAC,EACA,OAAA;AACL,OAAC,EACA,OAAA;KACJ;AACH;AACF,CAAA;AAIO,IAAM,qBAAA,GAAwB,aAAA;EAAc,MACjD,SAAA;AACEA,IAAAA,IAAAA,CAAE,KAAA,CAAM;AACNA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QACvB,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QAC5B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,QAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,UAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,YAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;AACN,cAAA,IAAA,EAAMA,KAAE,IAAA,CAAK,CAAC,WAAW,CAAC,EAAE,OAAA,EAAQ;cACpC,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC5B,cAAA,UAAA,EAAYA,IAAAA,CACT,KAAA;AACCA,gBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,kBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;kBAChB,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACvB,kBAAA,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,CAAE,OAAA,EAAQ;AACpC,kBAAA,QAAA,EAAUA,KAAE,MAAA,CAAO;oBACjB,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;oBACzB,SAAA,EAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;mBACvB;iBACF;AACH,eAAA,CACC,OAAA,EAAQ;AACX,cAAA,WAAA,EAAaA,IAAAA,CACV,KAAA;AACCA,gBAAAA,IAAAA,CAAE,MAAA,CAAO;kBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,cAAc,CAAA;AAC9B,kBAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,kBAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;AACpB,kBAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,kBAAA,KAAA,EAAOA,KAAE,MAAA;iBACV;AACH,eAAA,CACC,OAAA;AACL,aAAC,EACA,OAAA,EAAQ;AACX,YAAA,QAAA,EAAUA,KACP,MAAA,CAAO;AACN,cAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,gBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,kBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,kBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,kBAAA,YAAA,EAAcA,IAAAA,CAAE,KAAA;AACdA,oBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,sBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,sBAAA,OAAA,EAASA,KAAE,MAAA;qBACZ;AACH;iBACD;AACH,eAAA,CACC,OAAA;AACL,aAAC,EACA,OAAA,EAAQ;YACX,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAClC,YAAA,KAAA,EAAOA,KAAE,MAAA;WACV;AACH,SAAA;AACA,QAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;UACN,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;UAClC,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;UACtC,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACjC,UAAA,qBAAA,EAAuBA,KACpB,MAAA,CAAO;YACN,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;AAC5B,WAAC,EACA,OAAA,EAAQ;AACX,UAAA,yBAAA,EAA2BA,KACxB,MAAA,CAAO;YACN,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YACrC,0BAAA,EAA4BA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YAC/C,0BAAA,EAA4BA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;AACzC,WAAC,EACA,OAAA;AACL,SAAC,EACA,OAAA;OACJ,CAAA;AACD,MAAA;KACD;AACH;AACF,CAAA;ACjJO,IAAM,8BAAA,GAAiCC,aAAAA;EAAc,MAC1DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;;;;;;;MAOP,SAAA,EAAWA,IAAAA,CAAE,MAAA,CAAOA,IAAAA,CAAE,MAAA,CAAO,MAAA,IAAkBA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS;;;;;;;;;;MAWpE,QAAA,EAAUA,IAAAA,CAAE,KAAA,CAAM,CAACA,IAAAA,CAAE,OAAA,EAAQ,EAAGA,IAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;;;;MAKtD,iBAAA,EAAmBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;;;;;MAMxC,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;MAK1B,eAAA,EAAiBA,IAAAA,CACd,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CACjD,QAAA,EAAS;;;;MAKZ,mBAAA,EAAqBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;MAKzC,KAAA,EAAOA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;;;;AAK5B,MAAA,QAAA,EAAUA,IAAAA,CAAE,MAAA,CAAOA,IAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,CAAA,EAAGA,IAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,GAAG,CAAC,EAAE,QAAA,EAAS;;;;MAKrE,UAAA,EAAYA,IAAAA,CAAE,OAAOA,IAAAA,CAAE,MAAA,IAAUA,IAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;;;;;;MAOnD,iBAAA,EAAmBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;;;;;;;;;;;MAYxC,WAAA,EAAaA,IAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,QAAQ,UAAA,EAAY,SAAS,CAAC,CAAA,CAAE,QAAA,EAAS;;;;;;MAOtE,gBAAA,EAAkBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;;;;;MAMvC,aAAA,EAAeA,IAAAA,CAAE,KAAK,CAAC,KAAA,EAAO,UAAU,MAAM,CAAC,EAAE,QAAA,EAAS;;;;;MAM1D,cAAA,EAAgBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;;;;;;AAUpC,MAAA,oBAAA,EAAsBA,KAAE,IAAA,CAAK,CAAC,aAAa,KAAK,CAAC,EAAE,QAAA,EAAS;;;;;;;;MAS5D,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;KAC9B;AACH;AACF,CAAA;AC5JO,SAAS,gBAAA,CAAiB;AAC/B,EAAA,KAAA;AACA,EAAA,UAAA;AACA,EAAA,iBAAA;AACA,EAAA;AACF,CAAA,EASE;AAEA,EAAA,KAAA,GAAA,CAAQ,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,UAAS,KAAA,GAAQ,MAAA;AAEhC,EAAA,MAAM,eAA6C,EAAC;AAEpD,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAW,UAAA,EAAY,QAAW,YAAA,EAAa;AACjE,EAAA;AAEA,EAAA,MAAM,cAAwC,EAAC;AAE/C,EAAA,KAAA,MAAWR,SAAQ,KAAA,EAAO;AACxB,IAAA,QAAQA,MAAK,IAAA;MACX,KAAK,UAAA;AACH,QAAA,WAAA,CAAY,IAAA,CAAK;UACf,IAAA,EAAM,UAAA;UACN,QAAA,EAAU;AACR,YAAA,IAAA,EAAMA,KAAAA,CAAK,IAAA;AACX,YAAA,WAAA,EAAaA,KAAAA,CAAK,WAAA;AAClB,YAAA,UAAA,EAAYA,KAAAA,CAAK,WAAA;AACjB,YAAA,MAAA,EAAQ,oBAAoB,gBAAA,GAAmB;AACjD;SACD,CAAA;AACD,QAAA;AACF,MAAA;AACE,QAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAAA,OAAM,CAAA;AACpD,QAAA;AACJ;AACF,EAAA;AAEA,EAAA,IAAI,cAAc,IAAA,EAAM;AACtB,IAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,QAAW,YAAA,EAAa;AACnE,EAAA;AAEA,EAAA,MAAM,OAAO,UAAA,CAAW,IAAA;AAExB,EAAA,QAAQ,IAAA;IACN,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,UAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,MAAM,YAAA,EAAa;IAC9D,KAAK,MAAA;AACH,MAAA,OAAO;QACL,KAAA,EAAO,WAAA;QACP,UAAA,EAAY;UACV,IAAA,EAAM,UAAA;UACN,QAAA,EAAU;AACR,YAAA,IAAA,EAAM,UAAA,CAAW;AACnB;AACF,SAAA;AACA,QAAA;AACF,OAAA;IACF,SAAS;AACP,MAAA,MAAM,gBAAA,GAA0B,IAAA;AAChC,MAAA,MAAM,IAAIU,6BAAAA,CAA8B;AACtC,QAAA,aAAA,EAAe,qBAAqB,gBAAgB,CAAA;OACrD,CAAA;AACH,IAAA;AACF;AACF;ACxCO,IAAM,0BAAN,MAAyD;AAW9D,EAAA,WAAA,CAAY,SAA4B,MAAA,EAA0B;AAVlE,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAIhC,IAAA,IAAA,CAAS,aAAA,GAAgB;AACvB,MAAA,SAAA,EAAW,CAAC,iBAAiB;AAC/B,KAAA;AAKE,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,EAAA;AAEA,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAEA,EAAA,MAAc,OAAA,CAAQ;AACpB,IAAA,MAAA;AACA,IAAA,eAAA;AACA,IAAA,WAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,gBAAA;AACA,IAAA,eAAA;AACA,IAAA,aAAA;AACA,IAAA,cAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA;GACF,EAA+B;AA9EjC,IAAA,IAAAnB,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AA+EI,IAAA,MAAM,WAAyC,EAAC;AAGhD,IAAA,MAAM,aAAA,GAAA,CACHA,IAAAA,GAAA,MAAM,oBAAA,CAAqB;MAC1B,QAAA,EAAU,QAAA;AACV,MAAA,eAAA;MACA,MAAA,EAAQ;KACT,CAAA,KAJA,IAAA,GAAAA,IAAAA,GAIM,EAAC;AAEV,IAAA,MAAM,iBAAA,GAAA,CAAoB,EAAA,GAAA,aAAA,CAAc,iBAAA,KAAd,OAAA,EAAA,GAAmC,IAAA;AAE7D,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS;OACV,CAAA;AACH,IAAA;AAEA,IAAA,IAAA,CACE,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,IAAA,MAAS,UACzB,cAAA,CAAe,MAAA,IAAU,IAAA,IACzB,CAAC,iBAAA,EACD;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,gBAAA;QACT,OAAA,EACE;OACH,CAAA;AACH,IAAA;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAU,eAAA,EAAgB,GAAI,2BAAA;AAC9C,MAAA;AACE,QAAA,MAAA;QACA,iBAAA,EAAmB,oBAAA,CAAqB,KAAK,OAAO;AACtD;AACF,KAAA;AAEA,IAAA,QAAA,CAAS,IAAA,CAAK,GAAG,eAAe,CAAA;AAEhC,IAAA,MAAM,gBAAA,GAAA,CAAmB,EAAA,GAAA,aAAA,CAAc,gBAAA,KAAd,OAAA,EAAA,GAAkC,KAAA;AAE3D,IAAA,MAAM,QAAA,GAAW;;AAEf,MAAA,KAAA,EAAO,IAAA,CAAK,OAAA;;AAGZ,MAAA,UAAA,EAAY,aAAA,CAAc,SAAA;AAC1B,MAAA,QAAA,EACE,cAAc,QAAA,KAAa,IAAA,IAC3B,OAAO,aAAA,CAAc,QAAA,KAAa,WAC9B,IAAA,GACA,MAAA;AACN,MAAA,YAAA,EACE,OAAO,aAAA,CAAc,QAAA,KAAa,QAAA,GAC9B,aAAA,CAAc,QAAA,GACd,OAAO,aAAA,CAAc,QAAA,KAAa,SAAA,GAChC,aAAA,CAAc,QAAA,GACZ,IACA,MAAA,GACF,MAAA;AACR,MAAA,IAAA,EAAM,aAAA,CAAc,IAAA;AACpB,MAAA,mBAAA,EAAqB,aAAA,CAAc,iBAAA;;MAGnC,UAAA,EAAY,eAAA;AACZ,MAAA,WAAA;MACA,KAAA,EAAO,IAAA;MACP,iBAAA,EAAmB,gBAAA;MACnB,gBAAA,EAAkB,eAAA;MAClB,eAAA,EAAA,CACE,cAAA,IAAA,OAAA,MAAA,GAAA,cAAA,CAAgB,UAAS,MAAA,GACrB,iBAAA,IAAqB,cAAA,CAAe,MAAA,IAAU,IAAA,GAC5C;QACE,IAAA,EAAM,aAAA;QACN,WAAA,EAAa;AACX,UAAA,MAAA,EAAQ,cAAA,CAAe,MAAA;UACvB,MAAA,EAAQ,gBAAA;AACR,UAAA,IAAA,EAAA,CAAM,EAAA,GAAA,cAAA,CAAe,IAAA,KAAf,IAAA,GAAA,EAAA,GAAuB,UAAA;AAC7B,UAAA,WAAA,EAAa,cAAA,CAAe;AAC9B;OACF,GACA,EAAE,IAAA,EAAM,aAAA,EAAc,GACxB,MAAA;MACN,IAAA,EAAM,aAAA;AACN,MAAA,IAAA;AACA,MAAA,SAAA,EAAW,aAAA,CAAc,aAAA;;;AAIzB,MAAA,qBAAA,EAAuB,aAAA,CAAc,mBAAA;AACrC,MAAA,KAAA,EAAO,aAAA,CAAc,KAAA;AACrB,MAAA,QAAA,EAAU,aAAA,CAAc,QAAA;AACxB,MAAA,UAAA,EAAY,aAAA,CAAc,UAAA;AAC1B,MAAA,gBAAA,EAAkB,aAAA,CAAc,eAAA;AAChC,MAAA,YAAA,EAAc,aAAA,CAAc,WAAA;AAC5B,MAAA,gBAAA,EAAkB,aAAA,CAAc,cAAA;AAChC,MAAA,sBAAA,EAAwB,aAAA,CAAc,oBAAA;AACtC,MAAA,iBAAA,EAAmB,aAAA,CAAc,gBAAA;;AAGjC,MAAA;AACF,KAAA;AAEA,IAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,OAAO,CAAA,EAAG;AAGlC,MAAA,IAAI,QAAA,CAAS,eAAe,IAAA,EAAM;AAChC,QAAA,QAAA,CAAS,WAAA,GAAc,MAAA;AACvB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,aAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,SAAS,IAAA,EAAM;AAC1B,QAAA,QAAA,CAAS,KAAA,GAAQ,MAAA;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,MAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,qBAAqB,IAAA,EAAM;AACtC,QAAA,QAAA,CAAS,iBAAA,GAAoB,MAAA;AAC7B,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,kBAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,oBAAoB,IAAA,EAAM;AACrC,QAAA,QAAA,CAAS,gBAAA,GAAmB,MAAA;AAC5B,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,iBAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,cAAc,IAAA,EAAM;AAC/B,QAAA,QAAA,CAAS,UAAA,GAAa,MAAA;AACtB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,OAAA;UACN,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,QAAA,QAAA,CAAS,QAAA,GAAW,MAAA;AACpB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,OAAA;UACN,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACA,MAAA,IAAI,QAAA,CAAS,gBAAgB,IAAA,EAAM;AACjC,QAAA,QAAA,CAAS,YAAA,GAAe,MAAA;AACxB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,OAAA;UACN,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AAGA,MAAA,IAAI,QAAA,CAAS,cAAc,IAAA,EAAM;AAC/B,QAAA,IAAI,QAAA,CAAS,yBAAyB,IAAA,EAAM;AAC1C,UAAA,QAAA,CAAS,wBAAwB,QAAA,CAAS,UAAA;AAC5C,QAAA;AACA,QAAA,QAAA,CAAS,UAAA,GAAa,MAAA;AACxB,MAAA;IACF,CAAA,MAAA,IACE,IAAA,CAAK,QAAQ,UAAA,CAAW,uBAAuB,KAC/C,IAAA,CAAK,OAAA,CAAQ,UAAA,CAAW,4BAA4B,CAAA,EACpD;AACA,MAAA,IAAI,QAAA,CAAS,eAAe,IAAA,EAAM;AAChC,QAAA,QAAA,CAAS,WAAA,GAAc,MAAA;AACvB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,aAAA;UACT,OAAA,EACE;SACH,CAAA;AACH,MAAA;AACF,IAAA;AAGA,IAAA,IACE,cAAc,WAAA,KAAgB,MAAA,IAC9B,CAAC,sBAAA,CAAuB,IAAA,CAAK,OAAO,CAAA,EACpC;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,aAAA;QACT,OAAA,EACE;OACH,CAAA;AACD,MAAA,QAAA,CAAS,YAAA,GAAe,MAAA;AAC1B,IAAA;AAGA,IAAA,IACE,cAAc,WAAA,KAAgB,UAAA,IAC9B,CAAC,0BAAA,CAA2B,IAAA,CAAK,OAAO,CAAA,EACxC;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,aAAA;QACT,OAAA,EACE;OACH,CAAA;AACD,MAAA,QAAA,CAAS,YAAA,GAAe,MAAA;AAC1B,IAAA;AAEA,IAAA,MAAM;MACJ,KAAA,EAAO,WAAA;MACP,UAAA,EAAY,gBAAA;AACZ,MAAA;AACF,KAAA,GAAI,gBAAA,CAAiB;AACnB,MAAA,KAAA;AACA,MAAA,UAAA;AACA,MAAA,iBAAA;AACA,MAAA;KACD,CAAA;AAED,IAAA,OAAO;MACL,IAAA,EAAM;QACJ,GAAG,QAAA;QACH,KAAA,EAAO,WAAA;QACP,WAAA,EAAa;AACf,OAAA;AACA,MAAA,QAAA,EAAU,CAAC,GAAG,QAAA,EAAU,GAAG,YAAY;AACzC,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,WACJ,OAAA,EAC6D;AA1TjE,IAAA,IAAAA,IAAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2TI,IAAA,MAAM,EAAE,MAAM,IAAA,EAAM,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAE3D,IAAA,MAAM;AACJ,MAAA,eAAA;MACA,KAAA,EAAO,QAAA;MACP,QAAA,EAAU;AACZ,KAAA,GAAI,MAAM,aAAA,CAAc;MACtB,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,mBAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAAS,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;AAC9D,MAAA,IAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2B,yBAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AACjC,IAAA,MAAM,UAAyC,EAAC;AAGhD,IAAA,MAAM,IAAA,GAAO,OAAO,OAAA,CAAQ,OAAA;AAC5B,IAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACnC,MAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA;AACrC,IAAA;AAGA,IAAA,KAAA,MAAW,QAAA,IAAA,CAAYA,OAAA,MAAA,CAAO,OAAA,CAAQ,eAAf,IAAA,GAAAA,IAAAA,GAA6B,EAAC,EAAG;AACtD,MAAA,OAAA,CAAQ,IAAA,CAAK;QACX,IAAA,EAAM,WAAA;AACN,QAAA,UAAA,EAAA,CAAY,EAAA,GAAA,QAAA,CAAS,EAAA,KAAT,IAAA,GAAA,KAAe,UAAA,EAAW;AACtC,QAAA,QAAA,EAAU,SAAS,QAAA,CAAS,IAAA;AAC5B,QAAA,KAAA,EAAO,SAAS,QAAA,CAAS;OAC1B,CAAA;AACH,IAAA;AAGA,IAAA,KAAA,MAAW,UAAA,IAAA,CAAc,KAAA,MAAA,CAAO,OAAA,CAAQ,gBAAf,IAAA,GAAA,EAAA,GAA8B,EAAC,EAAG;AACzD,MAAA,OAAA,CAAQ,IAAA,CAAK;QACX,IAAA,EAAM,QAAA;QACN,UAAA,EAAY,KAAA;AACZ,QAAA,EAAA,EAAI,UAAA,EAAW;AACf,QAAA,GAAA,EAAK,UAAA,CAAW,GAAA;AAChB,QAAA,KAAA,EAAO,UAAA,CAAW;OACnB,CAAA;AACH,IAAA;AAGA,IAAA,MAAM,0BAAyB,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAgB,yBAAA;AAC/C,IAAA,MAAM,sBAAqB,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAgB,qBAAA;AAC3C,IAAA,MAAM,gBAAA,GAA6C,EAAE,MAAA,EAAQ,EAAC,EAAE;AAChE,IAAA,IAAA,CAAI,sBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,sBAAA,CAAwB,+BAA8B,IAAA,EAAM;AAC9D,MAAA,gBAAA,CAAiB,MAAA,CAAO,wBAAA,GACtB,sBAAA,IAAA,IAAA,GAAA,SAAA,sBAAA,CAAwB,0BAAA;AAC5B,IAAA;AACA,IAAA,IAAA,CAAI,sBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,sBAAA,CAAwB,+BAA8B,IAAA,EAAM;AAC9D,MAAA,gBAAA,CAAiB,MAAA,CAAO,wBAAA,GACtB,sBAAA,IAAA,IAAA,GAAA,SAAA,sBAAA,CAAwB,0BAAA;AAC5B,IAAA;AACA,IAAA,IAAA,CAAA,CAAI,KAAA,MAAA,CAAO,QAAA,KAAP,OAAA,MAAA,GAAA,EAAA,CAAiB,YAAW,IAAA,EAAM;AACpC,MAAA,gBAAA,CAAiB,MAAA,CAAO,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,OAAA;AACrD,IAAA;AAEA,IAAA,OAAO;AACL,MAAA,OAAA;MACA,YAAA,EAAc,qBAAA,CAAsB,OAAO,aAAa,CAAA;MACxD,KAAA,EAAO;QACL,WAAA,EAAA,CAAa,EAAA,GAAA,CAAA,KAAA,QAAA,CAAS,KAAA,KAAT,OAAA,MAAA,GAAA,EAAA,CAAgB,aAAA,KAAhB,IAAA,GAAA,EAAA,GAAiC,MAAA;QAC9C,YAAA,EAAA,CAAc,EAAA,GAAA,CAAA,KAAA,QAAA,CAAS,KAAA,KAAT,OAAA,MAAA,GAAA,EAAA,CAAgB,iBAAA,KAAhB,IAAA,GAAA,EAAA,GAAqC,MAAA;QACnD,WAAA,EAAA,CAAa,EAAA,GAAA,CAAA,KAAA,QAAA,CAAS,KAAA,KAAT,OAAA,MAAA,GAAA,EAAA,CAAgB,YAAA,KAAhB,IAAA,GAAA,EAAA,GAAgC,MAAA;AAC7C,QAAA,eAAA,EAAA,CAAiB,KAAA,sBAAA,IAAA,IAAA,GAAA,SAAA,sBAAA,CAAwB,gBAAA,KAAxB,OAAA,EAAA,GAA4C,MAAA;AAC7D,QAAA,iBAAA,EAAA,CAAmB,KAAA,kBAAA,IAAA,IAAA,GAAA,SAAA,kBAAA,CAAoB,aAAA,KAApB,OAAA,EAAA,GAAqC;AAC1D,OAAA;AACA,MAAA,OAAA,EAAS,EAAE,IAAA,EAAK;MAChB,QAAA,EAAU;AACR,QAAA,GAAG,oBAAoB,QAAQ,CAAA;QAC/B,OAAA,EAAS,eAAA;QACT,IAAA,EAAM;AACR,OAAA;AACA,MAAA,QAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,SACJ,OAAA,EAC2D;AAC3D,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAErD,IAAA,MAAM,IAAA,GAAO;MACX,GAAG,IAAA;MACH,MAAA,EAAQ,IAAA;MACR,cAAA,EAAgB;QACd,aAAA,EAAe;AACjB;AACF,KAAA;AAEA,IAAA,MAAM,EAAE,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAS,GAAI,MAAM,aAAA,CAAc;MAC/D,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,mBAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAAS,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;AAC9D,MAAA,IAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2B,gCAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,MAAM,YAQD,EAAC;AAEN,IAAA,IAAI,YAAA,GAA4C,SAAA;AAChD,IAAA,MAAM,KAAA,GAA8B;MAClC,WAAA,EAAa,MAAA;MACb,YAAA,EAAc,MAAA;MACd,WAAA,EAAa;AACf,KAAA;AACA,IAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,IAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,IAAA,MAAM,gBAAA,GAA6C,EAAE,MAAA,EAAQ,EAAC,EAAE;AAEhE,IAAA,OAAO;AACL,MAAA,MAAA,EAAQ,QAAA,CAAS,WAAA;AACf,QAAA,IAAI,eAAA,CAGF;AACA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA;AACvD,UAAA,CAAA;AAEA,UAAA,SAAA,CAAU,OAAO,UAAA,EAAY;AA9cvC,YAAA,IAAAA,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+cY,YAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,OAAO,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAC9D,YAAA;AAGA,YAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAClB,cAAA,YAAA,GAAe,OAAA;AACf,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACxD,cAAA;AACF,YAAA;AAEA,YAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAGpB,YAAA,IAAI,WAAW,KAAA,EAAO;AACpB,cAAA,YAAA,GAAe,OAAA;AACf,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACxD,cAAA;AACF,YAAA;AAKA,YAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,cAAA,MAAM,QAAA,GAAW,oBAAoB,KAAK,CAAA;AAC1C,cAAA,IAAI,OAAO,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA,EAAG;AACzC,gBAAA,iBAAA,GAAoB,IAAA;AACpB,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,mBAAA;AACN,kBAAA,GAAG,oBAAoB,KAAK;iBAC7B,CAAA;AACH,cAAA;AACF,YAAA;AAEA,YAAA,IAAI,KAAA,CAAM,SAAS,IAAA,EAAM;AACvB,cAAA,KAAA,CAAM,eAAcA,IAAAA,GAAA,KAAA,CAAM,KAAA,CAAM,aAAA,KAAZ,OAAAA,IAAAA,GAA6B,MAAA;AACjD,cAAA,KAAA,CAAM,gBAAe,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,iBAAA,KAAZ,OAAA,EAAA,GAAiC,MAAA;AACtD,cAAA,KAAA,CAAM,eAAc,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,YAAA,KAAZ,OAAA,EAAA,GAA4B,MAAA;AAChD,cAAA,KAAA,CAAM,eAAA,GAAA,CACJ,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,yBAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuC,gBAAA,KAAvC,IAAA,GAAA,EAAA,GACA,MAAA;AACF,cAAA,KAAA,CAAM,iBAAA,GAAA,CACJ,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,qBAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,aAAA,KAAnC,IAAA,GAAA,EAAA,GAAoD,MAAA;AAEtD,cAAA,IAAA,CAAA,CACE,EAAA,GAAA,MAAM,KAAA,CAAM,yBAAA,KAAZ,OAAA,MAAA,GAAA,EAAA,CACI,+BAA8B,IAAA,EAClC;AACA,gBAAA,gBAAA,CAAiB,MAAA,CAAO,4BACtB,EAAA,GAAA,KAAA,CAAM,MAAM,yBAAA,KAAZ,IAAA,GAAA,SAAA,EAAA,CAAuC,0BAAA;AAC3C,cAAA;AACA,cAAA,IAAA,CAAA,CACE,EAAA,GAAA,MAAM,KAAA,CAAM,yBAAA,KAAZ,OAAA,MAAA,GAAA,EAAA,CACI,+BAA8B,IAAA,EAClC;AACA,gBAAA,gBAAA,CAAiB,MAAA,CAAO,4BACtB,EAAA,GAAA,KAAA,CAAM,MAAM,yBAAA,KAAZ,IAAA,GAAA,SAAA,EAAA,CAAuC,0BAAA;AAC3C,cAAA;AACF,YAAA;AAEA,YAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAE9B,YAAA,IAAA,CAAI,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,kBAAiB,IAAA,EAAM;AACjC,cAAA,YAAA,GAAe,qBAAA,CAAsB,OAAO,aAAa,CAAA;AAC3D,YAAA;AAEA,YAAA,IAAA,CAAA,CAAI,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,OAAA,KAAW,IAAA,EAAM;AACrC,cAAA,gBAAA,CAAiB,MAAA,CAAO,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,OAAA;AACrD,YAAA;AAEA,YAAA,IAAA,CAAI,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAS,IAAA,EAAM;AACzB,cAAA;AACF,YAAA;AAEA,YAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAErB,YAAA,IAAI,KAAA,CAAM,WAAW,IAAA,EAAM;AACzB,cAAA,IAAI,CAAC,YAAA,EAAc;AACjB,gBAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,KAAK,CAAA;AAClD,gBAAA,YAAA,GAAe,IAAA;AACjB,cAAA;AAEA,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,YAAA;gBACN,EAAA,EAAI,GAAA;AACJ,gBAAA,KAAA,EAAO,KAAA,CAAM;eACd,CAAA;AACH,YAAA;AAEA,YAAA,IAAI,KAAA,CAAM,cAAc,IAAA,EAAM;AAC5B,cAAA,KAAA,MAAW,aAAA,IAAiB,MAAM,UAAA,EAAY;AAC5C,gBAAA,MAAM,QAAQ,aAAA,CAAc,KAAA;AAG5B,gBAAA,IAAI,SAAA,CAAU,KAAK,CAAA,IAAK,IAAA,EAAM;AAC5B,kBAAA,IAAI,aAAA,CAAc,SAAS,UAAA,EAAY;AACrC,oBAAA,MAAM,IAAI,wBAAA,CAAyB;sBACjC,IAAA,EAAM,aAAA;sBACN,OAAA,EAAS,CAAA,yBAAA;qBACV,CAAA;AACH,kBAAA;AAEA,kBAAA,IAAI,aAAA,CAAc,MAAM,IAAA,EAAM;AAC5B,oBAAA,MAAM,IAAI,wBAAA,CAAyB;sBACjC,IAAA,EAAM,aAAA;sBACN,OAAA,EAAS,CAAA,6BAAA;qBACV,CAAA;AACH,kBAAA;AAEA,kBAAA,IAAA,CAAA,CAAI,KAAA,aAAA,CAAc,QAAA,KAAd,OAAA,MAAA,GAAA,EAAA,CAAwB,SAAQ,IAAA,EAAM;AACxC,oBAAA,MAAM,IAAI,wBAAA,CAAyB;sBACjC,IAAA,EAAM,aAAA;sBACN,OAAA,EAAS,CAAA,wCAAA;qBACV,CAAA;AACH,kBAAA;AAEA,kBAAA,UAAA,CAAW,OAAA,CAAQ;oBACjB,IAAA,EAAM,kBAAA;AACN,oBAAA,EAAA,EAAI,aAAA,CAAc,EAAA;AAClB,oBAAA,QAAA,EAAU,cAAc,QAAA,CAAS;mBAClC,CAAA;AAED,kBAAA,SAAA,CAAU,KAAK,CAAA,GAAI;AACjB,oBAAA,EAAA,EAAI,aAAA,CAAc,EAAA;oBAClB,IAAA,EAAM,UAAA;oBACN,QAAA,EAAU;AACR,sBAAA,IAAA,EAAM,cAAc,QAAA,CAAS,IAAA;AAC7B,sBAAA,SAAA,EAAA,CAAW,EAAA,GAAA,aAAA,CAAc,QAAA,CAAS,SAAA,KAAvB,OAAA,EAAA,GAAoC;AACjD,qBAAA;oBACA,WAAA,EAAa;AACf,mBAAA;AAEA,kBAAA,MAAMoB,SAAAA,GAAW,UAAU,KAAK,CAAA;AAEhC,kBAAA,IAAA,CAAA,CACE,EAAA,GAAAA,SAAAA,CAAS,QAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAmB,IAAA,KAAQ,IAAA,IAAA,CAAA,CAC3B,EAAA,GAAAA,UAAS,QAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,cAAa,IAAA,EAChC;AAEA,oBAAA,IAAIA,SAAAA,CAAS,QAAA,CAAS,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AAC1C,sBAAA,UAAA,CAAW,OAAA,CAAQ;wBACjB,IAAA,EAAM,kBAAA;AACN,wBAAA,EAAA,EAAIA,SAAAA,CAAS,EAAA;AACb,wBAAA,KAAA,EAAOA,UAAS,QAAA,CAAS;uBAC1B,CAAA;AACH,oBAAA;AAIA,oBAAA,IAAI,cAAA,CAAeA,SAAAA,CAAS,QAAA,CAAS,SAAS,CAAA,EAAG;AAC/C,sBAAA,UAAA,CAAW,OAAA,CAAQ;wBACjB,IAAA,EAAM,gBAAA;AACN,wBAAA,EAAA,EAAIA,SAAAA,CAAS;uBACd,CAAA;AAED,sBAAA,UAAA,CAAW,OAAA,CAAQ;wBACjB,IAAA,EAAM,WAAA;AACN,wBAAA,UAAA,EAAA,CAAY,EAAA,GAAAA,SAAAA,CAAS,EAAA,KAAT,IAAA,GAAA,KAAe,UAAA,EAAW;AACtC,wBAAA,QAAA,EAAUA,UAAS,QAAA,CAAS,IAAA;AAC5B,wBAAA,KAAA,EAAOA,UAAS,QAAA,CAAS;uBAC1B,CAAA;AACDA,sBAAAA,SAAAA,CAAS,WAAA,GAAc,IAAA;AACzB,oBAAA;AACF,kBAAA;AAEA,kBAAA;AACF,gBAAA;AAGA,gBAAA,MAAM,QAAA,GAAW,UAAU,KAAK,CAAA;AAEhC,gBAAA,IAAI,SAAS,WAAA,EAAa;AACxB,kBAAA;AACF,gBAAA;AAEA,gBAAA,IAAA,CAAA,CAAI,KAAA,aAAA,CAAc,QAAA,KAAd,OAAA,MAAA,GAAA,EAAA,CAAwB,cAAa,IAAA,EAAM;AAC7C,kBAAA,QAAA,CAAS,QAAA,CAAU,SAAA,IAAA,CACjB,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,CAAc,QAAA,KAAd,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwB,SAAA,KAAxB,IAAA,GAAA,EAAA,GAAqC,EAAA;AACzC,gBAAA;AAGA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,QAAA,CAAS,EAAA;AACb,kBAAA,KAAA,EAAA,CAAO,EAAA,GAAA,aAAA,CAAc,QAAA,CAAS,SAAA,KAAvB,OAAA,EAAA,GAAoC;iBAC5C,CAAA;AAGD,gBAAA,IAAA,CAAA,CACE,EAAA,GAAA,SAAS,QAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAmB,IAAA,KAAQ,UAC3B,EAAA,GAAA,QAAA,CAAS,aAAT,IAAA,GAAA,MAAA,GAAA,GAAmB,SAAA,KAAa,IAAA,IAChC,eAAe,QAAA,CAAS,QAAA,CAAS,SAAS,CAAA,EAC1C;AACA,kBAAA,UAAA,CAAW,OAAA,CAAQ;oBACjB,IAAA,EAAM,gBAAA;AACN,oBAAA,EAAA,EAAI,QAAA,CAAS;mBACd,CAAA;AAED,kBAAA,UAAA,CAAW,OAAA,CAAQ;oBACjB,IAAA,EAAM,WAAA;AACN,oBAAA,UAAA,EAAA,CAAY,EAAA,GAAA,QAAA,CAAS,EAAA,KAAT,IAAA,GAAA,KAAe,UAAA,EAAW;AACtC,oBAAA,QAAA,EAAU,SAAS,QAAA,CAAS,IAAA;AAC5B,oBAAA,KAAA,EAAO,SAAS,QAAA,CAAS;mBAC1B,CAAA;AACD,kBAAA,QAAA,CAAS,WAAA,GAAc,IAAA;AACzB,gBAAA;AACF,cAAA;AACF,YAAA;AAGA,YAAA,IAAI,KAAA,CAAM,eAAe,IAAA,EAAM;AAC7B,cAAA,KAAA,MAAW,UAAA,IAAc,MAAM,WAAA,EAAa;AAC1C,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,QAAA;kBACN,UAAA,EAAY,KAAA;AACZ,kBAAA,EAAA,EAAI,UAAA,EAAW;AACf,kBAAA,GAAA,EAAK,UAAA,CAAW,GAAA;AAChB,kBAAA,KAAA,EAAO,UAAA,CAAW;iBACnB,CAAA;AACH,cAAA;AACF,YAAA;AACF,UAAA,CAAA;AAEA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,EAAA,EAAI,KAAK,CAAA;AAClD,YAAA;AAEA,YAAA,UAAA,CAAW,OAAA,CAAQ;cACjB,IAAA,EAAM,QAAA;AACN,cAAA,YAAA;AACA,cAAA,KAAA;AACA,cAAA,GAAI,gBAAA,IAAoB,IAAA,GAAO,EAAE,gBAAA,KAAqB;aACvD,CAAA;AACH,UAAA;SACD;AACH,OAAA;AACA,MAAA,OAAA,EAAS,EAAE,IAAA,EAAK;MAChB,QAAA,EAAU,EAAE,SAAS,eAAA;AACvB,KAAA;AACF,EAAA;AACF,CAAA;AAEA,SAAS,iBAAiB,OAAA,EAAiB;AACzC,EAAA,OAAA,CACG,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,KACtD,CAAC,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA;AAEpC;AAEA,SAAS,uBAAuB,OAAA,EAAiB;AAC/C,EAAA,OACE,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,IACvB,QAAQ,UAAA,CAAW,SAAS,CAAA,IAC3B,OAAA,CAAQ,WAAW,OAAO,CAAA,IAAK,CAAC,OAAA,CAAQ,WAAW,YAAY,CAAA;AAEpE;AAEA,SAAS,2BAA2B,OAAA,EAAiB;AACnD,EAAA,OACE,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,IAC1B,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAC9B,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,IACzB,CAAC,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAChC,CAAC,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAClC,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,IACvB,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA;AAEhC;AAEA,SAAS,qBAAqB,OAAA,EAAiB;AA7tB/C,EAAA,IAAApB,IAAAA,EAAA,EAAA;AA8tBE,EAAA,IAAI,CAAC,gBAAA,CAAiB,OAAO,CAAA,EAAG;AAC9B,IAAA,OAAO,QAAA;AACT,EAAA;AAEA,EAAA,OAAA,CACE,EAAA,GAAA,CAAAA,IAAAA,GAAA,eAAA,CAAgB,OAAuC,CAAA,KAAvD,OAAA,MAAA,GAAAA,IAAAA,CACI,iBAAA,KADJ,IAAA,GAAA,EAAA,GACyB,WAAA;AAE7B;AAEA,IAAM,eAAA,GAAkB;EACtB,EAAA,EAAI;IACF,iBAAA,EAAmB;AACrB,GAAA;EACA,eAAA,EAAiB;IACf,iBAAA,EAAmB;AACrB,GAAA;EACA,SAAA,EAAW;IACT,iBAAA,EAAmB;AACrB,GAAA;EACA,oBAAA,EAAsB;IACpB,iBAAA,EAAmB;AACrB,GAAA;EACA,SAAA,EAAW;IACT,iBAAA,EAAmB;AACrB,GAAA;EACA,oBAAA,EAAsB;IACpB,iBAAA,EAAmB;AACrB;AACF,CAAA;ACrvBO,SAAS,+BAAA,CAAgC;AAC9C,EAAA,MAAA;EACA,IAAA,GAAO,MAAA;EACP,SAAA,GAAY;AACd,CAAA,EAOE;AAEA,EAAA,IAAI,IAAA,GAAO,EAAA;AAGX,EAAA,IAAI,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,KAAS,QAAA,EAAU;AAC/B,IAAA,IAAA,IAAQ,CAAA,EAAG,MAAA,CAAO,CAAC,CAAA,CAAE,OAAO;;;AAC5B,IAAA,MAAA,GAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AACzB,EAAA;AAEA,EAAA,KAAA,MAAW,EAAE,IAAA,EAAM,OAAA,EAAQ,IAAK,MAAA,EAAQ;AACtC,IAAA,QAAQ,IAAA;AACN,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,kBAAA,CAAmB;UAC3B,OAAA,EAAS,iDAAA;AACT,UAAA;SACD,CAAA;AACH,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,WAAA,GAAc,OAAA,CACjB,GAAA,CAAI,CAAA,IAAA,KAAQ;AACX,UAAA,QAAQ,KAAK,IAAA;AACX,YAAA,KAAK,MAAA,EAAQ;AACX,cAAA,OAAO,IAAA,CAAK,IAAA;AACd,YAAA;AACF;AACF,QAAA,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,EAAE,CAAA;AAEV,QAAA,IAAA,IAAQ,GAAG,IAAI,CAAA;EAAM,WAAW;;;AAChC,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,gBAAA,GAAmB,OAAA,CACtB,GAAA,CAAI,CAAA,IAAA,KAAQ;AACX,UAAA,QAAQ,KAAK,IAAA;AACX,YAAA,KAAK,MAAA,EAAQ;AACX,cAAA,OAAO,IAAA,CAAK,IAAA;AACd,YAAA;AACA,YAAA,KAAK,WAAA,EAAa;AAChB,cAAA,MAAM,IAAImB,6BAAAA,CAA8B;gBACtC,aAAA,EAAe;eAChB,CAAA;AACH,YAAA;AACF;QACF,CAAC,CAAA,CACA,KAAK,EAAE,CAAA;AAEV,QAAA,IAAA,IAAQ,GAAG,SAAS,CAAA;EAAM,gBAAgB;;;AAC1C,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,6BAAAA,CAA8B;UACtC,aAAA,EAAe;SAChB,CAAA;AACH,MAAA;MAEA,SAAS;AACP,QAAA,MAAM,gBAAA,GAA0B,IAAA;AAChC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,gBAAgB,CAAA,CAAE,CAAA;AACzD,MAAA;AACF;AACF,EAAA;AAGA,EAAA,IAAA,IAAQ,GAAG,SAAS,CAAA;;AAEpB,EAAA,OAAO;IACL,MAAA,EAAQ,IAAA;AACR,IAAA,aAAA,EAAe,CAAC;AAAK,EAAA,IAAI,CAAA,CAAA,CAAG;AAC9B,GAAA;AACF;AC5FO,SAASE,oBAAAA,CAAoB;AAClC,EAAA,EAAA;AACA,EAAA,KAAA;AACA,EAAA;AACF,CAAA,EAIG;AACD,EAAA,OAAO;IACL,EAAA,EAAI,EAAA,IAAA,OAAA,EAAA,GAAM,MAAA;IACV,OAAA,EAAS,KAAA,IAAA,OAAA,KAAA,GAAS,MAAA;AAClB,IAAA,SAAA,EAAW,WAAW,IAAA,GAAO,IAAI,IAAA,CAAK,OAAA,GAAU,GAAI,CAAA,GAAI;AAC1D,GAAA;AACF;ACZO,SAASC,uBACd,YAAA,EAC6B;AAC7B,EAAA,QAAQ,YAAA;IACN,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;IACT,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;IACT,KAAK,gBAAA;AACH,MAAA,OAAO,gBAAA;IACT,KAAK,eAAA;IACL,KAAK,YAAA;AACH,MAAA,OAAO,YAAA;AACT,IAAA;AACE,MAAA,OAAO,SAAA;AACX;AACF;ACRO,IAAM,8BAAA,GAAiCJ,aAAAA;EAAc,MAC1DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACvB,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MAC5B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,MAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;AACxB,UAAA,QAAA,EAAUA,KACP,MAAA,CAAO;AACN,YAAA,MAAA,EAAQA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC1B,YAAA,cAAA,EAAgBA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAClC,YAAA,YAAA,EAAcA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,CAAOA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,OAAA;AAC1D,WAAC,EACA,OAAA;SACJ;AACH,OAAA;AACA,MAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;AACN,QAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;AACxB,QAAA,iBAAA,EAAmBA,KAAE,MAAA,EAAO;AAC5B,QAAA,YAAA,EAAcA,KAAE,MAAA;AAClB,OAAC,EACA,OAAA;KACJ;AACH;AACF,CAAA;AAIO,IAAM,2BAAA,GAA8BC,aAAAA;EAAc,MACvDH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,KAAA,CAAM;AACNA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QACvB,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;QAC5B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,QAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,UAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,YAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;YACf,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAClC,YAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,YAAA,QAAA,EAAUA,KACP,MAAA,CAAO;AACN,cAAA,MAAA,EAAQA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC1B,cAAA,cAAA,EAAgBA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAClC,cAAA,YAAA,EAAcA,IAAAA,CACX,KAAA,CAAMA,IAAAA,CAAE,MAAA,CAAOA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CACtC,OAAA;AACL,aAAC,EACA,OAAA;WACJ;AACH,SAAA;AACA,QAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;AACN,UAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;AACxB,UAAA,iBAAA,EAAmBA,KAAE,MAAA,EAAO;AAC5B,UAAA,YAAA,EAAcA,KAAE,MAAA;AAClB,SAAC,EACA,OAAA;OACJ,CAAA;AACD,MAAA;KACD;AACH;AACF,CAAA;AClEO,IAAM,+BAAA,GAAkCC,aAAAA;EAAc,MAC3DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;;;;MAIP,IAAA,EAAMA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;;;;;;;;;;;;;;;MAgB3B,SAAA,EAAWA,IAAAA,CAAE,OAAOA,IAAAA,CAAE,MAAA,IAAUA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS;;;;MAKrD,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;;MAM5B,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;;;;;;;MAW1B,QAAA,EAAUA,IAAAA,CAAE,KAAA,CAAM,CAACA,IAAAA,CAAE,OAAA,EAAQ,EAAGA,IAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA;KAC9C;AACH;AACF,CAAA;ACnBO,IAAM,gCAAN,MAA+D;AAWpE,EAAA,WAAA,CACE,SACA,MAAA,EACA;AAbF,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAsBhC,IAAA,IAAA,CAAS,aAAA,GAA0C;;AAEnD,KAAA;AAVE,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,EAAA;AAVA,EAAA,IAAY,mBAAA,GAA8B;AACxC,IAAA,OAAO,IAAA,CAAK,OAAO,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EAAE,IAAA,EAAK;AACjD,EAAA;AAUA,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAMA,EAAA,MAAc,OAAA,CAAQ;AACpB,IAAA,MAAA;AACA,IAAA,eAAA;AACA,IAAA,WAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,gBAAA;AACA,IAAA,eAAA;IACA,aAAA,EAAe,iBAAA;AACf,IAAA,cAAA;AACA,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA,IAAA;AACA,IAAA;GACF,EAAiD;AAC/C,IAAA,MAAM,WAAyC,EAAC;AAGhD,IAAA,MAAM,aAAA,GAAgB;AACpB,MAAA,GAAI,MAAMM,oBAAAA,CAAqB;QAC7B,QAAA,EAAU,QAAA;AACV,QAAA,eAAA;QACA,MAAA,EAAQ;OACT,CAAA;AACD,MAAA,GAAI,MAAMA,oBAAAA,CAAqB;AAC7B,QAAA,QAAA,EAAU,IAAA,CAAK,mBAAA;AACf,QAAA,eAAA;QACA,MAAA,EAAQ;OACT;AACH,KAAA;AAEA,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,QAAQ,CAAA;AAChE,IAAA;AAEA,IAAA,IAAI,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,EAAQ;AACjB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,SAAS,CAAA;AACjE,IAAA;AAEA,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,cAAc,CAAA;AACtE,IAAA;AAEA,IAAA,IAAI,cAAA,IAAkB,IAAA,IAAQ,cAAA,CAAe,IAAA,KAAS,MAAA,EAAQ;AAC5D,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,gBAAA;QACT,OAAA,EAAS;OACV,CAAA;AACH,IAAA;AAEA,IAAA,MAAM,EAAE,QAAQ,gBAAA,EAAkB,aAAA,KAChC,+BAAA,CAAgC,EAAE,QAAQ,CAAA;AAE5C,IAAA,MAAM,IAAA,GAAO,CAAC,GAAI,aAAA,IAAA,IAAA,GAAA,aAAA,GAAiB,EAAC,EAAI,GAAI,iBAAA,IAAA,IAAA,GAAA,iBAAA,GAAqB,EAAG,CAAA;AAEpE,IAAA,OAAO;MACL,IAAA,EAAM;;AAEJ,QAAA,KAAA,EAAO,IAAA,CAAK,OAAA;;AAGZ,QAAA,IAAA,EAAM,aAAA,CAAc,IAAA;AACpB,QAAA,UAAA,EAAY,aAAA,CAAc,SAAA;AAC1B,QAAA,QAAA,EAAA,CACE,iBAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,QAAA,MAAa,OACxB,CAAA,GAAA,CACA,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAe,QAAA,MAAa,KAAA,GAC1B,SACA,aAAA,IAAA,IAAA,GAAA,SAAA,aAAA,CAAe,QAAA;AACvB,QAAA,MAAA,EAAQ,aAAA,CAAc,MAAA;AACtB,QAAA,IAAA,EAAM,aAAA,CAAc,IAAA;;QAGpB,UAAA,EAAY,eAAA;AACZ,QAAA,WAAA;QACA,KAAA,EAAO,IAAA;QACP,iBAAA,EAAmB,gBAAA;QACnB,gBAAA,EAAkB,eAAA;AAClB,QAAA,IAAA;;QAGA,MAAA,EAAQ,gBAAA;;QAGR,IAAA,EAAM,IAAA,CAAK,MAAA,GAAS,CAAA,GAAI,IAAA,GAAO;AACjC,OAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,WACJ,OAAA,EAC6D;AA9JjE,IAAA,IAAAvB,MAAA,EAAA,EAAA,EAAA;AA+JI,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAErD,IAAA,MAAM;AACJ,MAAA,eAAA;MACA,KAAA,EAAO,QAAA;MACP,QAAA,EAAU;AACZ,KAAA,GAAI,MAAMwB,aAAAA,CAAc;MACtB,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,cAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;MAC9D,IAAA,EAAM,IAAA;MACN,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BC,yBAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAEjC,IAAA,MAAM,gBAAA,GAA6C,EAAE,MAAA,EAAQ,EAAC,EAAE;AAEhE,IAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,MAAA,gBAAA,CAAiB,MAAA,CAAO,WAAW,MAAA,CAAO,QAAA;AAC5C,IAAA;AAEA,IAAA,OAAO;AACL,MAAA,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,MAAA,CAAO,MAAM,CAAA;MAC7C,KAAA,EAAO;AACL,QAAA,WAAA,EAAA,CAAa1B,IAAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,SAAAA,IAAAA,CAAgB,aAAA;AAC7B,QAAA,YAAA,EAAA,CAAc,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAgB,iBAAA;AAC9B,QAAA,WAAA,EAAA,CAAa,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAAgB;AAC/B,OAAA;MACA,YAAA,EAAcsB,sBAAAA,CAAsB,OAAO,aAAa,CAAA;MACxD,OAAA,EAAS,EAAE,MAAM,IAAA,EAAK;MACtB,QAAA,EAAU;AACR,QAAA,GAAGD,qBAAoB,QAAQ,CAAA;QAC/B,OAAA,EAAS,eAAA;QACT,IAAA,EAAM;AACR,OAAA;AACA,MAAA,gBAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,SACJ,OAAA,EAC2D;AAC3D,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAErD,IAAA,MAAM,IAAA,GAAO;MACX,GAAG,IAAA;MACH,MAAA,EAAQ,IAAA;MAER,cAAA,EAAgB;QACd,aAAA,EAAe;AACjB;AACF,KAAA;AAEA,IAAA,MAAM,EAAE,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAS,GAAI,MAAMG,aAAAA,CAAc;MAC/D,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,cAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;AAC9D,MAAA,IAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BE,gCAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,IAAI,YAAA,GAA4C,SAAA;AAChD,IAAA,MAAM,gBAAA,GAA6C,EAAE,MAAA,EAAQ,EAAC,EAAE;AAChE,IAAA,MAAM,KAAA,GAA8B;MAClC,WAAA,EAAa,MAAA;MACb,YAAA,EAAc,MAAA;MACd,WAAA,EAAa;AACf,KAAA;AACA,IAAA,IAAI,YAAA,GAAe,IAAA;AAEnB,IAAA,OAAO;AACL,MAAA,MAAA,EAAQ,QAAA,CAAS,WAAA;AACf,QAAA,IAAI,eAAA,CAGF;AACA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA;AACvD,UAAA,CAAA;AAEA,UAAA,SAAA,CAAU,OAAO,UAAA,EAAY;AAC3B,YAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,OAAO,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAC9D,YAAA;AAGA,YAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAClB,cAAA,YAAA,GAAe,OAAA;AACf,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACxD,cAAA;AACF,YAAA;AAEA,YAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAGpB,YAAA,IAAI,WAAW,KAAA,EAAO;AACpB,cAAA,YAAA,GAAe,OAAA;AACf,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACxD,cAAA;AACF,YAAA;AAEA,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,YAAA,GAAe,KAAA;AAEf,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,mBAAA;AACN,gBAAA,GAAGN,qBAAoB,KAAK;eAC7B,CAAA;AAED,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,KAAK,CAAA;AACpD,YAAA;AAEA,YAAA,IAAI,KAAA,CAAM,SAAS,IAAA,EAAM;AACvB,cAAA,KAAA,CAAM,WAAA,GAAc,MAAM,KAAA,CAAM,aAAA;AAChC,cAAA,KAAA,CAAM,YAAA,GAAe,MAAM,KAAA,CAAM,iBAAA;AACjC,cAAA,KAAA,CAAM,WAAA,GAAc,MAAM,KAAA,CAAM,YAAA;AAClC,YAAA;AAEA,YAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAE9B,YAAA,IAAA,CAAI,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,kBAAiB,IAAA,EAAM;AACjC,cAAA,YAAA,GAAeC,sBAAAA,CAAsB,OAAO,aAAa,CAAA;AAC3D,YAAA;AAEA,YAAA,IAAA,CAAI,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAY,IAAA,EAAM;AAC5B,cAAA,gBAAA,CAAiB,MAAA,CAAO,WAAW,MAAA,CAAO,QAAA;AAC5C,YAAA;AAEA,YAAA,IAAA,CAAI,MAAA,IAAA,OAAA,MAAA,GAAA,MAAA,CAAQ,SAAQ,IAAA,IAAQ,MAAA,CAAO,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAClD,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,YAAA;gBACN,EAAA,EAAI,GAAA;AACJ,gBAAA,KAAA,EAAO,MAAA,CAAO;eACf,CAAA;AACH,YAAA;AACF,UAAA,CAAA;AAEA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,IAAI,CAAC,YAAA,EAAc;AACjB,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,EAAA,EAAI,KAAK,CAAA;AAClD,YAAA;AAEA,YAAA,UAAA,CAAW,OAAA,CAAQ;cACjB,IAAA,EAAM,QAAA;AACN,cAAA,YAAA;AACA,cAAA,gBAAA;AACA,cAAA;aACD,CAAA;AACH,UAAA;SACD;AACH,OAAA;AACA,MAAA,OAAA,EAAS,EAAE,IAAA,EAAK;MAChB,QAAA,EAAU,EAAE,SAAS,eAAA;AACvB,KAAA;AACF,EAAA;AACF,CAAA;AC7TO,IAAM,8BAAA,GAAiCJ,aAAAA;EAAc,MAC1DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;;;;;MAKP,UAAA,EAAYA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;;MAMhC,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;KAClB;AACH;AACF,CAAA;ACxBO,IAAM,iCAAA,GAAoCC,aAAAA;EAAc,MAC7DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,IAAA,EAAMA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,CAAO,EAAE,SAAA,EAAWA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;MAC1D,KAAA,EAAOA,IAAAA,CAAE,OAAO,EAAE,aAAA,EAAeA,KAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA;KAChD;AACH;AACF,CAAA;ACMO,IAAM,uBAAN,MAA+D;AAYpE,EAAA,WAAA,CAAY,SAAiC,MAAA,EAAsB;AAXnE,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAEhC,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAChC,IAAA,IAAA,CAAS,qBAAA,GAAwB,IAAA;AAS/B,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,EAAA;AAPA,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAOA,EAAA,MAAM,OAAA,CAAQ;AACZ,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA;GACF,EAEE;AA1CJ,IAAA,IAAAjB,IAAAA;AA2CI,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,oBAAA,EAAsB;AAC7C,MAAA,MAAM,IAAI,kCAAA,CAAmC;AAC3C,QAAA,QAAA,EAAU,IAAA,CAAK,QAAA;AACf,QAAA,OAAA,EAAS,IAAA,CAAK,OAAA;AACd,QAAA,oBAAA,EAAsB,IAAA,CAAK,oBAAA;AAC3B,QAAA;OACD,CAAA;AACH,IAAA;AAGA,IAAA,MAAM,aAAA,GAAA,CACHA,IAAAA,GAAA,MAAMuB,oBAAAA,CAAqB;MAC1B,QAAA,EAAU,QAAA;AACV,MAAA,eAAA;MACA,MAAA,EAAQ;KACT,CAAA,KAJA,IAAA,GAAAvB,IAAAA,GAIM,EAAC;AAEV,IAAA,MAAM;AACJ,MAAA,eAAA;MACA,KAAA,EAAO,QAAA;AACP,MAAA;AACF,KAAA,GAAI,MAAMwB,aAAAA,CAAc;MACtB,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,aAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,cAAAA,CAAe,IAAA,CAAK,MAAA,CAAO,OAAA,IAAW,OAAO,CAAA;MACtD,IAAA,EAAM;AACJ,QAAA,KAAA,EAAO,IAAA,CAAK,OAAA;QACZ,KAAA,EAAO,MAAA;QACP,eAAA,EAAiB,OAAA;AACjB,QAAA,UAAA,EAAY,aAAA,CAAc,UAAA;AAC1B,QAAA,IAAA,EAAM,aAAA,CAAc;AACtB,OAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BC,yBAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA;AACA,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,OAAO;AACL,MAAA,UAAA,EAAY,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,SAAS,CAAA;AACpD,MAAA,KAAA,EAAO,SAAS,KAAA,GACZ,EAAE,QAAQ,QAAA,CAAS,KAAA,CAAM,eAAc,GACvC,MAAA;AACJ,MAAA,QAAA,EAAU,EAAE,OAAA,EAAS,eAAA,EAAiB,IAAA,EAAM,QAAA;AAC9C,KAAA;AACF,EAAA;AACF,CAAA;ACxFO,IAAM,yBAAA,GAA4BR,aAAAA;EAAc,MACrDH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,IAAA,EAAMA,IAAAA,CAAE,KAAA;AACNA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,QAAA,EAAUA,KAAE,MAAA,EAAO;UACnB,cAAA,EAAgBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;SAC5B;AACH;KACD;AACH;AACF,CAAA;ACRO,IAAM,qBAAA,GAA4D;EACvE,UAAA,EAAY,CAAA;EACZ,UAAA,EAAY,EAAA;EACZ,aAAA,EAAe,EAAA;EACf,kBAAA,EAAoB;AACtB,CAAA;AAEO,IAAM,wBAAA,uBAA+B,GAAA,CAAI;AAC9C,EAAA,aAAA;AACA,EAAA;AACF,CAAC,CAAA;ACGM,IAAM,mBAAN,MAA+C;AAWpD,EAAA,WAAA,CACW,SACQ,MAAA,EACjB;AAFS,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACQ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAZnB,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAa7B,EAAA;AAXH,EAAA,IAAI,gBAAA,GAA2B;AAxBjC,IAAA,IAAAjB,IAAAA;AAyBI,IAAA,OAAA,CAAOA,OAAA,qBAAA,CAAsB,IAAA,CAAK,OAAO,CAAA,KAAlC,OAAAA,IAAAA,GAAuC,CAAA;AAChD,EAAA;AAEA,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAOA,EAAA,MAAM,UAAA,CAAW;AACf,IAAA,MAAA;AACA,IAAA,CAAA;AACA,IAAA,IAAA;AACA,IAAA,WAAA;AACA,IAAA,IAAA;AACA,IAAA,eAAA;AACA,IAAA,OAAA;AACA,IAAA;GACF,EAEE;AAhDJ,IAAA,IAAAA,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AAiDI,IAAA,MAAM,WAA2C,EAAC;AAElD,IAAA,IAAI,eAAe,IAAA,EAAM;AACvB,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,aAAA;QACT,OAAA,EACE;OACH,CAAA;AACH,IAAA;AAEA,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,QAAQ,CAAA;AAChE,IAAA;AAEA,IAAA,MAAM,WAAA,GAAA,CAAc,MAAA,EAAA,GAAA,CAAAA,IAAAA,GAAA,KAAK,MAAA,CAAO,SAAA,KAAZ,OAAA,MAAA,GAAAA,IAAAA,CAAuB,gBAAvB,IAAA,GAAA,MAAA,GAAA,GAAA,IAAA,CAAAA,IAAA,MAAA,IAAA,GAAA,EAAA,uBAA8C,IAAA,EAAK;AACvE,IAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,eAAA,EAAgB,GAAI,MAAMwB,aAAAA,CAAc;MAC/D,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,qBAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,cAAAA,CAAe,IAAA,CAAK,MAAA,CAAO,OAAA,IAAW,OAAO,CAAA;MACtD,IAAA,EAAM;AACJ,QAAA,KAAA,EAAO,IAAA,CAAK,OAAA;AACZ,QAAA,MAAA;AACA,QAAA,CAAA;AACA,QAAA,IAAA;AACA,QAAA,GAAA,CAAI,EAAA,GAAA,eAAA,CAAgB,MAAA,KAAhB,IAAA,GAAA,KAA0B,EAAC;QAC/B,GAAI,CAAC,wBAAA,CAAyB,GAAA,CAAI,IAAA,CAAK,OAAO,IAC1C,EAAE,eAAA,EAAiB,UAAA,EAAW,GAC9B;AACN,OAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BC,yBAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA;AACA,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,OAAO;AACL,MAAA,MAAA,EAAQ,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,QAAQ,CAAA;AAC/C,MAAA,QAAA;MACA,QAAA,EAAU;QACR,SAAA,EAAW,WAAA;AACX,QAAA,OAAA,EAAS,IAAA,CAAK,OAAA;QACd,OAAA,EAAS;AACX,OAAA;MACA,gBAAA,EAAkB;QAChB,MAAA,EAAQ;AACN,UAAA,MAAA,EAAQ,SAAS,IAAA,CAAK,GAAA;YAAI,CAAA,IAAA,KACxB,KAAK,cAAA,GACD;AACE,cAAA,aAAA,EAAe,IAAA,CAAK;aACtB,GACA;AACN;AACF;AACF;AACF,KAAA;AACF,EAAA;AACF,CAAA;AC3GO,IAAM,iCAAA,GAAoCR,aAAAA;EAAc,MAC7DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;MACf,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MAC7B,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC7B,MAAA,KAAA,EAAOA,IAAAA,CACJ,KAAA;AACCA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,UAAA,GAAA,EAAKA,KAAE,MAAA;SACR;AACH,OAAA,CACC,OAAA,EAAQ;AACX,MAAA,QAAA,EAAUA,IAAAA,CACP,KAAA;AACCA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,UAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,MAAA,EAAQA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC1B,UAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,UAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,UAAA,iBAAA,EAAmBA,KAAE,MAAA,EAAO;AAC5B,UAAA,cAAA,EAAgBA,KAAE,MAAA;SACnB;AACH,OAAA,CACC,OAAA;KACJ;AACH;AACF,CAAA;ACtBO,IAAM,kCAAA,GAAqCC,aAAAA;EAAc,MAC9DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;;;;AAKP,MAAA,OAAA,EAASA,KAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;;;;MAKtC,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;MAK9B,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;;;;;AAM5B,MAAA,WAAA,EAAaA,IAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;;;;;AAM1D,MAAA,sBAAA,EAAwBA,IAAAA,CACrB,KAAA,CAAMA,IAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAC,EACjC,OAAA,CAAQ,CAAC,SAAS,CAAC,EACnB,QAAA;KACJ;AACH;AACF,CAAA;ACXA,IAAM,WAAA,GAAc;EAClB,SAAA,EAAW,IAAA;EACX,MAAA,EAAQ,IAAA;EACR,QAAA,EAAU,IAAA;EACV,WAAA,EAAa,IAAA;EACb,UAAA,EAAY,IAAA;EACZ,OAAA,EAAS,IAAA;EACT,SAAA,EAAW,IAAA;EACX,OAAA,EAAS,IAAA;EACT,OAAA,EAAS,IAAA;EACT,QAAA,EAAU,IAAA;EACV,KAAA,EAAO,IAAA;EACP,MAAA,EAAQ,IAAA;EACR,KAAA,EAAO,IAAA;EACP,OAAA,EAAS,IAAA;EACT,QAAA,EAAU,IAAA;EACV,OAAA,EAAS,IAAA;EACT,MAAA,EAAQ,IAAA;EACR,QAAA,EAAU,IAAA;EACV,MAAA,EAAQ,IAAA;EACR,KAAA,EAAO,IAAA;EACP,MAAA,EAAQ,IAAA;EACR,KAAA,EAAO,IAAA;EACP,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAA;EACX,UAAA,EAAY,IAAA;EACZ,OAAA,EAAS,IAAA;EACT,QAAA,EAAU,IAAA;EACV,OAAA,EAAS,IAAA;EACT,MAAA,EAAQ,IAAA;EACR,MAAA,EAAQ,IAAA;EACR,OAAA,EAAS,IAAA;EACT,UAAA,EAAY,IAAA;EACZ,UAAA,EAAY,IAAA;EACZ,KAAA,EAAO,IAAA;EACP,OAAA,EAAS,IAAA;EACT,KAAA,EAAO,IAAA;EACP,MAAA,EAAQ,IAAA;EACR,SAAA,EAAW,IAAA;EACX,OAAA,EAAS,IAAA;EACT,MAAA,EAAQ,IAAA;EACR,UAAA,EAAY,IAAA;EACZ,QAAA,EAAU,IAAA;EACV,OAAA,EAAS,IAAA;EACT,OAAA,EAAS,IAAA;EACT,MAAA,EAAQ,IAAA;EACR,SAAA,EAAW,IAAA;EACX,OAAA,EAAS,IAAA;EACT,OAAA,EAAS,IAAA;EACT,OAAA,EAAS,IAAA;EACT,OAAA,EAAS,IAAA;EACT,KAAA,EAAO,IAAA;EACP,IAAA,EAAM,IAAA;EACN,OAAA,EAAS,IAAA;EACT,SAAA,EAAW,IAAA;EACX,IAAA,EAAM,IAAA;EACN,UAAA,EAAY,IAAA;EACZ,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,2BAAN,MAA+D;AAOpE,EAAA,WAAA,CACW,SACQ,MAAA,EACjB;AAFS,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACQ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AARnB,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAS7B,EAAA;AAPH,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAOA,EAAA,MAAc,OAAA,CAAQ;AACpB,IAAA,KAAA;AACA,IAAA,SAAA;AACA,IAAA;GACF,EAAmC;AACjC,IAAA,MAAM,WAA8C,EAAC;AAGrD,IAAA,MAAM,aAAA,GAAgB,MAAMM,oBAAAA,CAAqB;MAC/C,QAAA,EAAU,QAAA;AACV,MAAA,eAAA;MACA,MAAA,EAAQ;KACT,CAAA;AAGD,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,IAAA,MAAM,IAAA,GACJ,KAAA,YAAiB,UAAA,GACb,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA,GAChB,IAAI,IAAA,CAAK,CAAC,yBAAA,CAA0B,KAAK,CAAC,CAAC,CAAA;AAEjD,IAAA,QAAA,CAAS,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,OAAO,CAAA;AACrC,IAAA,MAAM,aAAA,GAAgB,qBAAqB,SAAS,CAAA;AACpD,IAAA,QAAA,CAAS,MAAA;AACP,MAAA,MAAA;MACA,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,SAAS,EAAE,IAAA,EAAM,WAAW,CAAA;AAC7C,MAAA,CAAA,MAAA,EAAS,aAAa,CAAA;AACxB,KAAA;AAGA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,yBAAA,GAA4B;AAChC,QAAA,OAAA,EAAS,aAAA,CAAc,OAAA;AACvB,QAAA,QAAA,EAAU,aAAA,CAAc,QAAA;AACxB,QAAA,MAAA,EAAQ,aAAA,CAAc,MAAA;;;QAGtB,eAAA,EAAiB;AACf,UAAA,mBAAA;AACA,UAAA;AACF,SAAA,CAAE,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,GACnB,MAAA,GACA,cAAA;AACJ,QAAA,WAAA,EAAa,aAAA,CAAc,WAAA;AAC3B,QAAA,uBAAA,EAAyB,aAAA,CAAc;AACzC,OAAA;AAEA,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,yBAAyB,CAAA,EAAG;AACpE,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,YAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,cAAA,QAAA,CAAS,OAAO,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA,EAAM,MAAA,CAAO,IAAI,CAAC,CAAA;AAC1C,YAAA;UACF,CAAA,MAAO;AACL,YAAA,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AACpC,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAO;AACL,MAAA,QAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,WACJ,OAAA,EACkE;AAlLtE,IAAA,IAAAvB,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AAmLI,IAAA,MAAM,WAAA,GAAA,CAAc,MAAA,EAAA,GAAA,CAAAA,IAAAA,GAAA,KAAK,MAAA,CAAO,SAAA,KAAZ,OAAA,MAAA,GAAAA,IAAAA,CAAuB,gBAAvB,IAAA,GAAA,MAAA,GAAA,GAAA,IAAA,CAAAA,IAAA,MAAA,IAAA,GAAA,EAAA,uBAA8C,IAAA,EAAK;AACvE,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAEzD,IAAA,MAAM;MACJ,KAAA,EAAO,QAAA;AACP,MAAA,eAAA;MACA,QAAA,EAAU;AACZ,KAAA,GAAI,MAAM,iBAAA,CAAkB;MAC1B,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,uBAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASyB,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;AAC9D,MAAA,QAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BC,yBAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,MAAM,QAAA,GACJ,QAAA,CAAS,QAAA,IAAY,IAAA,IAAQ,QAAA,CAAS,YAAY,WAAA,GAC9C,WAAA,CAAY,QAAA,CAAS,QAAoC,CAAA,GACzD,MAAA;AAEN,IAAA,OAAO;AACL,MAAA,IAAA,EAAM,QAAA,CAAS,IAAA;MACf,QAAA,EAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,OAAA,MAAA,GAAA,EAAA,CAAmB,GAAA,CAAI,CAAA,OAAA,MAAY;AACjC,QAAA,IAAA,EAAM,OAAA,CAAQ,IAAA;AACd,QAAA,WAAA,EAAa,OAAA,CAAQ,KAAA;AACrB,QAAA,SAAA,EAAW,OAAA,CAAQ;OACrB,CAAA,CAAA,KAJA,IAAA,GAAA,EAAA,GAAA,CAKA,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,GAAA,CAAI,CAAA,IAAA,MAAS;AAC3B,QAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,QAAA,WAAA,EAAa,IAAA,CAAK,KAAA;AAClB,QAAA,SAAA,EAAW,IAAA,CAAK;OAClB,CAAA,CAAA,KATA,IAAA,GAAA,EAAA,GAUA,EAAC;AACH,MAAA,QAAA;AACA,MAAA,iBAAA,EAAA,CAAmB,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,IAAA,GAAA,EAAA,GAAqB,MAAA;AACxC,MAAA,QAAA;MACA,QAAA,EAAU;QACR,SAAA,EAAW,WAAA;AACX,QAAA,OAAA,EAAS,IAAA,CAAK,OAAA;QACd,OAAA,EAAS,eAAA;QACT,IAAA,EAAM;AACR;AACF,KAAA;AACF,EAAA;AACF,CAAA;ACzNO,IAAM,iCAAA,GAAoCR,aAAAA;EAAc,MAC7DH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACjC,MAAA,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,CAAG,CAAA,CAAE,OAAA,CAAQ,CAAG,CAAA,CAAE,OAAA;KACnD;AACH;AACF,CAAA;ACAO,IAAM,oBAAN,MAAiD;AAOtD,EAAA,WAAA,CACW,SACQ,MAAA,EACjB;AAFS,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACQ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AARnB,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAS7B,EAAA;AAPH,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAOA,EAAA,MAAc,OAAA,CAAQ;AACpB,IAAA,IAAA;IACA,KAAA,GAAQ,OAAA;IACR,YAAA,GAAe,KAAA;AACf,IAAA,KAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA;AACA,IAAA;GACF,EAA+C;AAC7C,IAAA,MAAM,WAAuC,EAAC;AAG9C,IAAA,MAAM,aAAA,GAAgB,MAAMM,oBAAAA,CAAqB;MAC/C,QAAA,EAAU,QAAA;AACV,MAAA,eAAA;MACA,MAAA,EAAQ;KACT,CAAA;AAGD,IAAA,MAAM,WAAA,GAAuC;AAC3C,MAAA,KAAA,EAAO,IAAA,CAAK,OAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;MACA,eAAA,EAAiB,KAAA;AACjB,MAAA,KAAA;AACA,MAAA;AACF,KAAA;AAEA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,KAAK,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG;AACvE,QAAA,WAAA,CAAY,eAAA,GAAkB,YAAA;MAChC,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,cAAA;AACT,UAAA,OAAA,EAAS,8BAA8B,YAAY,CAAA,oBAAA;SACpD,CAAA;AACH,MAAA;AACF,IAAA;AAGA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,qBAA2C,EAAC;AAElD,MAAA,KAAA,MAAW,OAAO,kBAAA,EAAoB;AACpC,QAAA,MAAM,KAAA,GAAQ,mBAAmB,GAAiC,CAAA;AAClE,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,WAAA,CAAY,GAAG,CAAA,GAAI,KAAA;AACrB,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,UAAA;AACT,QAAA,OAAA,EAAS,+EAA+E,QAAQ,CAAA,cAAA;OACjG,CAAA;AACH,IAAA;AAEA,IAAA,OAAO;AACL,MAAA,WAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,WACJ,OAAA,EAC2D;AArG/D,IAAA,IAAAvB,MAAA,EAAA,EAAA,EAAA;AAsGI,IAAA,MAAM,WAAA,GAAA,CAAc,MAAA,EAAA,GAAA,CAAAA,IAAAA,GAAA,KAAK,MAAA,CAAO,SAAA,KAAZ,OAAA,MAAA,GAAAA,IAAAA,CAAuB,gBAAvB,IAAA,GAAA,MAAA,GAAA,GAAA,IAAA,CAAAA,IAAA,MAAA,IAAA,GAAA,EAAA,uBAA8C,IAAA,EAAK;AACvE,IAAA,MAAM,EAAE,WAAA,EAAa,QAAA,KAAa,MAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAE5D,IAAA,MAAM;MACJ,KAAA,EAAO,KAAA;AACP,MAAA,eAAA;MACA,QAAA,EAAU;AACZ,KAAA,GAAI,MAAMwB,aAAAA,CAAc;MACtB,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,eAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;MAC9D,IAAA,EAAM,WAAA;MACN,qBAAA,EAAuB,2BAAA;AACvB,MAAA,yBAAA,EAA2B,2BAAA,EAA4B;AACvD,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,OAAO;AACL,MAAA,KAAA;AACA,MAAA,QAAA;MACA,OAAA,EAAS;QACP,IAAA,EAAM,IAAA,CAAK,UAAU,WAAW;AAClC,OAAA;MACA,QAAA,EAAU;QACR,SAAA,EAAW,WAAA;AACX,QAAA,OAAA,EAAS,IAAA,CAAK,OAAA;QACd,OAAA,EAAS,eAAA;QACT,IAAA,EAAM;AACR;AACF,KAAA;AACF,EAAA;AACF,CAAA;ACjIO,IAAM,qBAAA,GAAwB,UAAA;EAAW,MAC9CV,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,MAAA,EAAQA,KAAE,MAAA,CAAO;QACf,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,QAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;QAC3B,SAAA,EAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC/B,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC1B,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QACtC,GAAA,EAAKA,IAAAA,CAAE,OAAOA,IAAAA,CAAE,MAAA,IAAUA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA;OACvC;KACF;AACH;AACF,CAAA;AAEO,IAAM,sBAAA,GAAyB,UAAA;EAAW,MAC/CF,SAAAA,CAAUE,KAAE,MAAA,CAAO,EAAE,QAAQA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAC;AAC5C,CAAA;ACGA,SAAS,QAAA,CAAS,MAAc,QAAA,EAAuC;AACrE,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,OAAO,SAAS,IAAA,CAAK,CAAA,WAAU,IAAA,CAAK,UAAA,CAAW,MAAM,CAAC,CAAA;AACxD;AAEA,eAAsB,6BAAA,CAA8B;AAClD,EAAA,MAAA;AACA,EAAA,iBAAA;AACA,EAAA,cAAA;AACA,EAAA,KAAA;EACA,iBAAA,GAAoB;AACtB,CAAA,EASG;AA/CH,EAAA,IAAAjB,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AAgDE,EAAA,MAAM,QAA8B,EAAC;AACrC,EAAA,MAAM,WAA8C,EAAC;AAErD,EAAA,KAAA,MAAW,EAAE,IAAA,EAAM,OAAA,EAAQ,IAAK,MAAA,EAAQ;AACtC,IAAA,QAAQ,IAAA;AACN,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,QAAQ,iBAAA;AACN,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,CAAA;AACtC,YAAA;AACF,UAAA;AACA,UAAA,KAAK,WAAA,EAAa;AAChB,YAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,WAAA,EAAa,SAAS,CAAA;AACzC,YAAA;AACF,UAAA;AACA,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,QAAA,CAAS,IAAA,CAAK;cACZ,IAAA,EAAM,OAAA;cACN,OAAA,EAAS;aACV,CAAA;AACD,YAAA;AACF,UAAA;UACA,SAAS;AACP,YAAA,MAAM,gBAAA,GAA0B,iBAAA;AAChC,YAAA,MAAM,IAAI,KAAA;AACR,cAAA,CAAA,iCAAA,EAAoC,gBAAgB,CAAA;AACtD,aAAA;AACF,UAAA;AACF;AACA,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,KAAA,CAAM,IAAA,CAAK;UACT,IAAA,EAAM,MAAA;AACN,UAAA,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAnFhD,YAAA,IAAAA,MAAA4B,GAAAA,EAAAC,GAAAA;AAoFY,YAAA,QAAQ,KAAK,IAAA;AACX,cAAA,KAAK,MAAA,EAAQ;AACX,gBAAA,OAAO,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,KAAK,IAAA,EAAK;AAC/C,cAAA;AACA,cAAA,KAAK,MAAA,EAAQ;AACX,gBAAA,IAAI,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,EAAG;AACvC,kBAAA,MAAM,SAAA,GACJ,IAAA,CAAK,SAAA,KAAc,SAAA,GACf,eACA,IAAA,CAAK,SAAA;AAEX,kBAAA,OAAO;oBACL,IAAA,EAAM,aAAA;oBACN,GAAI,IAAA,CAAK,gBAAgB,GAAA,GACrB,EAAE,WAAW,IAAA,CAAK,IAAA,CAAK,QAAA,EAAS,EAAE,GAClC,OAAO,KAAK,IAAA,KAAS,QAAA,IACnB,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,cAAc,IAClC,EAAE,OAAA,EAAS,IAAA,CAAK,IAAA,EAAK,GACrB;AACE,sBAAA,SAAA,EAAW,QAAQ,SAAS,CAAA,QAAA,EAAWC,eAAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAA;AACnE,qBAAA;oBACN,MAAA,EAAA,CAAQF,GAAAA,GAAAA,CAAA5B,IAAAA,GAAA,IAAA,CAAK,eAAA,KAAL,IAAA,GAAA,SAAAA,IAAAA,CAAsB,MAAA,KAAtB,IAAA,GAAA,MAAA,GAAA4B,GAAAA,CAA8B;AACxC,mBAAA;gBACF,CAAA,MAAA,IAAW,IAAA,CAAK,cAAc,iBAAA,EAAmB;AAC/C,kBAAA,IAAI,IAAA,CAAK,gBAAgB,GAAA,EAAK;AAC5B,oBAAA,OAAO;sBACL,IAAA,EAAM,YAAA;sBACN,QAAA,EAAU,IAAA,CAAK,KAAK,QAAA;AACtB,qBAAA;AACF,kBAAA;AACA,kBAAA,OAAO;oBACL,IAAA,EAAM,YAAA;AACN,oBAAA,GAAI,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IACzB,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,cAAc,CAAA,GAC9B,EAAE,OAAA,EAAS,IAAA,CAAK,MAAK,GACrB;AACE,sBAAA,QAAA,EAAA,CAAUC,MAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAAA,GAAAA,GAAiB,QAAQ,KAAK,CAAA,IAAA,CAAA;AACxC,sBAAA,SAAA,EAAW,CAAA,4BAAA,EAA+BC,eAAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAA;AACtE;AACN,mBAAA;gBACF,CAAA,MAAO;AACL,kBAAA,MAAM,IAAIX,6BAAAA,CAA8B;oBACtC,aAAA,EAAe,CAAA,qBAAA,EAAwB,KAAK,SAAS,CAAA;mBACtD,CAAA;AACH,gBAAA;AACF,cAAA;AACF;UACF,CAAC;SACF,CAAA;AAED,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,oBAA8D,EAAC;AAGrE,QAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,UAAA,QAAQ,KAAK,IAAA;AACX,YAAA,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,EAAA,GAAA,CAAK,EAAA,GAAA,CAAAnB,IAAAA,GAAA,IAAA,CAAK,eAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,IAAAA,CAAsB,MAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8B,MAAA;AAKzC,cAAA,IAAI,KAAA,IAAS,MAAM,IAAA,EAAM;AACvB,gBAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAI,CAAA;AACzC,gBAAA;AACF,cAAA;AAEA,cAAA,KAAA,CAAM,IAAA,CAAK;gBACT,IAAA,EAAM,WAAA;AACN,gBAAA,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,eAAe,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAClD,gBAAA;eACD,CAAA;AAED,cAAA;AACF,YAAA;AACA,YAAA,KAAK,WAAA,EAAa;AAGhB,cAAA,IAAI,KAAK,gBAAA,EAAkB;AACzB,gBAAA;AACF,cAAA;AAEA,cAAA,MAAM,EAAA,GAAA,CAAK,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,eAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,MAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8B,MAAA;AAKzC,cAAA,IAAI,KAAA,IAAS,MAAM,IAAA,EAAM;AACvB,gBAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAI,CAAA;AACzC,gBAAA;AACF,cAAA;AAEA,cAAA,IAAI,iBAAA,IAAqB,IAAA,CAAK,QAAA,KAAa,aAAA,EAAe;AACxD,gBAAA,MAAM,WAAA,GAAc,MAAM,aAAA,CAAc;AACtC,kBAAA,KAAA,EAAO,IAAA,CAAK,KAAA;kBACZ,MAAA,EAAQ;iBACT,CAAA;AACD,gBAAA,KAAA,CAAM,IAAA,CAAK;kBACT,IAAA,EAAM,kBAAA;AACN,kBAAA,OAAA,EAAS,IAAA,CAAK,UAAA;AACd,kBAAA,EAAA;kBACA,MAAA,EAAQ;oBACN,IAAA,EAAM,MAAA;AACN,oBAAA,OAAA,EAAS,YAAY,MAAA,CAAO,OAAA;AAC5B,oBAAA,UAAA,EAAY,YAAY,MAAA,CAAO,SAAA;AAC/B,oBAAA,IAAA,EAAM,YAAY,MAAA,CAAO,IAAA;AACzB,oBAAA,iBAAA,EAAmB,YAAY,MAAA,CAAO,gBAAA;AACtC,oBAAA,GAAA,EAAK,YAAY,MAAA,CAAO;AAC1B;iBACD,CAAA;AAED,gBAAA;AACF,cAAA;AAEA,cAAA,KAAA,CAAM,IAAA,CAAK;gBACT,IAAA,EAAM,eAAA;AACN,gBAAA,OAAA,EAAS,IAAA,CAAK,UAAA;AACd,gBAAA,IAAA,EAAM,IAAA,CAAK,QAAA;gBACX,SAAA,EAAW,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA;AACpC,gBAAA;eACD,CAAA;AACD,cAAA;AACF,YAAA;;AAGA,YAAA,KAAK,aAAA,EAAe;AAClB,cAAA,IAAI,KAAA,EAAO;AAET,gBAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,kBAAkB,EAAA,EAAI,IAAA,CAAK,YAAY,CAAA;cAC5D,CAAA,MAAO;AACL,gBAAA,QAAA,CAAS,IAAA,CAAK;kBACZ,IAAA,EAAM,OAAA;kBACN,OAAA,EAAS,CAAA,wBAAA,EAA2B,KAAK,QAAQ,CAAA,4CAAA;iBAClD,CAAA;AACH,cAAA;AAEA,cAAA;AACF,YAAA;AAEA,YAAA,KAAK,WAAA,EAAa;AAChB,cAAA,MAAM,eAAA,GAAkB,MAAMuB,oBAAAA,CAAqB;gBACjD,QAAA,EAAU,QAAA;AACV,gBAAA,eAAA,EAAiB,IAAA,CAAK,eAAA;gBACtB,MAAA,EAAQ;eACT,CAAA;AAED,cAAA,MAAM,WAAA,GAAc,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA;AAErC,cAAA,IAAI,eAAe,IAAA,EAAM;AACvB,gBAAA,MAAM,gBAAA,GAAmB,kBAAkB,WAAW,CAAA;AAEtD,gBAAA,IAAI,KAAA,EAAO;AAGT,kBAAA,IAAI,qBAAqB,MAAA,EAAW;AAClC,oBAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,EAAA,EAAI,aAAa,CAAA;AAGtD,oBAAA,iBAAA,CAAkB,WAAW,CAAA,GAAI;sBAC/B,IAAA,EAAM,WAAA;sBACN,EAAA,EAAI,WAAA;AACJ,sBAAA,OAAA,EAAS;AACX,qBAAA;AACF,kBAAA;gBACF,CAAA,MAAO;AACL,kBAAA,MAAM,eAGD,EAAC;AAEN,kBAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK;sBAChB,IAAA,EAAM,cAAA;AACN,sBAAA,IAAA,EAAM,IAAA,CAAK;qBACZ,CAAA;AACH,kBAAA,CAAA,MAAA,IAAW,qBAAqB,MAAA,EAAW;AACzC,oBAAA,QAAA,CAAS,IAAA,CAAK;sBACZ,IAAA,EAAM,OAAA;AACN,sBAAA,OAAA,EAAS,CAAA,4FAAA,EAA+F,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;qBAC7H,CAAA;AACH,kBAAA;AAEA,kBAAA,IAAI,qBAAqB,MAAA,EAAW;AAClC,oBAAA,iBAAA,CAAkB,WAAW,CAAA,GAAI;sBAC/B,IAAA,EAAM,WAAA;sBACN,EAAA,EAAI,WAAA;sBACJ,iBAAA,EACE,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,yBAAA;sBACnB,OAAA,EAAS;AACX,qBAAA;AACA,oBAAA,KAAA,CAAM,IAAA,CAAK,iBAAA,CAAkB,WAAW,CAAC,CAAA;kBAC3C,CAAA,MAAO;AACL,oBAAA,gBAAA,CAAiB,OAAA,CAAQ,IAAA,CAAK,GAAG,YAAY,CAAA;AAG7C,oBAAA,IAAA,CAAI,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,8BAA6B,IAAA,EAAM;AACtD,sBAAA,gBAAA,CAAiB,oBACf,eAAA,CAAgB,yBAAA;AACpB,oBAAA;AACF,kBAAA;AACF,gBAAA;cACF,CAAA,MAAO;AACL,gBAAA,QAAA,CAAS,IAAA,CAAK;kBACZ,IAAA,EAAM,OAAA;AACN,kBAAA,OAAA,EAAS,CAAA,uEAAA,EAA0E,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;iBACxG,CAAA;AACH,cAAA;AACA,cAAA;AACF,YAAA;AACF;AACF,QAAA;AAEA,QAAA;AACF,MAAA;AAEA,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,UAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AAEpB,UAAA,IACE,qBACA,IAAA,CAAK,QAAA,KAAa,aAAA,IAClB,MAAA,CAAO,SAAS,MAAA,EAChB;AACA,YAAA,MAAM,YAAA,GAAe,MAAM,aAAA,CAAc;AACvC,cAAA,KAAA,EAAO,MAAA,CAAO,KAAA;cACd,MAAA,EAAQ;aACT,CAAA;AAED,YAAA,KAAA,CAAM,IAAA,CAAK;cACT,IAAA,EAAM,yBAAA;AACN,cAAA,OAAA,EAAS,IAAA,CAAK,UAAA;AACd,cAAA,MAAA,EAAQ,YAAA,CAAa;aACtB,CAAA;AACD,YAAA;AACF,UAAA;AAEA,UAAA,IAAI,YAAA;AACJ,UAAA,QAAQ,OAAO,IAAA;YACb,KAAK,MAAA;YACL,KAAK,YAAA;AACH,cAAA,YAAA,GAAe,MAAA,CAAO,KAAA;AACtB,cAAA;YACF,KAAK,MAAA;YACL,KAAK,YAAA;AACH,cAAA,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,KAAK,CAAA;AAC1C,cAAA;YACF,KAAK,SAAA;AACH,cAAA,YAAA,GAAe,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAA,IAAA,KAAQ;AACtC,gBAAA,QAAQ,KAAK,IAAA;AACX,kBAAA,KAAK,MAAA,EAAQ;AACX,oBAAA,OAAO,EAAE,IAAA,EAAM,YAAA,EAAuB,IAAA,EAAM,KAAK,IAAA,EAAK;AACxD,kBAAA;AACA,kBAAA,KAAK,OAAA,EAAS;AACZ,oBAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,GACrC;sBACE,IAAA,EAAM,aAAA;AACN,sBAAA,SAAA,EAAW,CAAA,KAAA,EAAQ,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,KAAK,IAAI,CAAA;qBACvD,GACA;sBACE,IAAA,EAAM,YAAA;sBACN,QAAA,EAAU,MAAA;AACV,sBAAA,SAAA,EAAW,CAAA,KAAA,EAAQ,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,KAAK,IAAI,CAAA;AACvD,qBAAA;AACN,kBAAA;AACF;cACF,CAAC,CAAA;AACD,cAAA;AACJ;AAEA,UAAA,KAAA,CAAM,IAAA,CAAK;YACT,IAAA,EAAM,sBAAA;AACN,YAAA,OAAA,EAAS,IAAA,CAAK,UAAA;YACd,MAAA,EAAQ;WACT,CAAA;AACH,QAAA;AAEA,QAAA;AACF,MAAA;MAEA,SAAS;AACP,QAAA,MAAM,gBAAA,GAA0B,IAAA;AAChC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,gBAAgB,CAAA,CAAE,CAAA;AACzD,MAAA;AACF;AACF,EAAA;AAEA,EAAA,OAAO,EAAE,OAAO,QAAA,EAAS;AAC3B;AAEA,IAAM,6CAAA,GAAgDN,KAAE,MAAA,CAAO;EAC7D,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;EAC3B,yBAAA,EAA2BA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;AACxC,CAAC,CAAA;AC1XM,SAAS,6BAAA,CAA8B;AAC5C,EAAA,YAAA;AACA,EAAA;AACF,CAAA,EAIgC;AAC9B,EAAA,QAAQ,YAAA;IACN,KAAK,MAAA;IACL,KAAK,IAAA;AACH,MAAA,OAAO,kBAAkB,YAAA,GAAe,MAAA;IAC1C,KAAK,mBAAA;AACH,MAAA,OAAO,QAAA;IACT,KAAK,gBAAA;AACH,MAAA,OAAO,gBAAA;AACT,IAAA;AACE,MAAA,OAAO,kBAAkB,YAAA,GAAe,SAAA;AAC5C;AACF;ACkNO,IAAM,0BAAA,GAA6BC,aAAAA;EAAc,MACtDH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,KAAA,CAAM;AACNA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,4BAA4B,CAAA;AAC5C,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,QAAA,QAAA,EAAUA,IAAAA,CACP,KAAA;AACCA,UAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,YAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,YAAA,EAAcA,IAAAA,CAAE,KAAA;AACdA,cAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,gBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,gBAAA,OAAA,EAASA,KAAE,MAAA;eACZ;AACH;WACD;AACH,SAAA,CACC,OAAA;OACJ,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,QAAA,IAAA,EAAMA,IAAAA,CAAE,IAAA,CAAK,CAAC,oBAAA,EAAsB,qBAAqB,CAAC,CAAA;AAC1D,QAAA,QAAA,EAAUA,KAAE,MAAA,CAAO;UACjB,kBAAA,EAAoBA,IAAAA,CAAE,OAAO,EAAE,MAAA,EAAQA,KAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ;AAC7D,UAAA,KAAA,EAAOA,KAAE,MAAA,CAAO;AACd,YAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;YACvB,oBAAA,EAAsBA,IAAAA,CACnB,MAAA,CAAO,EAAE,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ,EAAG,CAAA,CAC9C,OAAA,EAAQ;AACX,YAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;YACxB,qBAAA,EAAuBA,IAAAA,CACpB,MAAA,CAAO,EAAE,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ,EAAG,CAAA,CACjD,OAAA;WACJ,CAAA;UACD,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;SAC1B;OACF,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,QAAA,QAAA,EAAUA,KAAE,MAAA,CAAO;AACjB,UAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,UAAA,UAAA,EAAYA,KAAE,MAAA,EAAO;AACrB,UAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;UAChB,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;SAC1B;OACF,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,4BAA4B,CAAA;AAC5C,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;QACvB,IAAA,EAAMA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACjCA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,SAAS,CAAA;AACzB,YAAA,EAAA,EAAIA,KAAE,MAAA;WACP,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;WAC/B,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,YAAA,SAAA,EAAWA,KAAE,MAAA;WACd,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,iBAAiB,CAAA;AACjC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA;WACX,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA;WACX,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,YAAA,EAAA,EAAIA,KAAE,MAAA;WACP,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA;WACP,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;YACvB,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAC1B,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;gBAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;gBACtDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG;eACvD;AACH,aAAA,CACC,QAAA,EAAS;AACZ,YAAA,MAAA,EAAQA,KAAE,MAAA;WACX;SACF;OACF,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,2BAA2B,CAAA;AAC3C,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;QACvB,IAAA,EAAMA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACjCA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,SAAS,CAAA;AACzB,YAAA,EAAA,EAAIA,KAAE,MAAA;WACP,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;WAC/B,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,YAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;YACpB,MAAA,EAAQA,IAAAA,CAAE,QAAQ,WAAW;WAC9B,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAC1B,YAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;gBAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;gBACtDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG;eACvD;AACH,aAAA,CACC,QAAA;WACJ,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA;WACX,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,iBAAiB,CAAA;AACjC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA,EAAO;YACjB,MAAA,EAAQA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACnCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,QAAQ,CAAA;gBACxB,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,gBAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,kBAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;oBAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;oBACpDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG;mBACtD;AACH,iBAAA,CACC,OAAA;eACJ,CAAA;AACDA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,gBAAA,GAAA,EAAKA,KAAE,MAAA;eACR,CAAA;AACDA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,gBAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,gBAAA,OAAA,EAASA,KAAE,MAAA;eACZ;aACF;WACF,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC3B,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,gBAAA,UAAA,EAAYA,KAAE,MAAA,CAAOA,IAAAA,CAAE,QAAO,EAAGA,IAAAA,CAAE,SAAS,CAAA;AAC5C,gBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,gBAAA,QAAA,EAAUA,KAAE,MAAA,EAAO;AACnB,gBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,gBAAA,IAAA,EAAMA,KAAE,MAAA;eACT;AACH,aAAA,CACC,OAAA;WACJ,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,MAAA,EAAQA,KAAE,MAAA,CAAO;cACf,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,cAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;cAC3B,UAAA,EAAYA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cAChC,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cAC1B,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cACvC,GAAA,EAAKA,IAAAA,CAAE,OAAOA,IAAAA,CAAE,MAAA,IAAUA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA;aACvC;WACF,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,MAAA,EAAQA,IAAAA,CAAE,QAAQ,WAAW;WAC9B;SACF;OACF,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,wCAAwC,CAAA;AACxD,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,QAAA,KAAA,EAAOA,KAAE,MAAA;OACV,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,8CAA8C,CAAA;AAC9D,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,QAAA,iBAAA,EAAmBA,KAAE,MAAA;OACtB,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,2CAA2C,CAAA;AAC3D,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,QAAA,KAAA,EAAOA,KAAE,MAAA;OACV,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,0CAA0C,CAAA;AAC1D,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,QAAA,IAAA,EAAMA,KAAE,MAAA;OACT,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uCAAuC,CAAA;QACvD,UAAA,EAAYA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACvCA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,cAAc,CAAA;AAC9B,YAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,YAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;AACpB,YAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,YAAA,KAAA,EAAOA,KAAE,MAAA;WACV,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;YAClB,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YAC7B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YAC1B,WAAA,EAAaA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YAChC,SAAA,EAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;YAC9B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;WACnB;SACF;OACF,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uCAAuC,CAAA;AACvD,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,aAAA,EAAeA,KAAE,MAAA;OAClB,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uCAAuC,CAAA;AACvD,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;AACxB,QAAA,KAAA,EAAOA,KAAE,MAAA;OACV,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,sCAAsC,CAAA;AACtD,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,aAAA,EAAeA,KAAE,MAAA;OAClB,CAAA;AACDA,MAAAA,IAAAA,CAAE,MAAA,CAAO;QACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,OAAO,CAAA;AACvB,QAAA,eAAA,EAAiBA,KAAE,MAAA,EAAO;AAC1B,QAAA,KAAA,EAAOA,KAAE,MAAA,CAAO;AACd,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,UAAA,OAAA,EAASA,KAAE,MAAA,EAAO;UAClB,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;SACnB;OACF,CAAA;AACDA,MAAAA,IAAAA,CACG,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAC3B,KAAA,EAAM,CACN,SAAA,CAAU,CAAA,KAAA,MAAU;QACnB,IAAA,EAAM,eAAA;AACN,QAAA,OAAA,EAAS,KAAA,CAAM;OACjB,CAAE;;KACL;AACH;AACF,CAAA;AAoBO,IAAM,6BAAA,GAAgCC,aAAAA;EAAc,MACzDH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,EAAA,EAAIA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;MACxB,UAAA,EAAYA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAChC,MAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;AACN,QAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,QAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;QACf,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,QAAA,IAAA,EAAMA,KAAE,MAAA;AACV,OAAC,EACA,OAAA,EAAQ;MACX,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAC3B,MAAA,MAAA,EAAQA,IAAAA,CACL,KAAA;AACCA,QAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AAC3BA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,SAAS,CAAA;YACzB,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,aAAa,CAAA;AAC7B,gBAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,gBAAA,QAAA,EAAUA,IAAAA,CACP,KAAA;AACCA,kBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,oBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,oBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,oBAAA,YAAA,EAAcA,IAAAA,CAAE,KAAA;AACdA,sBAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,wBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,wBAAA,OAAA,EAASA,KAAE,MAAA;uBACZ;AACH;mBACD;AACH,iBAAA,CACC,OAAA,EAAQ;AACX,gBAAA,WAAA,EAAaA,IAAAA,CAAE,KAAA;AACbA,kBAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AAC3BA,oBAAAA,IAAAA,CAAE,MAAA,CAAO;sBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,cAAc,CAAA;AAC9B,sBAAA,WAAA,EAAaA,KAAE,MAAA,EAAO;AACtB,sBAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;AACpB,sBAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,sBAAA,KAAA,EAAOA,KAAE,MAAA;qBACV,CAAA;AACDA,oBAAAA,IAAAA,CAAE,MAAA,CAAO;sBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,sBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;sBAClB,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAC7B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAC1B,WAAA,EAAaA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAChC,SAAA,EAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAC9B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;qBACnB,CAAA;AACDA,oBAAAA,IAAAA,CAAE,MAAA,CAAO;sBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,yBAAyB,CAAA;AACzC,sBAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,sBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;sBAClB,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAC7B,WAAA,EAAaA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAChC,SAAA,EAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;sBAC9B,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;qBACnB,CAAA;AACDA,oBAAAA,IAAAA,CAAE,MAAA,CAAO;sBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,sBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;sBAClB,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;qBACnB;mBACF;AACH;eACD;AACH;WACD,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,iBAAiB,CAAA;AACjC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA,EAAO;YACjB,MAAA,EAAQA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACnCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,QAAQ,CAAA;gBACxB,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AAC1B,gBAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,kBAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;oBAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;oBACpDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG;mBACtD;AACH,iBAAA,CACC,OAAA;eACJ,CAAA;AACDA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,gBAAA,GAAA,EAAKA,KAAE,MAAA;eACR,CAAA;AACDA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,gBAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,gBAAA,OAAA,EAASA,KAAE,MAAA;eACZ;aACF;WACF,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC3B,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,gBAAA,UAAA,EAAYA,IAAAA,CAAE,MAAA;AACZA,kBAAAA,IAAAA,CAAE,MAAA,EAAO;kBACTA,IAAAA,CAAE,KAAA,CAAM,CAACA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,OAAA,EAAS,CAAC;AAC/C,iBAAA;AACA,gBAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,gBAAA,QAAA,EAAUA,KAAE,MAAA,EAAO;AACnB,gBAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,gBAAA,IAAA,EAAMA,KAAE,MAAA;eACT;AACH,aAAA,CACC,OAAA;WACJ,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAC1B,YAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;AACvB,YAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,cAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;gBAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;gBACtDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG;eACvD;AACH,aAAA,CACC,QAAA;WACJ,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,uBAAuB,CAAA;AACvC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,MAAA,EAAQA,KAAE,MAAA;WACX,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,kBAAkB,CAAA;AAClC,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;AACb,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,MAAA,EAAQA,KAAE,MAAA,CAAO;cACf,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,cAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;cAC3B,UAAA,EAAYA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cAChC,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cAC1B,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;cACvC,GAAA,EAAKA,IAAAA,CAAE,OAAOA,IAAAA,CAAE,MAAA,IAAUA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA;aACvC;WACF,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,OAAA,EAASA,KAAE,MAAA,EAAO;AAClB,YAAA,IAAA,EAAMA,KAAE,MAAA,EAAO;AACf,YAAA,SAAA,EAAWA,KAAE,MAAA,EAAO;AACpB,YAAA,EAAA,EAAIA,KAAE,MAAA;WACP,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,eAAe,CAAA;AAC/B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;WACpB,CAAA;AACDA,UAAAA,IAAAA,CAAE,MAAA,CAAO;YACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,WAAW,CAAA;AAC3B,YAAA,EAAA,EAAIA,KAAE,MAAA,EAAO;YACb,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACtC,YAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;AACTA,cAAAA,IAAAA,CAAE,MAAA,CAAO;gBACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,cAAc,CAAA;AAC9B,gBAAA,IAAA,EAAMA,KAAE,MAAA;eACT;AACH;WACD;SACF;AACH,OAAA,CACC,QAAA,EAAS;MACZ,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACjC,kBAAA,EAAoBA,IAAAA,CAAE,OAAO,EAAE,MAAA,EAAQA,KAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ;AAC7D,MAAA,KAAA,EAAOA,KACJ,MAAA,CAAO;AACN,QAAA,YAAA,EAAcA,KAAE,MAAA,EAAO;QACvB,oBAAA,EAAsBA,IAAAA,CACnB,MAAA,CAAO,EAAE,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ,EAAG,CAAA,CAC9C,OAAA,EAAQ;AACX,QAAA,aAAA,EAAeA,KAAE,MAAA,EAAO;QACxB,qBAAA,EAAuBA,IAAAA,CACpB,MAAA,CAAO,EAAE,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ,EAAG,CAAA,CACjD,OAAA;AACL,OAAC,EACA,QAAA;KACJ;AACH;AACF,CAAA;ACjtBO,IAAM,gBAAA,GAAmB,EAAA;AAiHzB,IAAM,oCAAA,GAAuCC,aAAAA;EAAc,MAChEH,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACjC,MAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,QAAAA,IAAAA,CAAE,IAAA,CAAK;AACL,UAAA,6BAAA;;AACA,UAAA,0BAAA;AACA,UAAA;SACD;AACH,OAAA,CACC,OAAA,EAAQ;MACX,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;;;;;;;;;;;;;AAcjC,MAAA,QAAA,EAAUA,KACP,KAAA,CAAM,CAACA,IAAAA,CAAE,OAAA,IAAWA,IAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAC,CAAC,EAC5D,QAAA,EAAS;;;;;;MAOZ,YAAA,EAAcA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MAEjC,QAAA,EAAUA,IAAAA,CAAE,GAAA,EAAI,CAAE,OAAA,EAAQ;MAC1B,iBAAA,EAAmBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,EAAQ;MACvC,kBAAA,EAAoBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACvC,cAAA,EAAgBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;;;;;;;;;AAUnC,MAAA,oBAAA,EAAsBA,KAAE,IAAA,CAAK,CAAC,aAAa,KAAK,CAAC,EAAE,OAAA,EAAQ;MAC3D,eAAA,EAAiBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACpC,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACrC,gBAAA,EAAkBA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;MACrC,WAAA,EAAaA,IAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,QAAQ,UAAA,EAAY,SAAS,CAAC,CAAA,CAAE,OAAA,EAAQ;MACrE,KAAA,EAAOA,IAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,EAAQ;MAC3B,gBAAA,EAAkBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,EAAQ;MACtC,aAAA,EAAeA,IAAAA,CAAE,KAAK,CAAC,KAAA,EAAO,UAAU,MAAM,CAAC,EAAE,OAAA,EAAQ;AACzD,MAAA,UAAA,EAAYA,KAAE,IAAA,CAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,OAAA,EAAQ;MACjD,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA;KAClB;AACH;AACF,CAAA;ACvLO,IAAM,0BAAA,GAA6Bc,UAAAA;EAAW,MACnDhB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAQ;AACzB,MAAA,WAAA,EAAaA,KAAE,MAAA;KAChB;AACH;AACF,CAAA;AAEO,IAAM,2BAAA,GAA8Bc,UAAAA;EAAW,MACpDhB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,QAAAA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;UAC3BA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,EAAG,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAA;UACtDA,IAAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAMA,IAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,GAAA,EAAKA,IAAAA,CAAE,MAAA,EAAO,EAAG;SACvD;AACH,OAAA,CACC,OAAA;KACJ;AACH;AACF,CAAA;AAEO,IAAM,yBAAA,GAA4Bc,UAAAA;EAAW,MAClDhB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,SAAA,EAAWA,KACR,KAAA,CAAM;AACLA,QAAAA,IAAAA,CAAE,MAAA,EAAO;AACTA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,OAAA,EAASA,KAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,EAAE,QAAA;SAC9B;AACH,OAAC,EACA,QAAA;KACJ;AACH;AACF,CAAA;AAWO,IAAM,6BACXe,gDAAAA,CAqCE;EACA,EAAA,EAAI,yBAAA;EACJ,IAAA,EAAM,kBAAA;EACN,WAAA,EAAa,0BAAA;EACb,YAAA,EAAc;AAChB,CAAC,CAAA;AAEI,IAAM,eAAA,GAAkB,CAC7B,IAAA,GAA4B,EAAC,KAC1B;AACH,EAAA,OAAO,2BAA2B,IAAI,CAAA;AACxC,CAAA;AC7FA,IAAM,sBAAA,GAAyBf,KAAE,MAAA,CAAO;AACtC,EAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;EACd,IAAA,EAAMA,IAAAA,CAAE,KAAK,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAK,CAAC,CAAA;AACnD,EAAA,KAAA,EAAOA,IAAAA,CAAE,KAAA,CAAM,CAACA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,MAAA,EAAO,EAAGA,IAAAA,CAAE,OAAA,EAAS,CAAC;AACtD,CAAC,CAAA;AAED,IAAM,oBAAA,GAAuCA,KAAE,MAAA,CAAO;AACpD,EAAA,IAAA,EAAMA,IAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAC1B,EAAA,OAAA,EAASA,IAAAA,CAAE,KAAA;IACTA,IAAAA,CAAE,KAAA,CAAM,CAAC,sBAAA,EAAwBA,IAAAA,CAAE,KAAK,MAAM,oBAAoB,CAAC,CAAC;AACtE;AACF,CAAC,CAAA;AAEM,IAAM,oBAAA,GAAuBc,UAAAA;EAAW,MAC7ChB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,cAAA,EAAgBA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;MAClC,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AACnC,MAAA,OAAA,EAASA,KACN,MAAA,CAAO;QACN,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC5B,cAAA,EAAgBA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC7B,OAAC,EACA,QAAA,EAAS;AACZ,MAAA,OAAA,EAASA,KACN,KAAA,CAAM,CAAC,wBAAwB,oBAAoB,CAAC,EACpD,QAAA;KACJ;AACH;AACF,CAAA;AAEO,IAAM,sBAAA,GAAyBc,UAAAA;EAAW,MAC/ChB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,MAAA,OAAA,EAASA,IAAAA,CAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA;AAC3B,MAAA,OAAA,EAASA,IAAAA,CACN,KAAA;AACCA,QAAAA,IAAAA,CAAE,MAAA,CAAO;AACP,UAAA,UAAA,EAAYA,KAAE,MAAA,CAAOA,IAAAA,CAAE,QAAO,EAAGA,IAAAA,CAAE,SAAS,CAAA;AAC5C,UAAA,MAAA,EAAQA,KAAE,MAAA,EAAO;AACjB,UAAA,QAAA,EAAUA,KAAE,MAAA,EAAO;AACnB,UAAA,KAAA,EAAOA,KAAE,MAAA,EAAO;AAChB,UAAA,IAAA,EAAMA,KAAE,MAAA;SACT;AACH,OAAA,CACC,QAAA;KACJ;AACH;AACF,CAAA;AAEO,IAAM,aAAae,gDAAAA,CA+ExB;EACA,EAAA,EAAI,oBAAA;EACJ,IAAA,EAAM,aAAA;EACN,WAAA,EAAaf,IAAAA,CAAE,MAAA,CAAO,EAAE,CAAA;EACxB,YAAA,EAAc;AAChB,CAAC,CAAA;AC1IM,IAAM,mBAAA,GAAsBc,UAAAA;EAAW,MAC5ChB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,iBAAA,EAAmBA,IAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AACxC,MAAA,OAAA,EAASA,IAAAA,CACN,MAAA,CAAO,EAAE,cAAA,EAAgBA,KAAE,KAAA,CAAMA,IAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,EAAG,EACzD,QAAA,EAAS;MACZ,iBAAA,EAAmBA,IAAAA,CAAE,KAAK,CAAC,KAAA,EAAO,UAAU,MAAM,CAAC,EAAE,QAAA,EAAS;AAC9D,MAAA,YAAA,EAAcA,KACX,MAAA,CAAO;QACN,IAAA,EAAMA,IAAAA,CAAE,QAAQ,aAAa,CAAA;QAC7B,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC7B,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC1B,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC5B,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,OAAC,EACA,QAAA;KACJ;AACH;AACF,CAAA;ACnBO,IAAM,0BAAA,GAA6Bc,UAAAA;EAAW,MACnDhB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,iBAAA,EAAmBA,IAAAA,CAAE,KAAK,CAAC,KAAA,EAAO,UAAU,MAAM,CAAC,EAAE,QAAA,EAAS;AAC9D,MAAA,YAAA,EAAcA,KACX,MAAA,CAAO;QACN,IAAA,EAAMA,IAAAA,CAAE,QAAQ,aAAa,CAAA;QAC7B,OAAA,EAASA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC7B,IAAA,EAAMA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC1B,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC5B,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,OAAC,EACA,QAAA;KACJ;AACH;AACF,CAAA;AAEO,IAAM,2BAAA,GAA8Bc,UAAAA;AAAW,EAAA,MACpDhB,SAAAA,CAAUE,IAAAA,CAAE,MAAA,CAAO,EAAE,CAAC;AACxB,CAAA;AAEA,IAAM,4BAAA,GAA+Bc,UAAAA;EAAW,MAC9ChB,SAAAA;AACEE,IAAAA,IAAAA,CAAE,MAAA,CAAO;MACP,MAAA,EAAQA,IAAAA,CAAE,mBAAmB,MAAA,EAAQ;AACnCA,QAAAA,IAAAA,CAAE,MAAA,CAAO;UACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,QAAQ,CAAA;UACxB,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;SACnB,CAAA;AACDA,QAAAA,IAAAA,CAAE,MAAA,CAAO;UACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,UAAU,CAAA;AAC1B,UAAA,GAAA,EAAKA,KAAE,MAAA;SACR,CAAA;AACDA,QAAAA,IAAAA,CAAE,MAAA,CAAO;UACP,IAAA,EAAMA,IAAAA,CAAE,QAAQ,MAAM,CAAA;AACtB,UAAA,GAAA,EAAKA,KAAE,MAAA,EAAO;AACd,UAAA,OAAA,EAASA,KAAE,MAAA;SACZ;OACF;KACF;AACH;AACF,CAAA;AAEO,IAAM,mBACXe,gDAAAA,CAoFE;EACA,EAAA,EAAI,2BAAA;EACJ,IAAA,EAAM,oBAAA;EACN,WAAA,EAAa,2BAAA;EACb,YAAA,EAAc;AAChB,CAAC,CAAA;ACrII,IAAM,yBAAA,GAA4BD,UAAAA;EAAW,MAClDhB,SAAAA;AACEE,IAAAA,IAAAA,CACG,MAAA,CAAO;MACN,UAAA,EAAYA,IAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,UAAU,aAAa,CAAC,EAAE,QAAA,EAAS;AAC/D,MAAA,aAAA,EAAeA,KAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,EAAE,QAAA,EAAS;AAChD,MAAA,cAAA,EAAgBA,KACb,MAAA,CAAO;QACN,MAAA,EAAQA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;QAC5B,QAAA,EAAUA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,OAAC,EACA,QAAA,EAAS;MACZ,KAAA,EAAOA,IAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAC3B,MAAA,UAAA,EAAYA,KAAE,IAAA,CAAK,CAAC,MAAM,CAAC,EAAE,QAAA,EAAS;MACtC,iBAAA,EAAmBA,IAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;MAC7D,YAAA,EAAcA,IAAAA,CAAE,KAAK,CAAC,KAAA,EAAO,QAAQ,MAAM,CAAC,EAAE,QAAA,EAAS;MACvD,aAAA,EAAeA,IAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;MACvD,OAAA,EAASA,IAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,OAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS;MAC5D,IAAA,EAAMA,IAAAA,CACH,KAAK,CAAC,WAAA,EAAa,aAAa,WAAA,EAAa,MAAM,CAAC,CAAA,CACpD,QAAA;AACL,KAAC,EACA,MAAA;AACL;AACF,CAAA;AAEA,IAAM,0BAAA,GAA6Bc,WAAW,MAAMhB,SAAAA,CAAUE,KAAE,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA;AAEpE,IAAM,2BAAA,GAA8Bc,UAAAA;EAAW,MACpDhB,SAAAA,CAAUE,KAAE,MAAA,CAAO,EAAE,QAAQA,IAAAA,CAAE,MAAA,EAAO,EAAG,CAAC;AAC5C,CAAA;AAgEA,IAAM,6BACJe,gDAAAA,CASE;EACA,EAAA,EAAI,yBAAA;EACJ,IAAA,EAAM,kBAAA;EACN,WAAA,EAAa,0BAAA;EACb,YAAA,EAAc;AAChB,CAAC,CAAA;AAEI,IAAM,eAAA,GAAkB,CAC7B,IAAA,GAA4B,EAAC,KAC1B;AACH,EAAA,OAAO,2BAA2B,IAAI,CAAA;AACxC,CAAA;AC7GA,eAAsB,qBAAA,CAAsB;AAC1C,EAAA,KAAA;AACA,EAAA,UAAA;AACA,EAAA;AACF,CAAA,EAiBG;AAED,EAAA,KAAA,GAAA,CAAQ,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,UAAS,KAAA,GAAQ,MAAA;AAEhC,EAAA,MAAM,eAA6C,EAAC;AAEpD,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAW,UAAA,EAAY,QAAW,YAAA,EAAa;AACjE,EAAA;AAEA,EAAA,MAAM,cAA0C,EAAC;AAEjD,EAAA,KAAA,MAAWvB,SAAQ,KAAA,EAAO;AACxB,IAAA,QAAQA,MAAK,IAAA;MACX,KAAK,UAAA;AACH,QAAA,WAAA,CAAY,IAAA,CAAK;UACf,IAAA,EAAM,UAAA;AACN,UAAA,IAAA,EAAMA,KAAAA,CAAK,IAAA;AACX,UAAA,WAAA,EAAaA,KAAAA,CAAK,WAAA;AAClB,UAAA,UAAA,EAAYA,KAAAA,CAAK,WAAA;UACjB,MAAA,EAAQ;SACT,CAAA;AACD,QAAA;AACF,MAAA,KAAK,kBAAA,EAAoB;AACvB,QAAA,QAAQA,MAAK,EAAA;AACX,UAAA,KAAK,oBAAA,EAAsB;AACzB,YAAA,MAAM,IAAA,GAAO,MAAMwB,aAAAA,CAAc;AAC/B,cAAA,KAAA,EAAOxB,KAAAA,CAAK,IAAA;cACZ,MAAA,EAAQ;aACT,CAAA;AAED,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM,aAAA;AACN,cAAA,gBAAA,EAAkB,IAAA,CAAK,cAAA;AACvB,cAAA,eAAA,EAAiB,IAAA,CAAK,aAAA;AACtB,cAAA,eAAA,EAAiB,KAAK,OAAA,GAClB;AACE,gBAAA,MAAA,EAAQ,KAAK,OAAA,CAAQ,MAAA;AACrB,gBAAA,eAAA,EAAiB,KAAK,OAAA,CAAQ;eAChC,GACA,MAAA;AACJ,cAAA,OAAA,EAAS,IAAA,CAAK;aACf,CAAA;AAED,YAAA;AACF,UAAA;AACA,UAAA,KAAK,oBAAA,EAAsB;AACzB,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM;aACP,CAAA;AACD,YAAA;AACF,UAAA;AACA,UAAA,KAAK,2BAAA,EAA6B;AAChC,YAAA,MAAM,IAAA,GAAO,MAAMwB,aAAAA,CAAc;AAC/B,cAAA,KAAA,EAAOxB,KAAAA,CAAK,IAAA;cACZ,MAAA,EAAQ;aACT,CAAA;AACD,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM,oBAAA;AACN,cAAA,mBAAA,EAAqB,IAAA,CAAK,iBAAA;AAC1B,cAAA,aAAA,EAAe,IAAA,CAAK;aACrB,CAAA;AACD,YAAA;AACF,UAAA;AACA,UAAA,KAAK,mBAAA,EAAqB;AACxB,YAAA,MAAM,IAAA,GAAO,MAAMwB,aAAAA,CAAc;AAC/B,cAAA,KAAA,EAAOxB,KAAAA,CAAK,IAAA;cACZ,MAAA,EAAQ;aACT,CAAA;AACD,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM,YAAA;cACN,OAAA,EACE,IAAA,CAAK,WAAW,IAAA,GACZ,EAAE,iBAAiB,IAAA,CAAK,OAAA,CAAQ,gBAAe,GAC/C,MAAA;AACN,cAAA,mBAAA,EAAqB,IAAA,CAAK,iBAAA;AAC1B,cAAA,mBAAA,EAAqB,IAAA,CAAK,iBAAA;AAC1B,cAAA,aAAA,EAAe,IAAA,CAAK;aACrB,CAAA;AACD,YAAA;AACF,UAAA;AACA,UAAA,KAAK,yBAAA,EAA2B;AAC9B,YAAA,MAAM,IAAA,GAAO,MAAMwB,aAAAA,CAAc;AAC/B,cAAA,KAAA,EAAOxB,KAAAA,CAAK,IAAA;cACZ,MAAA,EAAQ;aACT,CAAA;AAED,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM,kBAAA;cACN,SAAA,EACE,IAAA,CAAK,aAAa,IAAA,GACd,EAAE,MAAM,MAAA,EAAQ,QAAA,EAAU,QAAU,GACpC,OAAO,KAAK,SAAA,KAAc,QAAA,GACxB,KAAK,SAAA,GACL,EAAE,MAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,CAAK,SAAA,CAAU,OAAA;aAClD,CAAA;AACD,YAAA;AACF,UAAA;AACA,UAAA,KAAK,yBAAA,EAA2B;AAC9B,YAAA,MAAM,IAAA,GAAO,MAAMwB,aAAAA,CAAc;AAC/B,cAAA,KAAA,EAAOxB,KAAAA,CAAK,IAAA;cACZ,MAAA,EAAQ;aACT,CAAA;AAED,YAAA,WAAA,CAAY,IAAA,CAAK;cACf,IAAA,EAAM,kBAAA;AACN,cAAA,UAAA,EAAY,IAAA,CAAK,UAAA;AACjB,cAAA,cAAA,EAAgB,IAAA,CAAK,aAAA;AACrB,cAAA,gBAAA,EAAkB,KAAK,cAAA,GACnB;AACE,gBAAA,OAAA,EAAS,KAAK,cAAA,CAAe,MAAA;AAC7B,gBAAA,SAAA,EAAW,KAAK,cAAA,CAAe;eACjC,GACA,MAAA;AACJ,cAAA,KAAA,EAAO,IAAA,CAAK,KAAA;AACZ,cAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,cAAA,OAAA,EAAS,IAAA,CAAK,OAAA;AACd,cAAA,UAAA,EAAY,IAAA,CAAK,UAAA;AACjB,cAAA,aAAA,EAAe,IAAA,CAAK,YAAA;AACpB,cAAA,kBAAA,EAAoB,IAAA,CAAK;aAC1B,CAAA;AACD,YAAA;AACF,UAAA;AACF;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAAA,OAAM,CAAA;AACpD,QAAA;AACJ;AACF,EAAA;AAEA,EAAA,IAAI,cAAc,IAAA,EAAM;AACtB,IAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,QAAW,YAAA,EAAa;AACnE,EAAA;AAEA,EAAA,MAAM,OAAO,UAAA,CAAW,IAAA;AAExB,EAAA,QAAQ,IAAA;IACN,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,UAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,MAAM,YAAA,EAAa;IAC9D,KAAK,MAAA;AACH,MAAA,OAAO;QACL,KAAA,EAAO,WAAA;QACP,UAAA,EACE,UAAA,CAAW,QAAA,KAAa,kBAAA,IACxB,UAAA,CAAW,QAAA,KAAa,iBACxB,UAAA,CAAW,QAAA,KAAa,kBAAA,IACxB,UAAA,CAAW,QAAA,KAAa,oBAAA,IACxB,WAAW,QAAA,KAAa,YAAA,GACpB,EAAE,IAAA,EAAM,UAAA,CAAW,QAAA,EAAS,GAC5B,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,UAAA,CAAW,QAAA,EAAS;AACpD,QAAA;AACF,OAAA;IACF,SAAS;AACP,MAAA,MAAM,gBAAA,GAA0B,IAAA;AAChC,MAAA,MAAM,IAAIU,6BAAAA,CAA8B;AACtC,QAAA,aAAA,EAAe,qBAAqB,gBAAgB,CAAA;OACrD,CAAA;AACH,IAAA;AACF;AACF;ACpJO,IAAM,+BAAN,MAA8D;AAOnE,EAAA,WAAA,CAAY,SAAiC,MAAA,EAAsB;AANnE,IAAA,IAAA,CAAS,oBAAA,GAAuB,IAAA;AAWhC,IAAA,IAAA,CAAS,aAAA,GAA0C;AACjD,MAAA,SAAA,EAAW,CAAC,iBAAiB,CAAA;AAC7B,MAAA,iBAAA,EAAmB,CAAC,iBAAiB;AACvC,KAAA;AAPE,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,EAAA;AAOA,EAAA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,MAAA,CAAO,QAAA;AACrB,EAAA;AAEA,EAAA,MAAc,OAAA,CAAQ;AACpB,IAAA,eAAA;AACA,IAAA,WAAA;AACA,IAAA,aAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,eAAA;AACA,IAAA,gBAAA;AACA,IAAA,IAAA;AACA,IAAA,MAAA;AACA,IAAA,eAAA;AACA,IAAA,KAAA;AACA,IAAA,UAAA;AACA,IAAA;GACF,EAAiD;AApFnD,IAAA,IAAAnB,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AAqFI,IAAA,MAAM,WAAyC,EAAC;AAChD,IAAA,MAAM,WAAA,GAAc,uBAAA,CAAwB,IAAA,CAAK,OAAO,CAAA;AAExD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,QAAQ,CAAA;AAChE,IAAA;AAEA,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,QAAQ,CAAA;AAChE,IAAA;AAEA,IAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS;OACV,CAAA;AACH,IAAA;AAEA,IAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS;OACV,CAAA;AACH,IAAA;AAEA,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,iBAAiB,CAAA;AACzE,IAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,MAAMuB,oBAAAA,CAAqB;MAC/C,QAAA,EAAU,QAAA;AACV,MAAA,eAAA;MACA,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,IAAA,CAAI,aAAA,IAAA,OAAA,MAAA,GAAA,aAAA,CAAe,kBAAgB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,kBAAA,CAAA,EAAoB;AACpE,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,cAAA;QACT,OAAA,EAAS;OACV,CAAA;AACH,IAAA;AAEA,IAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,aAAA,EAAc,GACrC,MAAM,6BAAA,CAA8B;AAClC,MAAA,MAAA;AACA,MAAA,iBAAA,EAAmB,WAAA,CAAY,iBAAA;AAC/B,MAAA,cAAA,EAAgB,KAAK,MAAA,CAAO,cAAA;AAC5B,MAAA,KAAA,EAAA,CAAOvB,OAAA,aAAA,IAAA,IAAA,GAAA,SAAA,aAAA,CAAe,KAAA,KAAf,OAAAA,IAAAA,GAAwB,IAAA;AAC/B,MAAA,iBAAA,EAAmB,cAAc,oBAAoB;KACtD,CAAA;AAEH,IAAA,QAAA,CAAS,IAAA,CAAK,GAAG,aAAa,CAAA;AAE9B,IAAA,MAAM,gBAAA,GAAA,CAAmB,KAAA,aAAA,IAAA,IAAA,GAAA,SAAA,aAAA,CAAe,gBAAA,KAAf,OAAA,EAAA,GAAmC,KAAA;AAE5D,IAAA,IAAI,OAAA,GAAyC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,OAAA;AAE5D,IAAA,SAAS,WAAW,GAAA,EAAkC;AACpD,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,OAAA,GAAU,CAAC,GAAG,CAAA;AAChB,MAAA,CAAA,MAAA,IAAW,CAAC,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACjC,QAAA,OAAA,GAAU,CAAC,GAAG,OAAA,EAAS,GAAG,CAAA;AAC5B,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,cAAc,EAAA,EAAY;AACjC,MAAA,OAAA,CACE,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,IAAA;AACL,QAAA,CAAAS,KAAAA,KAAQA,KAAAA,CAAK,IAAA,KAAS,kBAAA,IAAsBA,MAAK,EAAA,KAAO;OAAA,KACrD,IAAA;AAET,IAAA;AAGA,IAAA,MAAM,cACJ,QAAO,aAAA,IAAA,OAAA,MAAA,GAAA,aAAA,CAAe,cAAa,QAAA,GAC/B,aAAA,IAAA,OAAA,MAAA,GAAA,aAAA,CAAe,YACf,aAAA,IAAA,IAAA,GAAA,SAAA,aAAA,CAAe,QAAA,MAAa,OAC1B,gBAAA,GACA,MAAA;AAER,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,UAAA,CAAW,8BAA8B,CAAA;AAC3C,IAAA;AAGA,IAAA,MAAM,iBAAA,GAAA,CACJ,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,SAAA,KAAA,CAAO,IAAA;MACL,CAAAA,KAAAA,KACEA,MAAK,IAAA,KAAS,kBAAA,KACbA,MAAK,EAAA,KAAO,mBAAA,IACXA,MAAK,EAAA,KAAO,2BAAA;KAAA,KAJlB,IAAA,GAAA,SAAA,EAAA,CAMC,IAAA;AAEH,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,UAAA,CAAW,gCAAgC,CAAA;AAC7C,IAAA;AAGA,IAAA,IAAI,aAAA,CAAc,yBAAyB,CAAA,EAAG;AAC5C,MAAA,UAAA,CAAW,+BAA+B,CAAA;AAC5C,IAAA;AAEA,IAAA,MAAM,KAAA,GAAQ,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,KAAA;AAG7B,IAAA,IAAI,KAAA,KAAU,KAAA,IAAS,WAAA,CAAY,gBAAA,EAAkB;AACnD,MAAA,UAAA,CAAW,6BAA6B,CAAA;AAC1C,IAAA;AAEA,IAAA,MAAM,QAAA,GAAW;AACf,MAAA,KAAA,EAAO,IAAA,CAAK,OAAA;AACZ,MAAA,KAAA;AACA,MAAA,WAAA;MACA,KAAA,EAAO,IAAA;MACP,iBAAA,EAAmB,eAAA;MAEnB,GAAA,CAAA,CAAK,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,IAAA,MAAS,WAAU,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,aAAA,CAAA,KAAkB;QACvE,IAAA,EAAM;AACJ,UAAA,GAAA,CAAI,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,UAAS,MAAA,IAAU;YACrC,MAAA,EACE,cAAA,CAAe,UAAU,IAAA,GACrB;cACE,IAAA,EAAM,aAAA;cACN,MAAA,EAAQ,gBAAA;AACR,cAAA,IAAA,EAAA,CAAM,EAAA,GAAA,cAAA,CAAe,IAAA,KAAf,IAAA,GAAA,EAAA,GAAuB,UAAA;AAC7B,cAAA,WAAA,EAAa,cAAA,CAAe,WAAA;AAC5B,cAAA,MAAA,EAAQ,cAAA,CAAe;aACzB,GACA,EAAE,MAAM,aAAA;AAChB,WAAA;AACA,UAAA,GAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,aAAA,KAAiB;AAClC,YAAA,SAAA,EAAW,aAAA,CAAc;AAC3B;AACF;AACF,OAAA;;MAGA,YAAA,EAAc,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,YAAA;MAC7B,cAAA,EAAgB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,YAAA;MAC/B,QAAA,EAAU,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,QAAA;MACzB,mBAAA,EAAqB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,iBAAA;MACpC,oBAAA,EAAsB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,kBAAA;AACrC,MAAA,KAAA;MACA,IAAA,EAAM,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,IAAA;MACrB,YAAA,EAAc,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,YAAA;MAC7B,YAAA,EAAc,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,WAAA;AAC7B,MAAA,OAAA;MACA,gBAAA,EAAkB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,cAAA;MACjC,sBAAA,EAAwB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,oBAAA;MACvC,iBAAA,EAAmB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,gBAAA;MAClC,YAAA,EAAc,WAAA;MACd,UAAA,EAAY,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,UAAA;;AAG3B,MAAA,GAAI,WAAA,CAAY,gBAAA,KAAA,CACb,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,eAAA,KAAmB,IAAA,IAAA,CACjC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,qBAAoB,IAAA,CAAA,IAAS;QAC5C,SAAA,EAAW;AACT,UAAA,GAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,oBAAmB,IAAA,IAAQ;AAC5C,YAAA,MAAA,EAAQ,aAAA,CAAc;AACxB,WAAA;AACA,UAAA,GAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,qBAAoB,IAAA,IAAQ;AAC7C,YAAA,OAAA,EAAS,aAAA,CAAc;AACzB;AACF;AACF;AACJ,KAAA;AAEA,IAAA,IAAI,YAAY,gBAAA,EAAkB;AAGhC,MAAA,IAAI,QAAA,CAAS,eAAe,IAAA,EAAM;AAChC,QAAA,QAAA,CAAS,WAAA,GAAc,MAAA;AACvB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,aAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AAEA,MAAA,IAAI,QAAA,CAAS,SAAS,IAAA,EAAM;AAC1B,QAAA,QAAA,CAAS,KAAA,GAAQ,MAAA;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,MAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,oBAAmB,IAAA,EAAM;AAC1C,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,iBAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AAEA,MAAA,IAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,qBAAoB,IAAA,EAAM;AAC3C,QAAA,QAAA,CAAS,IAAA,CAAK;UACZ,IAAA,EAAM,qBAAA;UACN,OAAA,EAAS,kBAAA;UACT,OAAA,EAAS;SACV,CAAA;AACH,MAAA;AACF,IAAA;AAGA,IAAA,IAAA,CACE,aAAA,IAAA,OAAA,MAAA,GAAA,aAAA,CAAe,iBAAgB,MAAA,IAC/B,CAAC,YAAY,sBAAA,EACb;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,aAAA;QACT,OAAA,EACE;OACH,CAAA;AAED,MAAA,OAAQ,QAAA,CAAiB,YAAA;AAC3B,IAAA;AAGA,IAAA,IAAA,CACE,aAAA,IAAA,OAAA,MAAA,GAAA,aAAA,CAAe,iBAAgB,UAAA,IAC/B,CAAC,YAAY,0BAAA,EACb;AACA,MAAA,QAAA,CAAS,IAAA,CAAK;QACZ,IAAA,EAAM,qBAAA;QACN,OAAA,EAAS,aAAA;QACT,OAAA,EACE;OACH,CAAA;AAED,MAAA,OAAQ,QAAA,CAAiB,YAAA;AAC3B,IAAA;AAEA,IAAA,MAAM;MACJ,KAAA,EAAO,WAAA;MACP,UAAA,EAAY,gBAAA;AACZ,MAAA;AACF,KAAA,GAAI,MAAM,qBAAA,CAAsB;AAC9B,MAAA,KAAA;AACA,MAAA,UAAA;AACA,MAAA;KACD,CAAA;AAED,IAAA,OAAO;AACL,MAAA,iBAAA;MACA,IAAA,EAAM;QACJ,GAAG,QAAA;QACH,KAAA,EAAO,WAAA;QACP,WAAA,EAAa;AACf,OAAA;AACA,MAAA,QAAA,EAAU,CAAC,GAAG,QAAA,EAAU,GAAG,YAAY,CAAA;AACvC,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,WACJ,OAAA,EAC6D;AA5VjE,IAAA,IAAAT,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AA6VI,IAAA,MAAM;MACJ,IAAA,EAAM,IAAA;AACN,MAAA,QAAA;AACA,MAAA;KACF,GAAI,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAC9B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI;MAC1B,IAAA,EAAM,YAAA;AACN,MAAA,OAAA,EAAS,IAAA,CAAK;KACf,CAAA;AAED,IAAA,MAAM;AACJ,MAAA,eAAA;MACA,KAAA,EAAO,QAAA;MACP,QAAA,EAAU;AACZ,KAAA,GAAI,MAAMwB,aAAAA,CAAc;AACtB,MAAA,GAAA;AACA,MAAA,OAAA,EAASC,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;AAC9D,MAAA,IAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BC,yBAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,YAAA,CAAa;AACrB,QAAA,OAAA,EAAS,SAAS,KAAA,CAAM,OAAA;AACxB,QAAA,GAAA;QACA,iBAAA,EAAmB,IAAA;QACnB,UAAA,EAAY,GAAA;AACZ,QAAA,eAAA;QACA,YAAA,EAAc,WAAA;QACd,WAAA,EAAa;OACd,CAAA;AACH,IAAA;AAEA,IAAA,MAAM,UAAyC,EAAC;AAChD,IAAA,MAAM,WAA2C,EAAC;AAGlD,IAAA,IAAI,eAAA,GAAkB,KAAA;AAGtB,IAAA,KAAA,MAAW,IAAA,IAAQ,SAAS,MAAA,EAAS;AACnC,MAAA,QAAQ,KAAK,IAAA;AACX,QAAA,KAAK,WAAA,EAAa;AAEhB,UAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAC7B,YAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAE,MAAM,cAAA,EAAgB,IAAA,EAAM,IAAI,CAAA;AACtD,UAAA;AAEA,UAAA,KAAA,MAAW,OAAA,IAAW,KAAK,OAAA,EAAS;AAClC,YAAA,OAAA,CAAQ,IAAA,CAAK;cACX,IAAA,EAAM,WAAA;AACN,cAAA,IAAA,EAAM,OAAA,CAAQ,IAAA;cACd,gBAAA,EAAkB;gBAChB,MAAA,EAAQ;AACN,kBAAA,MAAA,EAAQ,IAAA,CAAK,EAAA;AACb,kBAAA,yBAAA,EAAA,CAA2B1B,IAAAA,GAAA,IAAA,CAAK,iBAAA,KAAL,IAAA,GAAAA,IAAAA,GAA0B;AACvD;AACF;aACD,CAAA;AACH,UAAA;AACA,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,uBAAA,EAAyB;AAC5B,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,kBAAA;YACV,KAAA,EAAO,IAAA;YACP,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,aAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,kBAAA;YACV,MAAA,EAAQ;AACN,cAAA,MAAA,EAAQ,IAAA,CAAK;AACf,aAAA;YACA,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,kBAAA,EAAoB;AACvB,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,OAAA;YACjB,QAAA,EAAU,aAAA;AACV,YAAA,KAAA,EAAO,KAAK,SAAA,CAAU;AACpB,cAAA,MAAA,EAAQ,IAAA,CAAK;aACyC,CAAA;YACxD,gBAAA,EAAkB;cAChB,MAAA,EAAQ;AACN,gBAAA,MAAA,EAAQ,IAAA,CAAK;AACf;AACF;WACD,CAAA;AAED,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,SAAA,EAAW;AACd,UAAA,KAAA,MAAW,WAAA,IAAe,KAAK,OAAA,EAAS;AACtC,YAAA,IAAA,CAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,eAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,MAAA,KAAzB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiC,QAAA,KACjC,YAAY,QAAA,EACZ;AACA,cAAA,QAAA,CAAS,IAAA,CAAK,YAAY,QAAQ,CAAA;AACpC,YAAA;AAEA,YAAA,OAAA,CAAQ,IAAA,CAAK;cACX,IAAA,EAAM,MAAA;AACN,cAAA,IAAA,EAAM,WAAA,CAAY,IAAA;cAClB,gBAAA,EAAkB;gBAChB,MAAA,EAAQ;AACN,kBAAA,MAAA,EAAQ,IAAA,CAAK;AACf;AACF;aACD,CAAA;AAED,YAAA,KAAA,MAAW,UAAA,IAAc,YAAY,WAAA,EAAa;AAChD,cAAA,IAAI,UAAA,CAAW,SAAS,cAAA,EAAgB;AACtC,gBAAA,OAAA,CAAQ,IAAA,CAAK;kBACX,IAAA,EAAM,QAAA;kBACN,UAAA,EAAY,KAAA;AACZ,kBAAA,EAAA,EAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAO,UAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,KAA8BkC,UAAAA,EAAW;AAC7C,kBAAA,GAAA,EAAK,UAAA,CAAW,GAAA;AAChB,kBAAA,KAAA,EAAO,UAAA,CAAW;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,UAAA,CAAW,SAAS,eAAA,EAAiB;AAC9C,gBAAA,OAAA,CAAQ,IAAA,CAAK;kBACX,IAAA,EAAM,QAAA;kBACN,UAAA,EAAY,UAAA;AACZ,kBAAA,EAAA,EAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAO,UAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,KAA8BA,UAAAA,EAAW;kBAC7C,SAAA,EAAW,YAAA;kBACX,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,KAAA,UAAA,CAAW,KAAA,KAAX,OAAA,EAAA,GAAoB,UAAA,CAAW,QAAA,KAA/B,IAAA,GAAA,EAAA,GAA2C,UAAA;AAClD,kBAAA,QAAA,EAAA,CAAU,EAAA,GAAA,UAAA,CAAW,QAAA,KAAX,IAAA,GAAA,KAAuB,UAAA,CAAW,OAAA;AAC5C,kBAAA,GAAI,WAAW,OAAA,GACX;oBACE,gBAAA,EAAkB;sBAChB,MAAA,EAAQ;AACN,wBAAA,MAAA,EAAQ,UAAA,CAAW;AACrB;AACF;AACF,mBAAA,GACA;iBACL,CAAA;AACH,cAAA;AACF,YAAA;AACF,UAAA;AAEA,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,eAAA,EAAiB;AACpB,UAAA,eAAA,GAAkB,IAAA;AAElB,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,OAAA;AACjB,YAAA,QAAA,EAAU,IAAA,CAAK,IAAA;AACf,YAAA,KAAA,EAAO,IAAA,CAAK,SAAA;YACZ,gBAAA,EAAkB;cAChB,MAAA,EAAQ;AACN,gBAAA,MAAA,EAAQ,IAAA,CAAK;AACf;AACF;WACD,CAAA;AACD,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,iBAAA,EAAmB;AACtB,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;YAC/B,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,EAAE,CAAA;YACxB,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,aAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;YAC/B,MAAA,EAAQ,kBAAA,CAAmB,KAAK,MAAM,CAAA;YACtC,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,eAAA,EAAiB;AACpB,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,cAAA;YACV,KAAA,EAAO,EAAA;YACP,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,aAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,cAAA;YACV,MAAA,EAAQ;cACN,IAAA,EAAM,0BAAA;AACN,cAAA,MAAA,EAAQ,KAAK,MAAA,IAAU;AACzB,aAAA;YACA,gBAAA,EAAkB;WACnB,CAAA;AACD,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,kBAAA,EAAoB;AACvB,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,aAAA;YACV,KAAA,EAAO,IAAA;YACP,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,aAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,aAAA;YACV,MAAA,EAAQ;AACN,cAAA,OAAA,EAAS,IAAA,CAAK,OAAA;cACd,OAAA,EAAA,CACE,EAAA,GAAA,CAAA,KAAA,IAAA,CAAK,OAAA,KAAL,OAAA,MAAA,GAAA,EAAA,CAAc,GAAA,CAAI,CAAA,MAAA,MAAW;AAC3B,gBAAA,UAAA,EAAY,MAAA,CAAO,UAAA;AACnB,gBAAA,MAAA,EAAQ,MAAA,CAAO,OAAA;AACf,gBAAA,QAAA,EAAU,MAAA,CAAO,QAAA;AACjB,gBAAA,KAAA,EAAO,MAAA,CAAO,KAAA;AACd,gBAAA,IAAA,EAAM,MAAA,CAAO;eACf,CAAA,CAAA,KANA,OAAA,EAAA,GAMO;AACX,aAAA;YACA,gBAAA,EAAkB;WACnB,CAAA;AACD,UAAA;AACF,QAAA;AAEA,QAAA,KAAK,uBAAA,EAAyB;AAC5B,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,WAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,kBAAA;AACV,YAAA,KAAA,EAAO,KAAK,SAAA,CAAU;AACpB,cAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,cAAA,WAAA,EAAa,IAAA,CAAK;aACyC,CAAA;YAC7D,gBAAA,EAAkB;WACnB,CAAA;AAED,UAAA,OAAA,CAAQ,IAAA,CAAK;YACX,IAAA,EAAM,aAAA;AACN,YAAA,UAAA,EAAY,IAAA,CAAK,EAAA;YACjB,QAAA,EAAU,kBAAA;YACV,MAAA,EAAQ;AACN,cAAA,OAAA,EAAS,IAAA,CAAK;AAChB,aAAA;YACA,gBAAA,EAAkB;WACnB,CAAA;AACD,UAAA;AACF,QAAA;AACF;AACF,IAAA;AAEA,IAAA,MAAM,gBAAA,GAA6C;MACjD,MAAA,EAAQ;QACN,GAAI,QAAA,CAAS,MAAM,IAAA,GAAO,EAAE,YAAY,QAAA,CAAS,EAAA,KAAO;AAC1D;AACF,KAAA;AAEA,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,gBAAA,CAAiB,OAAO,QAAA,GAAW,QAAA;AACrC,IAAA;AAEA,IAAA,IAAI,OAAO,QAAA,CAAS,YAAA,KAAiB,QAAA,EAAU;AAC7C,MAAA,gBAAA,CAAiB,MAAA,CAAO,cAAc,QAAA,CAAS,YAAA;AACjD,IAAA;AAEA,IAAA,MAAM,QAAQ,QAAA,CAAS,KAAA;AAEvB,IAAA,OAAO;AACL,MAAA,OAAA;AACA,MAAA,YAAA,EAAc,6BAAA,CAA8B;AAC1C,QAAA,YAAA,EAAA,CAAc,EAAA,GAAA,QAAA,CAAS,kBAAA,KAAT,IAAA,GAAA,SAAA,EAAA,CAA6B,MAAA;AAC3C,QAAA;OACD,CAAA;MACD,KAAA,EAAO;AACL,QAAA,WAAA,EAAa,KAAA,CAAM,YAAA;AACnB,QAAA,YAAA,EAAc,KAAA,CAAM,aAAA;QACpB,WAAA,EAAa,KAAA,CAAM,eAAe,KAAA,CAAM,aAAA;QACxC,eAAA,EAAA,CACE,EAAA,GAAA,CAAA,KAAA,KAAA,CAAM,qBAAA,KAAN,OAAA,MAAA,GAAA,EAAA,CAA6B,gBAAA,KAA7B,IAAA,GAAA,EAAA,GAAiD,MAAA;QACnD,iBAAA,EAAA,CACE,EAAA,GAAA,CAAA,KAAA,KAAA,CAAM,oBAAA,KAAN,OAAA,MAAA,GAAA,EAAA,CAA4B,aAAA,KAA5B,IAAA,GAAA,EAAA,GAA6C;AACjD,OAAA;AACA,MAAA,OAAA,EAAS,EAAE,IAAA,EAAK;MAChB,QAAA,EAAU;AACR,QAAA,EAAA,EAAI,QAAA,CAAS,EAAA;AACb,QAAA,SAAA,EAAW,IAAI,IAAA,CAAK,QAAA,CAAS,UAAA,GAAc,GAAI,CAAA;AAC/C,QAAA,OAAA,EAAS,QAAA,CAAS,KAAA;QAClB,OAAA,EAAS,eAAA;QACT,IAAA,EAAM;AACR,OAAA;AACA,MAAA,gBAAA;AACA,MAAA;AACF,KAAA;AACF,EAAA;AAEA,EAAA,MAAM,SACJ,OAAA,EAC2D;AAC3D,IAAA,MAAM;MACJ,IAAA,EAAM,IAAA;AACN,MAAA,QAAA;AACA,MAAA,iBAAA;AACA,MAAA;KACF,GAAI,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAE9B,IAAA,MAAM,EAAE,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAS,GAAI,MAAMV,aAAAA,CAAc;MAC/D,GAAA,EAAK,IAAA,CAAK,OAAO,GAAA,CAAI;QACnB,IAAA,EAAM,YAAA;AACN,QAAA,OAAA,EAAS,IAAA,CAAK;OACf,CAAA;AACD,MAAA,OAAA,EAASC,eAAe,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ,EAAG,QAAQ,OAAO,CAAA;MAC9D,IAAA,EAAM;QACJ,GAAG,IAAA;QACH,MAAA,EAAQ;AACV,OAAA;MACA,qBAAA,EAAuB,2BAAA;MACvB,yBAAA,EAA2BE,gCAAAA;AACzB,QAAA;AACF,OAAA;AACA,MAAA,WAAA,EAAa,OAAA,CAAQ,WAAA;AACrB,MAAA,KAAA,EAAO,KAAK,MAAA,CAAO;KACpB,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,IAAA;AAEb,IAAA,IAAI,YAAA,GAA4C,SAAA;AAChD,IAAA,MAAM,KAAA,GAA8B;MAClC,WAAA,EAAa,MAAA;MACb,YAAA,EAAc,MAAA;MACd,WAAA,EAAa;AACf,KAAA;AACA,IAAA,MAAM,WAA2C,EAAC;AAClD,IAAA,IAAI,UAAA,GAA4B,IAAA;AAChC,IAAA,MAAM,mBAUF,EAAC;AAGL,IAAA,MAAM,qBAKF,EAAC;AAGL,IAAA,IAAI,eAAA,GAAkB,KAAA;AAEtB,IAAA,MAAM,kBAOF,EAAC;AAEL,IAAA,IAAI,WAAA;AAEJ,IAAA,OAAO;AACL,MAAA,MAAA,EAAQ,QAAA,CAAS,WAAA;AACf,QAAA,IAAI,eAAA,CAGF;AACA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA;AACvD,UAAA,CAAA;AAEA,UAAA,SAAA,CAAU,OAAO,UAAA,EAAY;AA9uBvC,YAAA,IAAA3B,IAAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AA+uBY,YAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,OAAO,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAC9D,YAAA;AAGA,YAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAClB,cAAA,YAAA,GAAe,OAAA;AACf,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACxD,cAAA;AACF,YAAA;AAEA,YAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,YAAA,IAAI,8BAAA,CAA+B,KAAK,CAAA,EAAG;AACzC,cAAA,IAAI,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB;AACvC,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI;AACrC,kBAAA,QAAA,EAAU,MAAM,IAAA,CAAK,IAAA;AACrB,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK;AACzB,iBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,OAAA;AACf,kBAAA,QAAA,EAAU,MAAM,IAAA,CAAK;iBACtB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,iBAAA,EAAmB;AAChD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI;kBACrC,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;AAC/B,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK;AACzB,iBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;kBACf,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;kBAC/B,gBAAA,EAAkB;iBACnB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,gBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK;iBAChB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;kBAC/B,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,EAAE,CAAA;kBACxB,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB;AAC9C,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI;kBACrC,QAAA,EAAU,cAAA;AACV,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK;AACzB,iBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;kBACf,QAAA,EAAU,cAAA;kBACV,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,uBAAA,EAAyB;AACtD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI;kBACrC,QAAA,EAAU,kBAAA;AACV,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,eAAA,EAAiB;AACf,oBAAA,WAAA,EAAa,MAAM,IAAA,CAAK;AAC1B;AACF,iBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;kBACf,QAAA,EAAU,kBAAA;kBACV,gBAAA,EAAkB;iBACnB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;kBACf,KAAA,EAAO,CAAA,gBAAA,EAAmB,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA,UAAA;iBAClD,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,kBAAA,EAAoB;AACjD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,aAAA;kBACV,KAAA,EAAO,IAAA;kBACP,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,uBAAA,EAAyB;AACtD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,kBAAA;kBACV,KAAA,EAAO,IAAA;kBACP,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,SAAA,EAAW;AACxC,gBAAA,kBAAA,CAAmB,MAAA,CAAO,CAAA,EAAG,kBAAA,CAAmB,MAAM,CAAA;AACtD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,YAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;kBACf,gBAAA,EAAkB;oBAChB,MAAA,EAAQ;AACN,sBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK;AACrB;AACF;iBACD,CAAA;AACH,cAAA,CAAA,MAAA,IACE,+BAA+B,KAAK,CAAA,IACpC,KAAA,CAAM,IAAA,CAAK,SAAS,WAAA,EACpB;AACA,gBAAA,eAAA,CAAgB,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,GAAI;AAC/B,kBAAA,gBAAA,EAAkB,MAAM,IAAA,CAAK,iBAAA;kBAC7B,YAAA,EAAc,EAAE,GAAG,QAAA;AACrB,iBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,iBAAA;kBACN,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAA,CAAA;kBACpB,gBAAA,EAAkB;oBAChB,MAAA,EAAQ;AACN,sBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK,EAAA;AACnB,sBAAA,yBAAA,EAAA,CACEA,IAAAA,GAAA,KAAA,CAAM,IAAA,CAAK,iBAAA,KAAX,OAAAA,IAAAA,GAAgC;AACpC;AACF;iBACD,CAAA;AACH,cAAA;AACF,YAAA,CAAA,MAAA,IACE,8BAA8B,KAAK,CAAA,IACnC,KAAA,CAAM,IAAA,CAAK,SAAS,SAAA,EACpB;AACA,cAAA,IAAI,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB;AACvC,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AACvC,gBAAA,eAAA,GAAkB,IAAA;AAElB,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,gBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK;iBAChB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,OAAA;AACvB,kBAAA,QAAA,EAAU,MAAM,IAAA,CAAK,IAAA;AACrB,kBAAA,KAAA,EAAO,MAAM,IAAA,CAAK,SAAA;kBAClB,gBAAA,EAAkB;oBAChB,MAAA,EAAQ;AACN,sBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK;AACrB;AACF;iBACD,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,iBAAA,EAAmB;AAChD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAEvC,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,aAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,iBAAA,IAAA,OAAA,iBAAA,GAAqB,YAAA;kBAC/B,MAAA,EAAQ,kBAAA,CAAmB,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;kBAC5C,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB;AAC9C,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAEvC,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,gBAAA;AACN,kBAAA,EAAA,EAAI,MAAM,IAAA,CAAK;iBAChB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,cAAA;kBACV,KAAA,EAAO,EAAA;kBACP,gBAAA,EAAkB;iBACnB,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,aAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,cAAA;kBACV,MAAA,EAAQ;oBACN,IAAA,EAAM,0BAAA;oBACN,MAAA,EAAQ,KAAA,CAAM,KAAK,MAAA,IAAU;AAC/B,mBAAA;kBACA,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,kBAAA,EAAoB;AACjD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAEvC,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,aAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,aAAA;kBACV,MAAA,EAAQ;AACN,oBAAA,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA;oBACpB,OAAA,EAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,IAAA,CAAK,OAAA,KAAX,OAAA,MAAA,GAAA,EAAA,CAAoB,GAAA,CAAI,CAAA,MAAA,MAAW;AACjC,sBAAA,UAAA,EAAY,MAAA,CAAO,UAAA;AACnB,sBAAA,MAAA,EAAQ,MAAA,CAAO,OAAA;AACf,sBAAA,QAAA,EAAU,MAAA,CAAO,QAAA;AACjB,sBAAA,KAAA,EAAO,MAAA,CAAO,KAAA;AACd,sBAAA,IAAA,EAAM,MAAA,CAAO;qBACf,CAAA,CAAA,KANA,OAAA,EAAA,GAMO;AACX,mBAAA;kBACA,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,uBAAA,EAAyB;AACtD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAEvC,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,aAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,kBAAA;kBACV,MAAA,EAAQ;AACN,oBAAA,OAAA,EAAS,MAAM,IAAA,CAAK;AACtB,mBAAA;kBAGA,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,uBAAA,EAAyB;AACtD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,aAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,EAAA;kBACvB,QAAA,EAAU,kBAAA;kBACV,MAAA,EAAQ;AACN,oBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK;AACrB,mBAAA;kBAGA,gBAAA,EAAkB;iBACnB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,kBAAA,EAAoB;AACjD,gBAAA,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAEvC,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,MAAM,IAAA,CAAK,OAAA;kBACvB,QAAA,EAAU,aAAA;AACV,kBAAA,KAAA,EAAO,KAAK,SAAA,CAAU;oBACpB,MAAA,EAAQ;sBACN,IAAA,EAAM,MAAA;sBACN,OAAA,EAAS,KAAA,CAAM,KAAK,MAAA,CAAO,OAAA;sBAC3B,SAAA,EAAW,KAAA,CAAM,KAAK,MAAA,CAAO,UAAA;sBAC7B,IAAA,EAAM,KAAA,CAAM,KAAK,MAAA,CAAO,IAAA;sBACxB,gBAAA,EAAkB,KAAA,CAAM,KAAK,MAAA,CAAO,iBAAA;sBACpC,GAAA,EAAK,KAAA,CAAM,KAAK,MAAA,CAAO;AACzB;mBACsD,CAAA;kBACxD,gBAAA,EAAkB;AAChB,oBAAA,MAAA,EAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,EAAA;AAC/B;iBACD,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,WAAA,EAAa;AAC1C,gBAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA;AAIzD,gBAAA,MAAM,qBAAqB,MAAA,CAAO,OAAA;kBAChC,mBAAA,CAAoB;iBACtB,CACG,MAAA;AACC,kBAAA,CAAC,CAAC,CAAA,EAAG,MAAM,CAAA,KACT,MAAA,KAAW,YAAY,MAAA,KAAW;AACtC,iBAAA,CACC,GAAA,CAAI,CAAC,CAAC,YAAY,MAAM,YAAY,CAAA;AAEvC,gBAAA,KAAA,MAAW,gBAAgB,kBAAA,EAAoB;AAC7C,kBAAA,UAAA,CAAW,OAAA,CAAQ;oBACjB,IAAA,EAAM,eAAA;AACN,oBAAA,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,EAAE,IAAI,YAAY,CAAA,CAAA;oBACpC,gBAAA,EAAkB;sBAChB,MAAA,EAAQ;AACN,wBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK,EAAA;AACnB,wBAAA,yBAAA,EAAA,CACE,EAAA,GAAA,KAAA,CAAM,IAAA,CAAK,iBAAA,KAAX,OAAA,EAAA,GAAgC;AACpC;AACF;mBACD,CAAA;AACH,gBAAA;AAEA,gBAAA,OAAO,eAAA,CAAgB,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA;AACtC,cAAA;YACF,CAAA,MAAA,IAAW,yCAAA,CAA0C,KAAK,CAAA,EAAG;AAC3D,cAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA;AAEpD,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,QAAA,CAAS,UAAA;AACb,kBAAA,KAAA,EAAO,KAAA,CAAM;iBACd,CAAA;AACH,cAAA;YACF,CAAA,MAAA,IAAW,2CAAA,CAA4C,KAAK,CAAA,EAAG;AAC7D,cAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA;AAEpD,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,QAAA,CAAS,UAAA;;;AAGb,kBAAA,KAAA,EAAO,KAAK,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE;iBAC/C,CAAA;AACH,cAAA;YACF,CAAA,MAAA,IAAW,0CAAA,CAA2C,KAAK,CAAA,EAAG;AAC5D,cAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,CAAM,YAAY,CAAA;AAEpD,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,kBAAA;AACN,kBAAA,EAAA,EAAI,QAAA,CAAS,UAAA;kBACb,KAAA,EAAO;iBACR,CAAA;AAED,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,gBAAA;AACN,kBAAA,EAAA,EAAI,QAAA,CAAS;iBACd,CAAA;AAGD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,WAAA;AACN,kBAAA,UAAA,EAAY,QAAA,CAAS,UAAA;kBACrB,QAAA,EAAU,kBAAA;AACV,kBAAA,KAAA,EAAO,KAAK,SAAA,CAAU;AACpB,oBAAA,IAAA,EAAM,KAAA,CAAM,IAAA;AACZ,oBAAA,WAAA,EAAa,SAAS,eAAA,CAAiB;mBAGxC,CAAA;kBACD,gBAAA,EAAkB;iBACnB,CAAA;AACH,cAAA;YACF,CAAA,MAAA,IAAW,sBAAA,CAAuB,KAAK,CAAA,EAAG;AACxC,cAAA,UAAA,GAAa,MAAM,QAAA,CAAS,EAAA;AAC5B,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,mBAAA;AACN,gBAAA,EAAA,EAAI,MAAM,QAAA,CAAS,EAAA;AACnB,gBAAA,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,aAAa,GAAI,CAAA;AACpD,gBAAA,OAAA,EAAS,MAAM,QAAA,CAAS;eACzB,CAAA;YACH,CAAA,MAAA,IAAW,gBAAA,CAAiB,KAAK,CAAA,EAAG;AAClC,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,YAAA;AACN,gBAAA,EAAA,EAAI,KAAA,CAAM,OAAA;AACV,gBAAA,KAAA,EAAO,KAAA,CAAM;eACd,CAAA;AAED,cAAA,IAAA,CAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,eAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,MAAA,KAAzB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiC,QAAA,KAAY,MAAM,QAAA,EAAU;AAC/D,gBAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAQ,CAAA;AAC9B,cAAA;YACF,CAAA,MAAA,IAAW,KAAA,CAAM,SAAS,uCAAA,EAAyC;AAEjE,cAAA,IAAI,KAAA,CAAM,gBAAgB,CAAA,EAAG;AAC3B,gBAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,KAAA,CAAM,OAAO,CAAA;AAEzD,gBAAA,mBAAA,CAAoB,YAAA,CAAa,KAAA,CAAM,aAAa,CAAA,GAClD,QAAA;AAGF,gBAAA,KAAA,MAAW,gBAAgB,MAAA,CAAO,IAAA;kBAChC,mBAAA,CAAoB;iBACtB,EAAG;AACD,kBAAA,IACE,mBAAA,CAAoB,YAAA,CAAa,YAAY,CAAA,KAC7C,cAAA,EACA;AACA,oBAAA,UAAA,CAAW,OAAA,CAAQ;sBACjB,IAAA,EAAM,eAAA;AACN,sBAAA,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AACpC,sBAAA,gBAAA,EAAkB,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,SAAQ;qBACrD,CAAA;AACD,oBAAA,mBAAA,CAAoB,YAAA,CAAa,YAAY,CAAA,GAC3C,WAAA;AACJ,kBAAA;AACF,gBAAA;AAEA,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,iBAAA;AACN,kBAAA,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,MAAM,aAAa,CAAA,CAAA;kBAC3C,gBAAA,EAAkB;oBAChB,MAAA,EAAQ;AACN,sBAAA,MAAA,EAAQ,KAAA,CAAM,OAAA;sBACd,yBAAA,EAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,KAAA,CAAM,OAAO,CAAA,KAA7B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgC,gBAAA,KAAhC,IAAA,GAAA,EAAA,GACA;AACJ;AACF;iBACD,CAAA;AACH,cAAA;YACF,CAAA,MAAA,IAAW,KAAA,CAAM,SAAS,uCAAA,EAAyC;AACjE,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,iBAAA;AACN,gBAAA,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,MAAM,aAAa,CAAA,CAAA;AAC3C,gBAAA,KAAA,EAAO,KAAA,CAAM,KAAA;gBACb,gBAAA,EAAkB;kBAChB,MAAA,EAAQ;AACN,oBAAA,MAAA,EAAQ,KAAA,CAAM;AAChB;AACF;eACD,CAAA;YACH,CAAA,MAAA,IAAW,KAAA,CAAM,SAAS,sCAAA,EAAwC;AAGhE,cAAA,IAAI,KAAA,EAAO;AACT,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,eAAA;AACN,kBAAA,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,MAAM,aAAa,CAAA,CAAA;kBAC3C,gBAAA,EAAkB;oBAChB,MAAA,EAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,OAAA;AAC1B;iBACD,CAAA;AAGD,gBAAA,eAAA,CAAgB,MAAM,OAAO,CAAA,CAAG,YAAA,CAC9B,KAAA,CAAM,aACR,CAAA,GAAI,WAAA;cACN,CAAA,MAAO;AAGL,gBAAA,eAAA,CAAgB,MAAM,OAAO,CAAA,CAAG,YAAA,CAC9B,KAAA,CAAM,aACR,CAAA,GAAI,cAAA;AACN,cAAA;YACF,CAAA,MAAA,IAAW,uBAAA,CAAwB,KAAK,CAAA,EAAG;AACzC,cAAA,YAAA,GAAe,6BAAA,CAA8B;AAC3C,gBAAA,YAAA,EAAA,CAAc,KAAA,KAAA,CAAM,QAAA,CAAS,kBAAA,KAAf,IAAA,GAAA,SAAA,EAAA,CAAmC,MAAA;AACjD,gBAAA;eACD,CAAA;AACD,cAAA,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,YAAA;AACzC,cAAA,KAAA,CAAM,YAAA,GAAe,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,aAAA;AAC1C,cAAA,KAAA,CAAM,cACJ,KAAA,CAAM,QAAA,CAAS,MAAM,YAAA,GACrB,KAAA,CAAM,SAAS,KAAA,CAAM,aAAA;AACvB,cAAA,KAAA,CAAM,eAAA,GAAA,CACJ,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,qBAAA,KAArB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA4C,gBAAA,KAA5C,IAAA,GAAA,EAAA,GACA,MAAA;AACF,cAAA,KAAA,CAAM,iBAAA,GAAA,CACJ,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,oBAAA,KAArB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2C,aAAA,KAA3C,IAAA,GAAA,EAAA,GACA,MAAA;AACF,cAAA,IAAI,OAAO,KAAA,CAAM,QAAA,CAAS,YAAA,KAAiB,QAAA,EAAU;AACnD,gBAAA,WAAA,GAAc,MAAM,QAAA,CAAS,YAAA;AAC/B,cAAA;YACF,CAAA,MAAA,IAAW,8BAAA,CAA+B,KAAK,CAAA,EAAG;AAChD,cAAA,kBAAA,CAAmB,IAAA,CAAK,MAAM,UAAU,CAAA;AACxC,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,IAAA,KAAS,cAAA,EAAgB;AAC5C,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,QAAA;kBACN,UAAA,EAAY,KAAA;AACZ,kBAAA,EAAA,EAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAO,UAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,KAA8BkC,UAAAA,EAAW;AAC7C,kBAAA,GAAA,EAAK,MAAM,UAAA,CAAW,GAAA;AACtB,kBAAA,KAAA,EAAO,MAAM,UAAA,CAAW;iBACzB,CAAA;cACH,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,CAAW,IAAA,KAAS,eAAA,EAAiB;AACpD,gBAAA,UAAA,CAAW,OAAA,CAAQ;kBACjB,IAAA,EAAM,QAAA;kBACN,UAAA,EAAY,UAAA;AACZ,kBAAA,EAAA,EAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAO,UAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,KAA8BA,UAAAA,EAAW;kBAC7C,SAAA,EAAW,YAAA;kBACX,KAAA,EAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,UAAA,CAAW,KAAA,KAAjB,IAAA,GAAA,EAAA,GACA,KAAA,CAAM,UAAA,CAAW,QAAA,KADjB,IAAA,GAAA,EAAA,GAEA,UAAA;AACF,kBAAA,QAAA,EAAA,CACE,KAAA,KAAA,CAAM,UAAA,CAAW,aAAjB,IAAA,GAAA,EAAA,GAA6B,MAAM,UAAA,CAAW,OAAA;kBAChD,GAAI,KAAA,CAAM,WAAW,OAAA,GACjB;oBACE,gBAAA,EAAkB;sBAChB,MAAA,EAAQ;AACN,wBAAA,MAAA,EAAQ,MAAM,UAAA,CAAW;AAC3B;AACF;AACF,mBAAA,GACA;iBACL,CAAA;AACH,cAAA;AACF,YAAA,CAAA,MAAA,IACE,8BAA8B,KAAK,CAAA,IACnC,KAAA,CAAM,IAAA,CAAK,SAAS,SAAA,EACpB;AACA,cAAA,UAAA,CAAW,OAAA,CAAQ;gBACjB,IAAA,EAAM,UAAA;AACN,gBAAA,EAAA,EAAI,MAAM,IAAA,CAAK,EAAA;gBACf,gBAAA,EAAkB;kBAChB,MAAA,EAAQ;AACN,oBAAA,MAAA,EAAQ,MAAM,IAAA,CAAK,EAAA;oBACnB,GAAI,kBAAA,CAAmB,SAAS,CAAA,IAAK;sBACnC,WAAA,EAAa;AACf;AACF;AACF;eACD,CAAA;YACH,CAAA,MAAA,IAAW,YAAA,CAAa,KAAK,CAAA,EAAG;AAC9B,cAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,OAAO,CAAA;AACpD,YAAA;AACF,UAAA,CAAA;AAEA,UAAA,KAAA,CAAM,UAAA,EAAY;AAChB,YAAA,MAAM,gBAAA,GAA6C;cACjD,MAAA,EAAQ;AACN,gBAAA;AACF;AACF,aAAA;AAEA,YAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,cAAA,gBAAA,CAAiB,OAAO,QAAA,GAAW,QAAA;AACrC,YAAA;AAEA,YAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,cAAA,gBAAA,CAAiB,OAAO,WAAA,GAAc,WAAA;AACxC,YAAA;AAEA,YAAA,UAAA,CAAW,OAAA,CAAQ;cACjB,IAAA,EAAM,QAAA;AACN,cAAA,YAAA;AACA,cAAA,KAAA;AACA,cAAA;aACD,CAAA;AACH,UAAA;SACD;AACH,OAAA;AACA,MAAA,OAAA,EAAS,EAAE,IAAA,EAAK;MAChB,QAAA,EAAU,EAAE,SAAS,eAAA;AACvB,KAAA;AACF,EAAA;AACF,CAAA;AAEA,SAAS,iBACP,KAAA,EACwE;AACxE,EAAA,OAAO,MAAM,IAAA,KAAS,4BAAA;AACxB;AAEA,SAAS,8BACP,KAAA,EACuE;AACvE,EAAA,OAAO,MAAM,IAAA,KAAS,2BAAA;AACxB;AAEA,SAAS,wBACP,KAAA,EAGA;AACA,EAAA,OACE,KAAA,CAAM,IAAA,KAAS,oBAAA,IAAwB,KAAA,CAAM,IAAA,KAAS,qBAAA;AAE1D;AAEA,SAAS,uBACP,KAAA,EAC8D;AAC9D,EAAA,OAAO,MAAM,IAAA,KAAS,kBAAA;AACxB;AAEA,SAAS,0CACP,KAAA,EAGA;AACA,EAAA,OAAO,MAAM,IAAA,KAAS,wCAAA;AACxB;AAEA,SAAS,4CACP,KAAA,EAGA;AACA,EAAA,OAAO,MAAM,IAAA,KAAS,2CAAA;AACxB;AAEA,SAAS,2CACP,KAAA,EAGA;AACA,EAAA,OAAO,MAAM,IAAA,KAAS,0CAAA;AACxB;AAEA,SAAS,+BACP,KAAA,EACwE;AACxE,EAAA,OAAO,MAAM,IAAA,KAAS,4BAAA;AACxB;AAEA,SAAS,+BACP,KAAA,EAGA;AACA,EAAA,OAAO,MAAM,IAAA,KAAS,uCAAA;AACxB;AAEA,SAAS,aACP,KAAA,EACmD;AACnD,EAAA,OAAO,MAAM,IAAA,KAAS,OAAA;AACxB;AASA,SAAS,wBAAwB,OAAA,EAAuC;AACtE,EAAA,MAAMC,0BACJ,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,IACvB,QAAQ,UAAA,CAAW,SAAS,CAAA,IAC3B,OAAA,CAAQ,WAAW,OAAO,CAAA,IAAK,CAAC,OAAA,CAAQ,WAAW,YAAY,CAAA;AAClE,EAAA,MAAMC,2BAAAA,GACJ,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,IAC1B,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAC9B,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,IACzB,CAAC,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAChC,CAAC,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,IAClC,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,IACvB,OAAA,CAAQ,WAAW,SAAS,CAAA;AAC9B,EAAA,MAAM,QAAA,GAAW;IACf,iBAAA,EAAmB,QAAA;IACnB,sBAAA,EAAAD,uBAAAA;IACA,0BAAA,EAAAC;AACF,GAAA;AAGA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,EAAG;AACpC,IAAA,OAAO;MACL,GAAG,QAAA;MACH,gBAAA,EAAkB;AACpB,KAAA;AACF,EAAA;AAGA,EAAA,IACE,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,IACtB,QAAQ,UAAA,CAAW,OAAO,CAAA,IAC1B,OAAA,CAAQ,WAAW,QAAQ,CAAA,IAC3B,OAAA,CAAQ,UAAA,CAAW,cAAc,CAAA,EACjC;AACA,IAAA,OAAO;MACL,GAAG,QAAA;MACH,gBAAA,EAAkB,IAAA;MAClB,iBAAA,EAAmB;AACrB,KAAA;AACF,EAAA;AAGA,EAAA,OAAO;IACL,GAAG,QAAA;IACH,gBAAA,EAAkB;AACpB,GAAA;AACF;AAEA,SAAS,mBACP,MAAA,EAC8C;AAr4ChD,EAAA,IAAApC,IAAAA;AAs4CE,EAAA,QAAQ,OAAO,IAAA;IACb,KAAK,QAAA;AACH,MAAA,OAAO;QACL,MAAA,EAAQ,EAAE,MAAM,QAAA,EAAU,KAAA,EAAA,CAAOA,OAAA,MAAA,CAAO,KAAA,KAAP,IAAA,GAAAA,IAAAA,GAAgB,MAAA,EAAU;;AAE3D,QAAA,GAAI,OAAO,OAAA,IAAW,IAAA,IAAQ,EAAE,OAAA,EAAS,OAAO,OAAA;AAClD,OAAA;IACF,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,QAAQ,EAAE,IAAA,EAAM,YAAY,GAAA,EAAK,MAAA,CAAO,KAAI,EAAE;IACzD,KAAK,MAAA;AACH,MAAA,OAAO;QACL,MAAA,EAAQ,EAAE,MAAM,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAK,OAAA,EAAS,OAAO,OAAA;AAC3D,OAAA;AACJ;AACF;;;AC74CO,IAAM,gBAAA,GAKT;AACF,EAAA,eAAA;AACA,EAAA,UAAA;AACA,EAAA,eAAA;AACA,EAAA;AACF,CAAA;ACfO,IAAMqC,QAAAA,GAEP,QAAA,CACA;ACkIC,SAAS,WAAA,CACd,OAAA,GAAuC,EAAC,EACnB;AAzIvB,EAAA,IAAArC,IAAAA;AA0IE,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,WAAA,GAAc;AAClB,MAAA,SAAA,EAAW,UAAA,CAAW;AACpB,QAAA,MAAA,EAAQ,OAAA,CAAQ,MAAA;QAChB,uBAAA,EAAyB,eAAA;QACzB,WAAA,EAAa;OACd,CAAA;AACD,MAAA,GAAG,OAAA,CAAQ;AACb,KAAA;AACA,IAAA,OAAO,mBAAA,CAAoB,WAAA,EAAa,CAAA,aAAA,EAAgBqC,QAAO,CAAA,CAAE,CAAA;AACnE,EAAA,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,MACtB,WAAA,CAAY;AACV,IAAA,YAAA,EAAc,OAAA,CAAQ,YAAA;IACtB,WAAA,EAAa,cAAA;IACb,uBAAA,EAAyB,qBAAA;IACzB,WAAA,EAAa;GACd,CAAA;AAEH,EAAA,MAAM,UAAA,GAAA,CAAarC,IAAAA,GAAA,OAAA,CAAQ,UAAA,KAAR,OAAAA,IAAAA,GAAsB,IAAA;AAEzC,EAAA,MAAM,GAAA,GAAM,CAAC,EAAE,IAAA,EAAM,SAAQ,KAAyC;AAhKxE,IAAA,IAAAA,IAAAA;AAiKI,IAAA,MAAM,aAAA,GAAA,CACJA,OAAA,OAAA,CAAQ,OAAA,KAAR,OAAAA,IAAAA,GAAmB,CAAA,QAAA,EAAW,iBAAiB,CAAA,wBAAA,CAAA;AAEjD,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,QAAQ,sBAAA,EAAwB;AAElC,MAAA,OAAA,GAAU,IAAI,IAAI,CAAA,EAAG,aAAa,gBAAgB,OAAO,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;IACpE,CAAA,MAAO;AAEL,MAAA,OAAA,GAAU,IAAI,GAAA,CAAI,CAAA,EAAG,aAAa,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAA;AAChD,IAAA;AAEA,IAAA,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,aAAA,EAAe,UAAU,CAAA;AAClD,IAAA,OAAO,QAAQ,QAAA,EAAS;AAC1B,EAAA,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,cAAA,KACvB,IAAI,wBAAwB,cAAA,EAAgB;IAC1C,QAAA,EAAU,YAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,qBAAA,GAAwB,CAAC,OAAA,KAC7B,IAAI,8BAA8B,OAAA,EAAS;IACzC,QAAA,EAAU,kBAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAC5B,IAAI,qBAAqB,OAAA,EAAS;IAChC,QAAA,EAAU,kBAAA;IACV,OAAA,EAAS,UAAA;AACT,IAAA,GAAA;AACA,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAC5B,IAAI,6BAA6B,OAAA,EAAS;IACxC,QAAA,EAAU,iBAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ,KAAA;AACf,IAAA,cAAA,EAAgB,CAAC,YAAY;GAC9B,CAAA;AAEH,EAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KACxB,IAAI,iBAAiB,OAAA,EAAS;IAC5B,QAAA,EAAU,aAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,wBAAA,GAA2B,CAAC,OAAA,KAChC,IAAI,yBAAyB,OAAA,EAAS;IACpC,QAAA,EAAU,qBAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,iBAAA,GAAoB,CAAC,OAAA,KACzB,IAAI,kBAAkB,OAAA,EAAS;IAC7B,QAAA,EAAU,cAAA;AACV,IAAA,GAAA;IACA,OAAA,EAAS,UAAA;AACT,IAAA,KAAA,EAAO,OAAA,CAAQ;GAChB,CAAA;AAEH,EAAA,MAAM,QAAA,GAAW,SAAU,YAAA,EAAsB;AAC/C,IAAA,IAAI,GAAA,CAAA,MAAA,EAAY;AACd,MAAA,MAAM,IAAI,KAAA;AACR,QAAA;AACF,OAAA;AACF,IAAA;AAEA,IAAA,OAAO,gBAAgB,YAAY,CAAA;AACrC,EAAA,CAAA;AAEA,EAAA,QAAA,CAAS,aAAA,GAAgB,eAAA;AACzB,EAAA,QAAA,CAAS,IAAA,GAAO,eAAA;AAChB,EAAA,QAAA,CAAS,UAAA,GAAa,qBAAA;AACtB,EAAA,QAAA,CAAS,SAAA,GAAY,oBAAA;AACrB,EAAA,QAAA,CAAS,KAAA,GAAQ,gBAAA;AACjB,EAAA,QAAA,CAAS,UAAA,GAAa,gBAAA;AACtB,EAAA,QAAA,CAAS,aAAA,GAAgB,oBAAA;AACzB,EAAA,QAAA,CAAS,kBAAA,GAAqB,oBAAA;AAC9B,EAAA,QAAA,CAAS,SAAA,GAAY,oBAAA;AACrB,EAAA,QAAA,CAAS,aAAA,GAAgB,wBAAA;AACzB,EAAA,QAAA,CAAS,MAAA,GAAS,iBAAA;AAClB,EAAA,QAAA,CAAS,KAAA,GAAQ,gBAAA;AACjB,EAAA,OAAO,QAAA;AACT;AAKqB,WAAA;;;ACrNd,IAAM,kBAAA,GAAN,cAAiCsC,oCAAA,CAAmB;AAAA,EAKzD,YAAoB,MAAA,EAAkC;AACpD,IAAA,KAAA,EAAM;AADY,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAElB,IAAA,IAAA,CAAK,cAAA,EAAe;AAAA,EACtB;AAAA,EAPS,EAAA,GAAK,cAAA;AAAA,EACL,IAAA,GAAO,cAAA;AAAA,EACR,UAAA,GAAa,IAAIC,qCAAA,EAAoB;AAAA,EAOrC,cAAA,GAAuB;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,YAAA,EAAc;AAC7B,MAAA,MAAM,IAAIC,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,8BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ;AACvB,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,8BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,iBAAiB,IAAA,CAAK,MAAA,CAAO,eAAe,IAAA,CAAK,MAAA,CAAO,YAAY,MAAA,GAAS,CAAA;AACnF,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,UAAA,KAAe,MAAA;AAEjD,IAAA,IAAI,kBAAkB,aAAA,EAAe;AACnC,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAA,CAAK,wBAAA,CAAyB,IAAA,CAAK,MAAA,CAAO,UAAW,CAAA;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,MAAM,cAAA,GAA0D;AAC9D,IAAA,IAAI,KAAK,MAAA,CAAO,WAAA,IAAe,KAAK,MAAA,CAAO,WAAA,CAAY,SAAS,CAAA,EAAG;AACjE,MAAA,OAAO;AAAA,QACL,cAAA,EAAgB;AAAA,UACd,cAAc,EAAC;AAAA,UACf,YAAA,EAAc,SAAA;AAAA,UACd,IAAA,EAAM,cAAA;AAAA,UACN,MAAA,EAAQ,KAAK,MAAA,CAAO,WAAA;AAAA,UACpB,MAAA,EAAQ,6DAAA;AAAA,UACR,OAAA,EAAS;AAAA;AACX,OACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,UAAA,EAAY;AAC3B,MAAA,OAAO;AAAA,QACL,cAAA,EAAgB;AAAA,UACd,cAAc,EAAC;AAAA,UACf,YAAA,EAAc,SAAA;AAAA,UACd,IAAA,EAAM,cAAA;AAAA,UACN,QAAQ,EAAC;AAAA,UACT,MAAA,EAAQ,6DAAA;AAAA,UACR,OAAA,EAAS;AAAA;AACX,OACF;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,wBAAA,CAAyB,IAAA,CAAK,OAAO,UAAU,CAAA;AAExE,MAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,eAAA,CAAgB;AAAA,QACvC,UAAU,WAAA,CAAY,QAAA;AAAA,QACtB,UAAU,WAAA,CAAY,QAAA;AAAA,QACtB,cAAc,WAAA,CAAY;AAAA,OAC3B,CAAA;AAED,MAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO;AAAA,QACrD,gBAAgB,WAAA,CAAY,cAAA;AAAA,QAC5B,eAAe,WAAA,CAAY,aAAA;AAAA,QAC3B,YAAA,EAAc,KAAK,MAAA,CAAO;AAAA,OAC3B,CAAA;AAED,MAAA,OAAO;AAAA,QACL,cAAA,EAAgB;AAAA,UACd,cAAc,EAAC;AAAA,UACf,YAAA,EAAc,SAAA;AAAA,UACd,IAAA,EAAM,cAAA;AAAA,UACN,MAAA,EAAQ,WAAA,CAAY,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA;AAAA,UACnC,MAAA,EAAQ,6DAAA;AAAA,UACR,OAAA,EAAS;AAAA;AACX,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,WAAW,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACtE,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,qDAAqD,QAAQ,CAAA,CAAA;AAAA,QAC7D;AAAA,OACF;AAEA,MAAA,OAAO;AAAA,QACL,cAAA,EAAgB;AAAA,UACd,cAAc,EAAC;AAAA,UACf,YAAA,EAAc,SAAA;AAAA,UACd,IAAA,EAAM,cAAA;AAAA,UACN,QAAQ,EAAC;AAAA,UACT,MAAA,EAAQ,6DAAA;AAAA,UACR,OAAA,EAAS;AAAA;AACX,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,yBAAyB,UAAA,EAAiE;AAChG,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,cAAA,EAAgB,eAAc,GAAI,UAAA;AAE5E,IAAA,MAAM,UAAU,EAAC;AACjB,IAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA;AACtC,IAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA;AACtC,IAAA,IAAI,CAAC,YAAA,EAAc,OAAA,CAAQ,IAAA,CAAK,cAAc,CAAA;AAC9C,IAAA,IAAI,CAAC,cAAA,EAAgB,OAAA,CAAQ,IAAA,CAAK,gBAAgB,CAAA;AAClD,IAAA,IAAI,CAAC,aAAA,EAAe,OAAA,CAAQ,IAAA,CAAK,eAAe,CAAA;AAEhD,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,sCAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,CAAA,4CAAA,EAA+C,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,mFAAA;AAAA,OACxE,CAAA;AAAA,IACH;AAEA,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAc,gBAAgB,WAAA,EAIV;AAClB,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAU,YAAA,EAAa,GAAI,WAAA;AAE7C,IAAA,MAAM,QAAA,GAAW,CAAA,iBAAA,EAAoB,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAEzD,IAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,UAAA,CAAW,IAAI,QAAQ,CAAA;AAClD,IAAA,IAAI,UAAU,MAAA,CAAO,SAAA,GAAY,KAAK,GAAA,EAAI,GAAI,MAAO,EAAA,EAAI;AACvD,MAAA,OAAO,MAAA,CAAO,KAAA;AAAA,IAChB;AAEA,IAAA,MAAM,aAAA,GAAgB,qCAAqC,QAAQ,CAAA,kBAAA,CAAA;AAEnE,IAAA,MAAM,IAAA,GAAO,IAAI,eAAA,CAAgB;AAAA,MAC/B,UAAA,EAAY,oBAAA;AAAA,MACZ,SAAA,EAAW,QAAA;AAAA,MACX,aAAA,EAAe,YAAA;AAAA,MACf,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,aAAA,EAAe;AAAA,MAC1C,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,IAAA,EAAM,KAAK,QAAA;AAAS,KACrB,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,sBAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,CAAA,8BAAA,EAAiC,QAAA,CAAS,MAAM,IAAI,KAAK,CAAA;AAAA,OAChE,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,aAAA,GAAiB,MAAM,QAAA,CAAS,IAAA,EAAK;AAE3C,IAAA,MAAM,SAAA,GAAY,KAAK,KAAA,CAAM,IAAA,CAAK,KAAI,GAAI,GAAI,IAAI,aAAA,CAAc,UAAA;AAEhE,IAAA,MAAM,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,QAAA,EAAU;AAAA,MAClC,OAAO,aAAA,CAAc,YAAA;AAAA,MACrB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,aAAA,CAAc,YAAA;AAAA,EACvB;AAAA,EAEA,MAAc,gBAAA,CACZ,KAAA,EACA,WAAA,EAK4B;AAC5B,IAAA,MAAM,EAAE,cAAA,EAAgB,aAAA,EAAe,YAAA,EAAa,GAAI,WAAA;AAExD,IAAA,IAAI,MACF,CAAA,2CAAA,EAA8C,cAAc,CAAA,gBAAA,EAAmB,aAAa,mDAAmD,YAAY,CAAA,mCAAA,CAAA;AAE7J,IAAA,MAAM,iBAAoC,EAAC;AAE3C,IAAA,OAAO,GAAA,EAAK;AACV,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,OAAA,EAAS;AAAA,UACP,aAAA,EAAe,UAAU,KAAK,CAAA,CAAA;AAAA,UAC9B,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,QAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,UACpB,EAAA,EAAI,+BAAA;AAAA,UACJ,MAAA,EAAQ,KAAA;AAAA,UACR,QAAA,EAAU,SAAA;AAAA,UACV,IAAA,EAAM,CAAA,mCAAA,EAAsC,QAAA,CAAS,MAAM,IAAI,KAAK,CAAA;AAAA,SACrE,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAElC,MAAA,cAAA,CAAe,IAAA,CAAK,GAAG,IAAA,CAAK,KAAK,CAAA;AAEjC,MAAA,GAAA,GAAM,IAAA,CAAK,QAAA;AAAA,IACb;AAEA,IAAA,MAAM,wBAAwB,cAAA,CAAe,MAAA,CAAO,OAAK,CAAA,CAAE,UAAA,CAAW,sBAAsB,WAAW,CAAA;AAEvG,IAAA,OAAO,qBAAA;AAAA,EACT;AAAA,EAEA,QAAA,CAAS,WAAmB,QAAA,EAA0C;AACpE,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,QAAA,EAAmC;AACjD,IAAA,OAAO,KAAK,MAAA,CAAO,MAAA;AAAA,EACrB;AAAA,EAEA,MAAM,oBAAA,CAAqB;AAAA,IACzB,OAAA;AAAA,IACA;AAAA,GACF,EAI6B;AAC3B,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,oBAAA;AAE7C,IAAA,OAAO,WAAA,CAAY;AAAA,MACjB,YAAA,EAAc,KAAK,MAAA,CAAO,YAAA;AAAA,MAC1B,MAAA;AAAA,MACA,UAAA;AAAA,MACA,sBAAA,EAAwB;AAAA,KACzB,EAAE,OAAO,CAAA;AAAA,EACZ;AACF;;;AC/SO,SAAS,mBAAA,CAAoB,WAAmB,QAAA,EAAoD;AAEzG,EAAA,MAAM,kBAAkB,QAAA,CAAS,IAAA;AAAA,IAC/B,CAAC,CAAA,KAA0B,CAAA,CAAE,EAAA,KAAO,YAAA,KAAiB,CAAA,CAAE,EAAA,KAAO,SAAA,IAAa,SAAA,CAAU,UAAA,CAAW,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,GAC5G;AACA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,eAAA;AAAA,EACT;AAGA,EAAA,MAAM,mBAAmB,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAA0B,CAAA,CAAE,OAAO,YAAY,CAAA;AACvF,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,IACpB,EAAA,EAAI,+BAAA;AAAA,IACJ,QAAA,EAAU,MAAA;AAAA,IACV,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,qDAAqD,SAAS,CAAA;AAAA,GACrE,CAAA;AACH;;;ACdA,SAAS,kBAAkB,KAAA,EAAuD;AAChF,EAAA,OAAO,MAAM,oBAAA,KAAyB,IAAA;AACxC;AAIA,SAAS,4BAA4B3C,MAAAA,EAAc;AACjD,EAAA,OAAO,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,OAAA,CAAQ4C,mCAAiB,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,WAAW,MAAM,CAAA,KAAM,MAAA,CAAO,OAAA,KAAY5C,MAAI,CAAC,CAAA;AACtH;AAEO,IAAM,eAAA,GAAkB,CAAC,IAAI6C,gCAAA,EAAe,EAAG,IAAIC,kCAAA,CAAiB,2BAAA,CAA4B,CAAA,UAAA,CAAY,CAAC,CAAC,CAAA;AAO9G,IAAM,wBAAA,GAAN,MAAM,yBAAA,CAA0D;AAAA,EAC5D,oBAAA,GAAuB,IAAA;AAAA,EACvB,2BAAA,GAA8B,MAAA;AAAA,EAC9B,yBAAA,GAA4B,IAAA;AAAA,EAC5B,iBAAA,GAAoB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASpB,aAAA;AAAA,EAEA,OAAA;AAAA,EACA,QAAA;AAAA,EAED,MAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAA,GAAkE,IAAA;AAAA,EAE1E,WAAA,CAAY,QAAqD,cAAA,EAAuC;AAEtG,IAAA,IAAI,gBAAA;AAOJ,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,gBAAA,GAAmB,EAAE,IAAI,MAAA,EAAgC;AAAA,IAC3D,CAAA,MAAA,IAAW,YAAA,IAAgB,MAAA,IAAU,SAAA,IAAa,MAAA,EAAQ;AAExD,MAAA,gBAAA,GAAmB;AAAA,QACjB,IAAI,CAAA,EAAG,MAAA,CAAO,UAAU,CAAA,CAAA,EAAI,OAAO,OAAO,CAAA,CAAA;AAAA,QAC1C,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO;AAAA,OAClB;AAAA,IACF,CAAA,MAAO;AAEL,MAAA,gBAAA,GAAmB;AAAA,QACjB,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO;AAAA,OAClB;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,GAMF;AAAA,MACF,GAAG,gBAAA;AAAA,MACH,UAAU,gBAAA,CAAiB;AAAA,KAC7B;AAGA,IAAA,IAAA,CAAK,OAAA,GAAU,mBAAA,CAAoB,gBAAA,CAAiB,EAAA,EAAI,CAAC,GAAI,cAAA,IAAkB,EAAC,EAAI,GAAG,eAAe,CAAC,CAAA;AAGvG,IAAA,MAAM,gBAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,YAAA,GAAe,MAAA,GAAY,KAAK,OAAA,CAAQ,EAAA;AAClF,IAAA,MAAM,MAAA,GAASC,oCAAA,CAAmB,gBAAA,CAAiB,EAAA,EAAI,aAAa,CAAA;AAEpE,IAAA,IAAA,CAAK,QAAA,GAAW,OAAO,UAAA,IAAc,mBAAA;AAErC,IAAA,IAAI,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,OAAA,KAAY,iBAAiB,EAAA,EAAI;AAC/D,MAAA,YAAA,CAAa,KAAK,MAAA,CAAO,OAAA;AAAA,IAC3B;AAEA,IAAA,IAAA,CAAK,UAAU,YAAA,CAAa,EAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,GAAS,YAAA;AAKd,IAAA,MAAM,IAAA,GAAO,IAAA;AACb,IAAA,IAAA,CAAK,aAAA,GAAgB;AAAA,MACnB,IAAA,CACE,aACA,UAAA,EACkC;AAClC,QAAA,OAAO,IAAA,CAAK,qBAAA,EAAsB,CAAE,IAAA,CAAK,aAAa,UAAU,CAAA;AAAA,MAClE;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,qBAAA,GAA2D;AACvE,IAAA,IAAI,KAAK,qBAAA,EAAuB;AAC9B,MAAA,OAAO,IAAA,CAAK,qBAAA;AAAA,IACd;AAEA,IAAA,IAAA,CAAK,qBAAA,GAAwB,KAAK,mBAAA,EAAoB;AACtD,IAAA,OAAO,IAAA,CAAK,qBAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,mBAAA,GAAyD;AACrE,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAI,IAAA,CAAK,OAAO,GAAA,EAAK;AACnB,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAU,EAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAW,MAAM,KAAK,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA;AAAA,MACnF;AAAA,IACF,CAAA,CAAA,MAAQ;AAGN,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,gBAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,YAAA,GAAe,MAAA,GAAY,KAAK,OAAA,CAAQ,EAAA;AAClF,MAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,oBAAA,CAAqB;AAAA,QAC5C,MAAA;AAAA,QACA,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,QACrB,GAAGA,oCAAA,CAAmB,IAAA,CAAK,MAAA,CAAO,UAAU,aAAa;AAAA,OAC1D,CAAA;AAGD,MAAA,MAAM,qBAAqB,KAAA,CAAM,aAAA;AACjC,MAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,QAAA,OAAO,EAAC;AAAA,MACV;AAGA,MAAA,IAAI,OAAQ,kBAAA,CAA4C,IAAA,KAAS,UAAA,EAAY;AAC3E,QAAA,MAAM,WAAW,MAAO,kBAAA;AACxB,QAAA,OAAO,YAAY,EAAC;AAAA,MACtB;AAEA,MAAA,OAAQ,sBAAmD,EAAC;AAAA,IAC9D,CAAA,CAAA,MAAQ;AAEN,MAAA,OAAO,EAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,OAAA,EAA4D;AAC3E,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AAGF,MAAA,IAAI,IAAA,CAAK,OAAO,GAAA,EAAK;AACnB,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAU,EAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAW,MAAM,KAAK,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA;AAAA,MACnF;AAAA,IACF,SAAS,KAAA,EAAO;AAEd,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe;AAAA,UACzB,MAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,cACjB,IAAA,EAAM,OAAA;AAAA,cACN;AAAA,aAC4B,CAAA;AAC9B,YAAA,UAAA,CAAW,KAAA,EAAM;AAAA,UACnB;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,MAAM,gBAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,YAAA,GAAe,MAAA,GAAY,KAAK,OAAA,CAAQ,EAAA;AAClF,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,oBAAA,CAAqB;AAAA,MAC5C,MAAA;AAAA,MACA,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,MACrB,GAAGA,oCAAA,CAAmB,IAAA,CAAK,MAAA,CAAO,UAAU,aAAa;AAAA,KAC1D,CAAA;AAGD,IAAA,IAAI,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAM,YAAA,GAAe,IAAI,oBAAA,CAAqB,KAAK,CAAA;AAEnD,MAAA,OAAO,YAAA,CAAa,WAAW,OAAc,CAAA;AAAA,IAC/C;AACA,IAAA,MAAM,YAAA,GAAe,IAAIC,sCAAA,CAAqB,KAAK,CAAA;AACnD,IAAA,OAAO,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,EACxC;AAAA,EAEA,MAAM,SAAS,OAAA,EAA4D;AAEzE,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AAGF,MAAA,IAAI,IAAA,CAAK,OAAO,GAAA,EAAK;AACnB,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAU,EAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,OAAO,MAAA,IAAW,MAAM,KAAK,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA;AAAA,MACnF;AAAA,IACF,SAAS,KAAA,EAAO;AAEd,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe;AAAA,UACzB,MAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,cACjB,IAAA,EAAM,OAAA;AAAA,cACN;AAAA,aAC4B,CAAA;AAC9B,YAAA,UAAA,CAAW,KAAA,EAAM;AAAA,UACnB;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,MAAM,gBAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,YAAA,GAAe,MAAA,GAAY,KAAK,OAAA,CAAQ,EAAA;AAClF,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,oBAAA,CAAqB;AAAA,MAC5C,MAAA;AAAA,MACA,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,MACrB,GAAGD,oCAAA,CAAmB,IAAA,CAAK,MAAA,CAAO,UAAU,aAAa;AAAA,KAC1D,CAAA;AAGD,IAAA,IAAI,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAM,YAAA,GAAe,IAAI,oBAAA,CAAqB,KAAK,CAAA;AAEnD,MAAA,OAAO,YAAA,CAAa,SAAS,OAAc,CAAA;AAAA,IAC7C;AACA,IAAA,MAAM,YAAA,GAAe,IAAIC,sCAAA,CAAqB,KAAK,CAAA;AACnD,IAAA,OAAO,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,EACtC;AAAA,EAEA,MAAc,oBAAA,CAAqB;AAAA,IACjC,OAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,EAKkC;AAChC,IAAA,MAAM,GAAA,GAAMC,iBAAA,CAAW,QAAQ,CAAA,CAC5B,MAAA;AAAA,MACC,IAAA,CAAK,OAAA,CAAQ,EAAA,GACX,OAAA,GACA,aACA,MAAA,IACC,IAAA,CAAK,MAAA,CAAO,GAAA,IAAO,EAAA,CAAA,IACnB,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,GAAI,EAAA;AAAA,KACzC,CACC,OAAO,KAAK,CAAA;AACf,IAAA,IAAI,yBAAA,CAAyB,eAAe,GAAA,CAAI,GAAG,GAAG,OAAO,yBAAA,CAAyB,cAAA,CAAe,GAAA,CAAI,GAAG,CAAA;AAG5G,IAAA,IAAI,IAAA,CAAK,OAAO,GAAA,EAAK;AACnB,MAAA,MAAMC,iBAAgBC,wCAAA,CAAuB;AAAA,QAC3C,IAAA,EAAM,UAAA;AAAA,QACN,MAAA;AAAA,QACA,OAAA,EAAS,KAAK,MAAA,CAAO,GAAA;AAAA,QACrB,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,QACrB,yBAAA,EAA2B;AAAA,OAC5B,CAAA,CAAE,SAAA,CAAU,OAAO,CAAA;AACpB,MAAA,yBAAA,CAAyB,cAAA,CAAe,GAAA,CAAI,GAAA,EAAKD,cAAa,CAAA;AAC9D,MAAA,OAAOA,cAAAA;AAAA,IACT;AAEA,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,OAAA,CAAQ,oBAAA,CAAqB,EAAE,OAAA,EAAS,UAAA,EAAY,MAAA,EAAQ,OAAA,EAAS,CAAA;AACtG,IAAA,yBAAA,CAAyB,cAAA,CAAe,GAAA,CAAI,GAAA,EAAK,aAAa,CAAA;AAC9D,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EACA,OAAe,cAAA,mBAAiB,IAAI,GAAA,EAAkC;AACxE;;;ACvSO,SAAS,+BACd,WAAA,EASuC;AACvC,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,sBAAA,IAA0B,aAAa,OAAO,KAAA;AAIrF,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,EAAE,WAAW,WAAA,CAAA,EAAc;AAChE,IAAA,IAAI,IAAA,IAAQ,aAAa,OAAO,IAAA;AAChC,IAAA,IAAI,YAAA,IAAgB,WAAA,IAAe,SAAA,IAAa,WAAA,EAAa,OAAO,IAAA;AAAA,EACtE;AACA,EAAA,OAAO,KAAA;AACT;AAgCA,eAAsB,mBACpB,WAAA,EASA,cAAA,GAAiC,IAAIE,gCAAA,IACrC,MAAA,EAC0D;AAE1D,EAAA,IAAI,OAAO,gBAAgB,UAAA,EAAY;AACrC,IAAA,WAAA,GAAc,MAAM,WAAA,CAAY,EAAE,cAAA,EAAgB,QAAQ,CAAA;AAAA,EAC5D;AAIA,EAAA,IACE,WAAA,YAAuB,wBAAA,IACvB,WAAA,YAAuBJ,sCAAA,IACvB,uBAAuB,oBAAA,EACvB;AACA,IAAA,OAAO,WAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,sBAAA,IAA0B,WAAA,EAAa;AAC5E,IAAA,IAAI,WAAA,CAAY,yBAAyB,IAAA,EAAM;AAC7C,MAAA,OAAO,IAAIA,uCAAqB,WAA8B,CAAA;AAAA,IAChE;AACA,IAAA,IAAI,WAAA,CAAY,yBAAyB,IAAA,EAAM;AAC7C,MAAA,OAAO,IAAI,qBAAqB,WAA8B,CAAA;AAAA,IAChE;AACA,IAAA,IAAI,WAAA,CAAY,yBAAyB,IAAA,EAAM;AAC7C,MAAA,OAAO,WAAA;AAAA,IACT;AAIA,IAAA,IAAI,OAAQ,WAAA,CAAoB,QAAA,KAAa,cAAc,OAAQ,WAAA,CAAoB,eAAe,UAAA,EAAY;AAChH,MAAA,OAAO,IAAIA,uCAAqB,WAA8B,CAAA;AAAA,IAChE;AACA,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,QAAQ,YAAA,EAAa;AAC3C,EAAA,MAAM,cAAA,GAAiB,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,GAAI,MAAA;AAGtE,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,8BAAA,CAA+B,WAAW,CAAA,EAAG;AAClF,IAAA,OAAO,IAAI,wBAAA,CAAyB,WAAA,EAAa,cAAc,CAAA;AAAA,EACjE;AAEA,EAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AACxD;;;ACtGO,IAAM,gBAAA,GAAyC;AAAA;AAAA,EAEpD;AAAA,IACE,EAAA,EAAI,wBAAA;AAAA,IACJ,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,EAAA,EAAI,wBAAA;AAAA,IACJ,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,EAAA,EAAI,wBAAA;AAAA,IACJ,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA;AAAA,EAEA;AAAA,IACE,EAAA,EAAI,sBAAA;AAAA,IACJ,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA;AAEjB;AAmCO,IAAM,4BAAN,MAAkG;AAAA,EAC9F,oBAAA,GAAuB,IAAA;AAAA,EACvB,OAAA;AAAA,EACA,QAAA;AAAA,EACT,oBAAA,GAAiE,IAAA;AAAA,EACjE,qBAAA,GAAwD,IAAA;AAAA,EAEhD,aAAA;AAAA,EAER,YAAY,MAAA,EAAyC;AAEnD,IAAA,IAAI,gBAAA;AAQJ,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAE9B,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAC9B,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,MAAM,CAAA,oCAAA,CAAsC,CAAA;AAAA,MAC/F;AACA,MAAA,MAAM,CAAC,UAAA,EAAY,OAAO,CAAA,GAAI,KAAA;AAC9B,MAAA,gBAAA,GAAmB,EAAE,YAAY,OAAA,EAAQ;AAAA,IAC3C,CAAA,MAAA,IAAW,YAAA,IAAgB,MAAA,IAAU,SAAA,IAAa,MAAA,EAAQ;AACxD,MAAA,gBAAA,GAAmB;AAAA,QACjB,YAAY,MAAA,CAAO,UAAA;AAAA,QACnB,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO;AAAA,OAClB;AAAA,IACF,CAAA,MAAO;AAEL,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,EAAA,CAAG,KAAA,CAAM,GAAG,CAAA;AACjC,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,MAAA,CAAO,EAAE,CAAA,oCAAA,CAAsC,CAAA;AAAA,MAClG;AACA,MAAA,MAAM,CAAC,UAAA,EAAY,OAAO,CAAA,GAAI,KAAA;AAC9B,MAAA,gBAAA,GAAmB;AAAA,QACjB,UAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO;AAAA,OAClB;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,WAAW,gBAAA,CAAiB,UAAA;AACjC,IAAA,IAAA,CAAK,UAAU,gBAAA,CAAiB,OAAA;AAIhC,IAAA,IAAI,iBAAiB,GAAA,EAAK;AACxB,MAAA,MAAM,MAAA,GAAS,iBAAiB,MAAA,IAAU,EAAA;AAC1C,MAAA,IAAA,CAAK,gBAAgBG,wCAAA,CAAuB;AAAA,QAC1C,MAAM,gBAAA,CAAiB,UAAA;AAAA,QACvB,MAAA;AAAA,QACA,SAAS,gBAAA,CAAiB,GAAA;AAAA,QAC1B,SAAS,gBAAA,CAAiB;AAAA,OAC3B,CAAA,CAAE,kBAAA,CAAmB,gBAAA,CAAiB,OAAO,CAAA;AAAA,IAChD,CAAA,MAAO;AAEL,MAAA,MAAM,QAAA,GAAWE,kCAAgB,WAAA,EAAY;AAC7C,MAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,iBAAA,CAAkB,gBAAA,CAAiB,UAAU,CAAA;AAE7E,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,gBAAA,CAAiB,UAAU,CAAA,CAAE,CAAA;AAAA,MACpE;AAGA,MAAA,IAAI,SAAS,gBAAA,CAAiB,MAAA;AAC9B,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,eAAe,cAAA,CAAe,YAAA;AACpC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAE/B,UAAA,KAAA,MAAW,UAAU,YAAA,EAAc;AACjC,YAAA,MAAA,GAAS,OAAA,CAAQ,IAAI,MAAM,CAAA;AAC3B,YAAA,IAAI,MAAA,EAAQ;AAAA,UACd;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,OAAA,CAAQ,IAAI,YAAY,CAAA;AAAA,QACnC;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,cAAA,CAAe,YAAY,CAAA,GAC3D,cAAA,CAAe,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,GACvC,cAAA,CAAe,YAAA;AACnB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,iBAAiB,UAAU,CAAA,MAAA,EAAS,aAAa,CAAA,CAAE,CAAA;AAAA,MACvG;AAGA,MAAA,IAAI,gBAAA,CAAiB,eAAe,QAAA,EAAU;AAC5C,QAAA,IAAA,CAAK,aAAA,GAAgBC,8BAAA,CAAa,EAAE,MAAA,EAAQ,CAAA,CAAE,kBAAA;AAAA,UAC5C,gBAAA,CAAiB;AAAA,SACnB;AAAA,MACF,CAAA,MAAA,IAAW,gBAAA,CAAiB,UAAA,KAAe,QAAA,EAAU;AACnD,QAAA,IAAA,CAAK,aAAA,GAAgBC,0CAAA,CAAyB,EAAE,MAAA,EAAQ,CAAA,CAAE,aAAA;AAAA,UACxD,gBAAA,CAAiB;AAAA,SACnB;AAAA,MACF,CAAA,MAAO;AAEL,QAAA,IAAI,CAAC,eAAe,GAAA,EAAK;AACvB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,SAAA,EAAY,gBAAA,CAAiB,UAAU,CAAA,+BAAA,CAAiC,CAAA;AAAA,QAC1F;AACA,QAAA,IAAA,CAAK,gBAAgBJ,wCAAA,CAAuB;AAAA,UAC1C,MAAM,gBAAA,CAAiB,UAAA;AAAA,UACvB,MAAA;AAAA,UACA,SAAS,cAAA,CAAe;AAAA,SACzB,CAAA,CAAE,kBAAA,CAAmB,gBAAA,CAAiB,OAAO,CAAA;AAAA,MAChD;AAAA,IACF;AAGA,IAAA,IAAI,IAAA,CAAK,aAAA,CAAc,oBAAA,KAAyB,MAAA,EAAW;AACzD,MAAA,IAAA,CAAK,oBAAA,GAAuB,KAAK,aAAA,CAAc,oBAAA;AAAA,IACjD;AACA,IAAA,IAAI,IAAA,CAAK,aAAA,CAAc,qBAAA,KAA0B,MAAA,EAAW;AAC1D,MAAA,IAAA,CAAK,qBAAA,GAAwB,KAAK,aAAA,CAAc,qBAAA;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,MAAM,QACJ,IAAA,EACkE;AAClE,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxC;AACF","file":"chunk-GCTAD6B7.cjs","sourcesContent":["import type { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider-v6';\nimport type { MastraLanguageModelV3 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV3['doStream']>>;\n\n/**\n * Wrapper class for AI SDK V6 (LanguageModelV3) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV6LanguageModel implements MastraLanguageModelV3 {\n /**\n * The language model must specify which language model interface version it implements.\n */\n readonly specificationVersion: 'v3' = 'v3';\n /**\n * Name of the provider for logging purposes.\n */\n readonly provider: string;\n /**\n * Provider-specific model ID for logging purposes.\n */\n readonly modelId: string;\n /**\n * Supported URL patterns by media type for the provider.\n *\n * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n * and the values are arrays of regular expressions that match the URL paths.\n * The matching should be against lower-case URLs.\n * Matched URLs are supported natively by the model and are not downloaded.\n * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n */\n supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n #model: LanguageModelV3;\n\n constructor(config: LanguageModelV3) {\n this.#model = config;\n this.provider = this.#model.provider;\n this.modelId = this.#model.modelId;\n this.supportedUrls = this.#model.supportedUrls;\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const result = await this.#model.doGenerate(options);\n\n return {\n request: result.request!,\n response: result.response as unknown as StreamResult['response'],\n stream: createStreamFromGenerateResult(result),\n };\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n return await this.#model.doStream(options);\n }\n}\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadSettingError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadSettingError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadSettingError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_TooManyEmbeddingValuesForCallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TooManyEmbeddingValuesForCallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly provider: string;\n readonly modelId: string;\n readonly maxEmbeddingsPerCall: number;\n readonly values: Array<unknown>;\n\n constructor(options: {\n provider: string;\n modelId: string;\n maxEmbeddingsPerCall: number;\n values: Array<unknown>;\n }) {\n super({\n name,\n message:\n `Too many values for a single embedding call. ` +\n `The ${options.provider} model \"${options.modelId}\" can only embed up to ` +\n `${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`,\n });\n\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n\n static isInstance(\n error: unknown,\n ): error is TooManyEmbeddingValuesForCallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function combineHeaders(\n ...headers: Array<Record<string, string | undefined> | undefined>\n): Record<string, string | undefined> {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...(currentHeaders ?? {}),\n }),\n {},\n ) as Record<string, string | undefined>;\n}\n","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","export function getRuntimeEnvironmentUserAgent(\n globalThisAny: any = globalThis as any,\n): string {\n // Browsers\n if (globalThisAny.window) {\n return `runtime/browser`;\n }\n\n // Cloudflare Workers / Deno / Bun / Node.js >= 21.1\n if (globalThisAny.navigator?.userAgent) {\n return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n }\n\n // Nodes.js < 21.1\n if (globalThisAny.process?.versions?.node) {\n return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n }\n\n if (globalThisAny.EdgeRuntime) {\n return `runtime/vercel-edge`;\n }\n\n return 'runtime/unknown';\n}\n","/**\n * Normalizes different header inputs into a plain record with lower-case keys.\n * Entries with `undefined` or `null` values are removed.\n *\n * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize.\n * @returns A record containing the normalized header entries.\n */\nexport function normalizeHeaders(\n headers:\n | HeadersInit\n | Record<string, string | undefined>\n | Array<[string, string | undefined]>\n | undefined,\n): Record<string, string> {\n if (headers == null) {\n return {};\n }\n\n const normalized: Record<string, string> = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n normalized[key.toLowerCase()] = value;\n });\n } else {\n if (!Array.isArray(headers)) {\n headers = Object.entries(headers);\n }\n\n for (const [key, value] of headers) {\n if (value != null) {\n normalized[key.toLowerCase()] = value;\n }\n }\n }\n\n return normalized;\n}\n","import { normalizeHeaders } from './normalize-headers';\n\n/**\n * Appends suffix parts to the `user-agent` header.\n * If a `user-agent` header already exists, the suffix parts are appended to it.\n * If no `user-agent` header exists, a new one is created with the suffix parts.\n * Automatically removes undefined entries from the headers.\n *\n * @param headers - The original headers.\n * @param userAgentSuffixParts - The parts to append to the `user-agent` header.\n * @returns The new headers with the `user-agent` header set or updated.\n */\nexport function withUserAgentSuffix(\n headers: HeadersInit | Record<string, string | undefined> | undefined,\n ...userAgentSuffixParts: string[]\n): Record<string, string> {\n const normalizedHeaders = new Headers(normalizeHeaders(headers));\n\n const currentUserAgentHeader = normalizedHeaders.get('user-agent') || '';\n\n normalizedHeaders.set(\n 'user-agent',\n [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '),\n );\n\n return Object.fromEntries(normalizedHeaders.entries());\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 { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","import { LoadSettingError } from '@ai-sdk/provider';\n\n/**\n * Loads a `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @param settingName - The setting name.\n * @param description - The description of the setting.\n * @returns The setting value.\n */\nexport function loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description,\n}: {\n settingValue: string | undefined;\n environmentVariableName: string;\n settingName: string;\n description: string;\n}): string {\n if (typeof settingValue === 'string') {\n return settingValue;\n }\n\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadSettingError({\n message:\n `${description} setting is missing. ` +\n `Pass it using the '${settingName}' parameter. ` +\n `Environment variables is not supported in this environment.`,\n });\n }\n\n settingValue = process.env[environmentVariableName];\n\n if (settingValue == null) {\n throw new LoadSettingError({\n message:\n `${description} setting is missing. ` +\n `Pass it using the '${settingName}' parameter ` +\n `or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof settingValue !== 'string') {\n throw new LoadSettingError({\n message:\n `${description} setting must be a string. ` +\n `The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return settingValue;\n}\n","/**\n * Maps a media type to its corresponding file extension.\n * It was originally introduced to set a filename for audio file uploads\n * in https://github.com/vercel/ai/pull/8159.\n *\n * @param mediaType The media type to map.\n * @returns The corresponding file extension\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types\n */\nexport function mediaTypeToExtension(mediaType: string) {\n const [_type, subtype = ''] = mediaType.toLowerCase().split('/');\n\n return (\n {\n mpeg: 'mp3',\n 'x-wav': 'wav',\n opus: 'ogg',\n mp4: 'm4a',\n 'x-m4a': 'm4a',\n }[subtype] ?? subtype\n );\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n const { stackTraceLimit } = Error;\n try {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n Error.stackTraceLimit = 0;\n } catch (e) {\n // Fallback in case Error is immutable (v8 readonly)\n return _parse(text);\n }\n\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?:\n | undefined\n | ((\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\n/**\n * Creates a validator with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a validator.\n * @returns A function that returns a validator.\n */\nexport function lazyValidator<OBJECT>(\n createValidator: () => Validator<OBJECT>,\n): LazyValidator<OBJECT> {\n // cache the validator to avoid initializing it multiple times\n let validator: Validator<OBJECT> | undefined;\n return () => {\n if (validator == null) {\n validator = createValidator();\n }\n return validator;\n };\n}\n\nexport type LazyValidator<OBJECT> = () => Validator<OBJECT>;\n\nexport type FlexibleValidator<OBJECT> =\n | Validator<OBJECT>\n | LazyValidator<OBJECT>\n | StandardSchemaV1<unknown, OBJECT>;\n\nexport type InferValidator<SCHEMA> =\n SCHEMA extends StandardSchemaV1<unknown, infer T>\n ? T\n : SCHEMA extends LazyValidator<infer T>\n ? T\n : SCHEMA extends Validator<infer T>\n ? T\n : never;\n\nexport function asValidator<OBJECT>(\n value: FlexibleValidator<OBJECT>,\n): Validator<OBJECT> {\n return isValidator(value)\n ? value\n : typeof value === 'function'\n ? value()\n : standardSchemaValidator(value);\n}\n\nexport function standardSchemaValidator<OBJECT>(\n standardSchema: StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return validator(async value => {\n const result = await standardSchema['~standard'].validate(value);\n\n return result.issues == null\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { FlexibleValidator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleValidator<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleValidator<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await validator.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { FlexibleValidator, Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: FlexibleValidator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleValidator<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: FlexibleValidator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleValidator<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ParseResult, safeParseJSON } from './parse-json';\nimport { FlexibleValidator } from './validator';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: FlexibleValidator<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { safeValidateTypes } from './validate-types';\nimport { FlexibleValidator } from './validator';\n\nexport async function parseProviderOptions<OPTIONS>({\n provider,\n providerOptions,\n schema,\n}: {\n provider: string;\n providerOptions: Record<string, unknown> | undefined;\n schema: FlexibleValidator<OPTIONS>;\n}): Promise<OPTIONS | undefined> {\n if (providerOptions?.[provider] == null) {\n return undefined;\n }\n\n const parsedProviderOptions = await safeValidateTypes<OPTIONS | undefined>({\n value: providerOptions[provider],\n schema,\n });\n\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error,\n });\n }\n\n return parsedProviderOptions.value;\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { JSONValue, LanguageModelV2ToolResultPart } from '@ai-sdk/provider';\nimport { FlexibleSchema } from '../schema';\nimport { ModelMessage } from './model-message';\nimport { ProviderOptions } from './provider-options';\n\n/**\n * Additional options that are sent into each tool call.\n */\n// TODO AI SDK 6: rename to ToolExecutionOptions\nexport interface ToolCallOptions {\n /**\n * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.\n */\n toolCallId: string;\n\n /**\n * Messages that were sent to the language model to initiate the response that contained the tool call.\n * The messages **do not** include the system prompt nor the assistant response that contained the tool call.\n */\n messages: ModelMessage[];\n\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Additional context.\n *\n * Experimental (can break in patch releases).\n */\n experimental_context?: unknown;\n}\n\nexport type ToolExecuteFunction<INPUT, OUTPUT> = (\n input: INPUT,\n options: ToolCallOptions,\n) => AsyncIterable<OUTPUT> | PromiseLike<OUTPUT> | OUTPUT;\n\n// 0 extends 1 & N checks for any\n// [N] extends [never] checks for never\ntype NeverOptional<N, T> = 0 extends 1 & N\n ? Partial<T>\n : [N] extends [never]\n ? Partial<Record<keyof T, undefined>>\n : T;\n\ntype ToolOutputProperties<INPUT, OUTPUT> = NeverOptional<\n OUTPUT,\n | {\n /**\nAn async function that is called with the arguments from the tool call and produces a result.\nIf not provided, the tool will not be executed automatically.\n\n@args is the input of the tool call.\n@options.abortSignal is a signal that can be used to abort the tool call.\n */\n execute: ToolExecuteFunction<INPUT, OUTPUT>;\n\n outputSchema?: FlexibleSchema<OUTPUT>;\n }\n | {\n outputSchema: FlexibleSchema<OUTPUT>;\n\n execute?: never;\n }\n>;\n\n/**\nA tool contains the description and the schema of the input that the tool expects.\nThis enables the language model to generate the input.\n\nThe tool can also contain an optional execute function for the actual execution function of the tool.\n */\nexport type Tool<\n INPUT extends JSONValue | unknown | never = any,\n OUTPUT extends JSONValue | unknown | never = any,\n> = {\n /**\nAn optional description of what the tool does.\nWill be used by the language model to decide whether to use the tool.\nNot used for provider-defined tools.\n */\n description?: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\nThe schema of the input that the tool expects. The language model will use this to generate the input.\nIt is also used to validate the output of the language model.\nUse descriptions to make the input understandable for the language model.\n */\n inputSchema: FlexibleSchema<INPUT>;\n\n /**\n * Optional function that is called when the argument streaming starts.\n * Only called when the tool is used in a streaming context.\n */\n onInputStart?: (options: ToolCallOptions) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when an argument streaming delta is available.\n * Only called when the tool is used in a streaming context.\n */\n onInputDelta?: (\n options: { inputTextDelta: string } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when a tool call can be started,\n * even if the execute function is not provided.\n */\n onInputAvailable?: (\n options: {\n input: [INPUT] extends [never] ? undefined : INPUT;\n } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n} & ToolOutputProperties<INPUT, OUTPUT> & {\n /**\nOptional conversion function that maps the tool result to an output that can be used by the language model.\n\nIf not provided, the tool result will be sent as a JSON object.\n */\n toModelOutput?: (\n output: 0 extends 1 & OUTPUT\n ? any\n : [OUTPUT] extends [never]\n ? any\n : NoInfer<OUTPUT>,\n ) => LanguageModelV2ToolResultPart['output'];\n } & (\n | {\n /**\nTool with user-defined input and output schemas.\n */\n type?: undefined | 'function';\n }\n | {\n /**\nTool that is defined at runtime (e.g. an MCP tool).\nThe types of input and output are not known at development time.\n */\n type: 'dynamic';\n }\n | {\n /**\nTool with provider-defined input and output schemas.\n */\n type: 'provider-defined';\n\n /**\nThe ID of the tool. Should follow the format `<provider-name>.<unique-tool-name>`.\n */\n id: `${string}.${string}`;\n\n /**\nThe name of the tool that the user must use in the tool set.\n */\n name: string;\n\n /**\nThe arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.\n */\n args: Record<string, unknown>;\n }\n );\n\n/**\n * Infer the input type of a tool.\n */\nexport type InferToolInput<TOOL extends Tool> =\n TOOL extends Tool<infer INPUT, any> ? INPUT : never;\n\n/**\n * Infer the output type of a tool.\n */\nexport type InferToolOutput<TOOL extends Tool> =\n TOOL extends Tool<any, infer OUTPUT> ? OUTPUT : never;\n\n/**\nHelper function for inferring the execute args of a tool.\n */\n// Note: overload order is important for auto-completion\nexport function tool<INPUT, OUTPUT>(\n tool: Tool<INPUT, OUTPUT>,\n): Tool<INPUT, OUTPUT>;\nexport function tool<INPUT>(tool: Tool<INPUT, never>): Tool<INPUT, never>;\nexport function tool<OUTPUT>(tool: Tool<never, OUTPUT>): Tool<never, OUTPUT>;\nexport function tool(tool: Tool<never, never>): Tool<never, never>;\nexport function tool(tool: any): any {\n return tool;\n}\n\n/**\nHelper function for defining a dynamic tool.\n */\nexport function dynamicTool(tool: {\n description?: string;\n providerOptions?: ProviderOptions;\n inputSchema: FlexibleSchema<unknown>;\n execute: ToolExecuteFunction<unknown, unknown>;\n toModelOutput?: (output: unknown) => LanguageModelV2ToolResultPart['output'];\n}): Tool<unknown, unknown> & {\n type: 'dynamic';\n} {\n return { ...tool, type: 'dynamic' };\n}\n","import { tool, Tool, ToolExecuteFunction } from './types/tool';\nimport { FlexibleSchema } from './schema';\n\nexport type ProviderDefinedToolFactory<INPUT, ARGS extends object> = <OUTPUT>(\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactory<INPUT, ARGS extends object>({\n id,\n name,\n inputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n}): ProviderDefinedToolFactory<INPUT, ARGS> {\n return <OUTPUT>({\n execute,\n outputSchema,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n outputSchema?: FlexibleSchema<OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n\nexport type ProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n> = (\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n>({\n id,\n name,\n inputSchema,\n outputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n outputSchema: FlexibleSchema<OUTPUT>;\n}): ProviderDefinedToolFactoryWithOutputSchema<INPUT, OUTPUT, ARGS> {\n return ({\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\nimport { FlexibleValidator } from './validator';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: FlexibleValidator<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: FlexibleValidator<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n async transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: FlexibleValidator<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","export const getRelativePath = (pathA: string[], pathB: string[]) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\n","import { ZodSchema, ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type DateStrategy =\n | 'format:date-time'\n | 'format:date'\n | 'string'\n | 'integer';\n\nexport const ignoreOverride = Symbol(\n 'Let zodToJsonSchema decide on which parser to use',\n);\n\nexport type OverrideCallback = (\n def: ZodTypeDef,\n refs: Refs,\n seen: Seen | undefined,\n forceResolution?: boolean,\n) => JsonSchema7Type | undefined | typeof ignoreOverride;\n\nexport type PostProcessCallback = (\n jsonSchema: JsonSchema7Type | undefined,\n def: ZodTypeDef,\n refs: Refs,\n) => JsonSchema7Type | undefined;\n\nexport const jsonDescription: PostProcessCallback = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n } catch {}\n }\n\n return jsonSchema;\n};\n\nexport type Options = {\n name: string | undefined;\n $refStrategy: 'root' | 'relative' | 'none' | 'seen';\n basePath: string[];\n effectStrategy: 'input' | 'any';\n pipeStrategy: 'input' | 'output' | 'all';\n dateStrategy: DateStrategy | DateStrategy[];\n mapStrategy: 'entries' | 'record';\n removeAdditionalStrategy: 'passthrough' | 'strict';\n allowedAdditionalProperties: true | undefined;\n rejectedAdditionalProperties: false | undefined;\n strictUnions: boolean;\n definitionPath: string;\n definitions: Record<string, ZodSchema>;\n errorMessages: boolean;\n patternStrategy: 'escape' | 'preserve';\n applyRegexFlags: boolean;\n emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod';\n base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod';\n nameStrategy: 'ref' | 'title';\n override?: OverrideCallback;\n postProcess?: PostProcessCallback;\n};\n\nexport const defaultOptions: Options = {\n name: undefined,\n $refStrategy: 'root',\n basePath: ['#'],\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'format:date-time',\n mapStrategy: 'entries',\n removeAdditionalStrategy: 'passthrough',\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: 'definitions',\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n patternStrategy: 'escape',\n applyRegexFlags: false,\n emailStrategy: 'format:email',\n base64Strategy: 'contentEncoding:base64',\n nameStrategy: 'ref',\n};\n\nexport const getDefaultOptions = (\n options: Partial<Options> | string | undefined,\n) =>\n (typeof options === 'string'\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n }) as Options;\n","export type JsonSchema7AnyType = { $ref?: string };\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n return {};\n}\n","import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ArrayType = {\n type: 'array';\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n const res: JsonSchema7ArrayType = {\n type: 'array',\n };\n if (\n def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny\n ) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n }\n\n if (def.minLength) {\n res.minItems = def.minLength.value;\n }\n if (def.maxLength) {\n res.maxItems = def.maxLength.value;\n }\n if (def.exactLength) {\n res.minItems = def.exactLength.value;\n res.maxItems = def.exactLength.value;\n }\n return res;\n}\n","import { ZodBigIntDef } from 'zod/v3';\n\nexport type JsonSchema7BigintType = {\n type: 'integer';\n format: 'int64';\n minimum?: BigInt;\n exclusiveMinimum?: BigInt;\n maximum?: BigInt;\n exclusiveMaximum?: BigInt;\n multipleOf?: BigInt;\n};\n\nexport function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: 'integer',\n format: 'int64',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","export type JsonSchema7BooleanType = {\n type: 'boolean';\n};\n\nexport function parseBooleanDef(): JsonSchema7BooleanType {\n return { type: 'boolean' };\n}\n","import { ZodBrandedDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { ZodCatchDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodDateDef } from 'zod/v3';\nimport { Refs } from '../refs';\nimport { DateStrategy } from '../options';\n\nexport type JsonSchema7DateType =\n | {\n type: 'integer' | 'string';\n format: 'unix-time' | 'date-time' | 'date';\n minimum?: number;\n maximum?: number;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy,\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case 'string':\n case 'format:date-time':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'format:date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'integer':\n return integerDateParser(def);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef) => {\n const res: JsonSchema7DateType = {\n type: 'integer',\n format: 'unix-time',\n };\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minimum = check.value;\n break;\n case 'max':\n res.maximum = check.value;\n break;\n }\n }\n\n return res;\n};\n","import { ZodDefaultDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parseDefaultDef(\n _def: ZodDefaultDef,\n refs: Refs,\n): JsonSchema7Type & { default: any } {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { ZodEffectsDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport function parseEffectsDef(\n _def: ZodEffectsDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return refs.effectStrategy === 'input'\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef();\n}\n","import { ZodEnumDef } from 'zod/v3';\n\nexport type JsonSchema7EnumType = {\n type: 'string';\n enum: string[];\n};\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n return {\n type: 'string',\n enum: Array.from(def.values),\n };\n}\n","import { ZodIntersectionDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7StringType } from './string';\n\nexport type JsonSchema7AllOfType = {\n allOf: JsonSchema7Type[];\n unevaluatedProperties?: boolean;\n};\n\nconst isJsonSchema7AllOfType = (\n type: JsonSchema7Type | JsonSchema7StringType,\n): type is JsonSchema7AllOfType => {\n if ('type' in type && type.type === 'string') return false;\n return 'allOf' in type;\n};\n\nexport function parseIntersectionDef(\n def: ZodIntersectionDef,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x): x is JsonSchema7Type => !!x);\n\n const mergedAllOf: JsonSchema7Type[] = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach(schema => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n } else {\n let nestedSchema: JsonSchema7Type = schema;\n if (\n 'additionalProperties' in schema &&\n schema.additionalProperties === false\n ) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ? { allOf: mergedAllOf } : undefined;\n}\n","import { ZodLiteralDef } from 'zod/v3';\n\nexport type JsonSchema7LiteralType =\n | {\n type: 'string' | 'number' | 'integer' | 'boolean';\n const: string | number | boolean;\n }\n | {\n type: 'object' | 'array';\n };\n\nexport function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType {\n const parsedType = typeof def.value;\n if (\n parsedType !== 'bigint' &&\n parsedType !== 'number' &&\n parsedType !== 'boolean' &&\n parsedType !== 'string'\n ) {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n };\n }\n\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n };\n}\n","import { ZodStringDef } from 'zod/v3';\nimport { Refs } from '../refs';\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n 'u',\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: 'string';\n minLength?: number;\n maxLength?: number;\n format?:\n | 'email'\n | 'idn-email'\n | 'uri'\n | 'uuid'\n | 'date-time'\n | 'ipv4'\n | 'ipv6'\n | 'date'\n | 'time'\n | 'duration';\n pattern?: string;\n allOf?: {\n pattern: string;\n }[];\n anyOf?: {\n format: string;\n }[];\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs,\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: 'string',\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n break;\n case 'max':\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n\n break;\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs);\n break;\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs);\n break;\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case 'url':\n addFormat(res, 'uri', check.message, refs);\n break;\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs);\n break;\n case 'regex':\n addPattern(res, check.regex, check.message, refs);\n break;\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case 'startsWith':\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs,\n );\n break;\n case 'endsWith':\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs,\n );\n break;\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs);\n break;\n case 'date':\n addFormat(res, 'date', check.message, refs);\n break;\n case 'time':\n addFormat(res, 'time', check.message, refs);\n break;\n case 'duration':\n addFormat(res, 'duration', check.message, refs);\n break;\n case 'length':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n break;\n case 'includes': {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs,\n );\n break;\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs);\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs);\n }\n break;\n }\n case 'base64url':\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case 'jwt':\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case 'cidr': {\n if (check.version !== 'v6') {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== 'v4') {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case 'base64': {\n switch (refs.base64Strategy) {\n case 'format:binary': {\n addFormat(res, 'binary' as any, check.message, refs);\n break;\n }\n\n case 'contentEncoding:base64': {\n res.contentEncoding = 'base64';\n break;\n }\n\n case 'pattern:zod': {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case 'nanoid': {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === 'escape'\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n 'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789',\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = '';\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += '\\\\';\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>['format'],\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.format || schema.anyOf?.some(x => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n });\n delete schema.format;\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n schema.format = value;\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.pattern || schema.allOf?.some(x => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n });\n delete schema.pattern;\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n schema.pattern = stringifyRegExpWithFlags(regex, refs);\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes('i'), // Case-insensitive\n m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes('s'), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = '';\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === '^') {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === '$') {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === '.') {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === '\\\\') {\n isEscaped = true;\n } else if (inCharGroup && source[i] === ']') {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === '[') {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n '/',\n )} to a flag-independent form! Falling back to the flag-ignorant source`,\n );\n return regex.source;\n }\n\n return pattern;\n}\n","import {\n ZodFirstPartyTypeKind,\n ZodMapDef,\n ZodRecordDef,\n ZodTypeAny,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseBrandedDef } from './branded';\nimport { JsonSchema7EnumType } from './enum';\nimport { JsonSchema7StringType, parseStringDef } from './string';\n\ntype JsonSchema7RecordPropertyNamesType =\n | Omit<JsonSchema7StringType, 'type'>\n | Omit<JsonSchema7EnumType, 'type'>;\n\nexport type JsonSchema7RecordType = {\n type: 'object';\n additionalProperties?: JsonSchema7Type | true;\n propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs,\n): JsonSchema7RecordType {\n const schema: JsonSchema7RecordType = {\n type: 'object',\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? refs.allowedAdditionalProperties,\n };\n\n if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length\n ) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n } else if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length\n ) {\n const { type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs,\n ) as JsonSchema7StringType;\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n\n return schema;\n}\n","import { ZodMapDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\nimport { JsonSchema7RecordType, parseRecordDef } from './record';\n\nexport type JsonSchema7MapType = {\n type: 'array';\n maxItems: 125;\n items: {\n type: 'array';\n items: [JsonSchema7Type, JsonSchema7Type];\n minItems: 2;\n maxItems: 2;\n };\n};\n\nexport function parseMapDef(\n def: ZodMapDef,\n refs: Refs,\n): JsonSchema7MapType | JsonSchema7RecordType {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs);\n }\n\n const keys =\n parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || parseAnyDef();\n const values =\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || parseAnyDef();\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","import { ZodNativeEnumDef } from 'zod/v3';\n\nexport type JsonSchema7NativeEnumType = {\n type: 'string' | 'number' | ['string', 'number'];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef,\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== 'number';\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values)),\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === 'string'\n ? 'string'\n : 'number'\n : ['string', 'number'],\n enum: actualValues,\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7NeverType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseNeverDef(): JsonSchema7NeverType | undefined {\n return { not: parseAnyDef() };\n}\n","export type JsonSchema7NullType = {\n type: 'null';\n};\n\nexport function parseNullDef(): JsonSchema7NullType {\n return {\n type: 'null',\n };\n}\n","import {\n ZodDiscriminatedUnionDef,\n ZodLiteralDef,\n ZodTypeAny,\n ZodUnionDef,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n} as const;\ntype ZodPrimitive = keyof typeof primitiveMappings;\ntype JsonSchema7Primitive =\n (typeof primitiveMappings)[keyof typeof primitiveMappings];\n\nexport type JsonSchema7UnionType =\n | JsonSchema7PrimitiveUnionType\n | JsonSchema7AnyOfType;\n\ntype JsonSchema7PrimitiveUnionType =\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n }\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n enum: (string | number | bigint | boolean | null)[];\n };\n\ntype JsonSchema7AnyOfType = {\n anyOf: JsonSchema7Type[];\n};\n\nexport function parseUnionDef(\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined {\n const options: readonly ZodTypeAny[] =\n def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (\n options.every(\n x =>\n x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length),\n )\n ) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n\n return {\n type: types.length > 1 ? types : types[0],\n };\n } else if (\n options.every(x => x._def.typeName === 'ZodLiteral' && !x.description)\n ) {\n // all options literals\n\n const types = options.reduce(\n (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n const type = typeof x._def.value;\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type];\n case 'bigint':\n return [...acc, 'integer' as const];\n case 'object':\n if (x._def.value === null) return [...acc, 'null' as const];\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc;\n }\n },\n [],\n );\n\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n },\n [] as (string | number | bigint | boolean | null)[],\n ),\n };\n }\n } else if (options.every(x => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce(\n (acc: string[], x) => [\n ...acc,\n ...x._def.values.filter((x: string) => !acc.includes(x)),\n ],\n [],\n ),\n };\n }\n\n return asAnyOf(def, refs);\n}\n\nconst asAnyOf = (\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {\n const anyOf = (\n (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options) as any[]\n )\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n }),\n )\n .filter(\n (x): x is JsonSchema7Type =>\n !!x &&\n (!refs.strictUnions ||\n (typeof x === 'object' && Object.keys(x).length > 0)),\n );\n\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { ZodNullableDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7NullType } from './null';\nimport { primitiveMappings } from './union';\n\nexport type JsonSchema7NullableType =\n | {\n anyOf: [JsonSchema7Type, JsonSchema7NullType];\n }\n | {\n type: [string, 'null'];\n };\n\nexport function parseNullableDef(\n def: ZodNullableDef,\n refs: Refs,\n): JsonSchema7NullableType | undefined {\n if (\n ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(\n def.innerType._def.typeName,\n ) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)\n ) {\n return {\n type: [\n primitiveMappings[\n def.innerType._def.typeName as keyof typeof primitiveMappings\n ],\n 'null',\n ],\n };\n }\n\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n });\n\n return base && { anyOf: [base, { type: 'null' }] };\n}\n","import { ZodNumberDef } from 'zod/v3';\n\nexport type JsonSchema7NumberType = {\n type: 'number' | 'integer';\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n};\n\nexport function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: 'number',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer';\n break;\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","import { ZodObjectDef, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ObjectType = {\n type: 'object';\n properties: Record<string, JsonSchema7Type>;\n additionalProperties?: boolean | JsonSchema7Type;\n required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n const result: JsonSchema7ObjectType = {\n type: 'object',\n properties: {},\n };\n\n const required: string[] = [];\n\n const shape = def.shape();\n\n for (const propName in shape) {\n let propDef = shape[propName];\n\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n\n const propOptional = safeIsOptional(propDef);\n\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n });\n\n if (parsedDef === undefined) {\n continue;\n }\n\n result.properties[propName] = parsedDef;\n\n if (!propOptional) {\n required.push(propName);\n }\n }\n\n if (required.length) {\n result.required = required;\n }\n\n const additionalProperties = decideAdditionalProperties(def, refs);\n\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n\n return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n if (def.catchall._def.typeName !== 'ZodNever') {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n });\n }\n\n switch (def.unknownKeys) {\n case 'passthrough':\n return refs.allowedAdditionalProperties;\n case 'strict':\n return refs.rejectedAdditionalProperties;\n case 'strip':\n return refs.removeAdditionalStrategy === 'strict'\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n try {\n return schema.isOptional();\n } catch {\n return true;\n }\n}\n","import { ZodOptionalDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport const parseOptionalDef = (\n def: ZodOptionalDef,\n refs: Refs,\n): JsonSchema7Type | undefined => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n });\n\n return innerSchema\n ? { anyOf: [{ not: parseAnyDef() }, innerSchema] }\n : parseAnyDef();\n};\n","import { ZodPipelineDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7AllOfType } from './intersection';\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n","import { ZodPromiseDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parsePromiseDef(\n def: ZodPromiseDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return parseDef(def.type._def, refs);\n}\n","import { ZodSetDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7SetType = {\n type: 'array';\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n\n const schema: JsonSchema7SetType = {\n type: 'array',\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n schema.minItems = def.minSize.value;\n }\n\n if (def.maxSize) {\n schema.maxItems = def.maxSize.value;\n }\n\n return schema;\n}\n","import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7TupleType = {\n type: 'array';\n minItems: number;\n items: JsonSchema7Type[];\n} & (\n | {\n maxItems: number;\n }\n | {\n additionalItems?: JsonSchema7Type;\n }\n);\n\nexport function parseTupleDef(\n def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n refs: Refs,\n): JsonSchema7TupleType {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n };\n } else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n };\n }\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UndefinedType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n return {\n not: parseAnyDef(),\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UnknownType = JsonSchema7AnyType;\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n return parseAnyDef();\n}\n","import { ZodReadonlyDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from './parsers/any';\nimport { parseArrayDef } from './parsers/array';\nimport { parseBigintDef } from './parsers/bigint';\nimport { parseBooleanDef } from './parsers/boolean';\nimport { parseBrandedDef } from './parsers/branded';\nimport { parseCatchDef } from './parsers/catch';\nimport { parseDateDef } from './parsers/date';\nimport { parseDefaultDef } from './parsers/default';\nimport { parseEffectsDef } from './parsers/effects';\nimport { parseEnumDef } from './parsers/enum';\nimport { parseIntersectionDef } from './parsers/intersection';\nimport { parseLiteralDef } from './parsers/literal';\nimport { parseMapDef } from './parsers/map';\nimport { parseNativeEnumDef } from './parsers/native-enum';\nimport { parseNeverDef } from './parsers/never';\nimport { parseNullDef } from './parsers/null';\nimport { parseNullableDef } from './parsers/nullable';\nimport { parseNumberDef } from './parsers/number';\nimport { parseObjectDef } from './parsers/object';\nimport { parseOptionalDef } from './parsers/optional';\nimport { parsePipelineDef } from './parsers/pipeline';\nimport { parsePromiseDef } from './parsers/promise';\nimport { parseRecordDef } from './parsers/record';\nimport { parseSetDef } from './parsers/set';\nimport { parseStringDef } from './parsers/string';\nimport { parseTupleDef } from './parsers/tuple';\nimport { parseUndefinedDef } from './parsers/undefined';\nimport { parseUnionDef } from './parsers/union';\nimport { parseUnknownDef } from './parsers/unknown';\nimport { Refs } from './refs';\nimport { parseReadonlyDef } from './parsers/readonly';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type InnerDefGetter = () => any;\n\nexport const selectParser = (\n def: any,\n typeName: ZodFirstPartyTypeKind,\n refs: Refs,\n): JsonSchema7Type | undefined | InnerDefGetter => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef();\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => (def as any).getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n /* c8 ignore next */\n return ((_: never) => undefined)(typeName);\n }\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { ignoreOverride } from './options';\nimport { JsonSchema7Type } from './parse-types';\nimport { selectParser } from './select-parser';\nimport { getRelativePath } from './get-relative-path';\nimport { parseAnyDef } from './parsers/any';\n\nexport function parseDef(\n def: ZodTypeDef,\n refs: Refs,\n forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n const seenItem = refs.seen.get(def);\n\n if (refs.override) {\n const overrideResult = refs.override?.(\n def,\n refs,\n seenItem,\n forceResolution,\n );\n\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n\n const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined };\n\n refs.seen.set(def, newItem);\n\n const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs);\n\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema =\n typeof jsonSchemaOrGetter === 'function'\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\n newItem.jsonSchema = jsonSchema;\n\n return postProcessResult;\n }\n\n newItem.jsonSchema = jsonSchema;\n\n return jsonSchema;\n}\n\nconst get$ref = (\n item: Seen,\n refs: Refs,\n):\n | {\n $ref: string;\n }\n | {}\n | undefined => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') };\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case 'none':\n case 'seen': {\n if (\n item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)\n ) {\n console.warn(\n `Recursive reference detected at ${refs.currentPath.join(\n '/',\n )}! Defaulting to any`,\n );\n\n return parseAnyDef();\n }\n\n return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined;\n }\n }\n};\n\nconst addMeta = (\n def: ZodTypeDef,\n refs: Refs,\n jsonSchema: JsonSchema7Type,\n): JsonSchema7Type => {\n if (def.description) {\n jsonSchema.description = def.description;\n }\n return jsonSchema;\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { getDefaultOptions, Options } from './options';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type Refs = {\n seen: Map<ZodTypeDef, Seen>;\n currentPath: string[];\n propertyPath: string[] | undefined;\n} & Options;\n\nexport type Seen = {\n def: ZodTypeDef;\n path: string[];\n jsonSchema: JsonSchema7Type | undefined;\n};\n\nexport const getRefs = (options?: string | Partial<Options>): Refs => {\n const _options = getDefaultOptions(options);\n const currentPath =\n _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ]),\n ),\n };\n};\n","import { ZodSchema } from 'zod/v3';\nimport { Options } from './options';\nimport { parseDef } from './parse-def';\nimport { JsonSchema7Type } from './parse-types';\nimport { getRefs } from './refs';\nimport { parseAnyDef } from './parsers/any';\n\nconst zodToJsonSchema = (\n schema: ZodSchema<any>,\n options?: Partial<Options> | string,\n): JsonSchema7Type & {\n $schema?: string;\n definitions?: {\n [key: string]: JsonSchema7Type;\n };\n} => {\n const refs = getRefs(options);\n\n let definitions =\n typeof options === 'object' && options.definitions\n ? Object.entries(options.definitions).reduce(\n (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({\n ...acc,\n [name]:\n parseDef(\n schema._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n true,\n ) ?? parseAnyDef(),\n }),\n {},\n )\n : undefined;\n\n const name =\n typeof options === 'string'\n ? options\n : options?.nameStrategy === 'title'\n ? undefined\n : options?.name;\n\n const main =\n parseDef(\n schema._def,\n name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n false,\n ) ?? (parseAnyDef() as JsonSchema7Type);\n\n const title =\n typeof options === 'object' &&\n options.name !== undefined &&\n options.nameStrategy === 'title'\n ? options.name\n : undefined;\n\n if (title !== undefined) {\n main.title = title;\n }\n\n const combined: ReturnType<typeof zodToJsonSchema> =\n name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === 'relative' ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n\n combined.$schema = 'http://json-schema.org/draft-07/schema#';\n\n return combined;\n};\n\nexport { zodToJsonSchema };\n","export * from './get-relative-path';\nexport * from './options';\nexport * from './parse-def';\nexport * from './parse-types';\nexport * from './parsers/any';\nexport * from './parsers/array';\nexport * from './parsers/bigint';\nexport * from './parsers/boolean';\nexport * from './parsers/branded';\nexport * from './parsers/catch';\nexport * from './parsers/date';\nexport * from './parsers/default';\nexport * from './parsers/effects';\nexport * from './parsers/enum';\nexport * from './parsers/intersection';\nexport * from './parsers/literal';\nexport * from './parsers/map';\nexport * from './parsers/native-enum';\nexport * from './parsers/never';\nexport * from './parsers/null';\nexport * from './parsers/nullable';\nexport * from './parsers/number';\nexport * from './parsers/object';\nexport * from './parsers/optional';\nexport * from './parsers/pipeline';\nexport * from './parsers/promise';\nexport * from './parsers/readonly';\nexport * from './parsers/record';\nexport * from './parsers/set';\nexport * from './parsers/string';\nexport * from './parsers/tuple';\nexport * from './parsers/undefined';\nexport * from './parsers/union';\nexport * from './parsers/unknown';\nexport * from './refs';\nexport * from './select-parser';\nexport * from './zod-to-json-schema';\nimport { zodToJsonSchema } from './zod-to-json-schema';\nexport default zodToJsonSchema;\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport zodToJsonSchema from './zod-to-json-schema';\nimport { jsonSchema, Schema } from './schema';\n\nexport function zod3Schema<OBJECT>(\n zodSchema: z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n zodToJsonSchema(zodSchema, {\n $refStrategy: useReferences ? 'root' : 'none',\n }) as JSONSchema7,\n {\n validate: async value => {\n const result = await zodSchema.safeParseAsync(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function zod4Schema<OBJECT>(\n zodSchema: z4.core.$ZodType<OBJECT, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n z4.toJSONSchema(zodSchema, {\n target: 'draft-7',\n io: 'output',\n reused: useReferences ? 'ref' : 'inline',\n }) as JSONSchema7,\n {\n validate: async value => {\n const result = await z4.safeParseAsync(zodSchema, value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function isZod4Schema(\n zodSchema: z4.core.$ZodType<any, any> | z3.Schema<any, z3.ZodTypeDef, any>,\n): zodSchema is z4.core.$ZodType<any, any> {\n // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously\n return '_zod' in zodSchema;\n}\n\nexport function zodSchema<OBJECT>(\n zodSchema:\n | z4.core.$ZodType<OBJECT, any>\n | z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n if (isZod4Schema(zodSchema)) {\n return zod4Schema(zodSchema, options);\n } else {\n return zod3Schema(zodSchema, options);\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { Validator, validatorSymbol, type ValidationResult } from './validator';\nimport { zodSchema } from './zod-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type Schema<OBJECT = unknown> = Validator<OBJECT> & {\n /**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\n [schemaSymbol]: true;\n\n /**\n * Schema type for inference.\n */\n _type: OBJECT;\n\n /**\n * The JSON Schema for the schema. It is passed to the providers.\n */\n readonly jsonSchema: JSONSchema7;\n};\n\n/**\n * Creates a schema with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a schema.\n * @returns A function that returns a schema.\n */\nexport function lazySchema<SCHEMA>(\n createSchema: () => Schema<SCHEMA>,\n): LazySchema<SCHEMA> {\n // cache the validator to avoid initializing it multiple times\n let schema: Schema<SCHEMA> | undefined;\n return () => {\n if (schema == null) {\n schema = createSchema();\n }\n return schema;\n };\n}\n\nexport type LazySchema<SCHEMA> = () => Schema<SCHEMA>;\n\n// Note: Zod types here exactly match the types in zod-schema.ts\n// to prevent type errors when using zod schemas with flexible schemas.\nexport type FlexibleSchema<SCHEMA> =\n | z4.core.$ZodType<SCHEMA, any>\n | z3.Schema<SCHEMA, z3.ZodTypeDef, any>\n | Schema<SCHEMA>\n | LazySchema<SCHEMA>;\n\nexport type InferSchema<SCHEMA> = SCHEMA extends z3.Schema\n ? z3.infer<SCHEMA>\n : SCHEMA extends z4.core.$ZodType\n ? z4.infer<SCHEMA>\n : SCHEMA extends LazySchema<infer T>\n ? T\n : SCHEMA extends Schema<infer T>\n ? T\n : never;\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n jsonSchema: JSONSchema7 | (() => JSONSchema7),\n {\n validate,\n }: {\n validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n } = {},\n): Schema<OBJECT> {\n return {\n [schemaSymbol]: true,\n _type: undefined as OBJECT, // should never be used directly\n [validatorSymbol]: true,\n get jsonSchema() {\n if (typeof jsonSchema === 'function') {\n jsonSchema = jsonSchema(); // cache the function results\n }\n return jsonSchema;\n },\n validate,\n };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n return (\n typeof value === 'object' &&\n value !== null &&\n schemaSymbol in value &&\n value[schemaSymbol] === true &&\n 'jsonSchema' in value &&\n 'validate' in value\n );\n}\n\nexport function asSchema<OBJECT>(\n schema: FlexibleSchema<OBJECT> | undefined,\n): Schema<OBJECT> {\n return schema == null\n ? jsonSchema({\n properties: {},\n additionalProperties: false,\n })\n : isSchema(schema)\n ? schema\n : typeof schema === 'function'\n ? schema()\n : zodSchema(schema);\n}\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file:\n typeof part.data === 'string' &&\n part.data.startsWith('file-')\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n}\n\nexport type OpenAIChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator<typeof openaiChatChunkSchema>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'gpt-4.1'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4o'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | 'gpt-5'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in\n * the GPT tokenizer) to an associated bias value from -100 to 100.\n */\n logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Maximum number of completion tokens to generate. Useful for reasoning models.\n */\n maxCompletionTokens: z.number().optional(),\n\n /**\n * Whether to enable persistence in responses API.\n */\n store: z.boolean().optional(),\n\n /**\n * Metadata to associate with the request.\n */\n metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n /**\n * Parameters for prediction mode.\n */\n prediction: z.record(z.string(), z.any()).optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n * Project settings. Unless otherwise configured, the Project will use 'default'.\n * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Controls the verbosity of the model's responses.\n * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n */\n textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n * Useful for improving cache hit rates and working around automatic caching issues.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n /**\n * A stable identifier used to help detect users of your application\n * that may be violating OpenAI's usage policies. The IDs should be a\n * string that uniquely identifies each user. We recommend hashing their\n * username or email address, in order to avoid sending us any identifying\n * information.\n */\n safetyIdentifier: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n typeof openaiChatLanguageModelOptions\n>;\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n OpenAIChatToolChoice,\n OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAIChatFunctionTool[];\n toolChoice?: OpenAIChatToolChoice;\n toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAIChatFunctionTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: structuredOutputs ? strictJsonSchema : undefined,\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\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 InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAIChatChunk,\n openaiChatChunkSchema,\n openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n OpenAIChatModelId,\n openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiChatLanguageModelOptions,\n })) ?? {};\n\n const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n systemMessageMode: getSystemMessageMode(this.modelId),\n },\n );\n\n warnings.push(...messageWarnings);\n\n const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions.logprobs === true ||\n typeof openaiOptions.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof openaiOptions.logprobs === 'number'\n ? openaiOptions.logprobs\n : typeof openaiOptions.logprobs === 'boolean'\n ? openaiOptions.logprobs\n ? 0\n : undefined\n : undefined,\n user: openaiOptions.user,\n parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n verbosity: openaiOptions.textVerbosity,\n\n // openai specific settings:\n // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n max_completion_tokens: openaiOptions.maxCompletionTokens,\n store: openaiOptions.store,\n metadata: openaiOptions.metadata,\n prediction: openaiOptions.prediction,\n reasoning_effort: openaiOptions.reasoningEffort,\n service_tier: openaiOptions.serviceTier,\n prompt_cache_key: openaiOptions.promptCacheKey,\n prompt_cache_retention: openaiOptions.promptCacheRetention,\n safety_identifier: openaiOptions.safetyIdentifier,\n\n // messages:\n messages,\n };\n\n if (isReasoningModel(this.modelId)) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n if (baseArgs.frequency_penalty != null) {\n baseArgs.frequency_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n details: 'frequencyPenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.presence_penalty != null) {\n baseArgs.presence_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n details: 'presencePenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.logit_bias != null) {\n baseArgs.logit_bias = undefined;\n warnings.push({\n type: 'other',\n message: 'logitBias is not supported for reasoning models',\n });\n }\n if (baseArgs.logprobs != null) {\n baseArgs.logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'logprobs is not supported for reasoning models',\n });\n }\n if (baseArgs.top_logprobs != null) {\n baseArgs.top_logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'topLogprobs is not supported for reasoning models',\n });\n }\n\n // reasoning models use max_completion_tokens instead of max_tokens:\n if (baseArgs.max_tokens != null) {\n if (baseArgs.max_completion_tokens == null) {\n baseArgs.max_completion_tokens = baseArgs.max_tokens;\n }\n baseArgs.max_tokens = undefined;\n }\n } else if (\n this.modelId.startsWith('gpt-4o-search-preview') ||\n this.modelId.startsWith('gpt-4o-mini-search-preview')\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details:\n 'temperature is not supported for the search preview models and has been removed.',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions.serviceTier === 'flex' &&\n !supportsFlexProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n baseArgs.service_tier = undefined;\n }\n\n // Validate priority processing support\n if (\n openaiOptions.serviceTier === 'priority' &&\n !supportsPriorityProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // annotations/citations:\n for (const annotation of choice.message.annotations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let metadataExtracted = false;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIChatChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n // extract and emit response metadata once. Usually it comes in the first chunk.\n // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n if (!metadataExtracted) {\n const metadata = getResponseMetadata(value);\n if (Object.values(metadata).some(Boolean)) {\n metadataExtracted = true;\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n usage.outputTokens = value.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.usage.total_tokens ?? undefined;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n if (\n value.usage.completion_tokens_details\n ?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n value.usage.completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n value.usage.completion_tokens_details\n ?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n value.usage.completion_tokens_details?.rejected_prediction_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n\n // annotations/citations:\n if (delta.annotations != null) {\n for (const annotation of delta.annotations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import {\n InvalidPromptError,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z\n .array(z.record(z.string(), z.number()))\n .nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n typeof openaiCompletionResponseSchema\n>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nEcho back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\n /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n logitBias: z.record(z.string(), z.number()).optional(),\n\n /**\nThe suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n }),\n ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n typeof openaiCompletionProviderOptions\n>;\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAICompletionChunk,\n openaiCompletionChunkSchema,\n openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n OpenAICompletionModelId,\n openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAICompletionChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n | 'text-embedding-3-small'\n | 'text-embedding-3-large'\n | 'text-embedding-ada-002'\n | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n user: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n }),\n ),\n);\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n }),\n ),\n);\n","export type OpenAIImageModelId =\n | 'dall-e-3'\n | 'dall-e-2'\n | 'gpt-image-1'\n | 'gpt-image-1-mini'\n | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n 'dall-e-3': 1,\n 'dall-e-2': 10,\n 'gpt-image-1': 10,\n 'gpt-image-1-mini': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n 'gpt-image-1',\n 'gpt-image-1-mini',\n]);\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n OpenAIImageModelId,\n hasDefaultResponseFormat,\n modelMaxImagesPerCall,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map(item =>\n item.revised_prompt\n ? {\n revisedPrompt: item.revised_prompt,\n }\n : null,\n ),\n },\n },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n zodSchema(\n 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 word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n | 'whisper-1'\n | 'gpt-4o-mini-transcribe'\n | 'gpt-4o-transcribe'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Additional information to include in the transcription response.\n */\n\n include: z.array(z.string()).optional(),\n\n /**\n * The language of the input audio in ISO-639-1 format.\n */\n language: z.string().optional(),\n\n /**\n * An optional text to guide the model's style or continue a previous audio segment.\n */\n prompt: z.string().optional(),\n\n /**\n * The sampling temperature, between 0 and 1.\n * @default 0\n */\n temperature: z.number().min(0).max(1).default(0).optional(),\n\n /**\n * The timestamp granularities to populate for this transcription.\n * @default ['segment']\n */\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .default(['segment'])\n .optional(),\n }),\n ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n typeof openAITranscriptionProviderOptions\n>;\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n OpenAITranscriptionModelId,\n openAITranscriptionProviderOptions,\n OpenAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['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.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\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","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n | 'tts-1'\n | 'tts-1-hd'\n | 'gpt-4o-mini-tts'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n }),\n ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n typeof openaiSpeechProviderOptionsSchema\n>;\n","import { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n openaiSpeechProviderOptionsSchema,\n OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\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: rawResponse,\n },\n };\n }\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: 'exec';\n\n /**\n * The command to run.\n */\n command: string[];\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number;\n\n /**\n * Optional user to run the command as.\n */\n user?: string;\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string;\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record<string, string>;\n };\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string;\n },\n {}\n>({\n id: 'openai.local_shell',\n name: 'local_shell',\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n LanguageModelV2ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n parseProviderOptions,\n validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport {\n OpenAIResponsesFunctionCallOutput,\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false;\n return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n fileIdPrefixes?: readonly string[];\n store: boolean;\n hasLocalShellTool?: boolean;\n}): Promise<{\n input: OpenAIResponsesInput;\n warnings: Array<LanguageModelV2CallWarning>;\n}> {\n const input: OpenAIResponsesInput = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n input.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n input.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n input.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n return {\n type: 'input_file',\n file_url: part.data.toString(),\n };\n }\n return {\n type: 'input_file',\n ...(typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n const toolCallParts: Record<string, LanguageModelV2ToolCallPart> = {};\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id,\n });\n\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = await validateTypes({\n value: part.input,\n schema: localShellInputSchema,\n });\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id: id!,\n action: {\n type: 'exec',\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n });\n\n break;\n }\n\n input.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id,\n });\n break;\n }\n\n // assistant tool result parts are from provider-executed tools:\n case 'tool-result': {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: 'item_reference', id: part.toolCallId });\n } else {\n warnings.push({\n type: 'other',\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n });\n }\n\n break;\n }\n\n case 'reasoning': {\n const providerOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n });\n\n const reasoningId = providerOptions?.itemId;\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId];\n\n if (store) {\n // use item references to refer to reasoning (single reference)\n // when the first part is encountered\n if (reasoningMessage === undefined) {\n input.push({ type: 'item_reference', id: reasoningId });\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n summary: [],\n };\n }\n } else {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: 'other',\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n input.push(reasoningMessages[reasoningId]);\n } else {\n reasoningMessage.summary.push(...summaryParts);\n\n // updated encrypted content to enable setting it in the last summary part:\n if (providerOptions?.reasoningEncryptedContent != null) {\n reasoningMessage.encrypted_content =\n providerOptions.reasoningEncryptedContent;\n }\n }\n }\n } else {\n warnings.push({\n type: 'other',\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n const output = part.output;\n\n if (\n hasLocalShellTool &&\n part.toolName === 'local_shell' &&\n output.type === 'json'\n ) {\n const parsedOutput = await validateTypes({\n value: output.value,\n schema: localShellOutputSchema,\n });\n\n input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: parsedOutput.output,\n });\n break;\n }\n\n let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n case 'content':\n contentValue = output.value.map(item => {\n switch (item.type) {\n case 'text': {\n return { type: 'input_text' as const, text: item.text };\n }\n case 'media': {\n return item.mediaType.startsWith('image/')\n ? {\n type: 'input_image' as const,\n image_url: `data:${item.mediaType};base64,${item.data}`,\n }\n : {\n type: 'input_file' as const,\n filename: 'data',\n file_data: `data:${item.mediaType};base64,${item.data}`,\n };\n }\n }\n });\n break;\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: contentValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined;\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasFunctionCall ? 'tool-calls' : 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n | OpenAIResponsesSystemMessage\n | OpenAIResponsesUserMessage\n | OpenAIResponsesAssistantMessage\n | OpenAIResponsesFunctionCall\n | OpenAIResponsesFunctionCallOutput\n | OpenAIResponsesComputerCall\n | OpenAIResponsesLocalShellCall\n | OpenAIResponsesLocalShellCallOutput\n | OpenAIResponsesReasoning\n | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n | 'web_search_call.action.sources'\n | 'code_interpreter_call.outputs'\n | 'computer_call_output.output.image_url'\n | 'file_search_call.results'\n | 'message.input_image.image_url'\n | 'message.output_text.logprobs'\n | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n | Array<OpenAIResponsesIncludeValue>\n | undefined\n | null;\n\nexport type OpenAIResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n role: 'user';\n content: Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_image'; file_id: string }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n | { type: 'input_file'; file_id: string }\n >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n role: 'assistant';\n content: Array<{ type: 'output_text'; text: string }>;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n type: 'function_call';\n call_id: string;\n name: string;\n arguments: string;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n type: 'computer_call';\n id: string;\n status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n type: 'local_shell_call';\n id: string;\n call_id: string;\n action: {\n type: 'exec';\n command: string[];\n timeout_ms?: number;\n user?: string;\n working_directory?: string;\n env?: Record<string, string>;\n };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n type: 'local_shell_call_output';\n call_id: string;\n output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n type: 'item_reference';\n id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n /**\n * The key to compare against the value.\n */\n key: string;\n\n /**\n * Specifies the comparison operator: eq, ne, gt, gte, lt, lte.\n */\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n\n /**\n * The value to compare against the attribute key; supports string, number, or boolean types.\n */\n value: string | number | boolean;\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n /**\n * Type of operation: and or or.\n */\n type: 'and' | 'or';\n\n /**\n * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n */\n filters: Array<\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n >;\n};\n\nexport type OpenAIResponsesTool =\n | {\n type: 'function';\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n }\n | {\n type: 'web_search';\n external_web_access: boolean | undefined;\n filters: { allowed_domains: string[] | undefined } | undefined;\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'web_search_preview';\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'code_interpreter';\n container: string | { type: 'auto'; file_ids: string[] | undefined };\n }\n | {\n type: 'file_search';\n vector_store_ids: string[];\n max_num_results: number | undefined;\n ranking_options:\n | { ranker?: string; score_threshold?: number }\n | undefined;\n filters:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n | undefined;\n }\n | {\n type: 'image_generation';\n background: 'auto' | 'opaque' | 'transparent' | undefined;\n input_fidelity: 'low' | 'high' | undefined;\n input_image_mask:\n | {\n file_id: string | undefined;\n image_url: string | undefined;\n }\n | undefined;\n model: string | undefined;\n moderation: 'auto' | undefined;\n output_compression: number | undefined;\n output_format: 'png' | 'jpeg' | 'webp' | undefined;\n quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n }\n | {\n type: 'local_shell';\n };\n\nexport type OpenAIResponsesReasoning = {\n type: 'reasoning';\n id: string;\n encrypted_content?: string | null;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.enum(['response.completed', 'response.incomplete']),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z.object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n }),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal('completed'),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\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('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n }),\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.image_generation_call.partial_image'),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n }),\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.output_text.annotation.added'),\n annotation: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n sequence_number: z.number(),\n error: z.object({\n type: z.string(),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n }),\n z\n .object({ type: z.string() })\n .loose()\n .transform(value => ({\n type: 'unknown_chunk' as const,\n message: value.type,\n })), // fallback for unknown chunks\n ]),\n ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n (OpenAIResponsesChunk & {\n type: 'response.output_text.delta';\n })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n ((OpenAIResponsesChunk & {\n type: 'response.output_item.done';\n })['item'] & {\n type: 'web_search_call';\n })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().optional(),\n created_at: z.number().optional(),\n error: z\n .object({\n message: z.string(),\n type: z.string(),\n param: z.string().nullish(),\n code: z.string(),\n })\n .nullish(),\n model: z.string().optional(),\n output: z\n .array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n role: z.literal('assistant'),\n id: z.string(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n annotations: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal('container_file_citation'),\n container_id: z.string(),\n file_id: z.string(),\n filename: z.string().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n index: z.number().nullish(),\n }),\n z.object({\n type: z.literal('file_path'),\n file_id: z.string(),\n index: z.number().nullish(),\n }),\n ]),\n ),\n }),\n ),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean()]),\n ),\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('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .optional(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o3',\n 'o3-2025-04-16',\n 'o3-deep-research',\n 'o3-deep-research-2025-06-26',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'o4-mini-deep-research',\n 'o4-mini-deep-research-2025-06-26',\n 'codex-mini-latest',\n 'computer-use-preview',\n 'gpt-5',\n 'gpt-5-2025-08-07',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-mini-2025-08-07',\n 'gpt-5-nano',\n 'gpt-5-nano-2025-08-07',\n 'gpt-5-pro',\n 'gpt-5-pro-2025-10-06',\n 'gpt-5.1',\n 'gpt-5.1-chat-latest',\n 'gpt-5.1-codex-mini',\n 'gpt-5.1-codex',\n] as const;\n\nexport const openaiResponsesModelIds = [\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n 'gpt-5-chat-latest',\n ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n | 'chatgpt-4o-latest'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo'\n | 'gpt-4-0613'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1'\n | 'gpt-4'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4o-mini'\n | 'gpt-4o'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.1-codex-mini'\n | 'gpt-5.1-codex'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5-codex'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-pro-2025-10-06'\n | 'gpt-5-pro'\n | 'gpt-5'\n | 'o1-2024-12-17'\n | 'o1'\n | 'o3-2025-04-16'\n | 'o3-mini-2025-01-31'\n | 'o3-mini'\n | 'o3'\n | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n conversation: z.string().nullish(),\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n 'file_search_call.results',\n 'message.output_text.logprobs',\n ]),\n )\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z\n .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n .optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n truncation: z.enum(['auto', 'disabled']).nullish(),\n user: z.string().nullish(),\n }),\n ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n }),\n ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullish(),\n }),\n ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null;\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string;\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: 'logs';\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string;\n }\n | {\n type: 'image';\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string;\n }\n > | null;\n },\n CodeInterpreterArgs\n >({\n id: 'openai.code_interpreter',\n name: 'code_interpreter',\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n });\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args);\n};\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n type: z.enum(['and', 'or']),\n filters: z.array(\n z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z\n .union([comparisonFilterSchema, compoundFilterSchema])\n .optional(),\n }),\n ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record<string, unknown>;\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 to search through.\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number;\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string;\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number;\n };\n\n /**\n * A filter to apply.\n */\n filters?:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter;\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n});\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\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 externalWebAccess: z.boolean().optional(),\n filters: z\n .object({ allowedDomains: z.array(z.string()).optional() })\n .optional(),\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .optional(),\n }),\n ),\n);\n\nexport const webSearchToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n\n /**\n * Optional sources cited by the model for the web search call.\n */\n sources?: Array<\n { type: 'url'; url: string } | { type: 'api'; name: string }\n >;\n },\n {\n /**\n * Whether to use external web access for fetching live content.\n * - true: Fetch live web content (default)\n * - false: Use cached/indexed results\n */\n externalWebAccess?: boolean;\n\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[];\n };\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search',\n name: 'web_search',\n inputSchema: webSearchInputSchema,\n outputSchema: webSearchOutputSchema,\n });\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n ),\n);\n\nexport const webSearchPreview =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search preview doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search_preview',\n name: 'web_search_preview',\n inputSchema: webSearchPreviewInputSchema,\n outputSchema: webSearchPreviewOutputSchema,\n });\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n inputFidelity: z.enum(['low', 'high']).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum(['auto']).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z\n .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n .optional(),\n })\n .strict(),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): Promise<{\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined': {\n switch (tool.id) {\n case 'openai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n openaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n });\n\n break;\n }\n case 'openai.local_shell': {\n openaiTools.push({\n type: 'local_shell',\n });\n break;\n }\n case 'openai.web_search_preview': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchPreviewArgsSchema,\n });\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n openaiTools.push({\n type: 'web_search',\n filters:\n args.filters != null\n ? { allowed_domains: args.filters.allowedDomains }\n : undefined,\n external_web_access: args.externalWebAccess,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.code_interpreter': {\n const args = await validateTypes({\n value: tool.args,\n schema: codeInterpreterArgsSchema,\n });\n\n openaiTools.push({\n type: 'code_interpreter',\n container:\n args.container == null\n ? { type: 'auto', file_ids: undefined }\n : typeof args.container === 'string'\n ? args.container\n : { type: 'auto', file_ids: args.container.fileIds },\n });\n break;\n }\n case 'openai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\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 APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ProviderDefinedTool,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n InferValidator,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n codeInterpreterInputSchema,\n codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport { fileSearchOutputSchema } from '../tool/file-search';\nimport { imageGenerationOutputSchema } from '../tool/image-generation';\nimport { localShellInputSchema } from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesChunk,\n openaiResponsesChunkSchema,\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n OpenAIResponsesLogprobs,\n openaiResponsesResponseSchema,\n OpenAIResponsesWebSearchAction,\n} from './openai-responses-api';\nimport {\n OpenAIResponsesModelId,\n openaiResponsesProviderOptionsSchema,\n TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n 'application/pdf': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'conversation',\n details: 'conversation and previousResponseId cannot be used together',\n });\n }\n\n const { input, warnings: inputWarnings } =\n await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n });\n\n warnings.push(...inputWarnings);\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n if (include == null) {\n include = [key];\n } else if (!include.includes(key)) {\n include = [...include, key];\n }\n }\n\n function hasOpenAITool(id: string) {\n return (\n tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === id,\n ) != null\n );\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === 'number'\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined;\n\n if (topLogprobs) {\n addInclude('message.output_text.logprobs');\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n tool =>\n tool.type === 'provider-defined' &&\n (tool.id === 'openai.web_search' ||\n tool.id === 'openai.web_search_preview'),\n ) as LanguageModelV2ProviderDefinedTool | undefined\n )?.name;\n\n if (webSearchToolName) {\n addInclude('web_search_call.action.sources');\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool('openai.code_interpreter')) {\n addInclude('code_interpreter_call.outputs');\n }\n\n const store = openaiOptions?.store;\n\n // store defaults to true in the OpenAI responses API, so check for false exactly:\n if (store === false && modelConfig.isReasoningModel) {\n addInclude('reasoning.encrypted_content');\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === 'json' && {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n conversation: openaiOptions?.conversation,\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n prompt_cache_retention: openaiOptions?.promptCacheRetention,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n truncation: openaiOptions?.truncation,\n\n // model-specific settings:\n ...(modelConfig.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null ||\n openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n };\n\n if (modelConfig.isReasoningModel) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningEffort',\n details: 'reasoningEffort is not supported for non-reasoning models',\n });\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningSummary',\n details: 'reasoningSummary is not supported for non-reasoning models',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions?.serviceTier === 'flex' &&\n !modelConfig.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n // Validate priority processing support\n if (\n openaiOptions?.serviceTier === 'priority' &&\n !modelConfig.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n });\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n store,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n } = await this.getArgs(options);\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV2Content> = [];\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n // map response content to content array (defined when there is no error)\n for (const part of response.output!) {\n switch (part.type) {\n case 'reasoning': {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: 'summary_text', text: '' });\n }\n\n for (const summary of part.summary) {\n content.push({\n type: 'reasoning' as const,\n text: summary.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n });\n }\n break;\n }\n\n case 'image_generation_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'image_generation',\n result: {\n result: part.result,\n } satisfies InferValidator<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: part.action,\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n ...(annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n break;\n }\n\n case 'web_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(part.action),\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies InferValidator<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n result: {\n outputs: part.outputs,\n } satisfies InferValidator<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n ...(response.id != null ? { responseId: response.id } : {}),\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (typeof response.service_tier === 'string') {\n providerMetadata.openai.serviceTier = response.service_tier;\n }\n\n const usage = response.usage!; // defined when there is no error\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n usage: {\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n totalTokens: usage.input_tokens + usage.output_tokens,\n reasoningTokens:\n usage.output_tokens_details?.reasoning_tokens ?? undefined,\n cachedInputTokens:\n usage.input_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at! * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n store,\n } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string;\n toolCallId: string;\n codeInterpreter?: {\n containerId: string;\n };\n }\n | undefined\n > = {};\n\n // set annotations in 'text-end' part providerMetadata.\n const ongoingAnnotations: Array<\n Extract<\n OpenAIResponsesChunk,\n { type: 'response.output_text.annotation.added' }\n >['annotation']\n > = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n // summary index as string to reasoning part state:\n summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIResponsesChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? 'web_search',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n ongoingAnnotations.splice(0, ongoingAnnotations.length);\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (\n isResponseOutputItemAddedChunk(value) &&\n value.item.type === 'reasoning'\n ) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: { 0: 'active' },\n };\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item.id}:0`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type !== 'message'\n ) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasFunctionCall = true;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(value.item.action),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies InferValidator<\n typeof codeInterpreterOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies InferValidator<\n typeof imageGenerationOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: { itemId: value.item.id },\n },\n });\n } else if (value.item.type === 'reasoning') {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n // get all active or can-conclude summary parts' ids\n // to conclude ongoing reasoning parts:\n const summaryPartIndices = Object.entries(\n activeReasoningPart.summaryParts,\n )\n .filter(\n ([_, status]) =>\n status === 'active' || status === 'can-conclude',\n )\n .map(([summaryIndex]) => summaryIndex);\n\n for (const summaryIndex of summaryPartIndices) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies InferValidator<\n typeof codeInterpreterInputSchema\n >),\n providerExecuted: true,\n });\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n } else if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs);\n }\n } else if (value.type === 'response.reasoning_summary_part.added') {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n if (value.summary_index > 0) {\n const activeReasoningPart = activeReasoning[value.item_id]!;\n\n activeReasoningPart.summaryParts[value.summary_index] =\n 'active';\n\n // since there is a new active summary part, we can conclude all can-conclude summary parts\n for (const summaryIndex of Object.keys(\n activeReasoningPart.summaryParts,\n )) {\n if (\n activeReasoningPart.summaryParts[summaryIndex] ===\n 'can-conclude'\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${summaryIndex}`,\n providerMetadata: { openai: { itemId: value.item_id } },\n });\n activeReasoningPart.summaryParts[summaryIndex] =\n 'concluded';\n }\n }\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n reasoningEncryptedContent:\n activeReasoning[value.item_id]?.encryptedContent ??\n null,\n },\n },\n });\n }\n } else if (value.type === 'response.reasoning_summary_text.delta') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: `${value.item_id}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n },\n },\n });\n } else if (value.type === 'response.reasoning_summary_part.done') {\n // when OpenAI stores the message data, we can immediately conclude the reasoning part\n // since we do not need to send the encrypted content.\n if (store) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: { itemId: value.item_id },\n },\n });\n\n // mark the summary part as concluded\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'concluded';\n } else {\n // mark the summary part as can-conclude only\n // because we need to have a final summary part with the encrypted content\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'can-conclude';\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n });\n usage.inputTokens = value.response.usage.input_tokens;\n usage.outputTokens = value.response.usage.output_tokens;\n usage.totalTokens =\n value.response.usage.input_tokens +\n value.response.usage.output_tokens;\n usage.reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n undefined;\n if (typeof value.response.service_tier === 'string') {\n serviceTier = value.response.service_tier;\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n ongoingAnnotations.push(value.annotation);\n if (value.annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n });\n } else if (value.annotation.type === 'file_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'document',\n id: self.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n value.annotation.quote ??\n value.annotation.filename ??\n 'Document',\n filename:\n value.annotation.filename ?? value.annotation.file_id,\n ...(value.annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: value.annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type === 'message'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n ...(ongoingAnnotations.length > 0 && {\n annotations: ongoingAnnotations,\n }),\n },\n },\n });\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isTextDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.completed' | 'response.incomplete';\n} {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.function_call_arguments.delta';\n} {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.delta';\n} {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.done';\n} {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.output_text.annotation.added';\n} {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\nfunction mapWebSearchOutput(\n action: OpenAIResponsesWebSearchAction,\n): InferValidator<typeof webSearchOutputSchema> {\n switch (action.type) {\n case 'search':\n return {\n action: { type: 'search', query: action.query ?? undefined },\n // include sources when provided by the Responses API (behind include flag)\n ...(action.sources != null && { sources: action.sources }),\n };\n case 'open_page':\n return { action: { type: 'openPage', url: action.url } };\n case 'find':\n return {\n action: { type: 'find', url: action.url, pattern: action.pattern },\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\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 OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n (deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding` instead.\n */\n embedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV2;\n\n textEmbedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\nCreates an Azure OpenAI model for text embeddings.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV2;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV2;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nCustom api version to use. Defaults to `preview`.\n */\n apiVersion?: string;\n\n /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(deploymentId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey: string;\n apiVersion?: string;\n deployments?: string[];\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey is required for Azure OpenAI gateway',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise<string> {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise<AzureDeployment[]> {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise<string> {\n return this.config.apiKey;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n }): Promise<LanguageModelV2> {\n const apiVersion = this.config.apiVersion || '2024-04-01-preview';\n\n return createAzure({\n resourceName: this.config.resourceName,\n apiKey,\n apiVersion,\n useDeploymentBasedUrls: true,\n })(modelId);\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig, type GatewayLanguageModel } from './base.js';\nexport { AzureOpenAIGateway, type AzureOpenAIGatewayConfig } from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { NetlifyGateway } from './netlify.js';\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(gatewayId: string, gateways: MastraModelGateway[]): MastraModelGateway {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(\n (g: MastraModelGateway) => g.id !== 'models.dev' && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`)),\n );\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find((g: MastraModelGateway) => g.id === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { parseModelRouterId } from './gateway-resolver.js';\nimport type { GatewayLanguageModel, MastraModelGateway } from './gateways/base.js';\nimport { findGatewayForModel } from './gateways/index.js';\n\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\n/**\n * Type guard to check if a model is a LanguageModelV3 (AI SDK v6)\n */\nfunction isLanguageModelV3(model: GatewayLanguageModel): model is LanguageModelV3 {\n return model.specificationVersion === 'v3';\n}\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * @deprecated Use defaultGateways instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n\n /**\n * Supported URL patterns by media type for the provider.\n * This is a lazy promise that resolves the underlying model's supportedUrls.\n * Models like Mistral define which URL patterns they support (e.g., application/pdf for https URLs).\n *\n * @see https://github.com/mastra-ai/mastra/issues/12152\n */\n readonly supportedUrls: PromiseLike<Record<string, RegExp[]>>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig & { routerId: string };\n private gateway: MastraModelGateway;\n private _supportedUrlsPromise: Promise<Record<string, RegExp[]>> | null = null;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGateway[]) {\n // Normalize config to always have an 'id' field for routing\n let normalizedConfig: {\n id: `${string}/${string}`;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n normalizedConfig = { id: config as `${string}/${string}` };\n } else if ('providerId' in config && 'modelId' in config) {\n // Convert providerId/modelId to id format\n normalizedConfig = {\n id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n normalizedConfig = {\n id: config.id,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n const parsedConfig: {\n id: `${string}/${string}`;\n routerId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n } = {\n ...normalizedConfig,\n routerId: normalizedConfig.id,\n };\n\n // Resolve gateway once using the normalized ID\n this.gateway = findGatewayForModel(normalizedConfig.id, [...(customGateways || []), ...defaultGateways]);\n // Extract provider from id if present\n // Gateway ID is used as prefix (except for models.dev which is a provider registry)\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);\n\n this.provider = parsed.providerId || 'openai-compatible';\n\n if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {\n parsedConfig.id = parsed.modelId as `${string}/${string}`;\n }\n\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n\n // Create a lazy PromiseLike for supportedUrls that resolves the underlying model's supportedUrls\n // This allows providers like Mistral to expose their native URL support (e.g., PDF URLs)\n // See: https://github.com/mastra-ai/mastra/issues/12152\n const self = this;\n this.supportedUrls = {\n then<TResult1 = Record<string, RegExp[]>, TResult2 = never>(\n onfulfilled?: ((value: Record<string, RegExp[]>) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return self._resolveSupportedUrls().then(onfulfilled, onrejected);\n },\n };\n }\n\n /**\n * Lazily resolves the underlying model's supportedUrls.\n * This is cached to avoid multiple model resolutions.\n * @internal\n */\n private async _resolveSupportedUrls(): Promise<Record<string, RegExp[]>> {\n if (this._supportedUrlsPromise) {\n return this._supportedUrlsPromise;\n }\n\n this._supportedUrlsPromise = this._fetchSupportedUrls();\n return this._supportedUrlsPromise;\n }\n\n /**\n * Fetches supportedUrls from the underlying model.\n * @internal\n */\n private async _fetchSupportedUrls(): Promise<Record<string, RegExp[]>> {\n let apiKey: string;\n try {\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch {\n // If we can't get the API key, return empty supportedUrls\n // This gracefully degrades - URLs will be downloaded instead\n return {};\n }\n\n try {\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Get supportedUrls from the underlying model\n const modelSupportedUrls = model.supportedUrls;\n if (!modelSupportedUrls) {\n return {};\n }\n\n // Handle both Promise and plain object supportedUrls\n if (typeof (modelSupportedUrls as PromiseLike<unknown>).then === 'function') {\n const resolved = await (modelSupportedUrls as PromiseLike<Record<string, RegExp[]>>);\n return resolved ?? {};\n }\n\n return (modelSupportedUrls as Record<string, RegExp[]>) ?? {};\n } catch {\n // If model resolution fails, return empty supportedUrls\n return {};\n }\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Handle both V2 and V3 models\n if (isLanguageModelV3(model)) {\n const aiSDKV6Model = new AISDKV6LanguageModel(model);\n // Cast V3 stream result to V2 format - the stream contents are compatible at runtime\n return aiSDKV6Model.doGenerate(options as any) as unknown as Promise<StreamResult>;\n }\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doGenerate(options);\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n // Validate API key and return error stream if validation fails\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Handle both V2 and V3 models\n if (isLanguageModelV3(model)) {\n const aiSDKV6Model = new AISDKV6LanguageModel(model);\n // Cast V3 stream result to V2 format - the stream contents are compatible at runtime\n return aiSDKV6Model.doStream(options as any) as unknown as Promise<StreamResult>;\n }\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doStream(options);\n }\n\n private async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<GatewayLanguageModel> {\n const key = createHash('sha256')\n .update(\n this.gateway.id +\n modelId +\n providerId +\n apiKey +\n (this.config.url || '') +\n (headers ? JSON.stringify(headers) : ''),\n )\n .digest('hex');\n if (ModelRouterLanguageModel.modelInstances.has(key)) return ModelRouterLanguageModel.modelInstances.get(key)!;\n\n // If custom URL is provided, use it directly with openai-compatible\n if (this.config.url) {\n const modelInstance = createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL: this.config.url,\n headers: this.config.headers,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n\n const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n private static modelInstances = new Map<string, GatewayLanguageModel>();\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type {\n MastraModelConfig,\n OpenAICompatibleConfig,\n MastraLanguageModel,\n MastraLegacyLanguageModel,\n} from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n // Check for OpenAICompatibleConfig - it should have either:\n // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n // 2. Both 'providerId' and 'modelId' fields\n if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n if ('id' in modelConfig) return true;\n if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n }\n return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n * id: \"openai/gpt-4o\",\n * apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n * ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n requestContext: RequestContext = new RequestContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel | MastraLegacyLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ requestContext, mastra });\n }\n\n // Filter out custom language model instances\n // TODO need a better trick, maybe symbol\n if (\n modelConfig instanceof ModelRouterLanguageModel ||\n modelConfig instanceof AISDKV5LanguageModel ||\n modelConfig instanceof AISDKV6LanguageModel\n ) {\n return modelConfig;\n }\n\n // If it's already a LanguageModel, wrap it with the appropriate wrapper\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n if (modelConfig.specificationVersion === 'v2') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n if (modelConfig.specificationVersion === 'v3') {\n return new AISDKV6LanguageModel(modelConfig as LanguageModelV3);\n }\n if (modelConfig.specificationVersion === 'v1') {\n return modelConfig;\n }\n // Unknown specificationVersion from a third-party provider (e.g. ollama-ai-provider-v2).\n // If the model has doStream/doGenerate methods, wrap it as a modern model\n // to prevent the stream()/streamLegacy() catch-22 where neither method accepts the model.\n if (typeof (modelConfig as any).doStream === 'function' && typeof (modelConfig as any).doGenerate === 'function') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n return modelConfig;\n }\n\n const gatewayRecord = mastra?.listGateways();\n const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n return new ModelRouterLanguageModel(modelConfig, customGateways);\n }\n\n throw new Error('Invalid model configuration provided');\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { EmbeddingModel } from '@internal/ai-sdk-v5';\n\ntype EmbeddingModelV2<VALUE> = Exclude<EmbeddingModel<VALUE>, string>;\n\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n id: string;\n provider: string;\n dimensions: number;\n maxInputTokens: number;\n description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n // OpenAI\n {\n id: 'text-embedding-3-small',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-small model',\n },\n {\n id: 'text-embedding-3-large',\n provider: 'openai',\n dimensions: 3072,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-large model',\n },\n {\n id: 'text-embedding-ada-002',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-ada-002 model',\n },\n // Google\n {\n id: 'gemini-embedding-001',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 2048,\n description: 'Google gemini-embedding-001 model',\n },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n | 'openai/text-embedding-3-small'\n | 'openai/text-embedding-3-large'\n | 'openai/text-embedding-ada-002'\n | 'google/gemini-embedding-001';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2' as const;\n readonly modelId: string;\n readonly provider: string;\n maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n private providerModel: EmbeddingModelV2<VALUE>;\n\n constructor(config: string | OpenAICompatibleConfig) {\n // Normalize config to always have provider and model IDs\n let normalizedConfig: {\n providerId: string;\n modelId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n // Parse provider/model from string (e.g., \"openai/text-embedding-3-small\")\n const parts = config.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = { providerId, modelId };\n } else if ('providerId' in config && 'modelId' in config) {\n normalizedConfig = {\n providerId: config.providerId,\n modelId: config.modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n const parts = config.id.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = {\n providerId,\n modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n this.provider = normalizedConfig.providerId;\n this.modelId = normalizedConfig.modelId;\n\n // If custom URL is provided, skip provider registry validation\n // and use the provided API key (or empty string if not provided)\n if (normalizedConfig.url) {\n const apiKey = normalizedConfig.apiKey || '';\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: normalizedConfig.url,\n headers: normalizedConfig.headers,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n } else {\n // Get provider config from registry\n const registry = GatewayRegistry.getInstance();\n const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n }\n\n // Get API key from config or environment\n let apiKey = normalizedConfig.apiKey;\n if (!apiKey) {\n const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n if (Array.isArray(apiKeyEnvVar)) {\n // Try each possible environment variable\n for (const envVar of apiKeyEnvVar) {\n apiKey = process.env[envVar];\n if (apiKey) break;\n }\n } else {\n apiKey = process.env[apiKeyEnvVar];\n }\n }\n\n if (!apiKey) {\n const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n ? providerConfig.apiKeyEnvVar.join(' or ')\n : providerConfig.apiKeyEnvVar;\n throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n }\n\n // Initialize the provider model directly in constructor\n if (normalizedConfig.providerId === 'openai') {\n this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else if (normalizedConfig.providerId === 'google') {\n this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else {\n // Use OpenAI-compatible provider for other providers\n if (!providerConfig.url) {\n throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n }\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: providerConfig.url,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n }\n }\n\n // Copy properties from the provider model if available\n if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n }\n if (this.providerModel.supportsParallelCalls !== undefined) {\n this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n }\n }\n\n async doEmbed(\n args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n return this.providerModel.doEmbed(args);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/llm/model/aisdk/v6/model.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/types/tool.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/provider-defined-tool-factory.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/get-relative-path.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/any.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/array.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/bigint.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/boolean.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/branded.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/catch.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/date.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/default.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/effects.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/intersection.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/literal.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/string.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/record.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/map.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/native-enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/never.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/null.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/union.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/number.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/object.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/optional.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/pipeline.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/set.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/tuple.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/undefined.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/unknown.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/readonly.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/select-parser.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parse-def.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/refs.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/zod-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/index.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/zod-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.17_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/index.ts","../src/llm/model/router.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["createStreamFromGenerateResult","_AISDKError","name","marker","symbol","_a","_TypeValidationError","validator","TypeValidationError","EventSourceParserStream","InvalidArgumentError","getOriginalFetch","fetch","APICallError","tool","ZodFirstPartyTypeKind","types","x","jsonSchema","schema","zodSchema","z4","z","lazyValidator","UnsupportedFunctionalityError","toolCall","getResponseMetadata","mapOpenAIFinishReason","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","createEventSourceResponseHandler","_b","_c","convertToBase64","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","validateTypes","generateId","supportsFlexProcessing","supportsPriorityProcessing","VERSION","MastraModelGateway","InMemoryServerCache","MastraError","PROVIDER_REGISTRY","NetlifyGateway","ModelsDevGateway","parseModelRouterId","AISDKV5LanguageModel","createHash","modelInstance","createOpenAICompatible","RequestContext","GatewayRegistry","createOpenAI","createGoogleGenerativeAI"],"mappings":"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","file":"chunk-VD5YA6RH.cjs","sourcesContent":["import type { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider-v6';\nimport type { MastraLanguageModelV3 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV3['doStream']>>;\n\n/**\n * Wrapper class for AI SDK V6 (LanguageModelV3) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV6LanguageModel implements MastraLanguageModelV3 {\n /**\n * The language model must specify which language model interface version it implements.\n */\n readonly specificationVersion: 'v3' = 'v3';\n /**\n * Name of the provider for logging purposes.\n */\n readonly provider: string;\n /**\n * Provider-specific model ID for logging purposes.\n */\n readonly modelId: string;\n /**\n * Supported URL patterns by media type for the provider.\n *\n * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n * and the values are arrays of regular expressions that match the URL paths.\n * The matching should be against lower-case URLs.\n * Matched URLs are supported natively by the model and are not downloaded.\n * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n */\n supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n #model: LanguageModelV3;\n\n constructor(config: LanguageModelV3) {\n this.#model = config;\n this.provider = this.#model.provider;\n this.modelId = this.#model.modelId;\n this.supportedUrls = this.#model.supportedUrls;\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const result = await this.#model.doGenerate(options);\n\n return {\n request: result.request!,\n response: result.response as unknown as StreamResult['response'],\n stream: createStreamFromGenerateResult(result),\n };\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n return await this.#model.doStream(options);\n }\n}\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadSettingError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadSettingError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadSettingError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_TooManyEmbeddingValuesForCallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TooManyEmbeddingValuesForCallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly provider: string;\n readonly modelId: string;\n readonly maxEmbeddingsPerCall: number;\n readonly values: Array<unknown>;\n\n constructor(options: {\n provider: string;\n modelId: string;\n maxEmbeddingsPerCall: number;\n values: Array<unknown>;\n }) {\n super({\n name,\n message:\n `Too many values for a single embedding call. ` +\n `The ${options.provider} model \"${options.modelId}\" can only embed up to ` +\n `${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`,\n });\n\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n\n static isInstance(\n error: unknown,\n ): error is TooManyEmbeddingValuesForCallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function combineHeaders(\n ...headers: Array<Record<string, string | undefined> | undefined>\n): Record<string, string | undefined> {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...(currentHeaders ?? {}),\n }),\n {},\n ) as Record<string, string | undefined>;\n}\n","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","export function getRuntimeEnvironmentUserAgent(\n globalThisAny: any = globalThis as any,\n): string {\n // Browsers\n if (globalThisAny.window) {\n return `runtime/browser`;\n }\n\n // Cloudflare Workers / Deno / Bun / Node.js >= 21.1\n if (globalThisAny.navigator?.userAgent) {\n return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n }\n\n // Nodes.js < 21.1\n if (globalThisAny.process?.versions?.node) {\n return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n }\n\n if (globalThisAny.EdgeRuntime) {\n return `runtime/vercel-edge`;\n }\n\n return 'runtime/unknown';\n}\n","/**\n * Normalizes different header inputs into a plain record with lower-case keys.\n * Entries with `undefined` or `null` values are removed.\n *\n * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize.\n * @returns A record containing the normalized header entries.\n */\nexport function normalizeHeaders(\n headers:\n | HeadersInit\n | Record<string, string | undefined>\n | Array<[string, string | undefined]>\n | undefined,\n): Record<string, string> {\n if (headers == null) {\n return {};\n }\n\n const normalized: Record<string, string> = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n normalized[key.toLowerCase()] = value;\n });\n } else {\n if (!Array.isArray(headers)) {\n headers = Object.entries(headers);\n }\n\n for (const [key, value] of headers) {\n if (value != null) {\n normalized[key.toLowerCase()] = value;\n }\n }\n }\n\n return normalized;\n}\n","import { normalizeHeaders } from './normalize-headers';\n\n/**\n * Appends suffix parts to the `user-agent` header.\n * If a `user-agent` header already exists, the suffix parts are appended to it.\n * If no `user-agent` header exists, a new one is created with the suffix parts.\n * Automatically removes undefined entries from the headers.\n *\n * @param headers - The original headers.\n * @param userAgentSuffixParts - The parts to append to the `user-agent` header.\n * @returns The new headers with the `user-agent` header set or updated.\n */\nexport function withUserAgentSuffix(\n headers: HeadersInit | Record<string, string | undefined> | undefined,\n ...userAgentSuffixParts: string[]\n): Record<string, string> {\n const normalizedHeaders = new Headers(normalizeHeaders(headers));\n\n const currentUserAgentHeader = normalizedHeaders.get('user-agent') || '';\n\n normalizedHeaders.set(\n 'user-agent',\n [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '),\n );\n\n return Object.fromEntries(normalizedHeaders.entries());\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 { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","import { LoadSettingError } from '@ai-sdk/provider';\n\n/**\n * Loads a `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @param settingName - The setting name.\n * @param description - The description of the setting.\n * @returns The setting value.\n */\nexport function loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description,\n}: {\n settingValue: string | undefined;\n environmentVariableName: string;\n settingName: string;\n description: string;\n}): string {\n if (typeof settingValue === 'string') {\n return settingValue;\n }\n\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadSettingError({\n message:\n `${description} setting is missing. ` +\n `Pass it using the '${settingName}' parameter. ` +\n `Environment variables is not supported in this environment.`,\n });\n }\n\n settingValue = process.env[environmentVariableName];\n\n if (settingValue == null) {\n throw new LoadSettingError({\n message:\n `${description} setting is missing. ` +\n `Pass it using the '${settingName}' parameter ` +\n `or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof settingValue !== 'string') {\n throw new LoadSettingError({\n message:\n `${description} setting must be a string. ` +\n `The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return settingValue;\n}\n","/**\n * Maps a media type to its corresponding file extension.\n * It was originally introduced to set a filename for audio file uploads\n * in https://github.com/vercel/ai/pull/8159.\n *\n * @param mediaType The media type to map.\n * @returns The corresponding file extension\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types\n */\nexport function mediaTypeToExtension(mediaType: string) {\n const [_type, subtype = ''] = mediaType.toLowerCase().split('/');\n\n return (\n {\n mpeg: 'mp3',\n 'x-wav': 'wav',\n opus: 'ogg',\n mp4: 'm4a',\n 'x-m4a': 'm4a',\n }[subtype] ?? subtype\n );\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n const { stackTraceLimit } = Error;\n try {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n Error.stackTraceLimit = 0;\n } catch (e) {\n // Fallback in case Error is immutable (v8 readonly)\n return _parse(text);\n }\n\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?:\n | undefined\n | ((\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\n/**\n * Creates a validator with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a validator.\n * @returns A function that returns a validator.\n */\nexport function lazyValidator<OBJECT>(\n createValidator: () => Validator<OBJECT>,\n): LazyValidator<OBJECT> {\n // cache the validator to avoid initializing it multiple times\n let validator: Validator<OBJECT> | undefined;\n return () => {\n if (validator == null) {\n validator = createValidator();\n }\n return validator;\n };\n}\n\nexport type LazyValidator<OBJECT> = () => Validator<OBJECT>;\n\nexport type FlexibleValidator<OBJECT> =\n | Validator<OBJECT>\n | LazyValidator<OBJECT>\n | StandardSchemaV1<unknown, OBJECT>;\n\nexport type InferValidator<SCHEMA> =\n SCHEMA extends StandardSchemaV1<unknown, infer T>\n ? T\n : SCHEMA extends LazyValidator<infer T>\n ? T\n : SCHEMA extends Validator<infer T>\n ? T\n : never;\n\nexport function asValidator<OBJECT>(\n value: FlexibleValidator<OBJECT>,\n): Validator<OBJECT> {\n return isValidator(value)\n ? value\n : typeof value === 'function'\n ? value()\n : standardSchemaValidator(value);\n}\n\nexport function standardSchemaValidator<OBJECT>(\n standardSchema: StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return validator(async value => {\n const result = await standardSchema['~standard'].validate(value);\n\n return result.issues == null\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { FlexibleValidator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleValidator<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleValidator<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await validator.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { FlexibleValidator, Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: FlexibleValidator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleValidator<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: FlexibleValidator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleValidator<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ParseResult, safeParseJSON } from './parse-json';\nimport { FlexibleValidator } from './validator';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: FlexibleValidator<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { safeValidateTypes } from './validate-types';\nimport { FlexibleValidator } from './validator';\n\nexport async function parseProviderOptions<OPTIONS>({\n provider,\n providerOptions,\n schema,\n}: {\n provider: string;\n providerOptions: Record<string, unknown> | undefined;\n schema: FlexibleValidator<OPTIONS>;\n}): Promise<OPTIONS | undefined> {\n if (providerOptions?.[provider] == null) {\n return undefined;\n }\n\n const parsedProviderOptions = await safeValidateTypes<OPTIONS | undefined>({\n value: providerOptions[provider],\n schema,\n });\n\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error,\n });\n }\n\n return parsedProviderOptions.value;\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { JSONValue, LanguageModelV2ToolResultPart } from '@ai-sdk/provider';\nimport { FlexibleSchema } from '../schema';\nimport { ModelMessage } from './model-message';\nimport { ProviderOptions } from './provider-options';\n\n/**\n * Additional options that are sent into each tool call.\n */\n// TODO AI SDK 6: rename to ToolExecutionOptions\nexport interface ToolCallOptions {\n /**\n * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.\n */\n toolCallId: string;\n\n /**\n * Messages that were sent to the language model to initiate the response that contained the tool call.\n * The messages **do not** include the system prompt nor the assistant response that contained the tool call.\n */\n messages: ModelMessage[];\n\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Additional context.\n *\n * Experimental (can break in patch releases).\n */\n experimental_context?: unknown;\n}\n\nexport type ToolExecuteFunction<INPUT, OUTPUT> = (\n input: INPUT,\n options: ToolCallOptions,\n) => AsyncIterable<OUTPUT> | PromiseLike<OUTPUT> | OUTPUT;\n\n// 0 extends 1 & N checks for any\n// [N] extends [never] checks for never\ntype NeverOptional<N, T> = 0 extends 1 & N\n ? Partial<T>\n : [N] extends [never]\n ? Partial<Record<keyof T, undefined>>\n : T;\n\ntype ToolOutputProperties<INPUT, OUTPUT> = NeverOptional<\n OUTPUT,\n | {\n /**\nAn async function that is called with the arguments from the tool call and produces a result.\nIf not provided, the tool will not be executed automatically.\n\n@args is the input of the tool call.\n@options.abortSignal is a signal that can be used to abort the tool call.\n */\n execute: ToolExecuteFunction<INPUT, OUTPUT>;\n\n outputSchema?: FlexibleSchema<OUTPUT>;\n }\n | {\n outputSchema: FlexibleSchema<OUTPUT>;\n\n execute?: never;\n }\n>;\n\n/**\nA tool contains the description and the schema of the input that the tool expects.\nThis enables the language model to generate the input.\n\nThe tool can also contain an optional execute function for the actual execution function of the tool.\n */\nexport type Tool<\n INPUT extends JSONValue | unknown | never = any,\n OUTPUT extends JSONValue | unknown | never = any,\n> = {\n /**\nAn optional description of what the tool does.\nWill be used by the language model to decide whether to use the tool.\nNot used for provider-defined tools.\n */\n description?: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\nThe schema of the input that the tool expects. The language model will use this to generate the input.\nIt is also used to validate the output of the language model.\nUse descriptions to make the input understandable for the language model.\n */\n inputSchema: FlexibleSchema<INPUT>;\n\n /**\n * Optional function that is called when the argument streaming starts.\n * Only called when the tool is used in a streaming context.\n */\n onInputStart?: (options: ToolCallOptions) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when an argument streaming delta is available.\n * Only called when the tool is used in a streaming context.\n */\n onInputDelta?: (\n options: { inputTextDelta: string } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when a tool call can be started,\n * even if the execute function is not provided.\n */\n onInputAvailable?: (\n options: {\n input: [INPUT] extends [never] ? undefined : INPUT;\n } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n} & ToolOutputProperties<INPUT, OUTPUT> & {\n /**\nOptional conversion function that maps the tool result to an output that can be used by the language model.\n\nIf not provided, the tool result will be sent as a JSON object.\n */\n toModelOutput?: (\n output: 0 extends 1 & OUTPUT\n ? any\n : [OUTPUT] extends [never]\n ? any\n : NoInfer<OUTPUT>,\n ) => LanguageModelV2ToolResultPart['output'];\n } & (\n | {\n /**\nTool with user-defined input and output schemas.\n */\n type?: undefined | 'function';\n }\n | {\n /**\nTool that is defined at runtime (e.g. an MCP tool).\nThe types of input and output are not known at development time.\n */\n type: 'dynamic';\n }\n | {\n /**\nTool with provider-defined input and output schemas.\n */\n type: 'provider-defined';\n\n /**\nThe ID of the tool. Should follow the format `<provider-name>.<unique-tool-name>`.\n */\n id: `${string}.${string}`;\n\n /**\nThe name of the tool that the user must use in the tool set.\n */\n name: string;\n\n /**\nThe arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.\n */\n args: Record<string, unknown>;\n }\n );\n\n/**\n * Infer the input type of a tool.\n */\nexport type InferToolInput<TOOL extends Tool> =\n TOOL extends Tool<infer INPUT, any> ? INPUT : never;\n\n/**\n * Infer the output type of a tool.\n */\nexport type InferToolOutput<TOOL extends Tool> =\n TOOL extends Tool<any, infer OUTPUT> ? OUTPUT : never;\n\n/**\nHelper function for inferring the execute args of a tool.\n */\n// Note: overload order is important for auto-completion\nexport function tool<INPUT, OUTPUT>(\n tool: Tool<INPUT, OUTPUT>,\n): Tool<INPUT, OUTPUT>;\nexport function tool<INPUT>(tool: Tool<INPUT, never>): Tool<INPUT, never>;\nexport function tool<OUTPUT>(tool: Tool<never, OUTPUT>): Tool<never, OUTPUT>;\nexport function tool(tool: Tool<never, never>): Tool<never, never>;\nexport function tool(tool: any): any {\n return tool;\n}\n\n/**\nHelper function for defining a dynamic tool.\n */\nexport function dynamicTool(tool: {\n description?: string;\n providerOptions?: ProviderOptions;\n inputSchema: FlexibleSchema<unknown>;\n execute: ToolExecuteFunction<unknown, unknown>;\n toModelOutput?: (output: unknown) => LanguageModelV2ToolResultPart['output'];\n}): Tool<unknown, unknown> & {\n type: 'dynamic';\n} {\n return { ...tool, type: 'dynamic' };\n}\n","import { tool, Tool, ToolExecuteFunction } from './types/tool';\nimport { FlexibleSchema } from './schema';\n\nexport type ProviderDefinedToolFactory<INPUT, ARGS extends object> = <OUTPUT>(\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactory<INPUT, ARGS extends object>({\n id,\n name,\n inputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n}): ProviderDefinedToolFactory<INPUT, ARGS> {\n return <OUTPUT>({\n execute,\n outputSchema,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n outputSchema?: FlexibleSchema<OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n\nexport type ProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n> = (\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n>({\n id,\n name,\n inputSchema,\n outputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n outputSchema: FlexibleSchema<OUTPUT>;\n}): ProviderDefinedToolFactoryWithOutputSchema<INPUT, OUTPUT, ARGS> {\n return ({\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\nimport { FlexibleValidator } from './validator';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: FlexibleValidator<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: FlexibleValidator<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n async transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: FlexibleValidator<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","export const getRelativePath = (pathA: string[], pathB: string[]) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\n","import { ZodSchema, ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type DateStrategy =\n | 'format:date-time'\n | 'format:date'\n | 'string'\n | 'integer';\n\nexport const ignoreOverride = Symbol(\n 'Let zodToJsonSchema decide on which parser to use',\n);\n\nexport type OverrideCallback = (\n def: ZodTypeDef,\n refs: Refs,\n seen: Seen | undefined,\n forceResolution?: boolean,\n) => JsonSchema7Type | undefined | typeof ignoreOverride;\n\nexport type PostProcessCallback = (\n jsonSchema: JsonSchema7Type | undefined,\n def: ZodTypeDef,\n refs: Refs,\n) => JsonSchema7Type | undefined;\n\nexport const jsonDescription: PostProcessCallback = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n } catch {}\n }\n\n return jsonSchema;\n};\n\nexport type Options = {\n name: string | undefined;\n $refStrategy: 'root' | 'relative' | 'none' | 'seen';\n basePath: string[];\n effectStrategy: 'input' | 'any';\n pipeStrategy: 'input' | 'output' | 'all';\n dateStrategy: DateStrategy | DateStrategy[];\n mapStrategy: 'entries' | 'record';\n removeAdditionalStrategy: 'passthrough' | 'strict';\n allowedAdditionalProperties: true | undefined;\n rejectedAdditionalProperties: false | undefined;\n strictUnions: boolean;\n definitionPath: string;\n definitions: Record<string, ZodSchema>;\n errorMessages: boolean;\n patternStrategy: 'escape' | 'preserve';\n applyRegexFlags: boolean;\n emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod';\n base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod';\n nameStrategy: 'ref' | 'title';\n override?: OverrideCallback;\n postProcess?: PostProcessCallback;\n};\n\nexport const defaultOptions: Options = {\n name: undefined,\n $refStrategy: 'root',\n basePath: ['#'],\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'format:date-time',\n mapStrategy: 'entries',\n removeAdditionalStrategy: 'passthrough',\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: 'definitions',\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n patternStrategy: 'escape',\n applyRegexFlags: false,\n emailStrategy: 'format:email',\n base64Strategy: 'contentEncoding:base64',\n nameStrategy: 'ref',\n};\n\nexport const getDefaultOptions = (\n options: Partial<Options> | string | undefined,\n) =>\n (typeof options === 'string'\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n }) as Options;\n","export type JsonSchema7AnyType = { $ref?: string };\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n return {};\n}\n","import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ArrayType = {\n type: 'array';\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n const res: JsonSchema7ArrayType = {\n type: 'array',\n };\n if (\n def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny\n ) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n }\n\n if (def.minLength) {\n res.minItems = def.minLength.value;\n }\n if (def.maxLength) {\n res.maxItems = def.maxLength.value;\n }\n if (def.exactLength) {\n res.minItems = def.exactLength.value;\n res.maxItems = def.exactLength.value;\n }\n return res;\n}\n","import { ZodBigIntDef } from 'zod/v3';\n\nexport type JsonSchema7BigintType = {\n type: 'integer';\n format: 'int64';\n minimum?: BigInt;\n exclusiveMinimum?: BigInt;\n maximum?: BigInt;\n exclusiveMaximum?: BigInt;\n multipleOf?: BigInt;\n};\n\nexport function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: 'integer',\n format: 'int64',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","export type JsonSchema7BooleanType = {\n type: 'boolean';\n};\n\nexport function parseBooleanDef(): JsonSchema7BooleanType {\n return { type: 'boolean' };\n}\n","import { ZodBrandedDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { ZodCatchDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodDateDef } from 'zod/v3';\nimport { Refs } from '../refs';\nimport { DateStrategy } from '../options';\n\nexport type JsonSchema7DateType =\n | {\n type: 'integer' | 'string';\n format: 'unix-time' | 'date-time' | 'date';\n minimum?: number;\n maximum?: number;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy,\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case 'string':\n case 'format:date-time':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'format:date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'integer':\n return integerDateParser(def);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef) => {\n const res: JsonSchema7DateType = {\n type: 'integer',\n format: 'unix-time',\n };\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minimum = check.value;\n break;\n case 'max':\n res.maximum = check.value;\n break;\n }\n }\n\n return res;\n};\n","import { ZodDefaultDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parseDefaultDef(\n _def: ZodDefaultDef,\n refs: Refs,\n): JsonSchema7Type & { default: any } {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { ZodEffectsDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport function parseEffectsDef(\n _def: ZodEffectsDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return refs.effectStrategy === 'input'\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef();\n}\n","import { ZodEnumDef } from 'zod/v3';\n\nexport type JsonSchema7EnumType = {\n type: 'string';\n enum: string[];\n};\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n return {\n type: 'string',\n enum: Array.from(def.values),\n };\n}\n","import { ZodIntersectionDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7StringType } from './string';\n\nexport type JsonSchema7AllOfType = {\n allOf: JsonSchema7Type[];\n unevaluatedProperties?: boolean;\n};\n\nconst isJsonSchema7AllOfType = (\n type: JsonSchema7Type | JsonSchema7StringType,\n): type is JsonSchema7AllOfType => {\n if ('type' in type && type.type === 'string') return false;\n return 'allOf' in type;\n};\n\nexport function parseIntersectionDef(\n def: ZodIntersectionDef,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x): x is JsonSchema7Type => !!x);\n\n const mergedAllOf: JsonSchema7Type[] = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach(schema => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n } else {\n let nestedSchema: JsonSchema7Type = schema;\n if (\n 'additionalProperties' in schema &&\n schema.additionalProperties === false\n ) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ? { allOf: mergedAllOf } : undefined;\n}\n","import { ZodLiteralDef } from 'zod/v3';\n\nexport type JsonSchema7LiteralType =\n | {\n type: 'string' | 'number' | 'integer' | 'boolean';\n const: string | number | boolean;\n }\n | {\n type: 'object' | 'array';\n };\n\nexport function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType {\n const parsedType = typeof def.value;\n if (\n parsedType !== 'bigint' &&\n parsedType !== 'number' &&\n parsedType !== 'boolean' &&\n parsedType !== 'string'\n ) {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n };\n }\n\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n };\n}\n","import { ZodStringDef } from 'zod/v3';\nimport { Refs } from '../refs';\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n 'u',\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: 'string';\n minLength?: number;\n maxLength?: number;\n format?:\n | 'email'\n | 'idn-email'\n | 'uri'\n | 'uuid'\n | 'date-time'\n | 'ipv4'\n | 'ipv6'\n | 'date'\n | 'time'\n | 'duration';\n pattern?: string;\n allOf?: {\n pattern: string;\n }[];\n anyOf?: {\n format: string;\n }[];\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs,\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: 'string',\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n break;\n case 'max':\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n\n break;\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs);\n break;\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs);\n break;\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case 'url':\n addFormat(res, 'uri', check.message, refs);\n break;\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs);\n break;\n case 'regex':\n addPattern(res, check.regex, check.message, refs);\n break;\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case 'startsWith':\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs,\n );\n break;\n case 'endsWith':\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs,\n );\n break;\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs);\n break;\n case 'date':\n addFormat(res, 'date', check.message, refs);\n break;\n case 'time':\n addFormat(res, 'time', check.message, refs);\n break;\n case 'duration':\n addFormat(res, 'duration', check.message, refs);\n break;\n case 'length':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n break;\n case 'includes': {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs,\n );\n break;\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs);\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs);\n }\n break;\n }\n case 'base64url':\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case 'jwt':\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case 'cidr': {\n if (check.version !== 'v6') {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== 'v4') {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case 'base64': {\n switch (refs.base64Strategy) {\n case 'format:binary': {\n addFormat(res, 'binary' as any, check.message, refs);\n break;\n }\n\n case 'contentEncoding:base64': {\n res.contentEncoding = 'base64';\n break;\n }\n\n case 'pattern:zod': {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case 'nanoid': {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === 'escape'\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n 'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789',\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = '';\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += '\\\\';\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>['format'],\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.format || schema.anyOf?.some(x => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n });\n delete schema.format;\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n schema.format = value;\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.pattern || schema.allOf?.some(x => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n });\n delete schema.pattern;\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n schema.pattern = stringifyRegExpWithFlags(regex, refs);\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes('i'), // Case-insensitive\n m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes('s'), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = '';\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === '^') {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === '$') {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === '.') {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === '\\\\') {\n isEscaped = true;\n } else if (inCharGroup && source[i] === ']') {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === '[') {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n '/',\n )} to a flag-independent form! Falling back to the flag-ignorant source`,\n );\n return regex.source;\n }\n\n return pattern;\n}\n","import {\n ZodFirstPartyTypeKind,\n ZodMapDef,\n ZodRecordDef,\n ZodTypeAny,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseBrandedDef } from './branded';\nimport { JsonSchema7EnumType } from './enum';\nimport { JsonSchema7StringType, parseStringDef } from './string';\n\ntype JsonSchema7RecordPropertyNamesType =\n | Omit<JsonSchema7StringType, 'type'>\n | Omit<JsonSchema7EnumType, 'type'>;\n\nexport type JsonSchema7RecordType = {\n type: 'object';\n additionalProperties?: JsonSchema7Type | true;\n propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs,\n): JsonSchema7RecordType {\n const schema: JsonSchema7RecordType = {\n type: 'object',\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? refs.allowedAdditionalProperties,\n };\n\n if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length\n ) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n } else if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length\n ) {\n const { type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs,\n ) as JsonSchema7StringType;\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n\n return schema;\n}\n","import { ZodMapDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\nimport { JsonSchema7RecordType, parseRecordDef } from './record';\n\nexport type JsonSchema7MapType = {\n type: 'array';\n maxItems: 125;\n items: {\n type: 'array';\n items: [JsonSchema7Type, JsonSchema7Type];\n minItems: 2;\n maxItems: 2;\n };\n};\n\nexport function parseMapDef(\n def: ZodMapDef,\n refs: Refs,\n): JsonSchema7MapType | JsonSchema7RecordType {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs);\n }\n\n const keys =\n parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || parseAnyDef();\n const values =\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || parseAnyDef();\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","import { ZodNativeEnumDef } from 'zod/v3';\n\nexport type JsonSchema7NativeEnumType = {\n type: 'string' | 'number' | ['string', 'number'];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef,\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== 'number';\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values)),\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === 'string'\n ? 'string'\n : 'number'\n : ['string', 'number'],\n enum: actualValues,\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7NeverType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseNeverDef(): JsonSchema7NeverType | undefined {\n return { not: parseAnyDef() };\n}\n","export type JsonSchema7NullType = {\n type: 'null';\n};\n\nexport function parseNullDef(): JsonSchema7NullType {\n return {\n type: 'null',\n };\n}\n","import {\n ZodDiscriminatedUnionDef,\n ZodLiteralDef,\n ZodTypeAny,\n ZodUnionDef,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n} as const;\ntype ZodPrimitive = keyof typeof primitiveMappings;\ntype JsonSchema7Primitive =\n (typeof primitiveMappings)[keyof typeof primitiveMappings];\n\nexport type JsonSchema7UnionType =\n | JsonSchema7PrimitiveUnionType\n | JsonSchema7AnyOfType;\n\ntype JsonSchema7PrimitiveUnionType =\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n }\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n enum: (string | number | bigint | boolean | null)[];\n };\n\ntype JsonSchema7AnyOfType = {\n anyOf: JsonSchema7Type[];\n};\n\nexport function parseUnionDef(\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined {\n const options: readonly ZodTypeAny[] =\n def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (\n options.every(\n x =>\n x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length),\n )\n ) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n\n return {\n type: types.length > 1 ? types : types[0],\n };\n } else if (\n options.every(x => x._def.typeName === 'ZodLiteral' && !x.description)\n ) {\n // all options literals\n\n const types = options.reduce(\n (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n const type = typeof x._def.value;\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type];\n case 'bigint':\n return [...acc, 'integer' as const];\n case 'object':\n if (x._def.value === null) return [...acc, 'null' as const];\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc;\n }\n },\n [],\n );\n\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n },\n [] as (string | number | bigint | boolean | null)[],\n ),\n };\n }\n } else if (options.every(x => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce(\n (acc: string[], x) => [\n ...acc,\n ...x._def.values.filter((x: string) => !acc.includes(x)),\n ],\n [],\n ),\n };\n }\n\n return asAnyOf(def, refs);\n}\n\nconst asAnyOf = (\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {\n const anyOf = (\n (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options) as any[]\n )\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n }),\n )\n .filter(\n (x): x is JsonSchema7Type =>\n !!x &&\n (!refs.strictUnions ||\n (typeof x === 'object' && Object.keys(x).length > 0)),\n );\n\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { ZodNullableDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7NullType } from './null';\nimport { primitiveMappings } from './union';\n\nexport type JsonSchema7NullableType =\n | {\n anyOf: [JsonSchema7Type, JsonSchema7NullType];\n }\n | {\n type: [string, 'null'];\n };\n\nexport function parseNullableDef(\n def: ZodNullableDef,\n refs: Refs,\n): JsonSchema7NullableType | undefined {\n if (\n ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(\n def.innerType._def.typeName,\n ) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)\n ) {\n return {\n type: [\n primitiveMappings[\n def.innerType._def.typeName as keyof typeof primitiveMappings\n ],\n 'null',\n ],\n };\n }\n\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n });\n\n return base && { anyOf: [base, { type: 'null' }] };\n}\n","import { ZodNumberDef } from 'zod/v3';\n\nexport type JsonSchema7NumberType = {\n type: 'number' | 'integer';\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n};\n\nexport function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: 'number',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer';\n break;\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","import { ZodObjectDef, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ObjectType = {\n type: 'object';\n properties: Record<string, JsonSchema7Type>;\n additionalProperties?: boolean | JsonSchema7Type;\n required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n const result: JsonSchema7ObjectType = {\n type: 'object',\n properties: {},\n };\n\n const required: string[] = [];\n\n const shape = def.shape();\n\n for (const propName in shape) {\n let propDef = shape[propName];\n\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n\n const propOptional = safeIsOptional(propDef);\n\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n });\n\n if (parsedDef === undefined) {\n continue;\n }\n\n result.properties[propName] = parsedDef;\n\n if (!propOptional) {\n required.push(propName);\n }\n }\n\n if (required.length) {\n result.required = required;\n }\n\n const additionalProperties = decideAdditionalProperties(def, refs);\n\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n\n return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n if (def.catchall._def.typeName !== 'ZodNever') {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n });\n }\n\n switch (def.unknownKeys) {\n case 'passthrough':\n return refs.allowedAdditionalProperties;\n case 'strict':\n return refs.rejectedAdditionalProperties;\n case 'strip':\n return refs.removeAdditionalStrategy === 'strict'\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n try {\n return schema.isOptional();\n } catch {\n return true;\n }\n}\n","import { ZodOptionalDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport const parseOptionalDef = (\n def: ZodOptionalDef,\n refs: Refs,\n): JsonSchema7Type | undefined => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n });\n\n return innerSchema\n ? { anyOf: [{ not: parseAnyDef() }, innerSchema] }\n : parseAnyDef();\n};\n","import { ZodPipelineDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7AllOfType } from './intersection';\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n","import { ZodPromiseDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parsePromiseDef(\n def: ZodPromiseDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return parseDef(def.type._def, refs);\n}\n","import { ZodSetDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7SetType = {\n type: 'array';\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n\n const schema: JsonSchema7SetType = {\n type: 'array',\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n schema.minItems = def.minSize.value;\n }\n\n if (def.maxSize) {\n schema.maxItems = def.maxSize.value;\n }\n\n return schema;\n}\n","import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7TupleType = {\n type: 'array';\n minItems: number;\n items: JsonSchema7Type[];\n} & (\n | {\n maxItems: number;\n }\n | {\n additionalItems?: JsonSchema7Type;\n }\n);\n\nexport function parseTupleDef(\n def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n refs: Refs,\n): JsonSchema7TupleType {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n };\n } else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n };\n }\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UndefinedType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n return {\n not: parseAnyDef(),\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UnknownType = JsonSchema7AnyType;\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n return parseAnyDef();\n}\n","import { ZodReadonlyDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from './parsers/any';\nimport { parseArrayDef } from './parsers/array';\nimport { parseBigintDef } from './parsers/bigint';\nimport { parseBooleanDef } from './parsers/boolean';\nimport { parseBrandedDef } from './parsers/branded';\nimport { parseCatchDef } from './parsers/catch';\nimport { parseDateDef } from './parsers/date';\nimport { parseDefaultDef } from './parsers/default';\nimport { parseEffectsDef } from './parsers/effects';\nimport { parseEnumDef } from './parsers/enum';\nimport { parseIntersectionDef } from './parsers/intersection';\nimport { parseLiteralDef } from './parsers/literal';\nimport { parseMapDef } from './parsers/map';\nimport { parseNativeEnumDef } from './parsers/native-enum';\nimport { parseNeverDef } from './parsers/never';\nimport { parseNullDef } from './parsers/null';\nimport { parseNullableDef } from './parsers/nullable';\nimport { parseNumberDef } from './parsers/number';\nimport { parseObjectDef } from './parsers/object';\nimport { parseOptionalDef } from './parsers/optional';\nimport { parsePipelineDef } from './parsers/pipeline';\nimport { parsePromiseDef } from './parsers/promise';\nimport { parseRecordDef } from './parsers/record';\nimport { parseSetDef } from './parsers/set';\nimport { parseStringDef } from './parsers/string';\nimport { parseTupleDef } from './parsers/tuple';\nimport { parseUndefinedDef } from './parsers/undefined';\nimport { parseUnionDef } from './parsers/union';\nimport { parseUnknownDef } from './parsers/unknown';\nimport { Refs } from './refs';\nimport { parseReadonlyDef } from './parsers/readonly';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type InnerDefGetter = () => any;\n\nexport const selectParser = (\n def: any,\n typeName: ZodFirstPartyTypeKind,\n refs: Refs,\n): JsonSchema7Type | undefined | InnerDefGetter => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef();\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => (def as any).getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n /* c8 ignore next */\n return ((_: never) => undefined)(typeName);\n }\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { ignoreOverride } from './options';\nimport { JsonSchema7Type } from './parse-types';\nimport { selectParser } from './select-parser';\nimport { getRelativePath } from './get-relative-path';\nimport { parseAnyDef } from './parsers/any';\n\nexport function parseDef(\n def: ZodTypeDef,\n refs: Refs,\n forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n const seenItem = refs.seen.get(def);\n\n if (refs.override) {\n const overrideResult = refs.override?.(\n def,\n refs,\n seenItem,\n forceResolution,\n );\n\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n\n const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined };\n\n refs.seen.set(def, newItem);\n\n const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs);\n\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema =\n typeof jsonSchemaOrGetter === 'function'\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\n newItem.jsonSchema = jsonSchema;\n\n return postProcessResult;\n }\n\n newItem.jsonSchema = jsonSchema;\n\n return jsonSchema;\n}\n\nconst get$ref = (\n item: Seen,\n refs: Refs,\n):\n | {\n $ref: string;\n }\n | {}\n | undefined => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') };\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case 'none':\n case 'seen': {\n if (\n item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)\n ) {\n console.warn(\n `Recursive reference detected at ${refs.currentPath.join(\n '/',\n )}! Defaulting to any`,\n );\n\n return parseAnyDef();\n }\n\n return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined;\n }\n }\n};\n\nconst addMeta = (\n def: ZodTypeDef,\n refs: Refs,\n jsonSchema: JsonSchema7Type,\n): JsonSchema7Type => {\n if (def.description) {\n jsonSchema.description = def.description;\n }\n return jsonSchema;\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { getDefaultOptions, Options } from './options';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type Refs = {\n seen: Map<ZodTypeDef, Seen>;\n currentPath: string[];\n propertyPath: string[] | undefined;\n} & Options;\n\nexport type Seen = {\n def: ZodTypeDef;\n path: string[];\n jsonSchema: JsonSchema7Type | undefined;\n};\n\nexport const getRefs = (options?: string | Partial<Options>): Refs => {\n const _options = getDefaultOptions(options);\n const currentPath =\n _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ]),\n ),\n };\n};\n","import { ZodSchema } from 'zod/v3';\nimport { Options } from './options';\nimport { parseDef } from './parse-def';\nimport { JsonSchema7Type } from './parse-types';\nimport { getRefs } from './refs';\nimport { parseAnyDef } from './parsers/any';\n\nconst zodToJsonSchema = (\n schema: ZodSchema<any>,\n options?: Partial<Options> | string,\n): JsonSchema7Type & {\n $schema?: string;\n definitions?: {\n [key: string]: JsonSchema7Type;\n };\n} => {\n const refs = getRefs(options);\n\n let definitions =\n typeof options === 'object' && options.definitions\n ? Object.entries(options.definitions).reduce(\n (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({\n ...acc,\n [name]:\n parseDef(\n schema._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n true,\n ) ?? parseAnyDef(),\n }),\n {},\n )\n : undefined;\n\n const name =\n typeof options === 'string'\n ? options\n : options?.nameStrategy === 'title'\n ? undefined\n : options?.name;\n\n const main =\n parseDef(\n schema._def,\n name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n false,\n ) ?? (parseAnyDef() as JsonSchema7Type);\n\n const title =\n typeof options === 'object' &&\n options.name !== undefined &&\n options.nameStrategy === 'title'\n ? options.name\n : undefined;\n\n if (title !== undefined) {\n main.title = title;\n }\n\n const combined: ReturnType<typeof zodToJsonSchema> =\n name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === 'relative' ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n\n combined.$schema = 'http://json-schema.org/draft-07/schema#';\n\n return combined;\n};\n\nexport { zodToJsonSchema };\n","export * from './get-relative-path';\nexport * from './options';\nexport * from './parse-def';\nexport * from './parse-types';\nexport * from './parsers/any';\nexport * from './parsers/array';\nexport * from './parsers/bigint';\nexport * from './parsers/boolean';\nexport * from './parsers/branded';\nexport * from './parsers/catch';\nexport * from './parsers/date';\nexport * from './parsers/default';\nexport * from './parsers/effects';\nexport * from './parsers/enum';\nexport * from './parsers/intersection';\nexport * from './parsers/literal';\nexport * from './parsers/map';\nexport * from './parsers/native-enum';\nexport * from './parsers/never';\nexport * from './parsers/null';\nexport * from './parsers/nullable';\nexport * from './parsers/number';\nexport * from './parsers/object';\nexport * from './parsers/optional';\nexport * from './parsers/pipeline';\nexport * from './parsers/promise';\nexport * from './parsers/readonly';\nexport * from './parsers/record';\nexport * from './parsers/set';\nexport * from './parsers/string';\nexport * from './parsers/tuple';\nexport * from './parsers/undefined';\nexport * from './parsers/union';\nexport * from './parsers/unknown';\nexport * from './refs';\nexport * from './select-parser';\nexport * from './zod-to-json-schema';\nimport { zodToJsonSchema } from './zod-to-json-schema';\nexport default zodToJsonSchema;\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport zodToJsonSchema from './zod-to-json-schema';\nimport { jsonSchema, Schema } from './schema';\n\nexport function zod3Schema<OBJECT>(\n zodSchema: z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n zodToJsonSchema(zodSchema, {\n $refStrategy: useReferences ? 'root' : 'none',\n }) as JSONSchema7,\n {\n validate: async value => {\n const result = await zodSchema.safeParseAsync(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function zod4Schema<OBJECT>(\n zodSchema: z4.core.$ZodType<OBJECT, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n z4.toJSONSchema(zodSchema, {\n target: 'draft-7',\n io: 'output',\n reused: useReferences ? 'ref' : 'inline',\n }) as JSONSchema7,\n {\n validate: async value => {\n const result = await z4.safeParseAsync(zodSchema, value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function isZod4Schema(\n zodSchema: z4.core.$ZodType<any, any> | z3.Schema<any, z3.ZodTypeDef, any>,\n): zodSchema is z4.core.$ZodType<any, any> {\n // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously\n return '_zod' in zodSchema;\n}\n\nexport function zodSchema<OBJECT>(\n zodSchema:\n | z4.core.$ZodType<OBJECT, any>\n | z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n if (isZod4Schema(zodSchema)) {\n return zod4Schema(zodSchema, options);\n } else {\n return zod3Schema(zodSchema, options);\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { Validator, validatorSymbol, type ValidationResult } from './validator';\nimport { zodSchema } from './zod-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type Schema<OBJECT = unknown> = Validator<OBJECT> & {\n /**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\n [schemaSymbol]: true;\n\n /**\n * Schema type for inference.\n */\n _type: OBJECT;\n\n /**\n * The JSON Schema for the schema. It is passed to the providers.\n */\n readonly jsonSchema: JSONSchema7;\n};\n\n/**\n * Creates a schema with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a schema.\n * @returns A function that returns a schema.\n */\nexport function lazySchema<SCHEMA>(\n createSchema: () => Schema<SCHEMA>,\n): LazySchema<SCHEMA> {\n // cache the validator to avoid initializing it multiple times\n let schema: Schema<SCHEMA> | undefined;\n return () => {\n if (schema == null) {\n schema = createSchema();\n }\n return schema;\n };\n}\n\nexport type LazySchema<SCHEMA> = () => Schema<SCHEMA>;\n\n// Note: Zod types here exactly match the types in zod-schema.ts\n// to prevent type errors when using zod schemas with flexible schemas.\nexport type FlexibleSchema<SCHEMA> =\n | z4.core.$ZodType<SCHEMA, any>\n | z3.Schema<SCHEMA, z3.ZodTypeDef, any>\n | Schema<SCHEMA>\n | LazySchema<SCHEMA>;\n\nexport type InferSchema<SCHEMA> = SCHEMA extends z3.Schema\n ? z3.infer<SCHEMA>\n : SCHEMA extends z4.core.$ZodType\n ? z4.infer<SCHEMA>\n : SCHEMA extends LazySchema<infer T>\n ? T\n : SCHEMA extends Schema<infer T>\n ? T\n : never;\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n jsonSchema: JSONSchema7 | (() => JSONSchema7),\n {\n validate,\n }: {\n validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n } = {},\n): Schema<OBJECT> {\n return {\n [schemaSymbol]: true,\n _type: undefined as OBJECT, // should never be used directly\n [validatorSymbol]: true,\n get jsonSchema() {\n if (typeof jsonSchema === 'function') {\n jsonSchema = jsonSchema(); // cache the function results\n }\n return jsonSchema;\n },\n validate,\n };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n return (\n typeof value === 'object' &&\n value !== null &&\n schemaSymbol in value &&\n value[schemaSymbol] === true &&\n 'jsonSchema' in value &&\n 'validate' in value\n );\n}\n\nexport function asSchema<OBJECT>(\n schema: FlexibleSchema<OBJECT> | undefined,\n): Schema<OBJECT> {\n return schema == null\n ? jsonSchema({\n properties: {},\n additionalProperties: false,\n })\n : isSchema(schema)\n ? schema\n : typeof schema === 'function'\n ? schema()\n : zodSchema(schema);\n}\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file:\n typeof part.data === 'string' &&\n part.data.startsWith('file-')\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n}\n\nexport type OpenAIChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator<typeof openaiChatChunkSchema>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'gpt-4.1'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4o'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | 'gpt-5'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in\n * the GPT tokenizer) to an associated bias value from -100 to 100.\n */\n logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Maximum number of completion tokens to generate. Useful for reasoning models.\n */\n maxCompletionTokens: z.number().optional(),\n\n /**\n * Whether to enable persistence in responses API.\n */\n store: z.boolean().optional(),\n\n /**\n * Metadata to associate with the request.\n */\n metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n /**\n * Parameters for prediction mode.\n */\n prediction: z.record(z.string(), z.any()).optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n * Project settings. Unless otherwise configured, the Project will use 'default'.\n * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Controls the verbosity of the model's responses.\n * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n */\n textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n * Useful for improving cache hit rates and working around automatic caching issues.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n /**\n * A stable identifier used to help detect users of your application\n * that may be violating OpenAI's usage policies. The IDs should be a\n * string that uniquely identifies each user. We recommend hashing their\n * username or email address, in order to avoid sending us any identifying\n * information.\n */\n safetyIdentifier: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n typeof openaiChatLanguageModelOptions\n>;\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n OpenAIChatToolChoice,\n OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAIChatFunctionTool[];\n toolChoice?: OpenAIChatToolChoice;\n toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAIChatFunctionTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: structuredOutputs ? strictJsonSchema : undefined,\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\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 InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAIChatChunk,\n openaiChatChunkSchema,\n openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n OpenAIChatModelId,\n openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiChatLanguageModelOptions,\n })) ?? {};\n\n const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n systemMessageMode: getSystemMessageMode(this.modelId),\n },\n );\n\n warnings.push(...messageWarnings);\n\n const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions.logprobs === true ||\n typeof openaiOptions.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof openaiOptions.logprobs === 'number'\n ? openaiOptions.logprobs\n : typeof openaiOptions.logprobs === 'boolean'\n ? openaiOptions.logprobs\n ? 0\n : undefined\n : undefined,\n user: openaiOptions.user,\n parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n verbosity: openaiOptions.textVerbosity,\n\n // openai specific settings:\n // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n max_completion_tokens: openaiOptions.maxCompletionTokens,\n store: openaiOptions.store,\n metadata: openaiOptions.metadata,\n prediction: openaiOptions.prediction,\n reasoning_effort: openaiOptions.reasoningEffort,\n service_tier: openaiOptions.serviceTier,\n prompt_cache_key: openaiOptions.promptCacheKey,\n prompt_cache_retention: openaiOptions.promptCacheRetention,\n safety_identifier: openaiOptions.safetyIdentifier,\n\n // messages:\n messages,\n };\n\n if (isReasoningModel(this.modelId)) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n if (baseArgs.frequency_penalty != null) {\n baseArgs.frequency_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n details: 'frequencyPenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.presence_penalty != null) {\n baseArgs.presence_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n details: 'presencePenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.logit_bias != null) {\n baseArgs.logit_bias = undefined;\n warnings.push({\n type: 'other',\n message: 'logitBias is not supported for reasoning models',\n });\n }\n if (baseArgs.logprobs != null) {\n baseArgs.logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'logprobs is not supported for reasoning models',\n });\n }\n if (baseArgs.top_logprobs != null) {\n baseArgs.top_logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'topLogprobs is not supported for reasoning models',\n });\n }\n\n // reasoning models use max_completion_tokens instead of max_tokens:\n if (baseArgs.max_tokens != null) {\n if (baseArgs.max_completion_tokens == null) {\n baseArgs.max_completion_tokens = baseArgs.max_tokens;\n }\n baseArgs.max_tokens = undefined;\n }\n } else if (\n this.modelId.startsWith('gpt-4o-search-preview') ||\n this.modelId.startsWith('gpt-4o-mini-search-preview')\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details:\n 'temperature is not supported for the search preview models and has been removed.',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions.serviceTier === 'flex' &&\n !supportsFlexProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n baseArgs.service_tier = undefined;\n }\n\n // Validate priority processing support\n if (\n openaiOptions.serviceTier === 'priority' &&\n !supportsPriorityProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // annotations/citations:\n for (const annotation of choice.message.annotations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let metadataExtracted = false;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIChatChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n // extract and emit response metadata once. Usually it comes in the first chunk.\n // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n if (!metadataExtracted) {\n const metadata = getResponseMetadata(value);\n if (Object.values(metadata).some(Boolean)) {\n metadataExtracted = true;\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n usage.outputTokens = value.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.usage.total_tokens ?? undefined;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n if (\n value.usage.completion_tokens_details\n ?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n value.usage.completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n value.usage.completion_tokens_details\n ?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n value.usage.completion_tokens_details?.rejected_prediction_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n\n // annotations/citations:\n if (delta.annotations != null) {\n for (const annotation of delta.annotations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import {\n InvalidPromptError,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z\n .array(z.record(z.string(), z.number()))\n .nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n typeof openaiCompletionResponseSchema\n>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nEcho back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\n /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n logitBias: z.record(z.string(), z.number()).optional(),\n\n /**\nThe suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n }),\n ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n typeof openaiCompletionProviderOptions\n>;\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAICompletionChunk,\n openaiCompletionChunkSchema,\n openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n OpenAICompletionModelId,\n openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAICompletionChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n | 'text-embedding-3-small'\n | 'text-embedding-3-large'\n | 'text-embedding-ada-002'\n | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n user: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n }),\n ),\n);\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n }),\n ),\n);\n","export type OpenAIImageModelId =\n | 'dall-e-3'\n | 'dall-e-2'\n | 'gpt-image-1'\n | 'gpt-image-1-mini'\n | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n 'dall-e-3': 1,\n 'dall-e-2': 10,\n 'gpt-image-1': 10,\n 'gpt-image-1-mini': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n 'gpt-image-1',\n 'gpt-image-1-mini',\n]);\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n OpenAIImageModelId,\n hasDefaultResponseFormat,\n modelMaxImagesPerCall,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map(item =>\n item.revised_prompt\n ? {\n revisedPrompt: item.revised_prompt,\n }\n : null,\n ),\n },\n },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n zodSchema(\n 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 word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n | 'whisper-1'\n | 'gpt-4o-mini-transcribe'\n | 'gpt-4o-transcribe'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Additional information to include in the transcription response.\n */\n\n include: z.array(z.string()).optional(),\n\n /**\n * The language of the input audio in ISO-639-1 format.\n */\n language: z.string().optional(),\n\n /**\n * An optional text to guide the model's style or continue a previous audio segment.\n */\n prompt: z.string().optional(),\n\n /**\n * The sampling temperature, between 0 and 1.\n * @default 0\n */\n temperature: z.number().min(0).max(1).default(0).optional(),\n\n /**\n * The timestamp granularities to populate for this transcription.\n * @default ['segment']\n */\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .default(['segment'])\n .optional(),\n }),\n ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n typeof openAITranscriptionProviderOptions\n>;\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n OpenAITranscriptionModelId,\n openAITranscriptionProviderOptions,\n OpenAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['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.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\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","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n | 'tts-1'\n | 'tts-1-hd'\n | 'gpt-4o-mini-tts'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n }),\n ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n typeof openaiSpeechProviderOptionsSchema\n>;\n","import { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n openaiSpeechProviderOptionsSchema,\n OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\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: rawResponse,\n },\n };\n }\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: 'exec';\n\n /**\n * The command to run.\n */\n command: string[];\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number;\n\n /**\n * Optional user to run the command as.\n */\n user?: string;\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string;\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record<string, string>;\n };\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string;\n },\n {}\n>({\n id: 'openai.local_shell',\n name: 'local_shell',\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n LanguageModelV2ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n parseProviderOptions,\n validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport {\n OpenAIResponsesFunctionCallOutput,\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false;\n return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n fileIdPrefixes?: readonly string[];\n store: boolean;\n hasLocalShellTool?: boolean;\n}): Promise<{\n input: OpenAIResponsesInput;\n warnings: Array<LanguageModelV2CallWarning>;\n}> {\n const input: OpenAIResponsesInput = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n input.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n input.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n input.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n return {\n type: 'input_file',\n file_url: part.data.toString(),\n };\n }\n return {\n type: 'input_file',\n ...(typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n const toolCallParts: Record<string, LanguageModelV2ToolCallPart> = {};\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id,\n });\n\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = await validateTypes({\n value: part.input,\n schema: localShellInputSchema,\n });\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id: id!,\n action: {\n type: 'exec',\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n });\n\n break;\n }\n\n input.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id,\n });\n break;\n }\n\n // assistant tool result parts are from provider-executed tools:\n case 'tool-result': {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: 'item_reference', id: part.toolCallId });\n } else {\n warnings.push({\n type: 'other',\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n });\n }\n\n break;\n }\n\n case 'reasoning': {\n const providerOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n });\n\n const reasoningId = providerOptions?.itemId;\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId];\n\n if (store) {\n // use item references to refer to reasoning (single reference)\n // when the first part is encountered\n if (reasoningMessage === undefined) {\n input.push({ type: 'item_reference', id: reasoningId });\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n summary: [],\n };\n }\n } else {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: 'other',\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n input.push(reasoningMessages[reasoningId]);\n } else {\n reasoningMessage.summary.push(...summaryParts);\n\n // updated encrypted content to enable setting it in the last summary part:\n if (providerOptions?.reasoningEncryptedContent != null) {\n reasoningMessage.encrypted_content =\n providerOptions.reasoningEncryptedContent;\n }\n }\n }\n } else {\n warnings.push({\n type: 'other',\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n const output = part.output;\n\n if (\n hasLocalShellTool &&\n part.toolName === 'local_shell' &&\n output.type === 'json'\n ) {\n const parsedOutput = await validateTypes({\n value: output.value,\n schema: localShellOutputSchema,\n });\n\n input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: parsedOutput.output,\n });\n break;\n }\n\n let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n case 'content':\n contentValue = output.value.map(item => {\n switch (item.type) {\n case 'text': {\n return { type: 'input_text' as const, text: item.text };\n }\n case 'media': {\n return item.mediaType.startsWith('image/')\n ? {\n type: 'input_image' as const,\n image_url: `data:${item.mediaType};base64,${item.data}`,\n }\n : {\n type: 'input_file' as const,\n filename: 'data',\n file_data: `data:${item.mediaType};base64,${item.data}`,\n };\n }\n }\n });\n break;\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: contentValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined;\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasFunctionCall ? 'tool-calls' : 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n | OpenAIResponsesSystemMessage\n | OpenAIResponsesUserMessage\n | OpenAIResponsesAssistantMessage\n | OpenAIResponsesFunctionCall\n | OpenAIResponsesFunctionCallOutput\n | OpenAIResponsesComputerCall\n | OpenAIResponsesLocalShellCall\n | OpenAIResponsesLocalShellCallOutput\n | OpenAIResponsesReasoning\n | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n | 'web_search_call.action.sources'\n | 'code_interpreter_call.outputs'\n | 'computer_call_output.output.image_url'\n | 'file_search_call.results'\n | 'message.input_image.image_url'\n | 'message.output_text.logprobs'\n | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n | Array<OpenAIResponsesIncludeValue>\n | undefined\n | null;\n\nexport type OpenAIResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n role: 'user';\n content: Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_image'; file_id: string }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n | { type: 'input_file'; file_id: string }\n >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n role: 'assistant';\n content: Array<{ type: 'output_text'; text: string }>;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n type: 'function_call';\n call_id: string;\n name: string;\n arguments: string;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n type: 'computer_call';\n id: string;\n status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n type: 'local_shell_call';\n id: string;\n call_id: string;\n action: {\n type: 'exec';\n command: string[];\n timeout_ms?: number;\n user?: string;\n working_directory?: string;\n env?: Record<string, string>;\n };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n type: 'local_shell_call_output';\n call_id: string;\n output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n type: 'item_reference';\n id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n /**\n * The key to compare against the value.\n */\n key: string;\n\n /**\n * Specifies the comparison operator: eq, ne, gt, gte, lt, lte.\n */\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n\n /**\n * The value to compare against the attribute key; supports string, number, or boolean types.\n */\n value: string | number | boolean;\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n /**\n * Type of operation: and or or.\n */\n type: 'and' | 'or';\n\n /**\n * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n */\n filters: Array<\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n >;\n};\n\nexport type OpenAIResponsesTool =\n | {\n type: 'function';\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n }\n | {\n type: 'web_search';\n external_web_access: boolean | undefined;\n filters: { allowed_domains: string[] | undefined } | undefined;\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'web_search_preview';\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'code_interpreter';\n container: string | { type: 'auto'; file_ids: string[] | undefined };\n }\n | {\n type: 'file_search';\n vector_store_ids: string[];\n max_num_results: number | undefined;\n ranking_options:\n | { ranker?: string; score_threshold?: number }\n | undefined;\n filters:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n | undefined;\n }\n | {\n type: 'image_generation';\n background: 'auto' | 'opaque' | 'transparent' | undefined;\n input_fidelity: 'low' | 'high' | undefined;\n input_image_mask:\n | {\n file_id: string | undefined;\n image_url: string | undefined;\n }\n | undefined;\n model: string | undefined;\n moderation: 'auto' | undefined;\n output_compression: number | undefined;\n output_format: 'png' | 'jpeg' | 'webp' | undefined;\n quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n }\n | {\n type: 'local_shell';\n };\n\nexport type OpenAIResponsesReasoning = {\n type: 'reasoning';\n id: string;\n encrypted_content?: string | null;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.enum(['response.completed', 'response.incomplete']),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z.object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n }),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal('completed'),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\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('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n }),\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.image_generation_call.partial_image'),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n }),\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.output_text.annotation.added'),\n annotation: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n sequence_number: z.number(),\n error: z.object({\n type: z.string(),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n }),\n z\n .object({ type: z.string() })\n .loose()\n .transform(value => ({\n type: 'unknown_chunk' as const,\n message: value.type,\n })), // fallback for unknown chunks\n ]),\n ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n (OpenAIResponsesChunk & {\n type: 'response.output_text.delta';\n })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n ((OpenAIResponsesChunk & {\n type: 'response.output_item.done';\n })['item'] & {\n type: 'web_search_call';\n })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().optional(),\n created_at: z.number().optional(),\n error: z\n .object({\n message: z.string(),\n type: z.string(),\n param: z.string().nullish(),\n code: z.string(),\n })\n .nullish(),\n model: z.string().optional(),\n output: z\n .array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n role: z.literal('assistant'),\n id: z.string(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n annotations: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal('container_file_citation'),\n container_id: z.string(),\n file_id: z.string(),\n filename: z.string().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n index: z.number().nullish(),\n }),\n z.object({\n type: z.literal('file_path'),\n file_id: z.string(),\n index: z.number().nullish(),\n }),\n ]),\n ),\n }),\n ),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean()]),\n ),\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('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .optional(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o3',\n 'o3-2025-04-16',\n 'o3-deep-research',\n 'o3-deep-research-2025-06-26',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'o4-mini-deep-research',\n 'o4-mini-deep-research-2025-06-26',\n 'codex-mini-latest',\n 'computer-use-preview',\n 'gpt-5',\n 'gpt-5-2025-08-07',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-mini-2025-08-07',\n 'gpt-5-nano',\n 'gpt-5-nano-2025-08-07',\n 'gpt-5-pro',\n 'gpt-5-pro-2025-10-06',\n 'gpt-5.1',\n 'gpt-5.1-chat-latest',\n 'gpt-5.1-codex-mini',\n 'gpt-5.1-codex',\n] as const;\n\nexport const openaiResponsesModelIds = [\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n 'gpt-5-chat-latest',\n ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n | 'chatgpt-4o-latest'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo'\n | 'gpt-4-0613'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1'\n | 'gpt-4'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4o-mini'\n | 'gpt-4o'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.1-codex-mini'\n | 'gpt-5.1-codex'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5-codex'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-pro-2025-10-06'\n | 'gpt-5-pro'\n | 'gpt-5'\n | 'o1-2024-12-17'\n | 'o1'\n | 'o3-2025-04-16'\n | 'o3-mini-2025-01-31'\n | 'o3-mini'\n | 'o3'\n | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n conversation: z.string().nullish(),\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n 'file_search_call.results',\n 'message.output_text.logprobs',\n ]),\n )\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z\n .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n .optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n truncation: z.enum(['auto', 'disabled']).nullish(),\n user: z.string().nullish(),\n }),\n ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n }),\n ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullish(),\n }),\n ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null;\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string;\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: 'logs';\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string;\n }\n | {\n type: 'image';\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string;\n }\n > | null;\n },\n CodeInterpreterArgs\n >({\n id: 'openai.code_interpreter',\n name: 'code_interpreter',\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n });\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args);\n};\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n type: z.enum(['and', 'or']),\n filters: z.array(\n z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z\n .union([comparisonFilterSchema, compoundFilterSchema])\n .optional(),\n }),\n ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record<string, unknown>;\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 to search through.\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number;\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string;\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number;\n };\n\n /**\n * A filter to apply.\n */\n filters?:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter;\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n});\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\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 externalWebAccess: z.boolean().optional(),\n filters: z\n .object({ allowedDomains: z.array(z.string()).optional() })\n .optional(),\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .optional(),\n }),\n ),\n);\n\nexport const webSearchToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n\n /**\n * Optional sources cited by the model for the web search call.\n */\n sources?: Array<\n { type: 'url'; url: string } | { type: 'api'; name: string }\n >;\n },\n {\n /**\n * Whether to use external web access for fetching live content.\n * - true: Fetch live web content (default)\n * - false: Use cached/indexed results\n */\n externalWebAccess?: boolean;\n\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[];\n };\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search',\n name: 'web_search',\n inputSchema: webSearchInputSchema,\n outputSchema: webSearchOutputSchema,\n });\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n ),\n);\n\nexport const webSearchPreview =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search preview doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search_preview',\n name: 'web_search_preview',\n inputSchema: webSearchPreviewInputSchema,\n outputSchema: webSearchPreviewOutputSchema,\n });\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n inputFidelity: z.enum(['low', 'high']).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum(['auto']).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z\n .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n .optional(),\n })\n .strict(),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): Promise<{\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined': {\n switch (tool.id) {\n case 'openai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n openaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n });\n\n break;\n }\n case 'openai.local_shell': {\n openaiTools.push({\n type: 'local_shell',\n });\n break;\n }\n case 'openai.web_search_preview': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchPreviewArgsSchema,\n });\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n openaiTools.push({\n type: 'web_search',\n filters:\n args.filters != null\n ? { allowed_domains: args.filters.allowedDomains }\n : undefined,\n external_web_access: args.externalWebAccess,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.code_interpreter': {\n const args = await validateTypes({\n value: tool.args,\n schema: codeInterpreterArgsSchema,\n });\n\n openaiTools.push({\n type: 'code_interpreter',\n container:\n args.container == null\n ? { type: 'auto', file_ids: undefined }\n : typeof args.container === 'string'\n ? args.container\n : { type: 'auto', file_ids: args.container.fileIds },\n });\n break;\n }\n case 'openai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\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 APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ProviderDefinedTool,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n InferValidator,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n codeInterpreterInputSchema,\n codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport { fileSearchOutputSchema } from '../tool/file-search';\nimport { imageGenerationOutputSchema } from '../tool/image-generation';\nimport { localShellInputSchema } from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesChunk,\n openaiResponsesChunkSchema,\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n OpenAIResponsesLogprobs,\n openaiResponsesResponseSchema,\n OpenAIResponsesWebSearchAction,\n} from './openai-responses-api';\nimport {\n OpenAIResponsesModelId,\n openaiResponsesProviderOptionsSchema,\n TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n 'application/pdf': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'conversation',\n details: 'conversation and previousResponseId cannot be used together',\n });\n }\n\n const { input, warnings: inputWarnings } =\n await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n });\n\n warnings.push(...inputWarnings);\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n if (include == null) {\n include = [key];\n } else if (!include.includes(key)) {\n include = [...include, key];\n }\n }\n\n function hasOpenAITool(id: string) {\n return (\n tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === id,\n ) != null\n );\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === 'number'\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined;\n\n if (topLogprobs) {\n addInclude('message.output_text.logprobs');\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n tool =>\n tool.type === 'provider-defined' &&\n (tool.id === 'openai.web_search' ||\n tool.id === 'openai.web_search_preview'),\n ) as LanguageModelV2ProviderDefinedTool | undefined\n )?.name;\n\n if (webSearchToolName) {\n addInclude('web_search_call.action.sources');\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool('openai.code_interpreter')) {\n addInclude('code_interpreter_call.outputs');\n }\n\n const store = openaiOptions?.store;\n\n // store defaults to true in the OpenAI responses API, so check for false exactly:\n if (store === false && modelConfig.isReasoningModel) {\n addInclude('reasoning.encrypted_content');\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === 'json' && {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n conversation: openaiOptions?.conversation,\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n prompt_cache_retention: openaiOptions?.promptCacheRetention,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n truncation: openaiOptions?.truncation,\n\n // model-specific settings:\n ...(modelConfig.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null ||\n openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n };\n\n if (modelConfig.isReasoningModel) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningEffort',\n details: 'reasoningEffort is not supported for non-reasoning models',\n });\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningSummary',\n details: 'reasoningSummary is not supported for non-reasoning models',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions?.serviceTier === 'flex' &&\n !modelConfig.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n // Validate priority processing support\n if (\n openaiOptions?.serviceTier === 'priority' &&\n !modelConfig.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n });\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n store,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n } = await this.getArgs(options);\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV2Content> = [];\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n // map response content to content array (defined when there is no error)\n for (const part of response.output!) {\n switch (part.type) {\n case 'reasoning': {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: 'summary_text', text: '' });\n }\n\n for (const summary of part.summary) {\n content.push({\n type: 'reasoning' as const,\n text: summary.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n });\n }\n break;\n }\n\n case 'image_generation_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'image_generation',\n result: {\n result: part.result,\n } satisfies InferValidator<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: part.action,\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n ...(annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n break;\n }\n\n case 'web_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(part.action),\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies InferValidator<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n result: {\n outputs: part.outputs,\n } satisfies InferValidator<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n ...(response.id != null ? { responseId: response.id } : {}),\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (typeof response.service_tier === 'string') {\n providerMetadata.openai.serviceTier = response.service_tier;\n }\n\n const usage = response.usage!; // defined when there is no error\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n usage: {\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n totalTokens: usage.input_tokens + usage.output_tokens,\n reasoningTokens:\n usage.output_tokens_details?.reasoning_tokens ?? undefined,\n cachedInputTokens:\n usage.input_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at! * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n store,\n } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string;\n toolCallId: string;\n codeInterpreter?: {\n containerId: string;\n };\n }\n | undefined\n > = {};\n\n // set annotations in 'text-end' part providerMetadata.\n const ongoingAnnotations: Array<\n Extract<\n OpenAIResponsesChunk,\n { type: 'response.output_text.annotation.added' }\n >['annotation']\n > = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n // summary index as string to reasoning part state:\n summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIResponsesChunk>,\n LanguageModelV2StreamPart\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 // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? 'web_search',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n ongoingAnnotations.splice(0, ongoingAnnotations.length);\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (\n isResponseOutputItemAddedChunk(value) &&\n value.item.type === 'reasoning'\n ) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: { 0: 'active' },\n };\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item.id}:0`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type !== 'message'\n ) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasFunctionCall = true;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(value.item.action),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies InferValidator<\n typeof codeInterpreterOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies InferValidator<\n typeof imageGenerationOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: { itemId: value.item.id },\n },\n });\n } else if (value.item.type === 'reasoning') {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n // get all active or can-conclude summary parts' ids\n // to conclude ongoing reasoning parts:\n const summaryPartIndices = Object.entries(\n activeReasoningPart.summaryParts,\n )\n .filter(\n ([_, status]) =>\n status === 'active' || status === 'can-conclude',\n )\n .map(([summaryIndex]) => summaryIndex);\n\n for (const summaryIndex of summaryPartIndices) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies InferValidator<\n typeof codeInterpreterInputSchema\n >),\n providerExecuted: true,\n });\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n } else if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs);\n }\n } else if (value.type === 'response.reasoning_summary_part.added') {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n if (value.summary_index > 0) {\n const activeReasoningPart = activeReasoning[value.item_id]!;\n\n activeReasoningPart.summaryParts[value.summary_index] =\n 'active';\n\n // since there is a new active summary part, we can conclude all can-conclude summary parts\n for (const summaryIndex of Object.keys(\n activeReasoningPart.summaryParts,\n )) {\n if (\n activeReasoningPart.summaryParts[summaryIndex] ===\n 'can-conclude'\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${summaryIndex}`,\n providerMetadata: { openai: { itemId: value.item_id } },\n });\n activeReasoningPart.summaryParts[summaryIndex] =\n 'concluded';\n }\n }\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n reasoningEncryptedContent:\n activeReasoning[value.item_id]?.encryptedContent ??\n null,\n },\n },\n });\n }\n } else if (value.type === 'response.reasoning_summary_text.delta') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: `${value.item_id}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n },\n },\n });\n } else if (value.type === 'response.reasoning_summary_part.done') {\n // when OpenAI stores the message data, we can immediately conclude the reasoning part\n // since we do not need to send the encrypted content.\n if (store) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: { itemId: value.item_id },\n },\n });\n\n // mark the summary part as concluded\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'concluded';\n } else {\n // mark the summary part as can-conclude only\n // because we need to have a final summary part with the encrypted content\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'can-conclude';\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n });\n usage.inputTokens = value.response.usage.input_tokens;\n usage.outputTokens = value.response.usage.output_tokens;\n usage.totalTokens =\n value.response.usage.input_tokens +\n value.response.usage.output_tokens;\n usage.reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n undefined;\n if (typeof value.response.service_tier === 'string') {\n serviceTier = value.response.service_tier;\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n ongoingAnnotations.push(value.annotation);\n if (value.annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n });\n } else if (value.annotation.type === 'file_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'document',\n id: self.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n value.annotation.quote ??\n value.annotation.filename ??\n 'Document',\n filename:\n value.annotation.filename ?? value.annotation.file_id,\n ...(value.annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: value.annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type === 'message'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n ...(ongoingAnnotations.length > 0 && {\n annotations: ongoingAnnotations,\n }),\n },\n },\n });\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isTextDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.completed' | 'response.incomplete';\n} {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.function_call_arguments.delta';\n} {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.delta';\n} {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.done';\n} {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.output_text.annotation.added';\n} {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\nfunction mapWebSearchOutput(\n action: OpenAIResponsesWebSearchAction,\n): InferValidator<typeof webSearchOutputSchema> {\n switch (action.type) {\n case 'search':\n return {\n action: { type: 'search', query: action.query ?? undefined },\n // include sources when provided by the Responses API (behind include flag)\n ...(action.sources != null && { sources: action.sources }),\n };\n case 'open_page':\n return { action: { type: 'openPage', url: action.url } };\n case 'find':\n return {\n action: { type: 'find', url: action.url, pattern: action.pattern },\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\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 OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n (deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding` instead.\n */\n embedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV2;\n\n textEmbedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\nCreates an Azure OpenAI model for text embeddings.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV2;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV2;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nCustom api version to use. Defaults to `preview`.\n */\n apiVersion?: string;\n\n /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(deploymentId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey: string;\n apiVersion?: string;\n deployments?: string[];\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey is required for Azure OpenAI gateway',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise<string> {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise<AzureDeployment[]> {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise<string> {\n return this.config.apiKey;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n }): Promise<LanguageModelV2> {\n const apiVersion = this.config.apiVersion || '2024-04-01-preview';\n\n return createAzure({\n resourceName: this.config.resourceName,\n apiKey,\n apiVersion,\n useDeploymentBasedUrls: true,\n })(modelId);\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig, type GatewayLanguageModel } from './base.js';\nexport { AzureOpenAIGateway, type AzureOpenAIGatewayConfig } from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { NetlifyGateway } from './netlify.js';\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(gatewayId: string, gateways: MastraModelGateway[]): MastraModelGateway {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(\n (g: MastraModelGateway) => g.id !== 'models.dev' && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`)),\n );\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find((g: MastraModelGateway) => g.id === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { parseModelRouterId } from './gateway-resolver.js';\nimport type { GatewayLanguageModel, MastraModelGateway } from './gateways/base.js';\nimport { findGatewayForModel } from './gateways/index.js';\n\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\n/**\n * Type guard to check if a model is a LanguageModelV3 (AI SDK v6)\n */\nfunction isLanguageModelV3(model: GatewayLanguageModel): model is LanguageModelV3 {\n return model.specificationVersion === 'v3';\n}\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * @deprecated Use defaultGateways instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n\n /**\n * Supported URL patterns by media type for the provider.\n * This is a lazy promise that resolves the underlying model's supportedUrls.\n * Models like Mistral define which URL patterns they support (e.g., application/pdf for https URLs).\n *\n * @see https://github.com/mastra-ai/mastra/issues/12152\n */\n readonly supportedUrls: PromiseLike<Record<string, RegExp[]>>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig & { routerId: string };\n private gateway: MastraModelGateway;\n private _supportedUrlsPromise: Promise<Record<string, RegExp[]>> | null = null;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGateway[]) {\n // Normalize config to always have an 'id' field for routing\n let normalizedConfig: {\n id: `${string}/${string}`;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n normalizedConfig = { id: config as `${string}/${string}` };\n } else if ('providerId' in config && 'modelId' in config) {\n // Convert providerId/modelId to id format\n normalizedConfig = {\n id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n normalizedConfig = {\n id: config.id,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n const parsedConfig: {\n id: `${string}/${string}`;\n routerId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n } = {\n ...normalizedConfig,\n routerId: normalizedConfig.id,\n };\n\n // Resolve gateway once using the normalized ID\n this.gateway = findGatewayForModel(normalizedConfig.id, [...(customGateways || []), ...defaultGateways]);\n // Extract provider from id if present\n // Gateway ID is used as prefix (except for models.dev which is a provider registry)\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);\n\n this.provider = parsed.providerId || 'openai-compatible';\n\n if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {\n parsedConfig.id = parsed.modelId as `${string}/${string}`;\n }\n\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n\n // Create a lazy PromiseLike for supportedUrls that resolves the underlying model's supportedUrls\n // This allows providers like Mistral to expose their native URL support (e.g., PDF URLs)\n // See: https://github.com/mastra-ai/mastra/issues/12152\n const self = this;\n this.supportedUrls = {\n then<TResult1 = Record<string, RegExp[]>, TResult2 = never>(\n onfulfilled?: ((value: Record<string, RegExp[]>) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return self._resolveSupportedUrls().then(onfulfilled, onrejected);\n },\n };\n }\n\n /**\n * Lazily resolves the underlying model's supportedUrls.\n * This is cached to avoid multiple model resolutions.\n * @internal\n */\n private async _resolveSupportedUrls(): Promise<Record<string, RegExp[]>> {\n if (this._supportedUrlsPromise) {\n return this._supportedUrlsPromise;\n }\n\n this._supportedUrlsPromise = this._fetchSupportedUrls();\n return this._supportedUrlsPromise;\n }\n\n /**\n * Fetches supportedUrls from the underlying model.\n * @internal\n */\n private async _fetchSupportedUrls(): Promise<Record<string, RegExp[]>> {\n let apiKey: string;\n try {\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch {\n // If we can't get the API key, return empty supportedUrls\n // This gracefully degrades - URLs will be downloaded instead\n return {};\n }\n\n try {\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Get supportedUrls from the underlying model\n const modelSupportedUrls = model.supportedUrls;\n if (!modelSupportedUrls) {\n return {};\n }\n\n // Handle both Promise and plain object supportedUrls\n if (typeof (modelSupportedUrls as PromiseLike<unknown>).then === 'function') {\n const resolved = await (modelSupportedUrls as PromiseLike<Record<string, RegExp[]>>);\n return resolved ?? {};\n }\n\n return (modelSupportedUrls as Record<string, RegExp[]>) ?? {};\n } catch {\n // If model resolution fails, return empty supportedUrls\n return {};\n }\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Handle both V2 and V3 models\n if (isLanguageModelV3(model)) {\n const aiSDKV6Model = new AISDKV6LanguageModel(model);\n // Cast V3 stream result to V2 format - the stream contents are compatible at runtime\n return aiSDKV6Model.doGenerate(options as any) as unknown as Promise<StreamResult>;\n }\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doGenerate(options);\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n // Validate API key and return error stream if validation fails\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n // Handle both V2 and V3 models\n if (isLanguageModelV3(model)) {\n const aiSDKV6Model = new AISDKV6LanguageModel(model);\n // Cast V3 stream result to V2 format - the stream contents are compatible at runtime\n return aiSDKV6Model.doStream(options as any) as unknown as Promise<StreamResult>;\n }\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doStream(options);\n }\n\n private async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<GatewayLanguageModel> {\n const key = createHash('sha256')\n .update(\n this.gateway.id +\n modelId +\n providerId +\n apiKey +\n (this.config.url || '') +\n (headers ? JSON.stringify(headers) : ''),\n )\n .digest('hex');\n if (ModelRouterLanguageModel.modelInstances.has(key)) return ModelRouterLanguageModel.modelInstances.get(key)!;\n\n // If custom URL is provided, use it directly with openai-compatible\n if (this.config.url) {\n const modelInstance = createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL: this.config.url,\n headers: this.config.headers,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n\n const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n private static modelInstances = new Map<string, GatewayLanguageModel>();\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type {\n MastraModelConfig,\n OpenAICompatibleConfig,\n MastraLanguageModel,\n MastraLegacyLanguageModel,\n} from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n // Check for OpenAICompatibleConfig - it should have either:\n // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n // 2. Both 'providerId' and 'modelId' fields\n if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n if ('id' in modelConfig) return true;\n if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n }\n return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n * id: \"openai/gpt-4o\",\n * apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n * ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n requestContext: RequestContext = new RequestContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel | MastraLegacyLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ requestContext, mastra });\n }\n\n // Filter out custom language model instances\n // TODO need a better trick, maybe symbol\n if (\n modelConfig instanceof ModelRouterLanguageModel ||\n modelConfig instanceof AISDKV5LanguageModel ||\n modelConfig instanceof AISDKV6LanguageModel\n ) {\n return modelConfig;\n }\n\n // If it's already a LanguageModel, wrap it with the appropriate wrapper\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n if (modelConfig.specificationVersion === 'v2') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n if (modelConfig.specificationVersion === 'v3') {\n return new AISDKV6LanguageModel(modelConfig as LanguageModelV3);\n }\n if (modelConfig.specificationVersion === 'v1') {\n return modelConfig;\n }\n // Unknown specificationVersion from a third-party provider (e.g. ollama-ai-provider-v2).\n // If the model has doStream/doGenerate methods, wrap it as a modern model\n // to prevent the stream()/streamLegacy() catch-22 where neither method accepts the model.\n if (typeof (modelConfig as any).doStream === 'function' && typeof (modelConfig as any).doGenerate === 'function') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n return modelConfig;\n }\n\n const gatewayRecord = mastra?.listGateways();\n const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n return new ModelRouterLanguageModel(modelConfig, customGateways);\n }\n\n throw new Error('Invalid model configuration provided');\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { EmbeddingModel } from '@internal/ai-sdk-v5';\n\ntype EmbeddingModelV2<VALUE> = Exclude<EmbeddingModel<VALUE>, string>;\n\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n id: string;\n provider: string;\n dimensions: number;\n maxInputTokens: number;\n description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n // OpenAI\n {\n id: 'text-embedding-3-small',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-small model',\n },\n {\n id: 'text-embedding-3-large',\n provider: 'openai',\n dimensions: 3072,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-large model',\n },\n {\n id: 'text-embedding-ada-002',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-ada-002 model',\n },\n // Google\n {\n id: 'gemini-embedding-001',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 2048,\n description: 'Google gemini-embedding-001 model',\n },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n | 'openai/text-embedding-3-small'\n | 'openai/text-embedding-3-large'\n | 'openai/text-embedding-ada-002'\n | 'google/gemini-embedding-001';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2' as const;\n readonly modelId: string;\n readonly provider: string;\n maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n private providerModel: EmbeddingModelV2<VALUE>;\n\n constructor(config: string | OpenAICompatibleConfig) {\n // Normalize config to always have provider and model IDs\n let normalizedConfig: {\n providerId: string;\n modelId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n // Parse provider/model from string (e.g., \"openai/text-embedding-3-small\")\n const parts = config.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = { providerId, modelId };\n } else if ('providerId' in config && 'modelId' in config) {\n normalizedConfig = {\n providerId: config.providerId,\n modelId: config.modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n const parts = config.id.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = {\n providerId,\n modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n this.provider = normalizedConfig.providerId;\n this.modelId = normalizedConfig.modelId;\n\n // If custom URL is provided, skip provider registry validation\n // and use the provided API key (or empty string if not provided)\n if (normalizedConfig.url) {\n const apiKey = normalizedConfig.apiKey || '';\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: normalizedConfig.url,\n headers: normalizedConfig.headers,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n } else {\n // Get provider config from registry\n const registry = GatewayRegistry.getInstance();\n const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n }\n\n // Get API key from config or environment\n let apiKey = normalizedConfig.apiKey;\n if (!apiKey) {\n const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n if (Array.isArray(apiKeyEnvVar)) {\n // Try each possible environment variable\n for (const envVar of apiKeyEnvVar) {\n apiKey = process.env[envVar];\n if (apiKey) break;\n }\n } else {\n apiKey = process.env[apiKeyEnvVar];\n }\n }\n\n if (!apiKey) {\n const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n ? providerConfig.apiKeyEnvVar.join(' or ')\n : providerConfig.apiKeyEnvVar;\n throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n }\n\n // Initialize the provider model directly in constructor\n if (normalizedConfig.providerId === 'openai') {\n this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else if (normalizedConfig.providerId === 'google') {\n this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else {\n // Use OpenAI-compatible provider for other providers\n if (!providerConfig.url) {\n throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n }\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: providerConfig.url,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n }\n }\n\n // Copy properties from the provider model if available\n if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n }\n if (this.providerModel.supportsParallelCalls !== undefined) {\n this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n }\n }\n\n async doEmbed(\n args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n return this.providerModel.doEmbed(args);\n }\n}\n"]}