@oneuptime/common 11.3.24 → 11.3.26

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 (189) hide show
  1. package/Models/DatabaseModels/AIConversation.ts +322 -0
  2. package/Models/DatabaseModels/AIConversationMessage.ts +495 -0
  3. package/Models/DatabaseModels/AIRun.ts +584 -0
  4. package/Models/DatabaseModels/AIRunEvent.ts +443 -0
  5. package/Models/DatabaseModels/Index.ts +8 -0
  6. package/Models/DatabaseModels/LlmLog.ts +26 -0
  7. package/Models/DatabaseModels/LlmProvider.ts +2 -2
  8. package/Server/API/AIChatAPI.ts +693 -0
  9. package/Server/API/LlmProviderAPI.ts +169 -0
  10. package/Server/API/MicrosoftTeamsAPI.ts +5 -0
  11. package/Server/API/SlackAPI.ts +663 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.ts +245 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.ts +36 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.ts +46 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.ts +119 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  17. package/Server/Services/AIConversationMessageService.ts +39 -0
  18. package/Server/Services/AIConversationService.ts +63 -0
  19. package/Server/Services/AIRunEventService.ts +39 -0
  20. package/Server/Services/AIRunService.ts +39 -0
  21. package/Server/Services/AIService.ts +53 -31
  22. package/Server/Services/DatabaseService.ts +19 -0
  23. package/Server/Services/LlmProviderService.ts +110 -0
  24. package/Server/Services/ProjectService.ts +24 -0
  25. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +74 -9
  26. package/Server/Utils/AI/AIChatPrivacyFilter.ts +28 -0
  27. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +1054 -0
  28. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +239 -0
  29. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +51 -0
  30. package/Server/Utils/AI/Toolbox/AlertTools.ts +201 -0
  31. package/Server/Utils/AI/Toolbox/AlertWriteTools.ts +174 -0
  32. package/Server/Utils/AI/Toolbox/ContextTools.ts +189 -0
  33. package/Server/Utils/AI/Toolbox/ExceptionTools.ts +149 -0
  34. package/Server/Utils/AI/Toolbox/IncidentTools.ts +204 -0
  35. package/Server/Utils/AI/Toolbox/IncidentWriteTools.ts +350 -0
  36. package/Server/Utils/AI/Toolbox/Index.ts +228 -0
  37. package/Server/Utils/AI/Toolbox/LogTools.ts +339 -0
  38. package/Server/Utils/AI/Toolbox/MetricTools.ts +179 -0
  39. package/Server/Utils/AI/Toolbox/MonitorTools.ts +193 -0
  40. package/Server/Utils/AI/Toolbox/Serializer.ts +257 -0
  41. package/Server/Utils/AI/Toolbox/ToolTypes.ts +249 -0
  42. package/Server/Utils/AI/Toolbox/TraceTools.ts +402 -0
  43. package/Server/Utils/AI/Toolbox/WidgetBuilder.ts +189 -0
  44. package/Server/Utils/LLM/LLMService.ts +502 -92
  45. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +512 -19
  46. package/Server/Utils/Workspace/Slack/Slack.ts +80 -0
  47. package/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  48. package/Tests/Server/Utils/AI/AIChatModelACL.test.ts +42 -0
  49. package/Tests/Server/Utils/AI/ChatAgentHelpers.test.ts +89 -0
  50. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +139 -0
  51. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +308 -0
  52. package/Tests/Server/Utils/AI/ToolArgsGetTimeRange.test.ts +62 -0
  53. package/Tests/Server/Utils/AI/ToolArgsScopeServiceIds.test.ts +79 -0
  54. package/Tests/Server/Utils/AI/ToolResultSerializer.test.ts +155 -0
  55. package/Tests/Types/Billing/SubscriptionStatus.test.ts +127 -0
  56. package/Tests/Types/Metrics/RecordingRuleDefinition.test.ts +213 -0
  57. package/Types/AI/AIChatMessageRole.ts +6 -0
  58. package/Types/AI/AIChatMessageStatus.ts +32 -0
  59. package/Types/AI/AIChatPermissionMode.ts +69 -0
  60. package/Types/AI/AIChatTypes.ts +231 -0
  61. package/Types/AI/AIRunEventType.ts +17 -0
  62. package/Types/AI/AIRunStatus.ts +28 -0
  63. package/Types/AI/AIRunType.ts +6 -0
  64. package/Types/LLM/LlmType.ts +6 -0
  65. package/UI/Components/Header/HeaderIconDropdownButton.tsx +22 -12
  66. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +35 -3
  67. package/UI/Components/Page/Page.tsx +14 -0
  68. package/UI/Utils/LlmTypeDropdownOptions.ts +40 -0
  69. package/UI/Utils/TestLLMProvider.ts +59 -0
  70. package/build/dist/Models/DatabaseModels/AIConversation.js +345 -0
  71. package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -0
  72. package/build/dist/Models/DatabaseModels/AIConversationMessage.js +521 -0
  73. package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -0
  74. package/build/dist/Models/DatabaseModels/AIRun.js +619 -0
  75. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -0
  76. package/build/dist/Models/DatabaseModels/AIRunEvent.js +469 -0
  77. package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -0
  78. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  79. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  80. package/build/dist/Models/DatabaseModels/LlmLog.js +28 -0
  81. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  82. package/build/dist/Models/DatabaseModels/LlmProvider.js +2 -2
  83. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  84. package/build/dist/Server/API/AIChatAPI.js +498 -0
  85. package/build/dist/Server/API/AIChatAPI.js.map +1 -0
  86. package/build/dist/Server/API/LlmProviderAPI.js +107 -1
  87. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  88. package/build/dist/Server/API/MicrosoftTeamsAPI.js +4 -0
  89. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  90. package/build/dist/Server/API/SlackAPI.js +442 -0
  91. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  92. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js +96 -0
  93. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783363279075-AddAIChatModels.js.map +1 -0
  94. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js +25 -0
  95. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783443471795-AddLlmProviderToAIConversation.js.map +1 -0
  96. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js +31 -0
  97. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783453297388-AddAIChatWriteActionsAndWidgets.js.map +1 -0
  98. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js +46 -0
  99. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783461767405-MigrationName.js.map +1 -0
  100. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  101. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  102. package/build/dist/Server/Services/AIConversationMessageService.js +34 -0
  103. package/build/dist/Server/Services/AIConversationMessageService.js.map +1 -0
  104. package/build/dist/Server/Services/AIConversationService.js +42 -0
  105. package/build/dist/Server/Services/AIConversationService.js.map +1 -0
  106. package/build/dist/Server/Services/AIRunEventService.js +34 -0
  107. package/build/dist/Server/Services/AIRunEventService.js.map +1 -0
  108. package/build/dist/Server/Services/AIRunService.js +34 -0
  109. package/build/dist/Server/Services/AIRunService.js.map +1 -0
  110. package/build/dist/Server/Services/AIService.js +31 -23
  111. package/build/dist/Server/Services/AIService.js.map +1 -1
  112. package/build/dist/Server/Services/DatabaseService.js +10 -0
  113. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  114. package/build/dist/Server/Services/LlmProviderService.js +108 -0
  115. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  116. package/build/dist/Server/Services/ProjectService.js +25 -0
  117. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  118. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +50 -7
  119. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  120. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js +18 -0
  121. package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js.map +1 -0
  122. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +745 -0
  123. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -0
  124. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +165 -0
  125. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -0
  126. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +44 -0
  127. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -0
  128. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +167 -0
  129. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -0
  130. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js +136 -0
  131. package/build/dist/Server/Utils/AI/Toolbox/AlertWriteTools.js.map +1 -0
  132. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js +141 -0
  133. package/build/dist/Server/Utils/AI/Toolbox/ContextTools.js.map +1 -0
  134. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js +117 -0
  135. package/build/dist/Server/Utils/AI/Toolbox/ExceptionTools.js.map +1 -0
  136. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +167 -0
  137. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -0
  138. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js +280 -0
  139. package/build/dist/Server/Utils/AI/Toolbox/IncidentWriteTools.js.map +1 -0
  140. package/build/dist/Server/Utils/AI/Toolbox/Index.js +150 -0
  141. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -0
  142. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js +246 -0
  143. package/build/dist/Server/Utils/AI/Toolbox/LogTools.js.map +1 -0
  144. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +120 -0
  145. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -0
  146. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +158 -0
  147. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -0
  148. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js +188 -0
  149. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js.map +1 -0
  150. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js +142 -0
  151. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -0
  152. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +309 -0
  153. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -0
  154. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js +120 -0
  155. package/build/dist/Server/Utils/AI/Toolbox/WidgetBuilder.js.map +1 -0
  156. package/build/dist/Server/Utils/LLM/LLMService.js +372 -88
  157. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  158. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +378 -15
  159. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  160. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +59 -0
  161. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  162. package/build/dist/Server/Utils/Workspace/Slack/app-manifest.json +16 -1
  163. package/build/dist/Types/AI/AIChatMessageRole.js +7 -0
  164. package/build/dist/Types/AI/AIChatMessageRole.js.map +1 -0
  165. package/build/dist/Types/AI/AIChatMessageStatus.js +27 -0
  166. package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -0
  167. package/build/dist/Types/AI/AIChatPermissionMode.js +53 -0
  168. package/build/dist/Types/AI/AIChatPermissionMode.js.map +1 -0
  169. package/build/dist/Types/AI/AIChatTypes.js +74 -0
  170. package/build/dist/Types/AI/AIChatTypes.js.map +1 -0
  171. package/build/dist/Types/AI/AIRunEventType.js +18 -0
  172. package/build/dist/Types/AI/AIRunEventType.js.map +1 -0
  173. package/build/dist/Types/AI/AIRunStatus.js +26 -0
  174. package/build/dist/Types/AI/AIRunStatus.js.map +1 -0
  175. package/build/dist/Types/AI/AIRunType.js +7 -0
  176. package/build/dist/Types/AI/AIRunType.js.map +1 -0
  177. package/build/dist/Types/LLM/LlmType.js +6 -0
  178. package/build/dist/Types/LLM/LlmType.js.map +1 -1
  179. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +10 -5
  180. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  181. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +18 -4
  182. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  183. package/build/dist/UI/Components/Page/Page.js +3 -1
  184. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  185. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js +38 -0
  186. package/build/dist/UI/Utils/LlmTypeDropdownOptions.js.map +1 -0
  187. package/build/dist/UI/Utils/TestLLMProvider.js +37 -0
  188. package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -0
  189. package/package.json +1 -1
@@ -9,6 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import HTTPErrorResponse from "../../../Types/API/HTTPErrorResponse";
11
11
  import URL from "../../../Types/API/URL";
12
+ import JSONFunctions from "../../../Types/JSONFunctions";
12
13
  import API from "../../../Utils/API";
13
14
  import LlmType from "../../../Types/LLM/LlmType";
14
15
  import BadDataException from "../../../Types/Exception/BadDataException";
@@ -21,6 +22,7 @@ class LLMService {
21
22
  case LlmType.OpenAI:
22
23
  case LlmType.Groq:
23
24
  case LlmType.Mistral:
25
+ case LlmType.OpenAICompatible:
24
26
  return await this.getOpenAICompatibleCompletion(config, request);
25
27
  case LlmType.AzureOpenAI:
26
28
  return await this.getAzureOpenAICompletion(config, request);
@@ -32,11 +34,217 @@ class LLMService {
32
34
  throw new BadDataException(`Unsupported LLM type: ${config.llmType}`);
33
35
  }
34
36
  }
35
- static async getOpenAICompatibleCompletion(config, request) {
37
+ /*
38
+ * OpenAI-compatible wire format (OpenAI, Groq, Mistral, Azure OpenAI).
39
+ */
40
+ static toOpenAIMessages(messages) {
41
+ return messages.map((msg) => {
42
+ if (msg.role === "assistant" && msg.toolCalls && msg.toolCalls.length) {
43
+ return {
44
+ role: "assistant",
45
+ content: msg.content || null,
46
+ tool_calls: msg.toolCalls.map((toolCall) => {
47
+ return {
48
+ id: toolCall.id,
49
+ type: "function",
50
+ function: {
51
+ name: toolCall.name,
52
+ arguments: JSON.stringify(toolCall.arguments),
53
+ },
54
+ };
55
+ }),
56
+ };
57
+ }
58
+ if (msg.role === "tool") {
59
+ return {
60
+ role: "tool",
61
+ tool_call_id: msg.toolCallId || "",
62
+ content: msg.content,
63
+ };
64
+ }
65
+ return {
66
+ role: msg.role,
67
+ content: msg.content,
68
+ };
69
+ });
70
+ }
71
+ static toOpenAITools(tools) {
72
+ return tools.map((tool) => {
73
+ return {
74
+ type: "function",
75
+ function: {
76
+ name: tool.name,
77
+ description: tool.description,
78
+ parameters: tool.inputSchema,
79
+ },
80
+ };
81
+ });
82
+ }
83
+ static parseOpenAIToolCalls(message) {
84
+ const rawToolCalls = message["tool_calls"];
85
+ if (!rawToolCalls || rawToolCalls.length === 0) {
86
+ return undefined;
87
+ }
88
+ return rawToolCalls.map((rawToolCall, index) => {
89
+ const fn = rawToolCall["function"] || {};
90
+ const parsed = this.parseToolCallArguments(fn["arguments"] || "{}");
91
+ return {
92
+ id: rawToolCall["id"] || `tool_call_${index}`,
93
+ name: fn["name"] || "",
94
+ arguments: parsed.arguments,
95
+ argumentsParseError: parsed.error,
96
+ };
97
+ });
98
+ }
99
+ /*
100
+ * Models sometimes emit slightly malformed argument JSON (trailing commas,
101
+ * single quotes). Try strict JSON first, then tolerant JSON5, and report a
102
+ * parse error instead of silently executing with empty arguments.
103
+ */
104
+ static parseToolCallArguments(rawArguments) {
105
+ try {
106
+ return { arguments: JSON.parse(rawArguments) };
107
+ }
108
+ catch (_a) {
109
+ // fall through to tolerant parsing
110
+ }
111
+ try {
112
+ const parsed = JSONFunctions.parse(rawArguments);
113
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
114
+ return { arguments: parsed };
115
+ }
116
+ return {
117
+ arguments: {},
118
+ error: "Tool arguments were not a JSON object.",
119
+ };
120
+ }
121
+ catch (_b) {
122
+ return {
123
+ arguments: {},
124
+ error: "Tool arguments were malformed JSON and could not be parsed.",
125
+ };
126
+ }
127
+ }
128
+ static buildOpenAIRequestBody(modelName, request) {
36
129
  var _a;
37
- if (!config.apiKey) {
130
+ const data = {
131
+ model: modelName,
132
+ messages: this.toOpenAIMessages(request.messages),
133
+ temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
134
+ };
135
+ if (request.maxTokens) {
136
+ data["max_tokens"] = request.maxTokens;
137
+ }
138
+ if (request.tools && request.tools.length > 0) {
139
+ data["tools"] = this.toOpenAITools(request.tools);
140
+ }
141
+ return data;
142
+ }
143
+ static parseOpenAIResponse(jsonData, providerName) {
144
+ const choices = jsonData["choices"];
145
+ if (!choices || choices.length === 0) {
146
+ throw new BadDataException(`No response from ${providerName}`);
147
+ }
148
+ const message = choices[0]["message"];
149
+ const usage = jsonData["usage"];
150
+ const toolCalls = this.parseOpenAIToolCalls(message);
151
+ return {
152
+ content: message["content"] || "",
153
+ toolCalls: toolCalls,
154
+ stopReason: toolCalls && toolCalls.length > 0 ? "tool_use" : "stop",
155
+ usage: usage
156
+ ? {
157
+ promptTokens: usage["prompt_tokens"],
158
+ completionTokens: usage["completion_tokens"],
159
+ totalTokens: usage["total_tokens"],
160
+ }
161
+ : undefined,
162
+ };
163
+ }
164
+ /*
165
+ * Build the chat completions URL for an OpenAI-compatible server from the
166
+ * configured base URL. Users enter the base URL in a few different ways, and
167
+ * we normalize all of them onto the right endpoint instead of 404-ing:
168
+ *
169
+ * - Already a full endpoint (".../chat/completions") -> used as-is.
170
+ * - Includes a path (".../v1", ".../openai/v1") -> append "/chat/completions".
171
+ * - Bare server root ("http://host:8000") -> append "/v1/chat/completions",
172
+ * since vLLM, LocalAI and similar servers expose the OpenAI-compatible API
173
+ * under /v1 by default. This is the most common self-hosted setup and the
174
+ * easiest one for users to get wrong (omitting /v1 returns FastAPI's
175
+ * {"detail":"Not Found"}).
176
+ *
177
+ * The endpoint segment is only ever appended to the PATH portion: any
178
+ * ?query or #fragment on the base URL is split off first and re-attached
179
+ * afterwards (otherwise "/chat/completions" would land inside the query or
180
+ * fragment). Trailing slashes are stripped so we never emit
181
+ * ".../v1//chat/completions", and the URL scheme is lower-cased because URL
182
+ * schemes are case-insensitive but downstream URL parsing only recognizes
183
+ * lowercase http/https.
184
+ */
185
+ static buildOpenAICompatibleChatCompletionsUrl(baseUrl) {
186
+ const raw = baseUrl.trim();
187
+ // Split off #fragment, then ?query, so we can operate on the path alone.
188
+ const fragmentIndex = raw.indexOf("#");
189
+ const fragment = fragmentIndex >= 0 ? raw.substring(fragmentIndex) : "";
190
+ const withoutFragment = fragmentIndex >= 0 ? raw.substring(0, fragmentIndex) : raw;
191
+ const queryIndex = withoutFragment.indexOf("?");
192
+ const query = queryIndex >= 0 ? withoutFragment.substring(queryIndex) : "";
193
+ let base = queryIndex >= 0
194
+ ? withoutFragment.substring(0, queryIndex)
195
+ : withoutFragment;
196
+ /*
197
+ * Lower-case the scheme (e.g. "HTTP://" -> "http://") and strip trailing
198
+ * slashes.
199
+ */
200
+ const schemeRegex = /^[a-z][a-z0-9+.-]*:\/\//i;
201
+ base = base
202
+ .replace(schemeRegex, (scheme) => {
203
+ return scheme.toLowerCase();
204
+ })
205
+ .replace(/\/+$/, "");
206
+ let path;
207
+ const fullEndpointRegex = /\/chat\/completions$/i;
208
+ const hasPathAfterHostRegex = /^[a-z][a-z0-9+.-]*:\/\/[^/]+\/.+/i;
209
+ if (fullEndpointRegex.test(base)) {
210
+ // The user already pointed us at the full endpoint.
211
+ path = base;
212
+ }
213
+ else if (hasPathAfterHostRegex.test(base)) {
214
+ /*
215
+ * The base URL carries a path after the host[:port] (e.g.
216
+ * "http://host:8000/v1" or ".../openai/v1") — trust it and only append
217
+ * the endpoint.
218
+ */
219
+ path = `${base}/chat/completions`;
220
+ }
221
+ else {
222
+ /*
223
+ * Bare server root ("http://host:8000") — add the conventional /v1
224
+ * prefix that OpenAI-compatible servers (vLLM, LocalAI, ...) use.
225
+ */
226
+ path = `${base}/v1/chat/completions`;
227
+ }
228
+ return `${path}${query}${fragment}`;
229
+ }
230
+ static async getOpenAICompatibleCompletion(config, request) {
231
+ /*
232
+ * Generic OpenAI-compatible servers (vLLM, LocalAI, etc.) are usually
233
+ * self-hosted, frequently keyless, and have no canonical endpoint or
234
+ * default model — so the API key is optional but the base URL and model
235
+ * name must be provided. The hosted providers (OpenAI, Groq, Mistral)
236
+ * keep requiring a key and fall back to sensible defaults.
237
+ */
238
+ const isGenericOpenAICompatible = config.llmType === LlmType.OpenAICompatible;
239
+ if (!isGenericOpenAICompatible && !config.apiKey) {
38
240
  throw new BadDataException(`${config.llmType} API key is required`);
39
241
  }
242
+ if (isGenericOpenAICompatible && !config.baseUrl) {
243
+ throw new BadDataException("Base URL is required for OpenAI-compatible providers (e.g. http://your-vllm-server:8000/v1)");
244
+ }
245
+ if (isGenericOpenAICompatible && !config.modelName) {
246
+ throw new BadDataException("Model Name is required for OpenAI-compatible providers. It must match a model your server exposes.");
247
+ }
40
248
  const defaultBaseUrls = {
41
249
  [LlmType.OpenAI]: "https://api.openai.com/v1",
42
250
  [LlmType.Groq]: "https://api.groq.com/openai/v1",
@@ -52,21 +260,11 @@ class LLMService {
52
260
  "https://api.openai.com/v1";
53
261
  const modelName = config.modelName || defaultModels[config.llmType] || "gpt-4o";
54
262
  const response = await API.post({
55
- url: URL.fromString(`${baseUrl}/chat/completions`),
56
- data: {
57
- model: modelName,
58
- messages: request.messages.map((msg) => {
59
- return {
60
- role: msg.role,
61
- content: msg.content,
62
- };
63
- }),
64
- temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
65
- },
66
- headers: {
67
- Authorization: `Bearer ${config.apiKey}`,
68
- "Content-Type": "application/json",
69
- },
263
+ url: URL.fromString(this.buildOpenAICompatibleChatCompletionsUrl(baseUrl)),
264
+ data: this.buildOpenAIRequestBody(modelName, request),
265
+ headers: Object.assign({ "Content-Type": "application/json" }, (config.apiKey
266
+ ? { Authorization: `Bearer ${config.apiKey}` }
267
+ : {})),
70
268
  options: {
71
269
  retries: 2,
72
270
  exponentialBackoff: true,
@@ -82,23 +280,7 @@ class LLMService {
82
280
  logger.error(response, logAttributes);
83
281
  throw new BadDataException(`${config.llmType} API error: ${JSON.stringify(response.jsonData)}`);
84
282
  }
85
- const jsonData = response.jsonData;
86
- const choices = jsonData["choices"];
87
- if (!choices || choices.length === 0) {
88
- throw new BadDataException(`No response from ${config.llmType}`);
89
- }
90
- const message = choices[0]["message"];
91
- const usage = jsonData["usage"];
92
- return {
93
- content: message["content"],
94
- usage: usage
95
- ? {
96
- promptTokens: usage["prompt_tokens"],
97
- completionTokens: usage["completion_tokens"],
98
- totalTokens: usage["total_tokens"],
99
- }
100
- : undefined,
101
- };
283
+ return this.parseOpenAIResponse(response.jsonData, config.llmType);
102
284
  }
103
285
  static buildAzureOpenAIChatCompletionsUrl(baseUrl) {
104
286
  const trimmed = baseUrl.replace(/\/+$/, "");
@@ -112,7 +294,6 @@ class LLMService {
112
294
  return `${pathPart}/chat/completions?${params.toString()}`;
113
295
  }
114
296
  static async getAzureOpenAICompletion(config, request) {
115
- var _a;
116
297
  if (!config.apiKey) {
117
298
  throw new BadDataException("Azure OpenAI API key is required");
118
299
  }
@@ -123,16 +304,7 @@ class LLMService {
123
304
  const requestUrl = LLMService.buildAzureOpenAIChatCompletionsUrl(config.baseUrl);
124
305
  const response = await API.post({
125
306
  url: URL.fromString(requestUrl),
126
- data: {
127
- model: modelName,
128
- messages: request.messages.map((msg) => {
129
- return {
130
- role: msg.role,
131
- content: msg.content,
132
- };
133
- }),
134
- temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
135
- },
307
+ data: this.buildOpenAIRequestBody(modelName, request),
136
308
  headers: {
137
309
  "api-key": config.apiKey,
138
310
  "Content-Type": "application/json",
@@ -152,23 +324,60 @@ class LLMService {
152
324
  logger.error(response, logAttributes);
153
325
  throw new BadDataException(`Azure OpenAI API error: ${JSON.stringify(response.jsonData)}`);
154
326
  }
155
- const jsonData = response.jsonData;
156
- const choices = jsonData["choices"];
157
- if (!choices || choices.length === 0) {
158
- throw new BadDataException("No response from Azure OpenAI");
159
- }
160
- const message = choices[0]["message"];
161
- const usage = jsonData["usage"];
162
- return {
163
- content: message["content"],
164
- usage: usage
165
- ? {
166
- promptTokens: usage["prompt_tokens"],
167
- completionTokens: usage["completion_tokens"],
168
- totalTokens: usage["total_tokens"],
327
+ return this.parseOpenAIResponse(response.jsonData, "Azure OpenAI");
328
+ }
329
+ static toAnthropicMessages(messages) {
330
+ const anthropicMessages = [];
331
+ for (const msg of messages) {
332
+ if (msg.role === "system") {
333
+ continue; // hoisted separately
334
+ }
335
+ if (msg.role === "assistant" && msg.toolCalls && msg.toolCalls.length) {
336
+ const contentBlocks = [];
337
+ if (msg.content) {
338
+ contentBlocks.push({ type: "text", text: msg.content });
169
339
  }
170
- : undefined,
171
- };
340
+ for (const toolCall of msg.toolCalls) {
341
+ contentBlocks.push({
342
+ type: "tool_use",
343
+ id: toolCall.id,
344
+ name: toolCall.name,
345
+ input: toolCall.arguments,
346
+ });
347
+ }
348
+ anthropicMessages.push({ role: "assistant", content: contentBlocks });
349
+ continue;
350
+ }
351
+ if (msg.role === "tool") {
352
+ const toolResultBlock = {
353
+ type: "tool_result",
354
+ tool_use_id: msg.toolCallId || "",
355
+ content: msg.content,
356
+ };
357
+ /*
358
+ * Tool results must be user messages. Merge consecutive tool
359
+ * results into one user message so roles keep alternating.
360
+ */
361
+ const lastMessage = anthropicMessages[anthropicMessages.length - 1];
362
+ if (lastMessage &&
363
+ lastMessage["role"] === "user" &&
364
+ Array.isArray(lastMessage["content"])) {
365
+ lastMessage["content"].push(toolResultBlock);
366
+ }
367
+ else {
368
+ anthropicMessages.push({
369
+ role: "user",
370
+ content: [toolResultBlock],
371
+ });
372
+ }
373
+ continue;
374
+ }
375
+ anthropicMessages.push({
376
+ role: msg.role,
377
+ content: msg.content,
378
+ });
379
+ }
380
+ return anthropicMessages;
172
381
  }
173
382
  static async getAnthropicCompletion(config, request) {
174
383
  var _a;
@@ -177,28 +386,31 @@ class LLMService {
177
386
  }
178
387
  const baseUrl = config.baseUrl || "https://api.anthropic.com/v1";
179
388
  const modelName = config.modelName || "claude-sonnet-4-20250514";
180
- // Anthropic requires system message to be separate
181
389
  let systemMessage = "";
182
- const userMessages = [];
183
390
  for (const msg of request.messages) {
184
391
  if (msg.role === "system") {
185
392
  systemMessage = msg.content;
186
393
  }
187
- else {
188
- userMessages.push({
189
- role: msg.role,
190
- content: msg.content,
191
- });
192
- }
193
394
  }
194
395
  const requestData = {
195
396
  model: modelName,
196
- messages: userMessages,
397
+ messages: this.toAnthropicMessages(request.messages),
197
398
  temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
399
+ // Anthropic requires max_tokens on every request.
400
+ max_tokens: request.maxTokens || LLMService.ANTHROPIC_DEFAULT_MAX_TOKENS,
198
401
  };
199
402
  if (systemMessage) {
200
403
  requestData["system"] = systemMessage;
201
404
  }
405
+ if (request.tools && request.tools.length > 0) {
406
+ requestData["tools"] = request.tools.map((tool) => {
407
+ return {
408
+ name: tool.name,
409
+ description: tool.description,
410
+ input_schema: tool.inputSchema,
411
+ };
412
+ });
413
+ }
202
414
  const response = await API.post({
203
415
  url: URL.fromString(`${baseUrl}/messages`),
204
416
  data: requestData,
@@ -227,15 +439,33 @@ class LLMService {
227
439
  if (!content || content.length === 0) {
228
440
  throw new BadDataException("No response from Anthropic");
229
441
  }
230
- const textContent = content.find((c) => {
231
- return c["type"] === "text";
442
+ const textContent = content
443
+ .filter((block) => {
444
+ return block["type"] === "text";
445
+ })
446
+ .map((block) => {
447
+ return block["text"];
448
+ })
449
+ .join("");
450
+ const toolCalls = content
451
+ .filter((block) => {
452
+ return block["type"] === "tool_use";
453
+ })
454
+ .map((block) => {
455
+ return {
456
+ id: block["id"] || "",
457
+ name: block["name"] || "",
458
+ arguments: block["input"] || {},
459
+ };
232
460
  });
233
- if (!textContent) {
461
+ if (!textContent && toolCalls.length === 0) {
234
462
  throw new BadDataException("No text content in Anthropic response");
235
463
  }
236
464
  const usage = jsonData["usage"];
237
465
  return {
238
- content: textContent["text"],
466
+ content: textContent,
467
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
468
+ stopReason: jsonData["stop_reason"] === "tool_use" ? "tool_use" : "stop",
239
469
  usage: usage
240
470
  ? {
241
471
  promptTokens: usage["input_tokens"],
@@ -246,27 +476,48 @@ class LLMService {
246
476
  : undefined,
247
477
  };
248
478
  }
479
+ /*
480
+ * Ollama native /api/chat. Deliberately NOT routed through the
481
+ * OpenAI-compatible branch: Ollama deployments are keyless by design and
482
+ * the OpenAI branch requires an API key.
483
+ */
249
484
  static async getOllamaCompletion(config, request) {
250
485
  var _a;
251
486
  if (!config.baseUrl) {
252
487
  throw new BadDataException("Ollama base URL is required");
253
488
  }
254
489
  const modelName = config.modelName || "llama2";
255
- const response = await API.post({
256
- url: URL.fromString(`${config.baseUrl}/api/chat`),
257
- data: {
258
- model: modelName,
259
- messages: request.messages.map((msg) => {
490
+ const requestData = {
491
+ model: modelName,
492
+ messages: request.messages.map((msg) => {
493
+ if (msg.role === "assistant" && msg.toolCalls && msg.toolCalls.length) {
260
494
  return {
261
- role: msg.role,
262
- content: msg.content,
495
+ role: "assistant",
496
+ content: msg.content || "",
497
+ tool_calls: msg.toolCalls.map((toolCall) => {
498
+ return {
499
+ function: {
500
+ name: toolCall.name,
501
+ arguments: toolCall.arguments,
502
+ },
503
+ };
504
+ }),
263
505
  };
264
- }),
265
- stream: false,
266
- options: {
267
- temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7,
268
- },
269
- },
506
+ }
507
+ return {
508
+ role: msg.role,
509
+ content: msg.content,
510
+ };
511
+ }),
512
+ stream: false,
513
+ options: Object.assign({ temperature: (_a = request.temperature) !== null && _a !== void 0 ? _a : 0.7 }, (request.maxTokens ? { num_predict: request.maxTokens } : {})),
514
+ };
515
+ if (request.tools && request.tools.length > 0) {
516
+ requestData["tools"] = this.toOpenAITools(request.tools);
517
+ }
518
+ const response = await API.post({
519
+ url: URL.fromString(`${config.baseUrl}/api/chat`),
520
+ data: requestData,
270
521
  headers: {
271
522
  "Content-Type": "application/json",
272
523
  },
@@ -290,8 +541,35 @@ class LLMService {
290
541
  if (!message) {
291
542
  throw new BadDataException("No response from Ollama");
292
543
  }
544
+ const rawToolCalls = message["tool_calls"];
545
+ let toolCalls = undefined;
546
+ if (rawToolCalls && rawToolCalls.length > 0) {
547
+ toolCalls = rawToolCalls.map((rawToolCall, index) => {
548
+ const fn = rawToolCall["function"] || {};
549
+ let parsedArguments = {};
550
+ let parseError = undefined;
551
+ const rawArguments = fn["arguments"];
552
+ if (typeof rawArguments === "string") {
553
+ const parsed = this.parseToolCallArguments(rawArguments);
554
+ parsedArguments = parsed.arguments;
555
+ parseError = parsed.error;
556
+ }
557
+ else if (rawArguments && typeof rawArguments === "object") {
558
+ parsedArguments = rawArguments;
559
+ }
560
+ // Ollama does not return tool-call ids; synthesize stable ones.
561
+ return {
562
+ id: `tool_call_${index}`,
563
+ name: fn["name"] || "",
564
+ arguments: parsedArguments,
565
+ argumentsParseError: parseError,
566
+ };
567
+ });
568
+ }
293
569
  return {
294
- content: message["content"],
570
+ content: message["content"] || "",
571
+ toolCalls: toolCalls,
572
+ stopReason: toolCalls && toolCalls.length > 0 ? "tool_use" : "stop",
295
573
  usage: undefined, // Ollama doesn't provide token usage in the same way
296
574
  };
297
575
  }
@@ -301,6 +579,12 @@ class LLMService {
301
579
  * ?api-version=... in their configured base URL.
302
580
  */
303
581
  LLMService.AZURE_OPENAI_DEFAULT_API_VERSION = "2024-10-21";
582
+ /*
583
+ * Anthropic wire format. System message is hoisted, tool results ride in
584
+ * user messages as tool_result blocks, and max_tokens is required by the
585
+ * API.
586
+ */
587
+ LLMService.ANTHROPIC_DEFAULT_MAX_TOKENS = 4096;
304
588
  export default LLMService;
305
589
  __decorate([
306
590
  CaptureSpan(),
@@ -1 +1 @@
1
- {"version":3,"file":"LLMService.js","sourceRoot":"","sources":["../../../../../Server/Utils/LLM/LLMService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LLMService.js","sourceRoot":"","sources":["../../../../../Server/Utils/LLM/LLMService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AAErE,OAAO,GAAG,MAAM,wBAAwB,CAAC;AAEzC,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,OAAO,MAAM,4BAA4B,CAAC;AACjD,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,MAAyB,MAAM,WAAW,CAAC;AAClD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AA0DnD,MAAqB,UAAU;IAET,AAAb,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,OAA6B;QAE7B,MAAM,MAAM,GAAsB,OAAO,CAAC,iBAAiB,CAAC;QAE5D,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,OAAO,CAAC,IAAI,CAAC;YAClB,KAAK,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,OAAO,CAAC,gBAAgB;gBAC3B,OAAO,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnE,KAAK,OAAO,CAAC,WAAW;gBACtB,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,KAAK,OAAO,CAAC,SAAS;gBACpB,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,KAAK,OAAO,CAAC,MAAM;gBACjB,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzD;gBACE,MAAM,IAAI,gBAAgB,CAAC,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;OAEG;IAEK,MAAM,CAAC,gBAAgB,CAC7B,QAA2B;QAE3B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAe,EAAE,EAAE;YACtC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtE,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;oBAC5B,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAqB,EAAE,EAAE;wBACtD,OAAO;4BACL,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ,CAAC,IAAI;gCACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;6BAC9C;yBACF,CAAC;oBACJ,CAAC,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,YAAY,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;oBAClC,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,aAAa,CAC1B,KAA+B;QAE/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE;YAC3C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,WAAW;iBAC7B;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAAmB;QAEnB,MAAM,YAAY,GAA0B,OAAO,CAAC,YAAY,CAEnD,CAAC;QAEd,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAuB,EAAE,KAAa,EAAE,EAAE;YACjE,MAAM,EAAE,GAAgB,WAAW,CAAC,UAAU,CAAgB,IAAI,EAAE,CAAC;YACrE,MAAM,MAAM,GACV,IAAI,CAAC,sBAAsB,CAAE,EAAE,CAAC,WAAW,CAAY,IAAI,IAAI,CAAC,CAAC;YAEnE,OAAO;gBACL,EAAE,EAAG,WAAW,CAAC,IAAI,CAAY,IAAI,aAAa,KAAK,EAAE;gBACzD,IAAI,EAAG,EAAE,CAAC,MAAM,CAAY,IAAI,EAAE;gBAClC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,mBAAmB,EAAE,MAAM,CAAC,KAAK;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,sBAAsB,CAAC,YAAoB;QAIxD,IAAI,CAAC;YACH,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACjD,CAAC;QAAC,WAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAyB,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,SAAS,EAAE,MAAoB,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,wCAAwC;aAChD,CAAC;QACJ,CAAC;QAAC,WAAM,CAAC;YACP,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,6DAA6D;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,sBAAsB,CACnC,SAAiB,EACjB,OAA6B;;QAE7B,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjD,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,GAAG;SACxC,CAAC;QAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,QAAoB,EACpB,YAAoB;QAEpB,MAAM,OAAO,GAAsB,QAAQ,CAAC,SAAS,CAAsB,CAAC;QAE5E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAe,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAe,CAAC;QACjE,MAAM,KAAK,GAAe,QAAQ,CAAC,OAAO,CAAe,CAAC;QAC1D,MAAM,SAAS,GACb,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAErC,OAAO;YACL,OAAO,EAAG,OAAO,CAAC,SAAS,CAAY,IAAI,EAAE;YAC7C,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;YACnE,KAAK,EAAE,KAAK;gBACV,CAAC,CAAC;oBACE,YAAY,EAAE,KAAK,CAAC,eAAe,CAAW;oBAC9C,gBAAgB,EAAE,KAAK,CAAC,mBAAmB,CAAW;oBACtD,WAAW,EAAE,KAAK,CAAC,cAAc,CAAW;iBAC7C;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,MAAM,CAAC,uCAAuC,CACpD,OAAe;QAEf,MAAM,GAAG,GAAW,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC,yEAAyE;QACzE,MAAM,aAAa,GAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GACZ,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,eAAe,GACnB,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE7D,MAAM,UAAU,GAAW,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,KAAK,GACT,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/D,IAAI,IAAI,GACN,UAAU,IAAI,CAAC;YACb,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;YAC1C,CAAC,CAAC,eAAe,CAAC;QAEtB;;;WAGG;QACH,MAAM,WAAW,GAAW,0BAA0B,CAAC;QACvD,IAAI,GAAG,IAAI;aACR,OAAO,CAAC,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE;YACvC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC,CAAC;aACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvB,IAAI,IAAY,CAAC;QACjB,MAAM,iBAAiB,GAAW,uBAAuB,CAAC;QAC1D,MAAM,qBAAqB,GAAW,mCAAmC,CAAC;QAE1E,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,oDAAoD;YACpD,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C;;;;eAIG;YACH,IAAI,GAAG,GAAG,IAAI,mBAAmB,CAAC;QACpC,CAAC;aAAM,CAAC;YACN;;;eAGG;YACH,IAAI,GAAG,GAAG,IAAI,sBAAsB,CAAC;QACvC,CAAC;QAED,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC;IACtC,CAAC;IAGoB,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAChD,MAAyB,EACzB,OAA6B;QAE7B;;;;;;WAMG;QACH,MAAM,yBAAyB,GAC7B,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC;QAE9C,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,gBAAgB,CAAC,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,yBAAyB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,gBAAgB,CACxB,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QAED,IAAI,yBAAyB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,gBAAgB,CACxB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAA2B;YAC9C,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,2BAA2B;YAC7C,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,gCAAgC;YAChD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,2BAA2B;SAC/C,CAAC;QAEF,MAAM,aAAa,GAA2B;YAC5C,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;YAC1B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,yBAAyB;YACzC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,sBAAsB;SAC1C,CAAC;QAEF,MAAM,OAAO,GACX,MAAM,CAAC,OAAO;YACd,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/B,2BAA2B,CAAC;QAC9B,MAAM,SAAS,GACb,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;QAChE,MAAM,QAAQ,GACZ,MAAM,GAAG,CAAC,IAAI,CAAa;YACzB,GAAG,EAAE,GAAG,CAAC,UAAU,CACjB,IAAI,CAAC,uCAAuC,CAAC,OAAO,CAAC,CACtD;YACD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;YACrD,OAAO,kBACL,cAAc,EAAE,kBAAkB,IAM/B,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;gBAC9C,CAAC,CAAC,EAAE,CAAC,CACR;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,kBAAkB,EAAE,IAAI;gBACxB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEL,MAAM,aAAa,GAAkB;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,OAAO,OAAO,EAAE,aAAa,CAAC,CAAC;YACjE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACtC,MAAM,IAAI,gBAAgB,CACxB,GAAG,MAAM,CAAC,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAC7B,QAAQ,CAAC,QAAsB,EAC/B,MAAM,CAAC,OAAO,CACf,CAAC;IACJ,CAAC;IASO,MAAM,CAAC,kCAAkC,CAAC,OAAe;QAC/D,MAAM,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,UAAU,GAAW,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,QAAQ,GACZ,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,MAAM,SAAS,GACb,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3D,MAAM,MAAM,GAAoB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,GAAG,QAAQ,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7D,CAAC;IAGoB,AAAb,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAC3C,MAAyB,EACzB,OAA6B;QAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,gBAAgB,CACxB,8GAA8G,CAC/G,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAW,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC;QACvD,MAAM,UAAU,GAAW,UAAU,CAAC,kCAAkC,CACtE,MAAM,CAAC,OAAO,CACf,CAAC;QAEF,MAAM,QAAQ,GACZ,MAAM,GAAG,CAAC,IAAI,CAAa;YACzB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;YACrD,OAAO,EAAE;gBACP,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,kBAAkB,EAAE,IAAI;gBACxB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEL,MAAM,aAAa,GAAkB;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACtC,MAAM,IAAI,gBAAgB,CACxB,2BAA2B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAC7B,QAAQ,CAAC,QAAsB,EAC/B,cAAc,CACf,CAAC;IACJ,CAAC;IAUO,MAAM,CAAC,mBAAmB,CAChC,QAA2B;QAE3B,MAAM,iBAAiB,GAAsB,EAAE,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,SAAS,CAAC,qBAAqB;YACjC,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtE,MAAM,aAAa,GAAsB,EAAE,CAAC;gBAE5C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAED,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBACrC,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,KAAK,EAAE,QAAQ,CAAC,SAAS;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAED,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,eAAe,GAAe;oBAClC,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;oBACjC,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;gBAEF;;;mBAGG;gBACH,MAAM,WAAW,GACf,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAElD,IACE,WAAW;oBACX,WAAW,CAAC,MAAM,CAAC,KAAK,MAAM;oBAC9B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EACrC,CAAC;oBACA,WAAW,CAAC,SAAS,CAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,IAAI,CAAC;wBACrB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,CAAC,eAAe,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;YAED,iBAAiB,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAGoB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACzC,MAAyB,EACzB,OAA6B;;QAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAW,MAAM,CAAC,OAAO,IAAI,8BAA8B,CAAC;QACzE,MAAM,SAAS,GAAW,MAAM,CAAC,SAAS,IAAI,0BAA0B,CAAC;QAEzE,IAAI,aAAa,GAAW,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAe;YAC9B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpD,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,GAAG;YACvC,kDAAkD;YAClD,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,4BAA4B;SACzE,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;QACxC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE;gBACnE,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,YAAY,EAAE,IAAI,CAAC,WAAW;iBAC/B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GACZ,MAAM,GAAG,CAAC,IAAI,CAAa;YACzB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,WAAW,CAAC;YAC1C,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,mBAAmB,EAAE,YAAY;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,kBAAkB,EAAE,IAAI;gBACxB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEL,MAAM,sBAAsB,GAAkB;YAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YAC/C,MAAM,IAAI,gBAAgB,CACxB,wBAAwB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAe,QAAQ,CAAC,QAAsB,CAAC;QAC7D,MAAM,OAAO,GAAsB,QAAQ,CAAC,SAAS,CAAsB,CAAC;QAE5E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAW,OAAO;aAChC,MAAM,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,KAAiB,EAAE,EAAE;YACzB,OAAO,KAAK,CAAC,MAAM,CAAW,CAAC;QACjC,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,MAAM,SAAS,GAAuB,OAAO;aAC1C,MAAM,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;QACtC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,KAAiB,EAAE,EAAE;YACzB,OAAO;gBACL,EAAE,EAAG,KAAK,CAAC,IAAI,CAAY,IAAI,EAAE;gBACjC,IAAI,EAAG,KAAK,CAAC,MAAM,CAAY,IAAI,EAAE;gBACrC,SAAS,EAAG,KAAK,CAAC,OAAO,CAAgB,IAAI,EAAE;aAChD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,KAAK,GAAe,QAAQ,CAAC,OAAO,CAAe,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACvD,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;YACxE,KAAK,EAAE,KAAK;gBACV,CAAC,CAAC;oBACE,YAAY,EAAE,KAAK,CAAC,cAAc,CAAW;oBAC7C,gBAAgB,EAAE,KAAK,CAAC,eAAe,CAAW;oBAClD,WAAW,EACT,CAAE,KAAK,CAAC,cAAc,CAAY,IAAI,CAAC,CAAC;wBACxC,CAAE,KAAK,CAAC,eAAe,CAAY,IAAI,CAAC,CAAC;iBAC5C;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED;;;;OAIG;IAEkB,AAAb,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,MAAyB,EACzB,OAA6B;;QAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,SAAS,GAAW,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC;QAEvD,MAAM,WAAW,GAAe;YAC9B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAe,EAAE,EAAE;gBACjD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACtE,OAAO;wBACL,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;wBAC1B,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAqB,EAAE,EAAE;4BACtD,OAAO;gCACL,QAAQ,EAAE;oCACR,IAAI,EAAE,QAAQ,CAAC,IAAI;oCACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;iCAC9B;6BACF,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC,CAAC;YACF,MAAM,EAAE,KAAK;YACb,OAAO,kBACL,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,GAAG,IACpC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE;SACF,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,QAAQ,GACZ,MAAM,GAAG,CAAC,IAAI,CAAa;YACzB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC;YACjD,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,kBAAkB,EAAE,IAAI;gBACxB,OAAO,EAAE,MAAM,EAAE,2CAA2C;aAC7D;SACF,CAAC,CAAC;QAEL,MAAM,mBAAmB,GAAkB;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC5C,MAAM,IAAI,gBAAgB,CACxB,qBAAqB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CACzD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAe,QAAQ,CAAC,QAAsB,CAAC;QAC7D,MAAM,OAAO,GAAe,QAAQ,CAAC,SAAS,CAAe,CAAC;QAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,YAAY,GAA0B,OAAO,CAAC,YAAY,CAEnD,CAAC;QAEd,IAAI,SAAS,GAAmC,SAAS,CAAC;QAE1D,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAuB,EAAE,KAAa,EAAE,EAAE;gBACtE,MAAM,EAAE,GAAgB,WAAW,CAAC,UAAU,CAAgB,IAAI,EAAE,CAAC;gBAErE,IAAI,eAAe,GAAe,EAAE,CAAC;gBACrC,IAAI,UAAU,GAAuB,SAAS,CAAC;gBAC/C,MAAM,YAAY,GAAY,EAAE,CAAC,WAAW,CAAC,CAAC;gBAE9C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,MAAM,GACV,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;oBAC5C,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;oBACnC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,CAAC;qBAAM,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oBAC5D,eAAe,GAAG,YAA0B,CAAC;gBAC/C,CAAC;gBAED,gEAAgE;gBAChE,OAAO;oBACL,EAAE,EAAE,aAAa,KAAK,EAAE;oBACxB,IAAI,EAAG,EAAE,CAAC,MAAM,CAAY,IAAI,EAAE;oBAClC,SAAS,EAAE,eAAe;oBAC1B,mBAAmB,EAAE,UAAU;iBAChC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAG,OAAO,CAAC,SAAS,CAAY,IAAI,EAAE;YAC7C,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;YACnE,KAAK,EAAE,SAAS,EAAE,qDAAqD;SACxE,CAAC;IACJ,CAAC;;AA7YD;;;GAGG;AACqB,2CAAgC,GACtD,YAAY,CAAC;AAwEf;;;;GAIG;AAEqB,uCAA4B,GAAW,IAAI,CAAC;eAvbjD,UAAU;AAET;IADnB,WAAW,EAAE;;;;qCAqBb;AAmPoB;IADpB,WAAW,EAAE;;;;qDA0Fb;AA0BoB;IADpB,WAAW,EAAE;;;;gDAoDb;AA+EoB;IADpB,WAAW,EAAE;;;;8CAuHb;AAQoB;IADpB,WAAW,EAAE;;;;2CAsHb"}