ai.matey.backend 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/index.js +60 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/providers/ai21.js +331 -0
  5. package/dist/cjs/providers/ai21.js.map +1 -0
  6. package/dist/cjs/providers/anthropic.js +664 -0
  7. package/dist/cjs/providers/anthropic.js.map +1 -0
  8. package/dist/cjs/providers/anyscale.js +338 -0
  9. package/dist/cjs/providers/anyscale.js.map +1 -0
  10. package/dist/cjs/providers/aws-bedrock.js +374 -0
  11. package/dist/cjs/providers/aws-bedrock.js.map +1 -0
  12. package/dist/cjs/providers/azure-openai.js +406 -0
  13. package/dist/cjs/providers/azure-openai.js.map +1 -0
  14. package/dist/cjs/providers/cerebras.js +356 -0
  15. package/dist/cjs/providers/cerebras.js.map +1 -0
  16. package/dist/cjs/providers/cloudflare.js +359 -0
  17. package/dist/cjs/providers/cloudflare.js.map +1 -0
  18. package/dist/cjs/providers/cohere.js +368 -0
  19. package/dist/cjs/providers/cohere.js.map +1 -0
  20. package/dist/cjs/providers/deepinfra.js +343 -0
  21. package/dist/cjs/providers/deepinfra.js.map +1 -0
  22. package/dist/cjs/providers/deepseek.js +104 -0
  23. package/dist/cjs/providers/deepseek.js.map +1 -0
  24. package/dist/cjs/providers/fireworks.js +363 -0
  25. package/dist/cjs/providers/fireworks.js.map +1 -0
  26. package/dist/cjs/providers/gemini.js +292 -0
  27. package/dist/cjs/providers/gemini.js.map +1 -0
  28. package/dist/cjs/providers/groq.js +143 -0
  29. package/dist/cjs/providers/groq.js.map +1 -0
  30. package/dist/cjs/providers/huggingface.js +392 -0
  31. package/dist/cjs/providers/huggingface.js.map +1 -0
  32. package/dist/cjs/providers/lmstudio.js +144 -0
  33. package/dist/cjs/providers/lmstudio.js.map +1 -0
  34. package/dist/cjs/providers/mistral.js +288 -0
  35. package/dist/cjs/providers/mistral.js.map +1 -0
  36. package/dist/cjs/providers/nvidia.js +167 -0
  37. package/dist/cjs/providers/nvidia.js.map +1 -0
  38. package/dist/cjs/providers/ollama.js +257 -0
  39. package/dist/cjs/providers/ollama.js.map +1 -0
  40. package/dist/cjs/providers/openai.js +640 -0
  41. package/dist/cjs/providers/openai.js.map +1 -0
  42. package/dist/cjs/providers/openrouter.js +379 -0
  43. package/dist/cjs/providers/openrouter.js.map +1 -0
  44. package/dist/cjs/providers/perplexity.js +372 -0
  45. package/dist/cjs/providers/perplexity.js.map +1 -0
  46. package/dist/cjs/providers/replicate.js +340 -0
  47. package/dist/cjs/providers/replicate.js.map +1 -0
  48. package/dist/cjs/providers/together-ai.js +341 -0
  49. package/dist/cjs/providers/together-ai.js.map +1 -0
  50. package/dist/cjs/providers/xai.js +339 -0
  51. package/dist/cjs/providers/xai.js.map +1 -0
  52. package/dist/cjs/shared.js +279 -0
  53. package/dist/cjs/shared.js.map +1 -0
  54. package/dist/esm/index.js +44 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/providers/ai21.js +327 -0
  57. package/dist/esm/providers/ai21.js.map +1 -0
  58. package/dist/esm/providers/anthropic.js +660 -0
  59. package/dist/esm/providers/anthropic.js.map +1 -0
  60. package/dist/esm/providers/anyscale.js +334 -0
  61. package/dist/esm/providers/anyscale.js.map +1 -0
  62. package/dist/esm/providers/aws-bedrock.js +370 -0
  63. package/dist/esm/providers/aws-bedrock.js.map +1 -0
  64. package/dist/esm/providers/azure-openai.js +402 -0
  65. package/dist/esm/providers/azure-openai.js.map +1 -0
  66. package/dist/esm/providers/cerebras.js +352 -0
  67. package/dist/esm/providers/cerebras.js.map +1 -0
  68. package/dist/esm/providers/cloudflare.js +355 -0
  69. package/dist/esm/providers/cloudflare.js.map +1 -0
  70. package/dist/esm/providers/cohere.js +364 -0
  71. package/dist/esm/providers/cohere.js.map +1 -0
  72. package/dist/esm/providers/deepinfra.js +339 -0
  73. package/dist/esm/providers/deepinfra.js.map +1 -0
  74. package/dist/esm/providers/deepseek.js +99 -0
  75. package/dist/esm/providers/deepseek.js.map +1 -0
  76. package/dist/esm/providers/fireworks.js +359 -0
  77. package/dist/esm/providers/fireworks.js.map +1 -0
  78. package/dist/esm/providers/gemini.js +288 -0
  79. package/dist/esm/providers/gemini.js.map +1 -0
  80. package/dist/esm/providers/groq.js +138 -0
  81. package/dist/esm/providers/groq.js.map +1 -0
  82. package/dist/esm/providers/huggingface.js +387 -0
  83. package/dist/esm/providers/huggingface.js.map +1 -0
  84. package/dist/esm/providers/lmstudio.js +139 -0
  85. package/dist/esm/providers/lmstudio.js.map +1 -0
  86. package/dist/esm/providers/mistral.js +284 -0
  87. package/dist/esm/providers/mistral.js.map +1 -0
  88. package/dist/esm/providers/nvidia.js +162 -0
  89. package/dist/esm/providers/nvidia.js.map +1 -0
  90. package/dist/esm/providers/ollama.js +253 -0
  91. package/dist/esm/providers/ollama.js.map +1 -0
  92. package/dist/esm/providers/openai.js +636 -0
  93. package/dist/esm/providers/openai.js.map +1 -0
  94. package/dist/esm/providers/openrouter.js +375 -0
  95. package/dist/esm/providers/openrouter.js.map +1 -0
  96. package/dist/esm/providers/perplexity.js +368 -0
  97. package/dist/esm/providers/perplexity.js.map +1 -0
  98. package/dist/esm/providers/replicate.js +336 -0
  99. package/dist/esm/providers/replicate.js.map +1 -0
  100. package/dist/esm/providers/together-ai.js +337 -0
  101. package/dist/esm/providers/together-ai.js.map +1 -0
  102. package/dist/esm/providers/xai.js +335 -0
  103. package/dist/esm/providers/xai.js.map +1 -0
  104. package/dist/esm/shared.js +272 -0
  105. package/dist/esm/shared.js.map +1 -0
  106. package/dist/types/index.d.ts +38 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/providers/ai21.d.ts +106 -0
  109. package/dist/types/providers/ai21.d.ts.map +1 -0
  110. package/dist/types/providers/anthropic.d.ts +194 -0
  111. package/dist/types/providers/anthropic.d.ts.map +1 -0
  112. package/dist/types/providers/anyscale.d.ts +109 -0
  113. package/dist/types/providers/anyscale.d.ts.map +1 -0
  114. package/dist/types/providers/aws-bedrock.d.ts +152 -0
  115. package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
  116. package/dist/types/providers/azure-openai.d.ts +142 -0
  117. package/dist/types/providers/azure-openai.d.ts.map +1 -0
  118. package/dist/types/providers/cerebras.d.ts +130 -0
  119. package/dist/types/providers/cerebras.d.ts.map +1 -0
  120. package/dist/types/providers/cloudflare.d.ts +125 -0
  121. package/dist/types/providers/cloudflare.d.ts.map +1 -0
  122. package/dist/types/providers/cohere.d.ts +114 -0
  123. package/dist/types/providers/cohere.d.ts.map +1 -0
  124. package/dist/types/providers/deepinfra.d.ts +118 -0
  125. package/dist/types/providers/deepinfra.d.ts.map +1 -0
  126. package/dist/types/providers/deepseek.d.ts +68 -0
  127. package/dist/types/providers/deepseek.d.ts.map +1 -0
  128. package/dist/types/providers/fireworks.d.ts +127 -0
  129. package/dist/types/providers/fireworks.d.ts.map +1 -0
  130. package/dist/types/providers/gemini.d.ts +71 -0
  131. package/dist/types/providers/gemini.d.ts.map +1 -0
  132. package/dist/types/providers/groq.d.ts +83 -0
  133. package/dist/types/providers/groq.d.ts.map +1 -0
  134. package/dist/types/providers/huggingface.d.ts +154 -0
  135. package/dist/types/providers/huggingface.d.ts.map +1 -0
  136. package/dist/types/providers/lmstudio.d.ts +88 -0
  137. package/dist/types/providers/lmstudio.d.ts.map +1 -0
  138. package/dist/types/providers/mistral.d.ts +65 -0
  139. package/dist/types/providers/mistral.d.ts.map +1 -0
  140. package/dist/types/providers/nvidia.d.ts +100 -0
  141. package/dist/types/providers/nvidia.d.ts.map +1 -0
  142. package/dist/types/providers/ollama.d.ts +59 -0
  143. package/dist/types/providers/ollama.d.ts.map +1 -0
  144. package/dist/types/providers/openai.d.ts +205 -0
  145. package/dist/types/providers/openai.d.ts.map +1 -0
  146. package/dist/types/providers/openrouter.d.ts +135 -0
  147. package/dist/types/providers/openrouter.d.ts.map +1 -0
  148. package/dist/types/providers/perplexity.d.ts +116 -0
  149. package/dist/types/providers/perplexity.d.ts.map +1 -0
  150. package/dist/types/providers/replicate.d.ts +91 -0
  151. package/dist/types/providers/replicate.d.ts.map +1 -0
  152. package/dist/types/providers/together-ai.d.ts +118 -0
  153. package/dist/types/providers/together-ai.d.ts.map +1 -0
  154. package/dist/types/providers/xai.d.ts +119 -0
  155. package/dist/types/providers/xai.d.ts.map +1 -0
  156. package/dist/types/shared.d.ts +116 -0
  157. package/dist/types/shared.d.ts.map +1 -0
  158. package/package.json +327 -0
  159. package/readme.md +86 -0
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ /**
3
+ * Replicate Backend Adapter
4
+ *
5
+ * Adapts Universal IR to Replicate Predictions API.
6
+ * Replicate has per-model API variations and async prediction workflow.
7
+ *
8
+ * @module
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ReplicateBackendAdapter = void 0;
12
+ const ai_matey_errors_1 = require("ai.matey.errors");
13
+ const ai_matey_utils_1 = require("ai.matey.utils");
14
+ const ai_matey_utils_2 = require("ai.matey.utils");
15
+ // ============================================================================
16
+ // Replicate Backend Adapter
17
+ // ============================================================================
18
+ /**
19
+ * Backend adapter for Replicate Predictions API.
20
+ *
21
+ * Features:
22
+ * - Async prediction workflow
23
+ * - Per-model API variations
24
+ * - Limited streaming support
25
+ * - Text-only (vision varies by model)
26
+ * - No function calling
27
+ * - Variable pricing per model
28
+ *
29
+ * Note: This adapter uses a simplified synchronous approach by polling.
30
+ * For production, consider using webhooks or proper async patterns.
31
+ */
32
+ class ReplicateBackendAdapter {
33
+ metadata;
34
+ config;
35
+ baseURL;
36
+ maxPollAttempts = 60; // Max 60 attempts (60 seconds)
37
+ pollInterval = 1000; // Poll every 1 second
38
+ constructor(config) {
39
+ this.config = config;
40
+ this.baseURL = config.baseURL || 'https://api.replicate.com/v1';
41
+ this.metadata = {
42
+ name: 'replicate-backend',
43
+ version: '1.0.0',
44
+ provider: 'Replicate',
45
+ capabilities: {
46
+ streaming: true, // Limited streaming support
47
+ multiModal: false, // Varies by model
48
+ tools: false, // No function calling
49
+ maxContextTokens: 4096, // Varies by model
50
+ systemMessageStrategy: 'separate-parameter', // Uses system_prompt
51
+ supportsMultipleSystemMessages: false,
52
+ supportsTemperature: true,
53
+ supportsTopP: true,
54
+ supportsTopK: true,
55
+ supportsSeed: false,
56
+ supportsFrequencyPenalty: false,
57
+ supportsPresencePenalty: false,
58
+ maxStopSequences: 0,
59
+ },
60
+ config: {
61
+ baseURL: this.baseURL,
62
+ },
63
+ };
64
+ }
65
+ /**
66
+ * Convert IR to Replicate format.
67
+ */
68
+ fromIR(request) {
69
+ const { messages, systemParameter } = (0, ai_matey_utils_1.normalizeSystemMessages)(request.messages, this.metadata.capabilities.systemMessageStrategy, this.metadata.capabilities.supportsMultipleSystemMessages);
70
+ // Build prompt from conversation history
71
+ const prompt = messages
72
+ .map((msg) => {
73
+ const content = typeof msg.content === 'string'
74
+ ? msg.content
75
+ : msg.content.map((block) => (block.type === 'text' ? block.text : '')).join('');
76
+ return `${msg.role === 'user' ? 'User' : 'Assistant'}: ${content}`;
77
+ })
78
+ .join('\n\n');
79
+ const input = {
80
+ prompt,
81
+ temperature: request.parameters?.temperature,
82
+ max_tokens: request.parameters?.maxTokens,
83
+ top_p: request.parameters?.topP,
84
+ top_k: request.parameters?.topK,
85
+ };
86
+ // Add system prompt
87
+ if (systemParameter) {
88
+ input.system_prompt =
89
+ typeof systemParameter === 'string'
90
+ ? systemParameter
91
+ : systemParameter
92
+ .map((msg) => (msg.type === 'text' ? msg.text : ''))
93
+ .join('');
94
+ }
95
+ return {
96
+ version: request.parameters?.model || this.config.defaultModel || 'meta/llama-2-70b-chat:latest',
97
+ input,
98
+ stream: request.stream || false,
99
+ };
100
+ }
101
+ /**
102
+ * Convert Replicate prediction to IR.
103
+ */
104
+ toIR(prediction, originalRequest, latencyMs) {
105
+ let content = '';
106
+ if (typeof prediction.output === 'string') {
107
+ content = prediction.output;
108
+ }
109
+ else if (Array.isArray(prediction.output)) {
110
+ content = prediction.output.join('');
111
+ }
112
+ const message = {
113
+ role: 'assistant',
114
+ content,
115
+ };
116
+ const finishReasonMap = {
117
+ succeeded: 'stop',
118
+ failed: 'stop',
119
+ canceled: 'stop',
120
+ };
121
+ return {
122
+ message,
123
+ finishReason: finishReasonMap[prediction.status] || 'stop',
124
+ usage: undefined, // Replicate doesn't provide token counts
125
+ metadata: {
126
+ ...originalRequest.metadata,
127
+ providerResponseId: prediction.id,
128
+ provenance: {
129
+ ...originalRequest.metadata.provenance,
130
+ backend: this.metadata.name,
131
+ },
132
+ custom: {
133
+ ...originalRequest.metadata.custom,
134
+ latencyMs: prediction.metrics?.predict_time
135
+ ? prediction.metrics.predict_time * 1000
136
+ : latencyMs,
137
+ },
138
+ },
139
+ raw: prediction,
140
+ };
141
+ }
142
+ /**
143
+ * Execute non-streaming request.
144
+ * Uses polling to wait for async prediction.
145
+ */
146
+ async execute(request, signal) {
147
+ try {
148
+ const replicateRequest = this.fromIR(request);
149
+ const startTime = Date.now();
150
+ // Create prediction
151
+ const createResponse = await fetch(`${this.baseURL}/predictions`, {
152
+ method: 'POST',
153
+ headers: this.getHeaders(),
154
+ body: JSON.stringify(replicateRequest),
155
+ signal,
156
+ });
157
+ if (!createResponse.ok) {
158
+ throw (0, ai_matey_errors_1.createErrorFromHttpResponse)(createResponse.status, createResponse.statusText, await createResponse.text(), { backend: this.metadata.name });
159
+ }
160
+ let prediction = (await createResponse.json());
161
+ // Poll for completion
162
+ let attempts = 0;
163
+ while (prediction.status !== 'succeeded' &&
164
+ prediction.status !== 'failed' &&
165
+ prediction.status !== 'canceled' &&
166
+ attempts < this.maxPollAttempts) {
167
+ await new Promise((resolve) => setTimeout(resolve, this.pollInterval));
168
+ const pollResponse = await fetch(prediction.urls.get, {
169
+ method: 'GET',
170
+ headers: this.getHeaders(),
171
+ signal,
172
+ });
173
+ if (!pollResponse.ok) {
174
+ throw (0, ai_matey_errors_1.createErrorFromHttpResponse)(pollResponse.status, pollResponse.statusText, await pollResponse.text(), { backend: this.metadata.name });
175
+ }
176
+ prediction = (await pollResponse.json());
177
+ attempts++;
178
+ }
179
+ if (prediction.status === 'failed') {
180
+ throw new ai_matey_errors_1.ProviderError({
181
+ code: ai_matey_errors_1.ErrorCode.PROVIDER_ERROR,
182
+ message: `Replicate prediction failed: ${prediction.error || 'Unknown error'}`,
183
+ isRetryable: false,
184
+ provenance: { backend: this.metadata.name },
185
+ });
186
+ }
187
+ if (attempts >= this.maxPollAttempts) {
188
+ throw new ai_matey_errors_1.ProviderError({
189
+ code: ai_matey_errors_1.ErrorCode.PROVIDER_ERROR,
190
+ message: 'Replicate prediction timed out',
191
+ isRetryable: true,
192
+ provenance: { backend: this.metadata.name },
193
+ });
194
+ }
195
+ return this.toIR(prediction, request, Date.now() - startTime);
196
+ }
197
+ catch (error) {
198
+ if (error instanceof ai_matey_errors_1.NetworkError || error instanceof ai_matey_errors_1.ProviderError) {
199
+ throw error;
200
+ }
201
+ throw new ai_matey_errors_1.ProviderError({
202
+ code: ai_matey_errors_1.ErrorCode.PROVIDER_ERROR,
203
+ message: `Replicate request failed: ${error instanceof Error ? error.message : String(error)}`,
204
+ isRetryable: true,
205
+ provenance: { backend: this.metadata.name },
206
+ cause: error instanceof Error ? error : undefined,
207
+ });
208
+ }
209
+ }
210
+ /**
211
+ * Execute streaming request.
212
+ * Replicate streaming is limited and varies by model.
213
+ */
214
+ async *executeStream(request, signal) {
215
+ try {
216
+ const replicateRequest = this.fromIR(request);
217
+ replicateRequest.stream = true;
218
+ const streamingConfig = (0, ai_matey_utils_2.mergeStreamingConfig)(this.config.streaming);
219
+ const effectiveMode = (0, ai_matey_utils_2.getEffectiveStreamMode)(request.streamMode, undefined, streamingConfig);
220
+ const includeBoth = streamingConfig.includeBoth || effectiveMode === 'accumulated';
221
+ const response = await fetch(`${this.baseURL}/predictions`, {
222
+ method: 'POST',
223
+ headers: {
224
+ ...this.getHeaders(),
225
+ Prefer: 'wait', // Request streaming
226
+ },
227
+ body: JSON.stringify(replicateRequest),
228
+ signal,
229
+ });
230
+ if (!response.ok) {
231
+ throw (0, ai_matey_errors_1.createErrorFromHttpResponse)(response.status, response.statusText, await response.text(), { backend: this.metadata.name });
232
+ }
233
+ if (!response.body) {
234
+ throw new ai_matey_errors_1.StreamError({
235
+ code: ai_matey_errors_1.ErrorCode.STREAM_ERROR,
236
+ message: 'No response body',
237
+ provenance: { backend: this.metadata.name },
238
+ });
239
+ }
240
+ let sequence = 0;
241
+ let contentBuffer = '';
242
+ yield {
243
+ type: 'start',
244
+ sequence: sequence++,
245
+ metadata: {
246
+ ...request.metadata,
247
+ provenance: {
248
+ ...request.metadata.provenance,
249
+ backend: this.metadata.name,
250
+ },
251
+ },
252
+ };
253
+ const reader = response.body.getReader();
254
+ const decoder = new TextDecoder();
255
+ let buffer = '';
256
+ try {
257
+ while (true) {
258
+ const { done, value } = await reader.read();
259
+ if (done) {
260
+ break;
261
+ }
262
+ buffer += decoder.decode(value, { stream: true });
263
+ // Replicate streams raw output text
264
+ if (buffer) {
265
+ const delta = buffer;
266
+ buffer = '';
267
+ contentBuffer += delta;
268
+ const contentChunk = {
269
+ type: 'content',
270
+ sequence: sequence++,
271
+ delta: delta,
272
+ role: 'assistant',
273
+ };
274
+ if (includeBoth) {
275
+ contentChunk.accumulated = contentBuffer;
276
+ }
277
+ yield contentChunk;
278
+ }
279
+ }
280
+ // Stream ended
281
+ yield {
282
+ type: 'done',
283
+ sequence: sequence++,
284
+ finishReason: 'stop',
285
+ message: { role: 'assistant', content: contentBuffer },
286
+ };
287
+ }
288
+ finally {
289
+ reader.releaseLock();
290
+ }
291
+ }
292
+ catch (error) {
293
+ yield {
294
+ type: 'error',
295
+ sequence: 0,
296
+ error: {
297
+ code: error instanceof Error ? error.name : 'UNKNOWN_ERROR',
298
+ message: error instanceof Error ? error.message : String(error),
299
+ },
300
+ };
301
+ }
302
+ }
303
+ /**
304
+ * Get HTTP headers.
305
+ */
306
+ getHeaders() {
307
+ const headers = {
308
+ 'Content-Type': 'application/json',
309
+ Authorization: `Token ${this.config.apiKey}`,
310
+ };
311
+ return { ...headers, ...this.config.headers };
312
+ }
313
+ /**
314
+ * Health check.
315
+ */
316
+ async healthCheck() {
317
+ try {
318
+ const response = await fetch(`${this.baseURL}/models`, {
319
+ method: 'GET',
320
+ headers: this.getHeaders(),
321
+ signal: AbortSignal.timeout(5000),
322
+ });
323
+ return response.ok;
324
+ }
325
+ catch {
326
+ return false;
327
+ }
328
+ }
329
+ /**
330
+ * Estimate cost.
331
+ * Replicate pricing varies significantly per model.
332
+ */
333
+ estimateCost(_request) {
334
+ // Replicate pricing is complex and per-second, not per-token
335
+ // Returning null as cost estimation is not reliable
336
+ return Promise.resolve(null);
337
+ }
338
+ }
339
+ exports.ReplicateBackendAdapter = ReplicateBackendAdapter;
340
+ //# sourceMappingURL=replicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replicate.js","sourceRoot":"","sources":["../../../src/providers/replicate.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAWH,qDAMyB;AACzB,mDAAyD;AACzD,mDAA8E;AAqC9E,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAa,uBAAuB;IAIzB,QAAQ,CAAkB;IAClB,MAAM,CAAuB;IAC7B,OAAO,CAAS;IAChB,eAAe,GAAW,EAAE,CAAC,CAAC,+BAA+B;IAC7D,YAAY,GAAW,IAAI,CAAC,CAAC,sBAAsB;IAEpE,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,8BAA8B,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI,EAAE,4BAA4B;gBAC7C,UAAU,EAAE,KAAK,EAAE,kBAAkB;gBACrC,KAAK,EAAE,KAAK,EAAE,sBAAsB;gBACpC,gBAAgB,EAAE,IAAI,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB;gBAClE,8BAA8B,EAAE,KAAK;gBACrC,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,wBAAwB,EAAE,KAAK;gBAC/B,uBAAuB,EAAE,KAAK;gBAC9B,gBAAgB,EAAE,CAAC;aACpB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAsB;QAClC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAA,wCAAuB,EAC3D,OAAO,CAAC,QAAQ,EAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,EAChD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,8BAA8B,CAC1D,CAAC;QAEF,yCAAyC;QACzC,MAAM,MAAM,GAAG,QAAQ;aACpB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,OAAO,GACX,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;gBAC7B,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACrE,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,KAAK,GAAmB;YAC5B,MAAM;YACN,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW;YAC5C,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS;YACzC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI;YAC/B,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI;SAChC,CAAC;QAEF,oBAAoB;QACpB,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,CAAC,aAAa;gBACjB,OAAO,eAAe,KAAK,QAAQ;oBACjC,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAE,eAAyB;yBACvB,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBACxD,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,OAAO;YACL,OAAO,EACL,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,8BAA8B;YACzF,KAAK;YACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;SAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,IAAI,CACT,UAA+B,EAC/B,eAA8B,EAC9B,SAAiB;QAEjB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,GAAc;YACzB,IAAI,EAAE,WAAW;YACjB,OAAO;SACR,CAAC;QAEF,MAAM,eAAe,GAAiC;YACpD,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM;SACjB,CAAC;QAEF,OAAO;YACL,OAAO;YACP,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM;YAC1D,KAAK,EAAE,SAAS,EAAE,yCAAyC;YAC3D,QAAQ,EAAE;gBACR,GAAG,eAAe,CAAC,QAAQ;gBAC3B,kBAAkB,EAAE,UAAU,CAAC,EAAE;gBACjC,UAAU,EAAE;oBACV,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU;oBACtC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;iBAC5B;gBACD,MAAM,EAAE;oBACN,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM;oBAClC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY;wBACzC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;wBACxC,CAAC,CAAC,SAAS;iBACd;aACF;YACD,GAAG,EAAE,UAAgD;SACtD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB,EAAE,MAAoB;QACxD,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,oBAAoB;YACpB,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACtC,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAA,6CAA2B,EAC/B,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,UAAU,EACzB,MAAM,cAAc,CAAC,IAAI,EAAE,EAC3B,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAChC,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAwB,CAAC;YAEtE,sBAAsB;YACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OACE,UAAU,CAAC,MAAM,KAAK,WAAW;gBACjC,UAAU,CAAC,MAAM,KAAK,QAAQ;gBAC9B,UAAU,CAAC,MAAM,KAAK,UAAU;gBAChC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAC/B,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAEvE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAK,CAAC,GAAG,EAAE;oBACrD,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;oBAC1B,MAAM;iBACP,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;oBACrB,MAAM,IAAA,6CAA2B,EAC/B,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,UAAU,EACvB,MAAM,YAAY,CAAC,IAAI,EAAE,EACzB,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAChC,CAAC;gBACJ,CAAC;gBAED,UAAU,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAAwB,CAAC;gBAChE,QAAQ,EAAE,CAAC;YACb,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,+BAAa,CAAC;oBACtB,IAAI,EAAE,2BAAS,CAAC,cAAc;oBAC9B,OAAO,EAAE,gCAAgC,UAAU,CAAC,KAAK,IAAI,eAAe,EAAE;oBAC9E,WAAW,EAAE,KAAK;oBAClB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrC,MAAM,IAAI,+BAAa,CAAC;oBACtB,IAAI,EAAE,2BAAS,CAAC,cAAc;oBAC9B,OAAO,EAAE,gCAAgC;oBACzC,WAAW,EAAE,IAAI;oBACjB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,8BAAY,IAAI,KAAK,YAAY,+BAAa,EAAE,CAAC;gBACpE,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,+BAAa,CAAC;gBACtB,IAAI,EAAE,2BAAS,CAAC,cAAc;gBAC9B,OAAO,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC9F,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,aAAa,CAAC,OAAsB,EAAE,MAAoB;QAC/D,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAA,qCAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,aAAa,GAAG,IAAA,uCAAsB,EAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAC7F,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,IAAI,aAAa,KAAK,aAAa,CAAC;YAEnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;gBAC1D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,GAAG,IAAI,CAAC,UAAU,EAAE;oBACpB,MAAM,EAAE,MAAM,EAAE,oBAAoB;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACtC,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAA,6CAA2B,EAC/B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,UAAU,EACnB,MAAM,QAAQ,CAAC,IAAI,EAAE,EACrB,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAChC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,6BAAW,CAAC;oBACpB,IAAI,EAAE,2BAAS,CAAC,YAAY;oBAC5B,OAAO,EAAE,kBAAkB;oBAC3B,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,QAAQ,EAAE;gBACpB,QAAQ,EAAE;oBACR,GAAG,OAAO,CAAC,QAAQ;oBACnB,UAAU,EAAE;wBACV,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU;wBAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;qBAC5B;iBACF;aACe,CAAC;YAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC;gBACH,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM;oBACR,CAAC;oBAED,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBAElD,oCAAoC;oBACpC,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,KAAK,GAAG,MAAM,CAAC;wBACrB,MAAM,GAAG,EAAE,CAAC;wBACZ,aAAa,IAAI,KAAK,CAAC;wBAEvB,MAAM,YAAY,GAAkB;4BAClC,IAAI,EAAE,SAAS;4BACf,QAAQ,EAAE,QAAQ,EAAE;4BACpB,KAAK,EAAE,KAAK;4BACZ,IAAI,EAAE,WAAW;yBAClB,CAAC;wBAEF,IAAI,WAAW,EAAE,CAAC;4BACf,YAAoB,CAAC,WAAW,GAAG,aAAa,CAAC;wBACpD,CAAC;wBAED,MAAM,YAAY,CAAC;oBACrB,CAAC;gBACH,CAAC;gBAED,eAAe;gBACf,MAAM;oBACJ,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,QAAQ,EAAE;oBACpB,YAAY,EAAE,MAAM;oBACpB,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE;iBACtC,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;oBAC3D,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAChE;aACe,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;SAC7C,CAAC;QAEF,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;gBACrD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAuB;QAClC,6DAA6D;QAC7D,oDAAoD;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AAtXD,0DAsXC"}