hagiscript-sdk 0.2.9-dev.1780142424.1.dedbfb7

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 (86) hide show
  1. package/README.md +25 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/package.json +38 -0
  4. package/dist/src/index.d.ts +24 -0
  5. package/dist/src/index.js +27 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/runtime/command-launch.d.ts +41 -0
  8. package/dist/src/runtime/command-launch.js +100 -0
  9. package/dist/src/runtime/command-launch.js.map +1 -0
  10. package/dist/src/runtime/component-service-manager.d.ts +71 -0
  11. package/dist/src/runtime/component-service-manager.js +367 -0
  12. package/dist/src/runtime/component-service-manager.js.map +1 -0
  13. package/dist/src/runtime/dotnet-installer.d.ts +39 -0
  14. package/dist/src/runtime/dotnet-installer.js +282 -0
  15. package/dist/src/runtime/dotnet-installer.js.map +1 -0
  16. package/dist/src/runtime/download-cache.d.ts +7 -0
  17. package/dist/src/runtime/download-cache.js +110 -0
  18. package/dist/src/runtime/download-cache.js.map +1 -0
  19. package/dist/src/runtime/manifest-manager.d.ts +57 -0
  20. package/dist/src/runtime/manifest-manager.js +188 -0
  21. package/dist/src/runtime/manifest-manager.js.map +1 -0
  22. package/dist/src/runtime/node-download.d.ts +13 -0
  23. package/dist/src/runtime/node-download.js +78 -0
  24. package/dist/src/runtime/node-download.js.map +1 -0
  25. package/dist/src/runtime/node-extract.d.ts +18 -0
  26. package/dist/src/runtime/node-extract.js +170 -0
  27. package/dist/src/runtime/node-extract.js.map +1 -0
  28. package/dist/src/runtime/node-installer.d.ts +43 -0
  29. package/dist/src/runtime/node-installer.js +114 -0
  30. package/dist/src/runtime/node-installer.js.map +1 -0
  31. package/dist/src/runtime/node-platform.d.ts +15 -0
  32. package/dist/src/runtime/node-platform.js +51 -0
  33. package/dist/src/runtime/node-platform.js.map +1 -0
  34. package/dist/src/runtime/node-release.d.ts +28 -0
  35. package/dist/src/runtime/node-release.js +149 -0
  36. package/dist/src/runtime/node-release.js.map +1 -0
  37. package/dist/src/runtime/node-verify.d.ts +30 -0
  38. package/dist/src/runtime/node-verify.js +102 -0
  39. package/dist/src/runtime/node-verify.js.map +1 -0
  40. package/dist/src/runtime/npm-global.d.ts +28 -0
  41. package/dist/src/runtime/npm-global.js +77 -0
  42. package/dist/src/runtime/npm-global.js.map +1 -0
  43. package/dist/src/runtime/npm-sync.d.ts +164 -0
  44. package/dist/src/runtime/npm-sync.js +603 -0
  45. package/dist/src/runtime/npm-sync.js.map +1 -0
  46. package/dist/src/runtime/pm2-manager.d.ts +102 -0
  47. package/dist/src/runtime/pm2-manager.js +715 -0
  48. package/dist/src/runtime/pm2-manager.js.map +1 -0
  49. package/dist/src/runtime/runtime-executor.d.ts +58 -0
  50. package/dist/src/runtime/runtime-executor.js +291 -0
  51. package/dist/src/runtime/runtime-executor.js.map +1 -0
  52. package/dist/src/runtime/runtime-manager.d.ts +92 -0
  53. package/dist/src/runtime/runtime-manager.js +798 -0
  54. package/dist/src/runtime/runtime-manager.js.map +1 -0
  55. package/dist/src/runtime/runtime-manifest.d.ts +106 -0
  56. package/dist/src/runtime/runtime-manifest.js +450 -0
  57. package/dist/src/runtime/runtime-manifest.js.map +1 -0
  58. package/dist/src/runtime/runtime-paths.d.ts +45 -0
  59. package/dist/src/runtime/runtime-paths.js +138 -0
  60. package/dist/src/runtime/runtime-paths.js.map +1 -0
  61. package/dist/src/runtime/runtime-state.d.ts +45 -0
  62. package/dist/src/runtime/runtime-state.js +82 -0
  63. package/dist/src/runtime/runtime-state.js.map +1 -0
  64. package/dist/src/runtime/server-config.d.ts +21 -0
  65. package/dist/src/runtime/server-config.js +169 -0
  66. package/dist/src/runtime/server-config.js.map +1 -0
  67. package/dist/src/runtime/server-manager.d.ts +107 -0
  68. package/dist/src/runtime/server-manager.js +946 -0
  69. package/dist/src/runtime/server-manager.js.map +1 -0
  70. package/dist/src/runtime/server-version-state.d.ts +43 -0
  71. package/dist/src/runtime/server-version-state.js +156 -0
  72. package/dist/src/runtime/server-version-state.js.map +1 -0
  73. package/dist/src/runtime/seven-zip-extract.d.ts +15 -0
  74. package/dist/src/runtime/seven-zip-extract.js +104 -0
  75. package/dist/src/runtime/seven-zip-extract.js.map +1 -0
  76. package/dist/src/runtime/tool-sync-catalog.config.json +59 -0
  77. package/dist/src/runtime/tool-sync-catalog.d.ts +48 -0
  78. package/dist/src/runtime/tool-sync-catalog.js +189 -0
  79. package/dist/src/runtime/tool-sync-catalog.js.map +1 -0
  80. package/dist/src/runtime/zip-extract.d.ts +6 -0
  81. package/dist/src/runtime/zip-extract.js +90 -0
  82. package/dist/src/runtime/zip-extract.js.map +1 -0
  83. package/dist/src/version.d.ts +7 -0
  84. package/dist/src/version.js +23 -0
  85. package/dist/src/version.js.map +1 -0
  86. package/package.json +38 -0
@@ -0,0 +1,603 @@
1
+ import { mkdir, readFile } from "node:fs/promises";
2
+ import { basename, delimiter, join } from "node:path";
3
+ import semver from "semver";
4
+ import { installGlobalPackage, listGlobalPackages, NpmCommandError } from "./npm-global.js";
5
+ import { getDefaultRuntimeManifestPath, loadRuntimeManifest } from "./runtime-manifest.js";
6
+ import { verifyNodeRuntime } from "./node-verify.js";
7
+ import { buildToolSyncPackageSet, ToolSyncCatalogValidationError } from "./tool-sync-catalog.js";
8
+ export class NpmSyncError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "NpmSyncError";
12
+ }
13
+ }
14
+ export class NpmManifestValidationError extends NpmSyncError {
15
+ errors;
16
+ constructor(errors) {
17
+ super(`Manifest validation failed: ${errors.join("; ")}`);
18
+ this.name = "NpmManifestValidationError";
19
+ this.errors = errors;
20
+ }
21
+ }
22
+ export class NpmSyncCommandError extends NpmSyncError {
23
+ packageName;
24
+ fallbackPolicy;
25
+ registryMirror;
26
+ fallbackRegistry;
27
+ fallbackAttempted;
28
+ command;
29
+ args;
30
+ stdout;
31
+ stderr;
32
+ mirrorContext;
33
+ officialContext;
34
+ constructor(message, error, options = {}) {
35
+ super(message);
36
+ this.name = "NpmSyncCommandError";
37
+ this.packageName = options.packageName;
38
+ this.fallbackPolicy = options.fallbackPolicy ?? "auto";
39
+ this.registryMirror = options.registryMirror;
40
+ this.fallbackRegistry = options.fallbackRegistry;
41
+ this.fallbackAttempted = Boolean(options.officialError);
42
+ this.command = error.context.command;
43
+ this.args = error.context.args;
44
+ this.stdout = error.context.stdout;
45
+ this.stderr = error.context.stderr;
46
+ this.mirrorContext = options.mirrorError?.context;
47
+ this.officialContext = options.officialError?.context;
48
+ }
49
+ }
50
+ export async function loadNpmSyncManifest(manifestPath) {
51
+ let parsed;
52
+ try {
53
+ parsed = JSON.parse(await readFile(manifestPath, "utf8"));
54
+ }
55
+ catch (error) {
56
+ const message = error instanceof Error ? error.message : String(error);
57
+ throw new NpmSyncError(`Failed to read manifest ${manifestPath}: ${message}`);
58
+ }
59
+ return validateNpmSyncManifest(parsed);
60
+ }
61
+ export async function loadNpmSyncManifestFromRuntimeManifest(manifestPath = getDefaultRuntimeManifestPath()) {
62
+ const runtimeManifest = await loadRuntimeManifest({ manifestPath });
63
+ return validateEmbeddedNpmSyncManifest(runtimeManifest);
64
+ }
65
+ export function validateNpmSyncManifest(value) {
66
+ const errors = [];
67
+ if (!isRecord(value)) {
68
+ throw new NpmManifestValidationError(["manifest must be a JSON object"]);
69
+ }
70
+ const registryMirror = validateRegistryMirrorValue(value.registryMirror, "registryMirror", errors);
71
+ if (isRecord(value.tools) && !Array.isArray(value.tools)) {
72
+ return validateToolSyncManifest(value.tools, registryMirror, errors);
73
+ }
74
+ if (!isRecord(value.packages) || Array.isArray(value.packages)) {
75
+ throw new NpmManifestValidationError([
76
+ "manifest must contain a top-level packages object or tools object"
77
+ ]);
78
+ }
79
+ const packages = {};
80
+ for (const [packageName, entry] of Object.entries(value.packages)) {
81
+ if (!isValidPackageName(packageName)) {
82
+ errors.push(`invalid package name: ${packageName}`);
83
+ continue;
84
+ }
85
+ if (!isRecord(entry) || Array.isArray(entry)) {
86
+ errors.push(`${packageName} must be an object with a version range`);
87
+ continue;
88
+ }
89
+ const version = entry.version;
90
+ if (typeof version !== "string" || version.trim().length === 0) {
91
+ errors.push(`${packageName}.version must be a non-empty semver range`);
92
+ continue;
93
+ }
94
+ const normalizedRange = version.trim();
95
+ if (!semver.validRange(normalizedRange)) {
96
+ errors.push(`${packageName}.version is not a valid semver range: ${version}`);
97
+ continue;
98
+ }
99
+ const target = entry.target;
100
+ if (target !== undefined) {
101
+ if (typeof target !== "string" || target.trim().length === 0) {
102
+ errors.push(`${packageName}.target must be a non-empty npm selector`);
103
+ continue;
104
+ }
105
+ packages[packageName] = {
106
+ version: normalizedRange,
107
+ target: target.trim()
108
+ };
109
+ continue;
110
+ }
111
+ packages[packageName] = { version: normalizedRange };
112
+ }
113
+ if (errors.length > 0) {
114
+ throw new NpmManifestValidationError(errors);
115
+ }
116
+ return { packages, syncMode: "packages", registryMirror };
117
+ }
118
+ export function validateRegistryMirror(value, path = "registryMirror") {
119
+ const errors = [];
120
+ const registryMirror = validateRegistryMirrorValue(value, path, errors);
121
+ if (errors.length > 0) {
122
+ throw new NpmManifestValidationError(errors);
123
+ }
124
+ return registryMirror;
125
+ }
126
+ export function normalizeGlobalInventory(stdout) {
127
+ let parsed;
128
+ try {
129
+ parsed = JSON.parse(stdout);
130
+ }
131
+ catch (error) {
132
+ const message = error instanceof Error ? error.message : String(error);
133
+ throw new NpmSyncError(`Failed to parse npm inventory JSON: ${message}`);
134
+ }
135
+ if (!isRecord(parsed) || !isRecord(parsed.dependencies)) {
136
+ return {};
137
+ }
138
+ const installed = {};
139
+ for (const [packageName, dependency] of Object.entries(parsed.dependencies)) {
140
+ if (!isRecord(dependency) || typeof dependency.version !== "string") {
141
+ continue;
142
+ }
143
+ installed[packageName] = dependency.version;
144
+ }
145
+ return installed;
146
+ }
147
+ export function createNpmSyncPlan(manifest, installed, options = {}) {
148
+ const force = options.force ?? false;
149
+ return Object.entries(manifest.packages)
150
+ .sort(([left], [right]) => left.localeCompare(right))
151
+ .map(([packageName, entry]) => {
152
+ const installedVersion = installed[packageName];
153
+ const targetSelector = entry.target ?? entry.version;
154
+ const selectedInstallSelector = resolveInstallSelector(packageName, targetSelector, entry.target !== undefined);
155
+ const metadata = createActionMetadata(entry);
156
+ if (!installedVersion) {
157
+ return {
158
+ packageName,
159
+ requiredRange: entry.version,
160
+ targetSelector,
161
+ selectedInstallSelector,
162
+ action: "install",
163
+ ...metadata
164
+ };
165
+ }
166
+ if (semver.satisfies(installedVersion, entry.version, {
167
+ includePrerelease: true
168
+ })) {
169
+ return {
170
+ packageName,
171
+ requiredRange: entry.version,
172
+ targetSelector,
173
+ selectedInstallSelector,
174
+ installedVersion,
175
+ action: force ? "sync" : "noop",
176
+ ...metadata
177
+ };
178
+ }
179
+ return {
180
+ packageName,
181
+ requiredRange: entry.version,
182
+ targetSelector,
183
+ selectedInstallSelector,
184
+ installedVersion,
185
+ action: classifyOutOfRangeVersion(installedVersion, entry.version),
186
+ ...metadata
187
+ };
188
+ });
189
+ }
190
+ const OFFICIAL_NPM_REGISTRY = "https://registry.npmjs.org/";
191
+ export async function syncNpmGlobals(options) {
192
+ const manifestSource = await resolveNpmSyncManifestSource(options);
193
+ const manifest = manifestSource.manifest;
194
+ const registryMirrorOverride = validateRegistryMirror(options.registryMirror, "--registry-mirror");
195
+ const registryMirror = registryMirrorOverride ?? manifest.registryMirror;
196
+ const fallbackPolicy = normalizeFallbackPolicy(options.fallbackPolicy);
197
+ options.onLog?.({
198
+ type: "manifest-loaded",
199
+ manifestPath: manifestSource.manifestPath,
200
+ packageCount: Object.keys(manifest.packages).length,
201
+ syncMode: manifest.syncMode,
202
+ registryMirror
203
+ });
204
+ if (registryMirror) {
205
+ options.onLog?.({
206
+ type: "fallback-policy",
207
+ fallbackPolicy,
208
+ registryMirror,
209
+ fallbackRegistry: OFFICIAL_NPM_REGISTRY
210
+ });
211
+ if (fallbackPolicy === "mirror-only") {
212
+ options.onLog?.({ type: "mirror-only", registryMirror });
213
+ }
214
+ }
215
+ const verifyRuntime = options.verifyRuntime ?? verifyNodeRuntime;
216
+ const runtimeResult = await verifyRuntime(options.runtimePath);
217
+ if (!runtimeResult.valid ||
218
+ !runtimeResult.nodePath ||
219
+ !runtimeResult.npmPath) {
220
+ throw new NpmSyncError(`Invalid Node.js runtime ${options.runtimePath}: ${runtimeResult.failureReason ?? "node/npm validation failed"}`);
221
+ }
222
+ const runtime = {
223
+ targetDirectory: runtimeResult.targetDirectory,
224
+ nodePath: runtimeResult.nodePath,
225
+ npmPath: runtimeResult.npmPath,
226
+ nodeVersion: runtimeResult.nodeVersion ?? "unknown",
227
+ npmVersion: runtimeResult.npmVersion ?? "unknown"
228
+ };
229
+ options.onLog?.({ type: "runtime-valid", runtime });
230
+ const npmOptions = {
231
+ ...options.npmOptions,
232
+ nodePath: runtime.nodePath,
233
+ env: createRuntimeNpmEnv(runtime.targetDirectory, options.npmOptions?.env)
234
+ };
235
+ await prepareNpmGlobalPrefix(npmOptions.prefix, npmOptions.platform);
236
+ const fallbackEvents = [];
237
+ const inventoryExecution = await executeMirrorAwareNpmCommand({
238
+ commandKind: "inventory",
239
+ message: "Failed to list npm global packages",
240
+ npmOptions,
241
+ registryMirror,
242
+ fallbackPolicy,
243
+ onLog: options.onLog,
244
+ execute: (commandOptions) => listGlobalPackages(runtime.npmPath, commandOptions)
245
+ });
246
+ const inventoryResult = inventoryExecution.result;
247
+ if (inventoryExecution.fallback) {
248
+ fallbackEvents.push(inventoryExecution.fallback);
249
+ }
250
+ const installed = normalizeGlobalInventory(inventoryResult.stdout);
251
+ options.onLog?.({ type: "inventory", packages: installed });
252
+ const plan = createNpmSyncPlan(manifest, installed, {
253
+ force: options.force ?? false
254
+ });
255
+ const actions = [];
256
+ for (const action of plan) {
257
+ options.onLog?.({ type: "planned-action", action });
258
+ if (action.action === "noop") {
259
+ const result = { ...action, changed: false };
260
+ actions.push(result);
261
+ options.onLog?.({ type: "skip", action });
262
+ continue;
263
+ }
264
+ options.onLog?.({ type: "install-start", action });
265
+ const execution = await executeMirrorAwareNpmCommand({
266
+ commandKind: "install",
267
+ message: `Failed to sync package ${action.packageName}`,
268
+ packageName: action.packageName,
269
+ npmOptions,
270
+ registryMirror,
271
+ fallbackPolicy,
272
+ onLog: options.onLog,
273
+ execute: (commandOptions) => installGlobalPackage(runtime.npmPath, action.selectedInstallSelector, commandOptions)
274
+ });
275
+ const installResult = execution.result;
276
+ const result = {
277
+ ...action,
278
+ changed: true,
279
+ command: installResult.command,
280
+ args: installResult.args,
281
+ stdout: installResult.stdout,
282
+ stderr: installResult.stderr,
283
+ fallback: execution.fallback
284
+ };
285
+ actions.push(result);
286
+ if (execution.fallback) {
287
+ fallbackEvents.push(execution.fallback);
288
+ }
289
+ options.onLog?.({ type: "install-complete", action: result });
290
+ }
291
+ const summary = {
292
+ runtime,
293
+ manifestPath: manifestSource.manifestPath,
294
+ packageCount: plan.length,
295
+ syncMode: manifest.syncMode,
296
+ registryMirror,
297
+ fallbackPolicy,
298
+ fallbackUsed: fallbackEvents.length > 0,
299
+ fallbackEvents,
300
+ noopCount: actions.filter((action) => !action.changed).length,
301
+ changedCount: actions.filter((action) => action.changed).length,
302
+ actions
303
+ };
304
+ options.onLog?.({ type: "summary", summary });
305
+ return summary;
306
+ }
307
+ async function resolveNpmSyncManifestSource(options) {
308
+ if (options.manifestPath && options.runtimeManifestPath) {
309
+ throw new NpmSyncError("Specify either manifestPath or runtimeManifestPath, not both.");
310
+ }
311
+ if (options.manifestPath) {
312
+ return {
313
+ manifest: await loadNpmSyncManifest(options.manifestPath),
314
+ manifestPath: options.manifestPath
315
+ };
316
+ }
317
+ const runtimeManifestPath = options.runtimeManifestPath ?? getDefaultRuntimeManifestPath();
318
+ return {
319
+ manifest: await loadNpmSyncManifestFromRuntimeManifest(runtimeManifestPath),
320
+ manifestPath: runtimeManifestPath
321
+ };
322
+ }
323
+ function validateEmbeddedNpmSyncManifest(runtimeManifest) {
324
+ if (!runtimeManifest.npmSync) {
325
+ throw new NpmSyncError(`Runtime manifest ${runtimeManifest.manifestPath} does not define npmSync. Add npmSync.packages or npmSync.tools.`);
326
+ }
327
+ return validateNpmSyncManifest(runtimeManifest.npmSync);
328
+ }
329
+ async function executeMirrorAwareNpmCommand(options) {
330
+ const { commandKind, message, packageName, npmOptions, registryMirror, fallbackPolicy, onLog, execute } = options;
331
+ try {
332
+ return {
333
+ result: await execute(withRegistryMirror(npmOptions, registryMirror))
334
+ };
335
+ }
336
+ catch (error) {
337
+ if (!(error instanceof NpmCommandError)) {
338
+ throw error;
339
+ }
340
+ if (!registryMirror) {
341
+ throw new NpmSyncCommandError(message, error, {
342
+ packageName,
343
+ fallbackPolicy
344
+ });
345
+ }
346
+ if (fallbackPolicy === "mirror-only") {
347
+ throw new NpmSyncCommandError(message, error, {
348
+ packageName,
349
+ fallbackPolicy,
350
+ registryMirror,
351
+ mirrorError: error
352
+ });
353
+ }
354
+ try {
355
+ const result = await execute(withRegistryMirror(npmOptions, OFFICIAL_NPM_REGISTRY));
356
+ const fallback = {
357
+ commandKind,
358
+ packageName,
359
+ mirrorRegistry: registryMirror,
360
+ fallbackRegistry: OFFICIAL_NPM_REGISTRY,
361
+ retrySucceeded: true
362
+ };
363
+ onLog?.({ type: "fallback-used", fallback });
364
+ return { result, fallback };
365
+ }
366
+ catch (fallbackError) {
367
+ if (!(fallbackError instanceof NpmCommandError)) {
368
+ throw fallbackError;
369
+ }
370
+ throw new NpmSyncCommandError(message, fallbackError, {
371
+ packageName,
372
+ fallbackPolicy,
373
+ registryMirror,
374
+ fallbackRegistry: OFFICIAL_NPM_REGISTRY,
375
+ mirrorError: error,
376
+ officialError: fallbackError
377
+ });
378
+ }
379
+ }
380
+ }
381
+ function withRegistryMirror(options, registryMirror) {
382
+ if (!registryMirror) {
383
+ return { ...options };
384
+ }
385
+ return { ...options, registryMirror };
386
+ }
387
+ function resolveInstallSelector(packageName, targetSelector, hasExplicitTarget) {
388
+ if (!hasExplicitTarget) {
389
+ return `${packageName}@${targetSelector}`;
390
+ }
391
+ if (looksLikeFullPackageSelector(targetSelector)) {
392
+ return targetSelector;
393
+ }
394
+ return `${packageName}@${targetSelector}`;
395
+ }
396
+ function looksLikeFullPackageSelector(targetSelector) {
397
+ if (targetSelector.startsWith("@")) {
398
+ return true;
399
+ }
400
+ return /[@/:]/.test(targetSelector);
401
+ }
402
+ function normalizeFallbackPolicy(value) {
403
+ return value === "mirror-only" ? "mirror-only" : "auto";
404
+ }
405
+ async function prepareNpmGlobalPrefix(prefix, platform = process.platform) {
406
+ if (!prefix) {
407
+ return;
408
+ }
409
+ const requiredDirectories = platform === "win32"
410
+ ? [join(prefix, "node_modules")]
411
+ : [join(prefix, "lib", "node_modules"), join(prefix, "bin")];
412
+ await Promise.all(requiredDirectories.map((directory) => mkdir(directory, { recursive: true })));
413
+ }
414
+ function validateToolSyncManifest(value, registryMirror, existingErrors) {
415
+ if (existingErrors.length > 0) {
416
+ throw new NpmManifestValidationError([...existingErrors]);
417
+ }
418
+ try {
419
+ const selection = normalizeToolSelection(value);
420
+ const packageSet = buildToolSyncPackageSet(selection);
421
+ return {
422
+ packages: normalizeToolPackageSet(packageSet),
423
+ syncMode: "tools",
424
+ registryMirror
425
+ };
426
+ }
427
+ catch (error) {
428
+ if (error instanceof ToolSyncCatalogValidationError) {
429
+ throw new NpmManifestValidationError(error.errors);
430
+ }
431
+ throw error;
432
+ }
433
+ }
434
+ function validateRegistryMirrorValue(value, path, errors) {
435
+ if (value === undefined) {
436
+ return undefined;
437
+ }
438
+ if (typeof value !== "string") {
439
+ errors.push(`${path} must be a string URL`);
440
+ return undefined;
441
+ }
442
+ const trimmed = value.trim();
443
+ if (trimmed.length === 0) {
444
+ errors.push(`${path} must be a non-empty URL`);
445
+ return undefined;
446
+ }
447
+ let parsed;
448
+ try {
449
+ parsed = new URL(trimmed);
450
+ }
451
+ catch {
452
+ errors.push(`${path} must be an absolute http or https URL`);
453
+ return undefined;
454
+ }
455
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
456
+ errors.push(`${path} must use http or https protocol`);
457
+ return undefined;
458
+ }
459
+ return trimmed;
460
+ }
461
+ function normalizeToolSelection(value) {
462
+ const errors = [];
463
+ const optionalAgentCliSyncEnabled = Boolean(value.optionalAgentCliSyncEnabled);
464
+ const selectedOptionalAgentCliIds = normalizeStringArray(value.selectedOptionalAgentCliIds, "tools.selectedOptionalAgentCliIds", errors);
465
+ const customAgentClis = normalizeCustomAgentCliArray(value.customAgentClis, errors);
466
+ if (errors.length > 0) {
467
+ throw new NpmManifestValidationError(errors);
468
+ }
469
+ return {
470
+ optionalAgentCliSyncEnabled,
471
+ selectedOptionalAgentCliIds,
472
+ customAgentClis
473
+ };
474
+ }
475
+ function normalizeStringArray(value, path, errors) {
476
+ if (value === undefined) {
477
+ return [];
478
+ }
479
+ if (!Array.isArray(value)) {
480
+ errors.push(`${path} must be an array of strings`);
481
+ return [];
482
+ }
483
+ return value.flatMap((item, index) => {
484
+ if (typeof item !== "string") {
485
+ errors.push(`${path}[${index}] must be a string`);
486
+ return [];
487
+ }
488
+ return [item];
489
+ });
490
+ }
491
+ function normalizeCustomAgentCliArray(value, errors) {
492
+ if (value === undefined) {
493
+ return [];
494
+ }
495
+ if (!Array.isArray(value)) {
496
+ errors.push("tools.customAgentClis must be an array");
497
+ return [];
498
+ }
499
+ return value.flatMap((item, index) => {
500
+ if (!isRecord(item)) {
501
+ errors.push(`tools.customAgentClis[${index}] must be an object`);
502
+ return [];
503
+ }
504
+ const input = {
505
+ packageName: typeof item.packageName === "string" ? item.packageName : ""
506
+ };
507
+ if (typeof item.id === "string") {
508
+ input.id = item.id;
509
+ }
510
+ if (typeof item.displayName === "string") {
511
+ input.displayName = item.displayName;
512
+ }
513
+ if (typeof item.version === "string") {
514
+ input.version = item.version;
515
+ }
516
+ if (typeof item.target === "string") {
517
+ input.target = item.target;
518
+ }
519
+ return [input];
520
+ });
521
+ }
522
+ function normalizeToolPackageSet(packageSet) {
523
+ return Object.fromEntries(Object.entries(packageSet).map(([packageName, entry]) => [
524
+ packageName,
525
+ {
526
+ version: entry.version,
527
+ target: entry.target,
528
+ toolId: entry.toolId,
529
+ toolDisplayName: entry.toolDisplayName,
530
+ toolGroup: entry.toolGroup,
531
+ toolRequirement: entry.toolRequirement
532
+ }
533
+ ]));
534
+ }
535
+ function createActionMetadata(entry) {
536
+ return {
537
+ toolId: entry.toolId,
538
+ toolDisplayName: entry.toolDisplayName,
539
+ toolGroup: entry.toolGroup,
540
+ toolRequirement: entry.toolRequirement
541
+ };
542
+ }
543
+ function createRuntimeNpmEnv(runtimePath, baseEnv = process.env) {
544
+ const env = { ...baseEnv };
545
+ delete env.PREFIX;
546
+ delete env.npm_config_prefix;
547
+ delete env.NPM_CONFIG_GLOBALCONFIG;
548
+ delete env.npm_config_globalconfig;
549
+ delete env.NPM_CONFIG_USERCONFIG;
550
+ delete env.npm_config_userconfig;
551
+ const runtimeBinDirectory = process.platform === "win32" ? runtimePath : join(runtimePath, "bin");
552
+ const pathKey = process.platform === "win32" ? "Path" : "PATH";
553
+ const existingPath = process.platform === "win32" ? (env.Path ?? env.PATH ?? "") : (env.PATH ?? "");
554
+ return {
555
+ ...env,
556
+ NPM_CONFIG_PREFIX: runtimePath,
557
+ npm_config_prefix: runtimePath,
558
+ [pathKey]: [runtimeBinDirectory, existingPath].filter(Boolean).join(delimiter),
559
+ npm_config_fund: "false",
560
+ npm_config_audit: "false"
561
+ };
562
+ }
563
+ function classifyOutOfRangeVersion(installedVersion, range) {
564
+ const minimum = semver.minVersion(range);
565
+ if (minimum && semver.lt(installedVersion, minimum)) {
566
+ return "upgrade";
567
+ }
568
+ if (isAboveAllowedRange(installedVersion, range)) {
569
+ return "downgrade";
570
+ }
571
+ return "sync";
572
+ }
573
+ function isAboveAllowedRange(version, range) {
574
+ const parsed = new semver.Range(range, { includePrerelease: true });
575
+ return parsed.set.every((comparators) => comparators.some((comparator) => (comparator.operator === "<" || comparator.operator === "<=") &&
576
+ semver.gt(version, comparator.semver.version)));
577
+ }
578
+ function isValidPackageName(packageName) {
579
+ if (packageName.trim() !== packageName || packageName.length === 0) {
580
+ return false;
581
+ }
582
+ if (packageName.includes("\\") || packageName.includes("/../")) {
583
+ return false;
584
+ }
585
+ if (packageName.startsWith("@")) {
586
+ const parts = packageName.split("/");
587
+ return (parts.length === 2 &&
588
+ parts[0].startsWith("@") &&
589
+ isValidPackageNamePart(parts[0].slice(1)) &&
590
+ isValidPackageNamePart(parts[1]));
591
+ }
592
+ return !packageName.includes("/") && isValidPackageNamePart(packageName);
593
+ }
594
+ function isValidPackageNamePart(value) {
595
+ return (value.length > 0 &&
596
+ value === basename(value) &&
597
+ !value.startsWith(".") &&
598
+ !/[\s@]/u.test(value));
599
+ }
600
+ function isRecord(value) {
601
+ return typeof value === "object" && value !== null;
602
+ }
603
+ //# sourceMappingURL=npm-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-sync.js","sourceRoot":"","sources":["../../../../src/runtime/npm-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAK/B,MAAM,wBAAwB,CAAC;AAqIhC,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,YAAY;IACjD,MAAM,CAAW;IAE1B,YAAY,MAAgB;QAC1B,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAC1C,WAAW,CAAU;IACrB,cAAc,CAAwB;IACtC,cAAc,CAAU;IACxB,gBAAgB,CAAU;IAC1B,iBAAiB,CAAU;IAC3B,OAAO,CAAS;IAChB,IAAI,CAAW;IACf,MAAM,CAAS;IACf,MAAM,CAAS;IACf,aAAa,CAA4B;IACzC,eAAe,CAA4B;IAEpD,YACE,OAAe,EACf,KAAsB,EACtB,UAOI,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;IACxD,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAoB;IAEpB,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,YAAY,CACpB,2BAA2B,YAAY,KAAK,OAAO,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sCAAsC,CAC1D,YAAY,GAAG,6BAA6B,EAAE;IAE9C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IACpE,OAAO,+BAA+B,CAAC,eAAe,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,0BAA0B,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,cAAc,GAAG,2BAA2B,CAChD,KAAK,CAAC,cAAc,EACpB,gBAAgB,EAChB,MAAM,CACP,CAAC;IAEF,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,0BAA0B,CAAC;YACnC,mEAAmE;SACpE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,yCAAyC,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,2CAA2C,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CACT,GAAG,WAAW,yCAAyC,OAAO,EAAE,CACjE,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,0CAA0C,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,QAAQ,CAAC,WAAW,CAAC,GAAG;gBACtB,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;aACtB,CAAC;YACF,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,IAAI,GAAG,gBAAgB;IAEvB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc;IAEd,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,YAAY,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpE,SAAS;QACX,CAAC;QAED,SAAS,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAyB,EACzB,SAAkC,EAClC,UAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAErC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5B,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;QACrD,MAAM,uBAAuB,GAAG,sBAAsB,CACpD,WAAW,EACX,cAAc,EACd,KAAK,CAAC,MAAM,KAAK,SAAS,CAC3B,CAAC;QACF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;gBACL,WAAW;gBACX,aAAa,EAAE,KAAK,CAAC,OAAO;gBAC5B,cAAc;gBACd,uBAAuB;gBACvB,MAAM,EAAE,SAAS;gBACjB,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;QAED,IACE,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE;YAChD,iBAAiB,EAAE,IAAI;SACxB,CAAC,EACF,CAAC;YACD,OAAO;gBACL,WAAW;gBACX,aAAa,EAAE,KAAK,CAAC,OAAO;gBAC5B,cAAc;gBACd,uBAAuB;gBACvB,gBAAgB;gBAChB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC/B,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,WAAW;YACX,aAAa,EAAE,KAAK,CAAC,OAAO;YAC5B,cAAc;YACd,uBAAuB;YACvB,gBAAgB;YAChB,MAAM,EAAE,yBAAyB,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;YAClE,GAAG,QAAQ;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAuB;IAEvB,MAAM,cAAc,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACzC,MAAM,sBAAsB,GAAG,sBAAsB,CACnD,OAAO,CAAC,cAAc,EACtB,mBAAmB,CACpB,CAAC;IACF,MAAM,cAAc,GAAG,sBAAsB,IAAI,QAAQ,CAAC,cAAc,CAAC;IACzE,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM;QACnD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,cAAc;KACf,CAAC,CAAC;IACH,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,EAAE,iBAAiB;YACvB,cAAc;YACd,cAAc;YACd,gBAAgB,EAAE,qBAAqB;SACxC,CAAC,CAAC;QACH,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,iBAAiB,CAAC;IACjE,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/D,IACE,CAAC,aAAa,CAAC,KAAK;QACpB,CAAC,aAAa,CAAC,QAAQ;QACvB,CAAC,aAAa,CAAC,OAAO,EACtB,CAAC;QACD,MAAM,IAAI,YAAY,CACpB,2BAA2B,OAAO,CAAC,WAAW,KAAK,aAAa,CAAC,aAAa,IAAI,4BAA4B,EAAE,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,aAAa,CAAC,eAAe;QAC9C,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,WAAW,EAAE,aAAa,CAAC,WAAW,IAAI,SAAS;QACnD,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,SAAS;KAClD,CAAC;IACF,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,CAAC,UAAU;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,EAAE,mBAAmB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;KAC3E,CAAC;IACF,MAAM,sBAAsB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,cAAc,GAA2B,EAAE,CAAC;IAElD,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC;QAC5D,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,oCAAoC;QAC7C,UAAU;QACV,cAAc;QACd,cAAc;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAC1B,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAClD,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAChC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE;QAClD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;KAC9B,CAAC,CAAC;IACH,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAwB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC;YACnD,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,0BAA0B,MAAM,CAAC,WAAW,EAAE;YACvD,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU;YACV,cAAc;YACd,cAAc;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAC1B,oBAAoB,CAClB,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,uBAAuB,EAC9B,cAAc,CACf;SACJ,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;QACvC,MAAM,MAAM,GAAwB;YAClC,GAAG,MAAM;YACT,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,OAAO;QACP,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,cAAc;QACd,cAAc;QACd,YAAY,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC;QACvC,cAAc;QACd,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QAC7D,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QAC/D,OAAO;KACR,CAAC;IACF,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAG3C;IACC,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACxD,MAAM,IAAI,YAAY,CACpB,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC;YACzD,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GACvB,OAAO,CAAC,mBAAmB,IAAI,6BAA6B,EAAE,CAAC;IAEjE,OAAO;QACL,QAAQ,EAAE,MAAM,sCAAsC,CAAC,mBAAmB,CAAC;QAC3E,YAAY,EAAE,mBAAmB;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,eAAsC;IAEtC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,YAAY,CACpB,oBAAoB,eAAe,CAAC,YAAY,kEAAkE,CACnH,CAAC;IACJ,CAAC;IAED,OAAO,uBAAuB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAW3C;IACC,MAAM,EACJ,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,KAAK,EACL,OAAO,EACR,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,OAAO;YACL,MAAM,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;SACtE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE;gBAC5C,WAAW;gBACX,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QAED,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;YACrC,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE;gBAC5C,WAAW;gBACX,cAAc;gBACd,cAAc;gBACd,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CACtD,CAAC;YACF,MAAM,QAAQ,GAAyB;gBACrC,WAAW;gBACX,WAAW;gBACX,cAAc,EAAE,cAAc;gBAC9B,gBAAgB,EAAE,qBAAqB;gBACvC,cAAc,EAAE,IAAI;aACrB,CAAC;YACF,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,aAAa,YAAY,eAAe,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,CAAC;YACtB,CAAC;YAED,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE;gBACpD,WAAW;gBACX,cAAc;gBACd,cAAc;gBACd,gBAAgB,EAAE,qBAAqB;gBACvC,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,aAAa;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAgC,EAChC,cAAuB;IAEvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,cAAsB,EACtB,iBAA0B;IAE1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,4BAA4B,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,4BAA4B,CAAC,cAAsB;IAC1D,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAuC;IAEvC,OAAO,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAA0B,EAC1B,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,mBAAmB,GACvB,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,CAAC,GAAG,CACf,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACpC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACtC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAA8B,EAC9B,cAAkC,EAClC,cAAiC;IAEjC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,0BAA0B,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO;YACL,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC;YAC7C,QAAQ,EAAE,OAAO;YACjB,cAAc;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,8BAA8B,EAAE,CAAC;YACpD,MAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAc,EACd,IAAY,EACZ,MAAgB;IAEhB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA8B;IAE9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,2BAA2B,GAAG,OAAO,CACzC,KAAK,CAAC,2BAA2B,CAClC,CAAC;IACF,MAAM,2BAA2B,GAAG,oBAAoB,CACtD,KAAK,CAAC,2BAA2B,EACjC,mCAAmC,EACnC,MAAM,CACP,CAAC;IACF,MAAM,eAAe,GAAG,4BAA4B,CAClD,KAAK,CAAC,eAAe,EACrB,MAAM,CACP,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,2BAA2B;QAC3B,2BAA2B;QAC3B,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,IAAY,EACZ,MAAgB;IAEhB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,oBAAoB,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAc,EACd,MAAgB;IAEhB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,qBAAqB,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAA4B;YACrC,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;SAC1E,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACzC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAqD;IAErD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACvD,WAAW;QACX;YACE,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAA2B;IAK3B,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAAmB,EACnB,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,OAAO,GAAG,CAAC,MAAM,CAAC;IAClB,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAC7B,OAAO,GAAG,CAAC,uBAAuB,CAAC;IACnC,OAAO,GAAG,CAAC,uBAAuB,CAAC;IACnC,OAAO,GAAG,CAAC,qBAAqB,CAAC;IACjC,OAAO,GAAG,CAAC,qBAAqB,CAAC;IACjC,MAAM,mBAAmB,GACvB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,YAAY,GAChB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEjF,OAAO;QACL,GAAG,GAAG;QACN,iBAAiB,EAAE,WAAW;QAC9B,iBAAiB,EAAE,WAAW;QAC9B,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9E,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,gBAAwB,EACxB,KAAa;IAEb,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa;IACzD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CACtC,WAAW,CAAC,IAAI,CACd,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,UAAU,CAAC,QAAQ,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAChD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YACxB,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,CACL,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC;QACzB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}