@cogitator-ai/cli 0.5.19 → 0.6.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 (105) hide show
  1. package/README.md +105 -44
  2. package/dist/commands/add.d.ts +11 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +79 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/assistant.d.ts.map +1 -1
  7. package/dist/commands/assistant.js +14 -12
  8. package/dist/commands/assistant.js.map +1 -1
  9. package/dist/commands/build.d.ts +16 -1
  10. package/dist/commands/build.d.ts.map +1 -1
  11. package/dist/commands/build.js +53 -48
  12. package/dist/commands/build.js.map +1 -1
  13. package/dist/commands/daemon.d.ts.map +1 -1
  14. package/dist/commands/daemon.js +17 -13
  15. package/dist/commands/daemon.js.map +1 -1
  16. package/dist/commands/deploy.d.ts +59 -0
  17. package/dist/commands/deploy.d.ts.map +1 -1
  18. package/dist/commands/deploy.js +181 -99
  19. package/dist/commands/deploy.js.map +1 -1
  20. package/dist/commands/dev.d.ts +14 -0
  21. package/dist/commands/dev.d.ts.map +1 -0
  22. package/dist/commands/dev.js +84 -0
  23. package/dist/commands/dev.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +5 -0
  25. package/dist/commands/doctor.d.ts.map +1 -0
  26. package/dist/commands/doctor.js +52 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/eval.d.ts +12 -0
  29. package/dist/commands/eval.d.ts.map +1 -0
  30. package/dist/commands/eval.js +90 -0
  31. package/dist/commands/eval.js.map +1 -0
  32. package/dist/commands/init.d.ts +10 -33
  33. package/dist/commands/init.d.ts.map +1 -1
  34. package/dist/commands/init.js +89 -321
  35. package/dist/commands/init.js.map +1 -1
  36. package/dist/commands/logs.d.ts.map +1 -1
  37. package/dist/commands/logs.js +9 -6
  38. package/dist/commands/logs.js.map +1 -1
  39. package/dist/commands/mcp.d.ts +18 -0
  40. package/dist/commands/mcp.d.ts.map +1 -0
  41. package/dist/commands/mcp.js +155 -0
  42. package/dist/commands/mcp.js.map +1 -0
  43. package/dist/commands/models.d.ts.map +1 -1
  44. package/dist/commands/models.js +43 -15
  45. package/dist/commands/models.js.map +1 -1
  46. package/dist/commands/run.d.ts +17 -1
  47. package/dist/commands/run.d.ts.map +1 -1
  48. package/dist/commands/run.js +75 -28
  49. package/dist/commands/run.js.map +1 -1
  50. package/dist/commands/skill.d.ts.map +1 -1
  51. package/dist/commands/skill.js +23 -23
  52. package/dist/commands/skill.js.map +1 -1
  53. package/dist/commands/status.d.ts +21 -0
  54. package/dist/commands/status.d.ts.map +1 -1
  55. package/dist/commands/status.js +64 -39
  56. package/dist/commands/status.js.map +1 -1
  57. package/dist/commands/up.d.ts.map +1 -1
  58. package/dist/commands/up.js +26 -24
  59. package/dist/commands/up.js.map +1 -1
  60. package/dist/commands/wizard.d.ts.map +1 -1
  61. package/dist/commands/wizard.js +5 -0
  62. package/dist/commands/wizard.js.map +1 -1
  63. package/dist/index.js +9 -42
  64. package/dist/index.js.map +1 -1
  65. package/dist/program.d.ts +4 -0
  66. package/dist/program.d.ts.map +1 -0
  67. package/dist/program.js +61 -0
  68. package/dist/program.js.map +1 -0
  69. package/dist/utils/add.d.ts +81 -0
  70. package/dist/utils/add.d.ts.map +1 -0
  71. package/dist/utils/add.js +151 -0
  72. package/dist/utils/add.js.map +1 -0
  73. package/dist/utils/cli.d.ts +49 -0
  74. package/dist/utils/cli.d.ts.map +1 -0
  75. package/dist/utils/cli.js +106 -0
  76. package/dist/utils/cli.js.map +1 -0
  77. package/dist/utils/docs.d.ts +39 -0
  78. package/dist/utils/docs.d.ts.map +1 -0
  79. package/dist/utils/docs.js +198 -0
  80. package/dist/utils/docs.js.map +1 -0
  81. package/dist/utils/doctor.d.ts +41 -0
  82. package/dist/utils/doctor.d.ts.map +1 -0
  83. package/dist/utils/doctor.js +378 -0
  84. package/dist/utils/doctor.js.map +1 -0
  85. package/dist/utils/evals.d.ts +50 -0
  86. package/dist/utils/evals.d.ts.map +1 -0
  87. package/dist/utils/evals.js +78 -0
  88. package/dist/utils/evals.js.map +1 -0
  89. package/dist/utils/ollama.d.ts +5 -0
  90. package/dist/utils/ollama.d.ts.map +1 -1
  91. package/dist/utils/ollama.js +13 -5
  92. package/dist/utils/ollama.js.map +1 -1
  93. package/dist/utils/provider-models.d.ts +8 -2
  94. package/dist/utils/provider-models.d.ts.map +1 -1
  95. package/dist/utils/provider-models.js +32 -52
  96. package/dist/utils/provider-models.js.map +1 -1
  97. package/dist/utils/registry-worker.d.ts +2 -0
  98. package/dist/utils/registry-worker.d.ts.map +1 -0
  99. package/dist/utils/registry-worker.js +35 -0
  100. package/dist/utils/registry-worker.js.map +1 -0
  101. package/dist/utils/registry.d.ts +19 -0
  102. package/dist/utils/registry.d.ts.map +1 -0
  103. package/dist/utils/registry.js +58 -0
  104. package/dist/utils/registry.js.map +1 -0
  105. package/package.json +16 -10
@@ -0,0 +1,378 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import { connect } from 'node:net';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { findConfigFile, loadConfig, parseDotenv } from '@cogitator-ai/config';
6
+ import { checkApiKey, describeKeyCheck, PROVIDER_INFO } from 'create-cogitator-app';
7
+ import { listOllamaModels, resolveOllamaUrl } from './ollama.js';
8
+ function readJson(path) {
9
+ return JSON.parse(readFileSync(path, 'utf-8'));
10
+ }
11
+ function readManifest(projectDir) {
12
+ const path = join(projectDir, 'package.json');
13
+ if (!existsSync(path))
14
+ return undefined;
15
+ const parsed = readJson(path);
16
+ return typeof parsed === 'object' && parsed !== null ? parsed : undefined;
17
+ }
18
+ /** Fills `env` with the variables of the project's `.env` that it does not set already. */
19
+ export function loadProjectEnv(projectDir, env = process.env) {
20
+ const file = join(projectDir, '.env');
21
+ if (!existsSync(file))
22
+ return;
23
+ for (const [key, value] of Object.entries(parseDotenv(readFileSync(file, 'utf-8')))) {
24
+ if (env[key] === undefined)
25
+ env[key] = value;
26
+ }
27
+ }
28
+ /** Whether `version` (like `v22.23.1`) satisfies a `>=x.y.z` range, the only form engines use here. */
29
+ export function satisfiesMinimum(version, range) {
30
+ const minimum = /^>=\s*(\d+)\.(\d+)\.(\d+)/.exec(range.trim());
31
+ const actual = /^v?(\d+)\.(\d+)\.(\d+)/.exec(version.trim());
32
+ if (!minimum || !actual)
33
+ return true;
34
+ for (let i = 1; i <= 3; i++) {
35
+ const a = Number(actual[i]);
36
+ const m = Number(minimum[i]);
37
+ if (a !== m)
38
+ return a > m;
39
+ }
40
+ return true;
41
+ }
42
+ /** Variables `.env.example` lists without a leading `#`: the ones the project requires. */
43
+ export function requiredVariables(projectDir) {
44
+ const path = join(projectDir, '.env.example');
45
+ if (!existsSync(path))
46
+ return [];
47
+ return readFileSync(path, 'utf-8')
48
+ .split(/\r?\n/)
49
+ .map((line) => /^([A-Za-z_][A-Za-z0-9_]*)=/.exec(line.trim())?.[1])
50
+ .filter((name) => name !== undefined);
51
+ }
52
+ function nodeCheck(manifest, nodeVersion) {
53
+ const range = manifest?.engines?.node;
54
+ if (!range) {
55
+ return { id: 'node', label: 'Node.js', status: 'pass', detail: nodeVersion };
56
+ }
57
+ return satisfiesMinimum(nodeVersion, range)
58
+ ? { id: 'node', label: 'Node.js', status: 'pass', detail: `${nodeVersion} (needs ${range})` }
59
+ : {
60
+ id: 'node',
61
+ label: 'Node.js',
62
+ status: 'fail',
63
+ detail: `${nodeVersion}, but the project needs ${range}`,
64
+ fix: 'install a newer Node.js, for example with nvm or fnm',
65
+ };
66
+ }
67
+ function isPnpApi(value) {
68
+ return (typeof value === 'object' &&
69
+ value !== null &&
70
+ 'findPackageLocator' in value &&
71
+ typeof value.findPackageLocator === 'function' &&
72
+ 'getPackageInformation' in value &&
73
+ typeof value.getPackageInformation === 'function');
74
+ }
75
+ /** The nearest `.pnp.cjs` at or above `directory`, which a Yarn Plug'n'Play install writes. */
76
+ function findPnpFile(directory) {
77
+ for (let current = resolve(directory);; current = dirname(current)) {
78
+ const candidate = join(current, '.pnp.cjs');
79
+ if (existsSync(candidate))
80
+ return candidate;
81
+ if (dirname(current) === current)
82
+ return undefined;
83
+ }
84
+ }
85
+ function versionOf(manifestPath) {
86
+ const parsed = readJson(manifestPath);
87
+ return typeof parsed === 'object' &&
88
+ parsed !== null &&
89
+ 'version' in parsed &&
90
+ typeof parsed.version === 'string'
91
+ ? parsed.version
92
+ : '?';
93
+ }
94
+ /**
95
+ * The version of `name` the project resolves, `undefined` when it is not
96
+ * installed. Plug'n'Play installs are read through Yarn's own API, others the
97
+ * way Node looks packages up: node_modules of the project and every directory
98
+ * above it, so hoisted packages of a monorepo count.
99
+ */
100
+ export function installedVersion(projectDir, name) {
101
+ const pnpFile = findPnpFile(projectDir);
102
+ if (pnpFile) {
103
+ let api;
104
+ try {
105
+ api = createRequire(import.meta.url)(pnpFile);
106
+ }
107
+ catch {
108
+ return undefined;
109
+ }
110
+ if (!isPnpApi(api))
111
+ return undefined;
112
+ const locator = api.findPackageLocator(`${resolve(projectDir)}/`);
113
+ const reference = locator && api.getPackageInformation(locator)?.packageDependencies.get(name);
114
+ if (!reference)
115
+ return undefined;
116
+ const resolved = Array.isArray(reference) ? reference[1] : reference;
117
+ return /npm:([^#]+)$/.exec(resolved)?.[1] ?? resolved;
118
+ }
119
+ for (let current = resolve(projectDir);; current = dirname(current)) {
120
+ const manifest = join(current, 'node_modules', name, 'package.json');
121
+ if (existsSync(manifest))
122
+ return versionOf(manifest);
123
+ if (dirname(current) === current)
124
+ return undefined;
125
+ }
126
+ }
127
+ function packagesCheck(projectDir, manifest) {
128
+ const wanted = Object.keys({ ...manifest?.dependencies, ...manifest?.devDependencies }).filter((name) => name.startsWith('@cogitator-ai/'));
129
+ if (wanted.length === 0) {
130
+ return {
131
+ id: 'packages',
132
+ label: 'Cogitator packages',
133
+ status: 'warn',
134
+ detail: 'package.json depends on none',
135
+ };
136
+ }
137
+ const missing = [];
138
+ const installed = [];
139
+ for (const name of wanted) {
140
+ const version = installedVersion(projectDir, name);
141
+ if (version === undefined)
142
+ missing.push(name);
143
+ else
144
+ installed.push(`${name.slice('@cogitator-ai/'.length)}@${version}`);
145
+ }
146
+ return missing.length > 0
147
+ ? {
148
+ id: 'packages',
149
+ label: 'Cogitator packages',
150
+ status: 'fail',
151
+ detail: `not installed: ${missing.join(', ')}`,
152
+ fix: 'install the dependencies (pnpm install, npm install, ...)',
153
+ }
154
+ : { id: 'packages', label: 'Cogitator packages', status: 'pass', detail: installed.join(', ') };
155
+ }
156
+ /**
157
+ * Loads the project's `cogitator.yml` the way the project does. `${VAR}` in it
158
+ * reads `process.env`, so the command loads `.env` into it first.
159
+ */
160
+ function configCheck(projectDir) {
161
+ const path = findConfigFile(projectDir);
162
+ if (!path) {
163
+ return {
164
+ check: {
165
+ id: 'config',
166
+ label: 'cogitator.yml',
167
+ status: 'warn',
168
+ detail: 'not found, the project configures Cogitator in code only',
169
+ },
170
+ };
171
+ }
172
+ try {
173
+ const config = loadConfig({ configPath: path });
174
+ return {
175
+ check: {
176
+ id: 'config',
177
+ label: 'cogitator.yml',
178
+ status: 'pass',
179
+ detail: `model ${config.llm?.defaultModel ?? 'not set'}, memory ${config.memory?.adapter ?? 'none'}`,
180
+ },
181
+ config,
182
+ };
183
+ }
184
+ catch (error) {
185
+ return {
186
+ check: {
187
+ id: 'config',
188
+ label: 'cogitator.yml',
189
+ status: 'fail',
190
+ detail: error instanceof Error ? error.message.split('\n').slice(0, 4).join(' ') : String(error),
191
+ fix: 'fix the reported keys in cogitator.yml',
192
+ },
193
+ };
194
+ }
195
+ }
196
+ function envCheck(projectDir, env) {
197
+ const required = requiredVariables(projectDir);
198
+ const missing = required.filter((name) => !env[name]?.trim());
199
+ if (required.length === 0) {
200
+ return { id: 'env', label: 'Environment', status: 'pass', detail: 'no variables required' };
201
+ }
202
+ return missing.length > 0
203
+ ? {
204
+ id: 'env',
205
+ label: 'Environment',
206
+ status: 'fail',
207
+ detail: `missing ${missing.join(', ')}`,
208
+ fix: 'copy .env.example to .env and fill them in',
209
+ }
210
+ : { id: 'env', label: 'Environment', status: 'pass', detail: `${required.join(', ')} set` };
211
+ }
212
+ function providerOf(config) {
213
+ const model = config?.llm?.defaultModel;
214
+ return model?.includes('/') ? model.split('/')[0] : config?.llm?.defaultProvider;
215
+ }
216
+ async function modelCheck(config, env, fetcher) {
217
+ const provider = providerOf(config);
218
+ const model = config?.llm?.defaultModel;
219
+ if (!provider)
220
+ return undefined;
221
+ if (provider === 'ollama') {
222
+ const baseUrl = resolveOllamaUrl(env, config?.llm?.providers?.ollama?.baseUrl);
223
+ let models;
224
+ try {
225
+ models = await listOllamaModels(baseUrl, { apiKey: env.OLLAMA_API_KEY, timeoutMs: 3000 });
226
+ }
227
+ catch {
228
+ return {
229
+ id: 'model',
230
+ label: 'Ollama',
231
+ status: 'fail',
232
+ detail: `not reachable at ${baseUrl}`,
233
+ fix: 'start Ollama (ollama serve) or docker compose up -d ollama',
234
+ };
235
+ }
236
+ const name = model?.slice('ollama/'.length);
237
+ const tagged = (n) => (n.includes(':') ? n : `${n}:latest`);
238
+ if (name && !models.some((m) => tagged(m.name) === tagged(name))) {
239
+ return {
240
+ id: 'model',
241
+ label: 'Ollama',
242
+ status: 'fail',
243
+ detail: `${name} is not pulled`,
244
+ fix: `ollama pull ${name}`,
245
+ };
246
+ }
247
+ return {
248
+ id: 'model',
249
+ label: 'Ollama',
250
+ status: 'pass',
251
+ detail: `${baseUrl}, ${name ?? 'no default model'} ready`,
252
+ };
253
+ }
254
+ if (provider === 'openai' || provider === 'anthropic' || provider === 'google') {
255
+ const envKey = PROVIDER_INFO[provider].envKey ?? '';
256
+ const key = env[envKey] ?? (provider === 'google' ? env.GEMINI_API_KEY : undefined);
257
+ if (!key) {
258
+ return {
259
+ id: 'model',
260
+ label: PROVIDER_INFO[provider].label,
261
+ status: 'fail',
262
+ detail: `${envKey} is not set`,
263
+ fix: `set ${envKey} in .env`,
264
+ };
265
+ }
266
+ const result = await checkApiKey(provider, key, { fetch: fetcher });
267
+ const status = result.status === 'valid' ? 'pass' : result.status === 'invalid' ? 'fail' : 'warn';
268
+ return {
269
+ id: 'model',
270
+ label: PROVIDER_INFO[provider].label,
271
+ status,
272
+ detail: describeKeyCheck(envKey, result),
273
+ ...(status === 'fail' && { fix: `create a new key at ${PROVIDER_INFO[provider].keyUrl}` }),
274
+ };
275
+ }
276
+ return undefined;
277
+ }
278
+ /** Host and port of a service URL such as `redis://localhost:6379`, with the scheme's default port. */
279
+ export function endpointOf(url, defaultPort) {
280
+ try {
281
+ const parsed = new URL(url);
282
+ return {
283
+ host: parsed.hostname.replace(/^\[|\]$/g, '') || 'localhost',
284
+ port: Number(parsed.port) || defaultPort,
285
+ };
286
+ }
287
+ catch {
288
+ return undefined;
289
+ }
290
+ }
291
+ /** Whether a TCP connection to `host:port` opens within `timeoutMs`. */
292
+ export function canConnect(host, port, timeoutMs = 2000) {
293
+ return new Promise((resolve) => {
294
+ const socket = connect({ host, port });
295
+ const done = (ok) => {
296
+ socket.destroy();
297
+ resolve(ok);
298
+ };
299
+ socket.setTimeout(timeoutMs, () => done(false));
300
+ socket.once('connect', () => done(true));
301
+ socket.once('error', () => done(false));
302
+ });
303
+ }
304
+ async function memoryCheck(config) {
305
+ const memory = config?.memory;
306
+ if (!memory?.adapter || memory.adapter === 'memory' || memory.adapter === 'sqlite')
307
+ return undefined;
308
+ const target = memory.adapter === 'redis'
309
+ ? {
310
+ url: memory.redis && 'url' in memory.redis ? memory.redis.url : undefined,
311
+ port: 6379,
312
+ service: 'redis',
313
+ }
314
+ : memory.adapter === 'postgres'
315
+ ? { url: memory.postgres?.connectionString, port: 5432, service: 'postgres' }
316
+ : memory.adapter === 'mongodb'
317
+ ? { url: memory.mongodb?.uri, port: 27017, service: 'mongodb' }
318
+ : undefined;
319
+ if (!target)
320
+ return undefined;
321
+ const endpoint = target.url
322
+ ? endpointOf(target.url, target.port)
323
+ : { host: 'localhost', port: target.port };
324
+ if (!endpoint) {
325
+ return {
326
+ id: 'memory',
327
+ label: `Memory (${memory.adapter})`,
328
+ status: 'fail',
329
+ detail: 'the connection URL does not parse',
330
+ };
331
+ }
332
+ const ok = await canConnect(endpoint.host, endpoint.port);
333
+ return ok
334
+ ? {
335
+ id: 'memory',
336
+ label: `Memory (${memory.adapter})`,
337
+ status: 'pass',
338
+ detail: `${endpoint.host}:${endpoint.port} answers`,
339
+ }
340
+ : {
341
+ id: 'memory',
342
+ label: `Memory (${memory.adapter})`,
343
+ status: 'fail',
344
+ detail: `nothing listens on ${endpoint.host}:${endpoint.port}`,
345
+ fix: `docker compose up -d ${target.service}`,
346
+ };
347
+ }
348
+ /** Everything `cogitator doctor` checks, in the order it shows them. */
349
+ export async function runDoctor(context) {
350
+ const manifest = readManifest(context.projectDir);
351
+ const checks = [];
352
+ if (!manifest) {
353
+ return [
354
+ {
355
+ id: 'project',
356
+ label: 'Project',
357
+ status: 'fail',
358
+ detail: `no package.json in ${context.projectDir}`,
359
+ fix: 'run cogitator doctor in the project directory',
360
+ },
361
+ ];
362
+ }
363
+ checks.push(nodeCheck(manifest, context.nodeVersion));
364
+ checks.push(packagesCheck(context.projectDir, manifest));
365
+ const { check, config } = configCheck(context.projectDir);
366
+ checks.push(check);
367
+ checks.push(envCheck(context.projectDir, context.env));
368
+ if (context.probe) {
369
+ const model = await modelCheck(config, context.env, context.fetch);
370
+ if (model)
371
+ checks.push(model);
372
+ const memory = await memoryCheck(config);
373
+ if (memory)
374
+ checks.push(memory);
375
+ }
376
+ return checks;
377
+ }
378
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/utils/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BjE,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAE,MAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAa;IAC7D,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;SAC/B,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,QAAqC,EAAE,WAAmB;IAC3E,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/E,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;QACzC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,WAAW,KAAK,GAAG,EAAE;QAC7F,CAAC,CAAC;YACE,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,WAAW,2BAA2B,KAAK,EAAE;YACxD,GAAG,EAAE,sDAAsD;SAC5D,CAAC;AACR,CAAC;AAUD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,oBAAoB,IAAI,KAAK;QAC7B,OAAO,KAAK,CAAC,kBAAkB,KAAK,UAAU;QAC9C,uBAAuB,IAAI,KAAK;QAChC,OAAO,KAAK,CAAC,qBAAqB,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,SAAS,WAAW,CAAC,SAAiB;IACpC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,YAAoB;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,OAAO,MAAM,KAAK,QAAQ;QAC/B,MAAM,KAAK,IAAI;QACf,SAAS,IAAI,MAAM;QACnB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAClC,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,GAAG,CAAC;AACV,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,IAAY;IAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,IAAI,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACxD,CAAC;IACD,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACrE,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB,EAAE,QAAqC;IAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,CAC5F,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAC5C,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8BAA8B;SACvC,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACzC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,GAAG,EAAE,2DAA2D;SACjE;QACH,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,UAAkB;IACrC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,0DAA0D;aACnE;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,SAAS,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,SAAS,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE;aACrG;YACD,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,MAAM,EACJ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC1F,GAAG,EAAE,wCAAwC;aAC9C;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,UAAkB,EAAE,GAAuC;IAC3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC;YACE,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvC,GAAG,EAAE,4CAA4C;SAClD;QACH,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,UAAU,CAAC,MAAmC;IACrD,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC;IACxC,OAAO,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAmC,EACnC,GAAuC,EACvC,OAAiC;IAEjC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC;IACxC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,oBAAoB,OAAO,EAAE;gBACrC,GAAG,EAAE,4DAA4D;aAClE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,IAAI,gBAAgB;gBAC/B,GAAG,EAAE,eAAe,IAAI,EAAE;aAC3B,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,OAAO,KAAK,IAAI,IAAI,kBAAkB,QAAQ;SAC1D,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK;gBACpC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,MAAM,aAAa;gBAC9B,GAAG,EAAE,OAAO,MAAM,UAAU;aAC7B,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACrF,OAAO;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK;YACpC,MAAM;YACN,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;YACxC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,GAAG,EAAE,uBAAuB,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SAC3F,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,WAAW;YAC5D,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW;SACzC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,SAAS,GAAG,IAAI;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,EAAE;YAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAmC;IAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAChF,OAAO,SAAS,CAAC;IACnB,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,KAAK,OAAO;QACxB,CAAC,CAAC;YACE,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YACzE,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO;SACjB;QACH,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU;YAC7B,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;YAC7E,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;gBAC5B,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;gBAC/D,CAAC,CAAC,SAAS,CAAC;IACpB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG;QACzB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACrC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,WAAW,MAAM,CAAC,OAAO,GAAG;YACnC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,EAAE;QACP,CAAC,CAAC;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,WAAW,MAAM,CAAC,OAAO,GAAG;YACnC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,UAAU;SACpD;QACH,CAAC,CAAC;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,WAAW,MAAM,CAAC,OAAO,GAAG;YACnC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,sBAAsB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;YAC9D,GAAG,EAAE,wBAAwB,MAAM,CAAC,OAAO,EAAE;SAC9C,CAAC;AACR,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL;gBACE,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,sBAAsB,OAAO,CAAC,UAAU,EAAE;gBAClD,GAAG,EAAE,+CAA+C;aACrD;SACF,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { CogitatorConfig } from '@cogitator-ai/types';
2
+ /** What `cogitator eval` needs from an `EvalSuite`, checked at runtime on the default export. */
3
+ export interface EvalSuiteLike {
4
+ run(options?: {
5
+ maxCases?: number;
6
+ signal?: AbortSignal;
7
+ }): Promise<EvalSuiteResultLike>;
8
+ }
9
+ export interface EvalSuiteResultLike {
10
+ assertions: Array<{
11
+ name: string;
12
+ passed: boolean;
13
+ message: string;
14
+ }>;
15
+ aggregated: Record<string, {
16
+ name: string;
17
+ mean: number;
18
+ }>;
19
+ stats: {
20
+ total: number;
21
+ errors: number;
22
+ duration: number;
23
+ cost: number;
24
+ };
25
+ report(type: 'console' | 'json', options?: {
26
+ path?: string;
27
+ }): void;
28
+ }
29
+ export declare function isEvalSuite(value: unknown): value is EvalSuiteLike;
30
+ /** The eval files under `dir`, `*.eval.ts` and friends, sorted for a stable order. */
31
+ export declare function findEvalFiles(dir: string): string[];
32
+ /** The eval files to run: the arguments as given, or every file under `evals/`. */
33
+ export declare function resolveEvalFiles(projectDir: string, args: readonly string[]): string[];
34
+ /**
35
+ * The credential the default model is missing, or undefined when its provider
36
+ * has everything it needs. Evals call the model, so without a key they cannot
37
+ * run, and CI on a fork without secrets skips them instead of failing.
38
+ */
39
+ export declare function missingCredential(config: CogitatorConfig): string | undefined;
40
+ export interface SuiteOutcome {
41
+ file: string;
42
+ passed: boolean;
43
+ stats: EvalSuiteResultLike['stats'];
44
+ metrics: Record<string, number>;
45
+ assertions: EvalSuiteResultLike['assertions'];
46
+ }
47
+ /** Whether a finished suite counts as passed: every assertion holds and not every case failed. */
48
+ export declare function suitePassed(result: EvalSuiteResultLike): boolean;
49
+ export declare function outcomeOf(projectDir: string, file: string, result: EvalSuiteResultLike): SuiteOutcome;
50
+ //# sourceMappingURL=evals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evals.d.ts","sourceRoot":"","sources":["../../src/utils/evals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI3D,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACrE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAOlE;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAanD;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAOtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAc7E;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAGhE;AAED,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC1B,YAAY,CAUd"}
@@ -0,0 +1,78 @@
1
+ import { existsSync, readdirSync, statSync } from 'node:fs';
2
+ import { join, relative, resolve } from 'node:path';
3
+ import { PROVIDER_ENV, preferredEnvName } from '@cogitator-ai/config';
4
+ const EVAL_FILE = /\.eval\.(?:ts|mts|js|mjs)$/;
5
+ export function isEvalSuite(value) {
6
+ return (typeof value === 'object' &&
7
+ value !== null &&
8
+ 'run' in value &&
9
+ typeof value.run === 'function');
10
+ }
11
+ /** The eval files under `dir`, `*.eval.ts` and friends, sorted for a stable order. */
12
+ export function findEvalFiles(dir) {
13
+ if (!existsSync(dir))
14
+ return [];
15
+ const found = [];
16
+ const walk = (current) => {
17
+ for (const entry of readdirSync(current).sort()) {
18
+ if (entry === 'node_modules' || entry.startsWith('.'))
19
+ continue;
20
+ const full = join(current, entry);
21
+ if (statSync(full).isDirectory())
22
+ walk(full);
23
+ else if (EVAL_FILE.test(entry))
24
+ found.push(full);
25
+ }
26
+ };
27
+ walk(dir);
28
+ return found;
29
+ }
30
+ /** The eval files to run: the arguments as given, or every file under `evals/`. */
31
+ export function resolveEvalFiles(projectDir, args) {
32
+ if (args.length === 0)
33
+ return findEvalFiles(join(projectDir, 'evals'));
34
+ return args.flatMap((arg) => {
35
+ const full = resolve(projectDir, arg);
36
+ if (!existsSync(full))
37
+ throw new Error(`No eval file or directory at ${arg}`);
38
+ return statSync(full).isDirectory() ? findEvalFiles(full) : [full];
39
+ });
40
+ }
41
+ /**
42
+ * The credential the default model is missing, or undefined when its provider
43
+ * has everything it needs. Evals call the model, so without a key they cannot
44
+ * run, and CI on a fork without secrets skips them instead of failing.
45
+ */
46
+ export function missingCredential(config) {
47
+ const model = config.llm?.defaultModel;
48
+ const provider = model?.includes('/') ? model.split('/')[0] : config.llm?.defaultProvider;
49
+ if (!provider || !(provider in PROVIDER_ENV))
50
+ return undefined;
51
+ const settings = PROVIDER_ENV[provider];
52
+ const configured = config.llm?.providers?.[provider];
53
+ for (const setting of settings) {
54
+ if (!setting.required)
55
+ continue;
56
+ if (setting.sdkEnv?.some((name) => process.env[name]))
57
+ continue;
58
+ const value = configured?.[setting.field];
59
+ if (value === undefined || value === '')
60
+ return preferredEnvName(setting);
61
+ }
62
+ return undefined;
63
+ }
64
+ /** Whether a finished suite counts as passed: every assertion holds and not every case failed. */
65
+ export function suitePassed(result) {
66
+ const allErrored = result.stats.total > 0 && result.stats.errors === result.stats.total;
67
+ return !allErrored && result.assertions.every((assertion) => assertion.passed);
68
+ }
69
+ export function outcomeOf(projectDir, file, result) {
70
+ return {
71
+ file: relative(projectDir, file),
72
+ passed: suitePassed(result),
73
+ stats: result.stats,
74
+ metrics: Object.fromEntries(Object.entries(result.aggregated).map(([name, m]) => [name, m.mean])),
75
+ assertions: result.assertions,
76
+ };
77
+ }
78
+ //# sourceMappingURL=evals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evals.js","sourceRoot":"","sources":["../../src/utils/evals.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,11 @@ export interface OllamaRequestOptions {
13
13
  apiKey?: string;
14
14
  timeoutMs?: number;
15
15
  }
16
+ /**
17
+ * The Ollama URL to use: `configured` (a flag or cogitator.yml), else
18
+ * `OLLAMA_BASE_URL`, `OLLAMA_URL` or `OLLAMA_HOST`, each read the way Ollama
19
+ * reads `OLLAMA_HOST`, the same way `loadConfig` reads them.
20
+ */
16
21
  export declare function resolveOllamaUrl(env?: Record<string, string | undefined>, configured?: string): string;
17
22
  export declare function listOllamaModels(baseUrl: string, options?: OllamaRequestOptions): Promise<OllamaModelInfo[]>;
18
23
  export declare function readNdjson(stream: ReadableStream<Uint8Array>): AsyncGenerator<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/utils/ollama.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAKR;AAsBD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,eAAe,EAAE,CAAC,CAa5B;AAED,wBAAuB,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAgC7F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,EAClD,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAM,GACjD,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/utils/ollama.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAOR;AAsBD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,eAAe,EAAE,CAAC,CAa5B;AAED,wBAAuB,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAgC7F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,EAClD,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAM,GACjD,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -1,10 +1,18 @@
1
+ import { resolveOllamaHost } from '@cogitator-ai/config';
1
2
  export const DEFAULT_OLLAMA_URL = 'http://localhost:11434';
3
+ /**
4
+ * The Ollama URL to use: `configured` (a flag or cogitator.yml), else
5
+ * `OLLAMA_BASE_URL`, `OLLAMA_URL` or `OLLAMA_HOST`, each read the way Ollama
6
+ * reads `OLLAMA_HOST`, the same way `loadConfig` reads them.
7
+ */
2
8
  export function resolveOllamaUrl(env = process.env, configured) {
3
- const raw = configured?.trim() || env.OLLAMA_URL?.trim() || env.OLLAMA_HOST?.trim();
4
- if (!raw)
5
- return DEFAULT_OLLAMA_URL;
6
- const withScheme = /^https?:\/\//i.test(raw) ? raw : `http://${raw}`;
7
- return withScheme.replace(/\/+$/, '');
9
+ const candidates = [configured, env.OLLAMA_BASE_URL, env.OLLAMA_URL, env.OLLAMA_HOST];
10
+ for (const candidate of candidates) {
11
+ const url = resolveOllamaHost(candidate);
12
+ if (url)
13
+ return url;
14
+ }
15
+ return DEFAULT_OLLAMA_URL;
8
16
  }
9
17
  function buildHeaders(apiKey, json) {
10
18
  const headers = {};
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/utils/ollama.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/utils/ollama.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { cloudModelChoices } from 'create-cogitator-app';
1
2
  export type SetupProvider = 'anthropic' | 'openai' | 'google' | 'ollama';
2
3
  export interface ModelOption {
3
4
  label: string;
@@ -5,9 +6,14 @@ export interface ModelOption {
5
6
  hint?: string;
6
7
  }
7
8
  export declare const API_KEY_ENV: Record<Exclude<SetupProvider, 'ollama'>, string>;
8
- export declare const FALLBACK_MODELS: Record<SetupProvider, ModelOption[]>;
9
9
  export declare function isSetupProvider(value: string): value is SetupProvider;
10
10
  export declare function withProviderPrefix(provider: SetupProvider, modelId: string): string;
11
- export declare function fetchProviderModels(provider: Exclude<SetupProvider, 'ollama'>): Promise<ModelOption[]>;
11
+ /**
12
+ * The current models of a cloud provider with their prices, from the catalogue
13
+ * create-cogitator-app offers too, as `provider/model` values.
14
+ */
15
+ export declare function fetchProviderModels(provider: Exclude<SetupProvider, 'ollama'>, options?: Parameters<typeof cloudModelChoices>[1]): Promise<ModelOption[]>;
16
+ /** Small models with reliable tool calling, offered when Ollama has none installed or does not answer. */
17
+ export declare function suggestedOllamaModels(): ModelOption[];
12
18
  export declare function fetchOllamaModelOptions(baseUrl: string, apiKey?: string): Promise<ModelOption[]>;
13
19
  //# sourceMappingURL=provider-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-models.d.ts","sourceRoot":"","sources":["../../src/utils/provider-models.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,CAIxE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAuBhE,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnF;AAOD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,GACzC,OAAO,CAAC,WAAW,EAAE,CAAC,CAwBxB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxB"}
1
+ {"version":3,"file":"provider-models.d.ts","sourceRoot":"","sources":["../../src/utils/provider-models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAKlB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,CAIxE,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnF;AAOD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAC1C,OAAO,GAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAM,GACpD,OAAO,CAAC,WAAW,EAAE,CAAC,CAOxB;AAED,0GAA0G;AAC1G,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAOrD;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxB"}