@rengler33/prov 0.1.5 → 0.1.6

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.
@@ -0,0 +1,550 @@
1
+ /**
2
+ * prov create commands implementation.
3
+ *
4
+ * Commands for declarative creation of specs and constraints:
5
+ * - spec create: Create a specification via CLI flags
6
+ * - constraint create: Create a constraint via CLI flags
7
+ *
8
+ * @see spec:declarative-creation:v1
9
+ * @see req:create:spec-basic
10
+ * @see req:create:constraint-basic
11
+ */
12
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
13
+ import { join, resolve, dirname } from 'node:path';
14
+ import { isInitialized, loadGraph, saveGraph } from '../storage.js';
15
+ import { addSpecToGraph, addConstraintToGraph } from '../graph.js';
16
+ import { computeHash, toYaml } from '../hash.js';
17
+ import { output, error, success, warn, resolveFormat } from '../output.js';
18
+ // ============================================================================
19
+ // Validation Helpers
20
+ // ============================================================================
21
+ /**
22
+ * Validate a name for use in IDs.
23
+ * Must be lowercase alphanumeric with hyphens.
24
+ * @see req:create:validation
25
+ */
26
+ function isValidName(name) {
27
+ return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);
28
+ }
29
+ /**
30
+ * Validate entity status.
31
+ */
32
+ function isValidStatus(status) {
33
+ return status === 'draft' || status === 'active' || status === 'deprecated' || status === 'archived';
34
+ }
35
+ /**
36
+ * Validate verification type.
37
+ */
38
+ function isValidVerificationType(type) {
39
+ return type === 'command' || type === 'test' || type === 'assertion' || type === 'manual';
40
+ }
41
+ /**
42
+ * Parse a requirement string in format "id:description" or "id:description:acceptance1;acceptance2"
43
+ * @see req:create:spec-requirements
44
+ */
45
+ function parseRequirement(reqStr, specName) {
46
+ const parts = reqStr.split(':');
47
+ if (parts.length < 2) {
48
+ return { error: `Invalid requirement format: ${reqStr}. Expected "id:description" or "id:description:acceptance1;acceptance2"` };
49
+ }
50
+ const [id, description, ...rest] = parts;
51
+ if (id === undefined || id === '' || !isValidName(id)) {
52
+ return { error: `Invalid requirement ID: ${id}. Must be lowercase alphanumeric with hyphens.` };
53
+ }
54
+ if (description === undefined || description === '') {
55
+ return { error: `Missing description for requirement: ${id}` };
56
+ }
57
+ const reqId = `req:${specName}:${id}`;
58
+ // Parse acceptance criteria (remaining parts joined back, then split by semicolon)
59
+ const acceptanceStr = rest.join(':');
60
+ const acceptance = acceptanceStr
61
+ ? acceptanceStr.split(';').map(a => a.trim()).filter(a => a.length > 0)
62
+ : [`${description} is implemented`];
63
+ const req = {
64
+ id: reqId,
65
+ description,
66
+ acceptance,
67
+ };
68
+ return { req };
69
+ }
70
+ /**
71
+ * Parse a dependency string in format "req-id:depends-on-id"
72
+ * @see req:create:spec-dependencies
73
+ */
74
+ function parseDependency(depStr) {
75
+ const parts = depStr.split(':');
76
+ // Handle req:spec:name:req:spec:name format
77
+ if (parts.length === 6 && parts[0] === 'req' && parts[3] === 'req') {
78
+ return { from: `req:${parts[1]}:${parts[2]}`, to: `req:${parts[4]}:${parts[5]}` };
79
+ }
80
+ // Handle short format: local-id:depends-on-local-id
81
+ if (parts.length === 2 && parts[0] !== undefined && parts[0] !== '' && parts[1] !== undefined && parts[1] !== '') {
82
+ return { from: parts[0], to: parts[1] };
83
+ }
84
+ return { error: `Invalid dependency format: ${depStr}. Expected "req-id:depends-on-id"` };
85
+ }
86
+ /**
87
+ * Parse an invariant string in format "id:rule:type:value" or "id:rule:type:value:expect"
88
+ * @see req:create:constraint-invariants
89
+ */
90
+ function parseInvariant(invStr, constraintName) {
91
+ const parts = invStr.split(':');
92
+ if (parts.length < 4) {
93
+ return { error: `Invalid invariant format: ${invStr}. Expected "id:rule:type:value" or "id:rule:type:value:expect"` };
94
+ }
95
+ const [id, rule, type, ...rest] = parts;
96
+ if (id === undefined || id === '' || !isValidName(id)) {
97
+ return { error: `Invalid invariant ID: ${id}. Must be lowercase alphanumeric with hyphens.` };
98
+ }
99
+ if (rule === undefined || rule === '') {
100
+ return { error: `Missing rule for invariant: ${id}` };
101
+ }
102
+ if (type === undefined || type === '' || !isValidVerificationType(type)) {
103
+ return { error: `Invalid verification type: ${type}. Must be command|test|assertion|manual.` };
104
+ }
105
+ // Value and optional expect (rejoin remaining parts)
106
+ const valueAndExpect = rest.join(':');
107
+ if (!valueAndExpect) {
108
+ return { error: `Missing verification value for invariant: ${id}` };
109
+ }
110
+ // Try to split off expect (last segment after last colon if type is command)
111
+ let value = valueAndExpect;
112
+ let expect;
113
+ // For command type, check if last segment looks like an expect value
114
+ // This is a heuristic - if the value contains spaces and ends with success/failure, treat it as expect
115
+ if (type === 'command') {
116
+ const lastColonIdx = valueAndExpect.lastIndexOf(':');
117
+ if (lastColonIdx > 0) {
118
+ const possibleExpect = valueAndExpect.slice(lastColonIdx + 1);
119
+ if (possibleExpect === 'success' || possibleExpect === 'failure' || possibleExpect.length < 20) {
120
+ // Looks like an expect value
121
+ value = valueAndExpect.slice(0, lastColonIdx);
122
+ expect = possibleExpect;
123
+ }
124
+ }
125
+ }
126
+ const invId = `inv:${constraintName}:${id}`;
127
+ const verification = {
128
+ type,
129
+ value,
130
+ ...(expect !== undefined ? { expect } : {}),
131
+ };
132
+ const inv = {
133
+ id: invId,
134
+ rule,
135
+ verification,
136
+ blocking: true,
137
+ };
138
+ return { inv };
139
+ }
140
+ // ============================================================================
141
+ // spec create Command
142
+ // ============================================================================
143
+ /**
144
+ * Execute the spec create command.
145
+ *
146
+ * @see req:create:spec-basic
147
+ * @see req:create:spec-requirements
148
+ * @see req:create:spec-auto-register
149
+ */
150
+ export function runSpecCreate(globalOpts, options) {
151
+ const projectRoot = globalOpts.dir ?? process.cwd();
152
+ const fmt = resolveFormat({ format: globalOpts.format });
153
+ // Check if prov is initialized (unless --no-register)
154
+ if (options.noRegister !== true && !isInitialized(projectRoot)) {
155
+ const result = {
156
+ success: false,
157
+ error: 'prov is not initialized. Run "prov init" first.',
158
+ };
159
+ outputResult(result, fmt);
160
+ process.exit(1);
161
+ }
162
+ // Validate name
163
+ if (!isValidName(options.name)) {
164
+ const result = {
165
+ success: false,
166
+ error: `Invalid name: ${options.name}. Must be lowercase alphanumeric with hyphens (e.g., "my-spec").`,
167
+ };
168
+ outputResult(result, fmt);
169
+ process.exit(1);
170
+ }
171
+ // Validate status if provided
172
+ const status = options.status ?? 'draft';
173
+ if (options.status !== undefined && !isValidStatus(options.status)) {
174
+ const result = {
175
+ success: false,
176
+ error: `Invalid status: ${options.status}. Must be draft|active|deprecated|archived.`,
177
+ };
178
+ outputResult(result, fmt);
179
+ process.exit(1);
180
+ }
181
+ // Parse requirements (first pass - without dependencies)
182
+ const parsedReqs = [];
183
+ const reqErrors = [];
184
+ if (options.req !== undefined) {
185
+ for (const reqStr of options.req) {
186
+ const { req, error: parseError } = parseRequirement(reqStr, options.name);
187
+ if (parseError !== undefined) {
188
+ reqErrors.push(parseError);
189
+ }
190
+ else if (req !== undefined) {
191
+ const shortId = req.id.split(':').pop();
192
+ parsedReqs.push({
193
+ id: req.id,
194
+ shortId,
195
+ description: req.description,
196
+ acceptance: [...req.acceptance],
197
+ });
198
+ }
199
+ }
200
+ }
201
+ if (reqErrors.length > 0) {
202
+ const result = {
203
+ success: false,
204
+ error: `Requirement parsing errors:\n ${reqErrors.join('\n ')}`,
205
+ };
206
+ outputResult(result, fmt);
207
+ process.exit(1);
208
+ }
209
+ // Parse dependencies and collect them per requirement
210
+ const dependenciesMap = new Map();
211
+ if (options.dep !== undefined) {
212
+ for (const depStr of options.dep) {
213
+ const parseResult = parseDependency(depStr);
214
+ if ('error' in parseResult) {
215
+ reqErrors.push(parseResult.error);
216
+ }
217
+ else {
218
+ const { from, to } = parseResult;
219
+ // Find the requirement
220
+ const reqInfo = parsedReqs.find(r => r.shortId === from || r.id === from || r.id.endsWith(`:${from}`));
221
+ if (reqInfo === undefined) {
222
+ reqErrors.push(`Dependency references unknown requirement: ${from}`);
223
+ }
224
+ else {
225
+ // Resolve target
226
+ const targetReq = parsedReqs.find(r => r.shortId === to || r.id === to);
227
+ const targetId = targetReq !== undefined
228
+ ? targetReq.id
229
+ : (to.startsWith('req:') ? to : `req:${options.name}:${to}`);
230
+ const deps = dependenciesMap.get(reqInfo.id) ?? [];
231
+ deps.push(targetId);
232
+ dependenciesMap.set(reqInfo.id, deps);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ if (reqErrors.length > 0) {
238
+ const result = {
239
+ success: false,
240
+ error: `Dependency parsing errors:\n ${reqErrors.join('\n ')}`,
241
+ };
242
+ outputResult(result, fmt);
243
+ process.exit(1);
244
+ }
245
+ // Build final requirements with dependencies
246
+ const requirements = parsedReqs.map(r => {
247
+ const deps = dependenciesMap.get(r.id);
248
+ const req = {
249
+ id: r.id,
250
+ description: r.description,
251
+ acceptance: r.acceptance,
252
+ ...(deps !== undefined && deps.length > 0 ? { dependencies: deps } : {}),
253
+ };
254
+ return req;
255
+ });
256
+ // Build spec
257
+ const specId = `spec:${options.name}:v1`;
258
+ const spec = {
259
+ id: specId,
260
+ version: options.version ?? '1.0.0',
261
+ title: options.title ?? `${options.name} specification`,
262
+ status,
263
+ intent: options.intent ?? `Specification for ${options.name}`,
264
+ requirements,
265
+ };
266
+ // Determine output file
267
+ let outputFile = options.output;
268
+ if (outputFile === undefined) {
269
+ const specDir = join(projectRoot, 'spec');
270
+ if (!existsSync(specDir)) {
271
+ mkdirSync(specDir, { recursive: true });
272
+ }
273
+ outputFile = join(specDir, `${options.name}.spec.yaml`);
274
+ }
275
+ else {
276
+ outputFile = resolve(projectRoot, outputFile);
277
+ const dir = dirname(outputFile);
278
+ if (!existsSync(dir)) {
279
+ mkdirSync(dir, { recursive: true });
280
+ }
281
+ }
282
+ // Check for existing file
283
+ if (existsSync(outputFile) && options.force !== true) {
284
+ const result = {
285
+ success: false,
286
+ error: `File already exists: ${outputFile}. Use --force to overwrite.`,
287
+ };
288
+ outputResult(result, fmt);
289
+ process.exit(1);
290
+ }
291
+ // Generate YAML
292
+ const yamlContent = toYaml({
293
+ id: spec.id,
294
+ version: spec.version,
295
+ title: spec.title,
296
+ status: spec.status,
297
+ intent: spec.intent,
298
+ requirements: spec.requirements.map(r => ({
299
+ id: r.id,
300
+ description: r.description,
301
+ acceptance: r.acceptance,
302
+ ...(r.dependencies !== undefined && r.dependencies.length > 0 ? { depends_on: r.dependencies } : {}),
303
+ })),
304
+ });
305
+ // Write file
306
+ writeFileSync(outputFile, yamlContent, 'utf8');
307
+ if (options.force === true && existsSync(outputFile)) {
308
+ warn(`Overwrote existing file: ${outputFile}`);
309
+ }
310
+ // Compute hash and register in graph
311
+ const hash = computeHash(spec);
312
+ const specWithHash = { ...spec, hash };
313
+ if (options.noRegister !== true) {
314
+ const loadResult = loadGraph(projectRoot);
315
+ if (!loadResult.success || loadResult.data === undefined) {
316
+ const result = {
317
+ success: false,
318
+ error: loadResult.error ?? 'Failed to load graph',
319
+ };
320
+ outputResult(result, fmt);
321
+ process.exit(1);
322
+ }
323
+ const graph = loadResult.data;
324
+ // Remove existing if present
325
+ const existingNode = graph.getNode(spec.id);
326
+ if (existingNode !== undefined) {
327
+ const existingSpec = existingNode.data;
328
+ for (const req of existingSpec.requirements) {
329
+ graph.removeNode(req.id);
330
+ }
331
+ graph.removeNode(spec.id);
332
+ }
333
+ addSpecToGraph(graph, specWithHash);
334
+ const saveResult = saveGraph(graph, projectRoot);
335
+ if (!saveResult.success) {
336
+ const result = {
337
+ success: false,
338
+ error: saveResult.error ?? 'Failed to save graph',
339
+ };
340
+ outputResult(result, fmt);
341
+ process.exit(1);
342
+ }
343
+ }
344
+ const result = {
345
+ success: true,
346
+ specId: spec.id,
347
+ hash,
348
+ requirementCount: spec.requirements.length,
349
+ outputFile,
350
+ };
351
+ outputResult(result, fmt);
352
+ if (fmt === 'table') {
353
+ success(`Created spec ${spec.id} (${spec.requirements.length} requirements)`);
354
+ process.stdout.write(` Output: ${outputFile}\n`);
355
+ }
356
+ }
357
+ // ============================================================================
358
+ // constraint create Command
359
+ // ============================================================================
360
+ /**
361
+ * Execute the constraint create command.
362
+ *
363
+ * @see req:create:constraint-basic
364
+ * @see req:create:constraint-invariants
365
+ * @see req:create:constraint-auto-register
366
+ */
367
+ export function runConstraintCreate(globalOpts, options) {
368
+ const projectRoot = globalOpts.dir ?? process.cwd();
369
+ const fmt = resolveFormat({ format: globalOpts.format });
370
+ // Check if prov is initialized (unless --no-register)
371
+ if (options.noRegister !== true && !isInitialized(projectRoot)) {
372
+ const result = {
373
+ success: false,
374
+ error: 'prov is not initialized. Run "prov init" first.',
375
+ };
376
+ outputConstraintResult(result, fmt);
377
+ process.exit(1);
378
+ }
379
+ // Validate name
380
+ if (!isValidName(options.name)) {
381
+ const result = {
382
+ success: false,
383
+ error: `Invalid name: ${options.name}. Must be lowercase alphanumeric with hyphens (e.g., "my-constraint").`,
384
+ };
385
+ outputConstraintResult(result, fmt);
386
+ process.exit(1);
387
+ }
388
+ // Validate status if provided
389
+ const status = options.status ?? 'draft';
390
+ if (options.status !== undefined && !isValidStatus(options.status)) {
391
+ const result = {
392
+ success: false,
393
+ error: `Invalid status: ${options.status}. Must be draft|active|deprecated|archived.`,
394
+ };
395
+ outputConstraintResult(result, fmt);
396
+ process.exit(1);
397
+ }
398
+ // Parse invariants
399
+ const invariants = [];
400
+ const invErrors = [];
401
+ if (options.inv !== undefined) {
402
+ for (const invStr of options.inv) {
403
+ const { inv, error: parseError } = parseInvariant(invStr, options.name);
404
+ if (parseError !== undefined) {
405
+ invErrors.push(parseError);
406
+ }
407
+ else if (inv !== undefined) {
408
+ invariants.push(inv);
409
+ }
410
+ }
411
+ }
412
+ if (invErrors.length > 0) {
413
+ const result = {
414
+ success: false,
415
+ error: `Invariant parsing errors:\n ${invErrors.join('\n ')}`,
416
+ };
417
+ outputConstraintResult(result, fmt);
418
+ process.exit(1);
419
+ }
420
+ // Build constraint
421
+ const constraintId = `constraint:${options.name}:v1`;
422
+ const constraint = {
423
+ id: constraintId,
424
+ version: options.version ?? '1.0.0',
425
+ title: options.title ?? `${options.name} constraints`,
426
+ status,
427
+ description: options.description ?? `Constraints for ${options.name}`,
428
+ invariants,
429
+ };
430
+ // Determine output file
431
+ let outputFile = options.output;
432
+ if (outputFile === undefined) {
433
+ const constraintDir = join(projectRoot, 'constraints');
434
+ if (!existsSync(constraintDir)) {
435
+ mkdirSync(constraintDir, { recursive: true });
436
+ }
437
+ outputFile = join(constraintDir, `${options.name}.constraints.yaml`);
438
+ }
439
+ else {
440
+ outputFile = resolve(projectRoot, outputFile);
441
+ const dir = dirname(outputFile);
442
+ if (!existsSync(dir)) {
443
+ mkdirSync(dir, { recursive: true });
444
+ }
445
+ }
446
+ // Check for existing file
447
+ if (existsSync(outputFile) && options.force !== true) {
448
+ const result = {
449
+ success: false,
450
+ error: `File already exists: ${outputFile}. Use --force to overwrite.`,
451
+ };
452
+ outputConstraintResult(result, fmt);
453
+ process.exit(1);
454
+ }
455
+ // Generate YAML
456
+ const yamlContent = toYaml({
457
+ id: constraint.id,
458
+ version: constraint.version,
459
+ title: constraint.title,
460
+ status: constraint.status,
461
+ description: constraint.description,
462
+ invariants: constraint.invariants.map(i => ({
463
+ id: i.id,
464
+ rule: i.rule,
465
+ blocking: i.blocking ?? true,
466
+ verification: {
467
+ type: i.verification.type,
468
+ value: i.verification.value,
469
+ ...(i.verification.expect !== undefined ? { expect: i.verification.expect } : {}),
470
+ },
471
+ })),
472
+ });
473
+ // Write file
474
+ writeFileSync(outputFile, yamlContent, 'utf8');
475
+ if (options.force === true && existsSync(outputFile)) {
476
+ warn(`Overwrote existing file: ${outputFile}`);
477
+ }
478
+ // Compute hash and register in graph
479
+ const hash = computeHash(constraint);
480
+ const constraintWithHash = { ...constraint, hash };
481
+ if (options.noRegister !== true) {
482
+ const loadResult = loadGraph(projectRoot);
483
+ if (!loadResult.success || loadResult.data === undefined) {
484
+ const result = {
485
+ success: false,
486
+ error: loadResult.error ?? 'Failed to load graph',
487
+ };
488
+ outputConstraintResult(result, fmt);
489
+ process.exit(1);
490
+ }
491
+ const graph = loadResult.data;
492
+ // Remove existing if present
493
+ const existingNode = graph.getNode(constraint.id);
494
+ if (existingNode !== undefined) {
495
+ const existingConstraint = existingNode.data;
496
+ for (const inv of existingConstraint.invariants) {
497
+ graph.removeNode(inv.id);
498
+ }
499
+ graph.removeNode(constraint.id);
500
+ }
501
+ addConstraintToGraph(graph, constraintWithHash);
502
+ const saveResult = saveGraph(graph, projectRoot);
503
+ if (!saveResult.success) {
504
+ const result = {
505
+ success: false,
506
+ error: saveResult.error ?? 'Failed to save graph',
507
+ };
508
+ outputConstraintResult(result, fmt);
509
+ process.exit(1);
510
+ }
511
+ }
512
+ const result = {
513
+ success: true,
514
+ constraintId: constraint.id,
515
+ hash,
516
+ invariantCount: constraint.invariants.length,
517
+ outputFile,
518
+ };
519
+ outputConstraintResult(result, fmt);
520
+ if (fmt === 'table') {
521
+ success(`Created constraint ${constraint.id} (${constraint.invariants.length} invariants)`);
522
+ process.stdout.write(` Output: ${outputFile}\n`);
523
+ }
524
+ }
525
+ // ============================================================================
526
+ // Output Helpers
527
+ // ============================================================================
528
+ function outputResult(result, fmt) {
529
+ if (fmt === 'json') {
530
+ output(result, { format: 'json' });
531
+ }
532
+ else if (fmt === 'yaml') {
533
+ output(result, { format: 'yaml' });
534
+ }
535
+ else if (!result.success && result.error !== undefined) {
536
+ error(result.error);
537
+ }
538
+ }
539
+ function outputConstraintResult(result, fmt) {
540
+ if (fmt === 'json') {
541
+ output(result, { format: 'json' });
542
+ }
543
+ else if (fmt === 'yaml') {
544
+ output(result, { format: 'yaml' });
545
+ }
546
+ else if (!result.success && result.error !== undefined) {
547
+ error(result.error);
548
+ }
549
+ }
550
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA4E3E,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,UAAU,CAAC;AACvG,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,QAAQ,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,+BAA+B,MAAM,yEAAyE,EAAE,CAAC;IACnI,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAEzC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,gDAAgD,EAAE,CAAC;IAClG,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,GAAkB,OAAO,QAAQ,IAAI,EAAE,EAAE,CAAC;IAErD,mFAAmF;IACnF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAa,aAAa;QACxC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,GAAG,WAAW,iBAAiB,CAAC,CAAC;IAEtC,MAAM,GAAG,GAAgB;QACvB,EAAE,EAAE,KAAK;QACT,WAAW;QACX,UAAU;KACX,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,4CAA4C;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpF,CAAC;IACD,oDAAoD;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACjH,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,8BAA8B,MAAM,mCAAmC,EAAE,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,cAAsB;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,6BAA6B,MAAM,gEAAgE,EAAE,CAAC;IACxH,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAExC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,gDAAgD,EAAE,CAAC;IAChG,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAE,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,8BAA8B,IAAI,0CAA0C,EAAE,CAAC;IACjG,CAAC;IAED,qDAAqD;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,GAAG,cAAc,CAAC;IAC3B,IAAI,MAA0B,CAAC;IAE/B,qEAAqE;IACrE,uGAAuG;IACvG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC/F,6BAA6B;gBAC7B,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC9C,MAAM,GAAG,cAAc,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAgB,OAAO,cAAc,IAAI,EAAE,EAAE,CAAC;IAEzD,MAAM,YAAY,GAAuB;QACvC,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,MAAM,GAAG,GAAc;QACrB,EAAE,EAAE,KAAK;QACT,IAAI;QACJ,YAAY;QACZ,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAyB,EACzB,OAA0B;IAE1B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzD,sDAAsD;IACtD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iDAAiD;SACzD,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAiB,OAAO,CAAC,IAAI,kEAAkE;SACvG,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAkB,OAAO,CAAC,MAAuB,IAAI,OAAO,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,OAAO,CAAC,MAAM,6CAA6C;SACtF,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yDAAyD;IACzD,MAAM,UAAU,GAA6F,EAAE,CAAC;IAChH,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC;oBACd,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,OAAO;oBACP,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAa;iBAC5C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kCAAkC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;SAClE,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sDAAsD;IACtD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE3D,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;gBACjC,uBAAuB;gBACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS,CAAC,IAAI,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,iBAAiB;oBACjB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxE,MAAM,QAAQ,GAAkB,SAAS,KAAK,SAAS;wBACrD,CAAC,CAAC,SAAS,CAAC,EAAE;wBACd,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAmB,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;oBAEhF,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACpB,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iCAAiC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;SACjE,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAkB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACrD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,GAAgB;YACvB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,MAAM,GAAW,QAAQ,OAAO,CAAC,IAAI,KAAK,CAAC;IACjD,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,MAAM;QACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,gBAAgB;QACvD,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,qBAAqB,OAAO,CAAC,IAAI,EAAE;QAC7D,YAAY;KACb,CAAC;IAEF,wBAAwB;IACxB,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,wBAAwB,UAAU,6BAA6B;SACvE,CAAC;QACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,MAAM,WAAW,GAAG,MAAM,CAAC;QACzB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrG,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,aAAa;IACb,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,qCAAqC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAS,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;IAE7C,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,MAAM,GAAqB;gBAC/B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,sBAAsB;aAClD,CAAC;YACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QAE9B,6BAA6B;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,YAAY,CAAC,IAAY,CAAC;YAC/C,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC5C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAqB;gBAC/B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,sBAAsB;aAClD,CAAC;YACF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAqB;QAC/B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,IAAI;QACJ,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;QAC1C,UAAU;KACX,CAAC;IAEF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,gBAAgB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,UAAU,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAyB,EACzB,OAAgC;IAEhC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzD,sDAAsD;IACtD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iDAAiD;SACzD,CAAC;QACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAiB,OAAO,CAAC,IAAI,wEAAwE;SAC7G,CAAC;QACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAkB,OAAO,CAAC,MAAuB,IAAI,OAAO,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,OAAO,CAAC,MAAM,6CAA6C;SACtF,CAAC;QACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gCAAgC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;SAChE,CAAC;QACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAiB,cAAc,OAAO,CAAC,IAAI,KAAK,CAAC;IACnE,MAAM,UAAU,GAAe;QAC7B,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,cAAc;QACrD,MAAM;QACN,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,mBAAmB,OAAO,CAAC,IAAI,EAAE;QACrE,UAAU;KACX,CAAC;IAEF,wBAAwB;IACxB,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,wBAAwB,UAAU,6BAA6B;SACvE,CAAC;QACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,MAAM,WAAW,GAAG,MAAM,CAAC;QACzB,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;YAC5B,YAAY,EAAE;gBACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI;gBACzB,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK;gBAC3B,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClF;SACF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,aAAa;IACb,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,qCAAqC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAe,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IAE/D,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,MAAM,GAA2B;gBACrC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,sBAAsB;aAClD,CAAC;YACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QAE9B,6BAA6B;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,kBAAkB,GAAG,YAAY,CAAC,IAAkB,CAAC;YAC3D,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;gBAChD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAA2B;gBACrC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,sBAAsB;aAClD,CAAC;YACF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,UAAU,CAAC,EAAE;QAC3B,IAAI;QACJ,cAAc,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM;QAC5C,UAAU;KACX,CAAC;IAEF,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,sBAAsB,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,MAAM,cAAc,CAAC,CAAC;QAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,UAAU,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,SAAS,YAAY,CAAC,MAAwB,EAAE,GAAW;IACzD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACzD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA8B,EAAE,GAAW;IACzE,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACzD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tests for prov create commands.
3
+ *
4
+ * @see spec:declarative-creation:v1
5
+ * @see req:create:spec-basic
6
+ * @see req:create:constraint-basic
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=create.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.test.d.ts","sourceRoot":"","sources":["../../src/commands/create.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}