swipium 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +15 -9
  2. package/THREAT_MODEL.md +59 -0
  3. package/dist/appMap/diff.js +60 -0
  4. package/dist/appMap/diff.js.map +1 -0
  5. package/dist/automation/capabilities.js +167 -0
  6. package/dist/automation/capabilities.js.map +1 -0
  7. package/dist/automation/gestures.js +94 -0
  8. package/dist/automation/gestures.js.map +1 -0
  9. package/dist/automation/maestroIr.js +282 -0
  10. package/dist/automation/maestroIr.js.map +1 -0
  11. package/dist/automation/plan.js +268 -0
  12. package/dist/automation/plan.js.map +1 -0
  13. package/dist/automation/report.js +83 -0
  14. package/dist/automation/report.js.map +1 -0
  15. package/dist/automation/selectors.js +201 -0
  16. package/dist/automation/selectors.js.map +1 -0
  17. package/dist/automation/types.js +13 -0
  18. package/dist/automation/types.js.map +1 -0
  19. package/dist/automation/waits.js +91 -0
  20. package/dist/automation/waits.js.map +1 -0
  21. package/dist/automation/webview.js +81 -0
  22. package/dist/automation/webview.js.map +1 -0
  23. package/dist/flows/repair.js +363 -0
  24. package/dist/flows/repair.js.map +1 -0
  25. package/dist/interop/maestro.js +151 -0
  26. package/dist/interop/maestro.js.map +1 -0
  27. package/dist/mobileAudit/checks.js +251 -0
  28. package/dist/mobileAudit/checks.js.map +1 -0
  29. package/dist/mobileAudit/evidence.js +49 -0
  30. package/dist/mobileAudit/evidence.js.map +1 -0
  31. package/dist/mobileAudit/profiles.js +73 -0
  32. package/dist/mobileAudit/profiles.js.map +1 -0
  33. package/dist/mobileAudit/results.js +41 -0
  34. package/dist/mobileAudit/results.js.map +1 -0
  35. package/dist/mobileAudit/runner.js +229 -0
  36. package/dist/mobileAudit/runner.js.map +1 -0
  37. package/dist/oracle/locator.js +177 -0
  38. package/dist/oracle/locator.js.map +1 -0
  39. package/dist/server.js +20 -0
  40. package/dist/server.js.map +1 -1
  41. package/dist/testSuite/exporter.js +70 -0
  42. package/dist/testSuite/exporter.js.map +1 -0
  43. package/dist/testSuite/lint.js +53 -0
  44. package/dist/testSuite/lint.js.map +1 -0
  45. package/dist/tools/capabilities.js +46 -4
  46. package/dist/tools/capabilities.js.map +1 -1
  47. package/dist/tools/flow.js +67 -1
  48. package/dist/tools/flow.js.map +1 -1
  49. package/dist/tools/flowRepair.js +66 -0
  50. package/dist/tools/flowRepair.js.map +1 -0
  51. package/dist/tools/idling.js +104 -0
  52. package/dist/tools/idling.js.map +1 -0
  53. package/dist/tools/inputCapabilities.js +30 -0
  54. package/dist/tools/inputCapabilities.js.map +1 -0
  55. package/dist/tools/issues.js +218 -0
  56. package/dist/tools/issues.js.map +1 -0
  57. package/dist/tools/jobs.js +12 -1
  58. package/dist/tools/jobs.js.map +1 -1
  59. package/dist/tools/locator.js +57 -0
  60. package/dist/tools/locator.js.map +1 -0
  61. package/dist/tools/maestro.js +78 -0
  62. package/dist/tools/maestro.js.map +1 -0
  63. package/dist/tools/mobileAudit.js +115 -0
  64. package/dist/tools/mobileAudit.js.map +1 -0
  65. package/dist/tools/suite.js +49 -1
  66. package/dist/tools/suite.js.map +1 -1
  67. package/dist/tools/testSuite.js +233 -0
  68. package/dist/tools/testSuite.js.map +1 -0
  69. package/dist/tools/wait.js +58 -0
  70. package/dist/tools/wait.js.map +1 -0
  71. package/dist/version.js +31 -2
  72. package/dist/version.js.map +1 -1
  73. package/docs/mcp-server.md +1 -1
  74. package/docs/tools.md +46 -1
  75. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobileAudit.js","sourceRoot":"","sources":["../../src/tools/mobileAudit.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // qa_suite_generate / qa_testcase_generate / qa_suite_compile.
1
+ // qa_pom_generate / qa_suite_generate / qa_testcase_generate / qa_suite_lint (roadmap §6 / §7 / §12).
2
2
  //
3
3
  // These turn the actions recorded during a session (qa_act) into a MAINTAINABLE POM suite under
4
4
  // .swipium/ — page objects (selectors), tests (reference elements by name), a suite, a test-case
@@ -11,6 +11,7 @@ import { qaOk, qaError } from '../lib/result.js';
11
11
  import { requireConsent, consumeConsent } from '../consent/consent.js';
12
12
  import { generatePom } from '../suite/pom.js';
13
13
  import { generateTestCases } from '../suite/testcase.js';
14
+ import { lintSuitePages } from '../suite/lint.js';
14
15
  import { compileSuite } from '../suite/compile.js';
15
16
  import { parseFlow } from '../flows/schema.js';
16
17
  import { runFlow } from '../flows/run.js';
@@ -106,6 +107,30 @@ function pomFor(session, name) {
106
107
  return { pom, flowName };
107
108
  }
108
109
  export function registerSuite(server, sessions) {
110
+ // ---- qa_pom_generate ----
111
+ server.registerTool('qa_pom_generate', {
112
+ title: 'Generate page objects',
113
+ description: 'Generate Screen/Page Object Model files from the actions recorded this session: one page object per screen with named elements (selectors hoisted out of tests), plus a locator audit (durable vs brittle, with app-code remediation). Pass save:true to write under .swipium/pages + .swipium/locators. Use qa_suite_generate for the full suite (pages + tests + suite + test cases).',
114
+ inputSchema: {
115
+ sessionId: z.string(),
116
+ name: z.string().optional(),
117
+ save: z.boolean().optional(),
118
+ },
119
+ }, async ({ sessionId, name, save }) => {
120
+ const session = sessions.get(sessionId);
121
+ if (!session)
122
+ return qaError({ what: `Unknown sessionId ${sessionId}`, changedState: false, retrySafe: true, nextSteps: ['Call qa_start_session first.'] });
123
+ const noActions = requireActions(session);
124
+ if (noActions)
125
+ return noActions;
126
+ const { pom } = pomFor(session, name);
127
+ const pageFiles = pom.files.filter((f) => f.path.startsWith('pages/') || f.path.startsWith('locators/'));
128
+ const written = save ? writeFiles(session, pageFiles) : [];
129
+ const summary = `Generated ${pom.pages.length} page object(s): ${pom.pages.map((p) => p.name).join(', ')}\n` +
130
+ `locator audit: ${pom.audit.durable} durable / ${pom.audit.semi} semi / ${pom.audit.brittle} brittle (${pom.audit.brittlePct}% brittle)` +
131
+ (save ? `\nsaved ${written.length} files under .swipium/` : `\n(not saved — pass save:true)`);
132
+ return qaOk({ pages: pom.pages, audit: pom.audit, files: pageFiles, written }, summary);
133
+ });
109
134
  // ---- qa_suite_generate ----
110
135
  server.registerTool('qa_suite_generate', {
111
136
  title: 'Generate an automation suite',
@@ -408,5 +433,28 @@ export function registerSuite(server, sessions) {
408
433
  compiled.map((c) => ` ${c.ok ? '✓' : '✗'} ${c.name}${c.ok ? ` → flows/${c.slug}.yaml (run: swipium ci --flow ${c.slug})` : `: ${c.errors.join('; ')}`}`).join('\n');
409
434
  return qaOk({ suite: result.suite, flows: compiled, okCount }, summary);
410
435
  });
436
+ // ---- qa_suite_lint ----
437
+ server.registerTool('qa_suite_lint', {
438
+ title: 'Lint the generated suite',
439
+ description: 'Lint the page objects under .swipium/pages for durability problems: missing durable locators (coordinate-only), copy/locale-fragile text selectors, and dynamic-looking selectors. Reports each with the page/element and the app-code fix. Use after qa_suite_generate, before committing or wiring CI.',
440
+ inputSchema: { sessionId: z.string().optional(), projectRoot: z.string().optional() },
441
+ }, async ({ sessionId, projectRoot }) => {
442
+ let root;
443
+ if (sessionId)
444
+ root = sessions.get(sessionId)?.root;
445
+ root = root ?? projectRoot;
446
+ if (!root)
447
+ return qaError({ what: 'No project root', changedState: false, retrySafe: true, nextSteps: ['Pass sessionId or projectRoot.'] });
448
+ const findings = lintSuitePages(root);
449
+ if (!findings.exists) {
450
+ return qaError({ what: 'No .swipium/pages to lint', changedState: false, retrySafe: true, nextSteps: ['Generate a suite first: qa_suite_generate.'] });
451
+ }
452
+ const errors = findings.items.filter((f) => f.severity === 'error');
453
+ const summary = `Linted ${findings.pageCount} page object(s): ${findings.items.length} issue(s) (${errors.length} brittle).\n` +
454
+ (findings.items.length
455
+ ? findings.items.slice(0, 20).map((i) => ` ${i.severity === 'error' ? '✗' : '⚠'} ${i.page}.${i.element}: ${i.message}`).join('\n')
456
+ : ' ✓ all locators are durable.');
457
+ return qaOk({ pageCount: findings.pageCount, items: findings.items }, summary);
458
+ });
411
459
  }
412
460
  //# sourceMappingURL=suite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suite.js","sourceRoot":"","sources":["../../src/tools/suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suite.js","sourceRoot":"","sources":["../../src/tools/suite.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,EAAE;AACF,gGAAgG;AAChG,iGAAiG;AACjG,2FAA2F;AAE3F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAsC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,QAAQ,CAAC,IAA+B;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,CAA4F;IACxH,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QAC5B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACpC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,OAAgB;IAC/B,OAAO,OAAO,CAAC,KAAK,IAAI,CAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAA4B,IAAI,SAAS,CAAC,CAAC;AACxG,CAAC;AAED,yGAAyG;AACzG,SAAS,mBAAmB,CAC1B,IAAY,EACZ,OAAkC,EAClC,MAAe;IAEf,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACnE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO,cAAc,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IACnD,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACjD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,OAAgB,EAAE,KAAsB;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,yCAAyC;YAC/C,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC,uFAAuF,CAAC;SACrG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB,EAAE,IAAa;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAClH,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,QAAsB;IACrE,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,yXAAyX;QAC3X,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAC5J,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GACX,aAAa,GAAG,CAAC,KAAK,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC5F,kBAAkB,GAAG,CAAC,KAAK,CAAC,OAAO,cAAc,GAAG,CAAC,KAAK,CAAC,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,aAAa,GAAG,CAAC,KAAK,CAAC,UAAU,YAAY;YACxI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,wBAAwB,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC,CACF,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,6aAA6a;QAC/a,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACpF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC5F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wLAAwL,CAAC;YAChR,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;YAC/H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;YACjH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SAClG;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACrF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAC5J,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,KAAK,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QACnH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAM,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,SAAS,CAAC;QACvC,MAAM,aAAa,GAAkH,EAAE,CAAC;QACxI,MAAM,cAAc,GAA+I;YACjK,eAAe,EAAE,EAAE;YACnB,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACvB,CAAC;QACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa;gBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QAC7K,CAAC;aAAM,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YACzC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM;gBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC,CAAC;iBACrJ,CAAC;gBACJ,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpE,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAS,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACjB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC3G,SAAS;oBACX,CAAC;oBACD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACjH,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;YACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY;gBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC,CAAC;iBAChK,IAAI,CAAC,MAAM;gBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC,CAAC;iBACzJ,CAAC;gBACJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,8BAA8B,EAAE,CAAC,CAAC;qBAC/J,CAAC;oBACJ,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClD,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;oBACtD,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACpJ,cAAc,CAAC,eAAe,GAAG,eAAe,CAAC;oBACjD,IAAI,mBAAuC,CAAC;oBAC5C,IAAI,eAAe,EAAE,CAAC;wBACpB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC5F,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC9F,MAAM,OAAO,GAAG;4BACd,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO;4BAC1B,UAAU;4BACV,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC;4BAC1D,iBAAiB,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;4BAC3C,iBAAiB,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;4BAC7C,YAAY,EAAE,cAAc;4BAC5B,aAAa,EAAE,eAAe;yBAC/B,CAAC;wBACF,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;wBACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,MAAM;4BAChI,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;gCACzH,CAAC,CAAC,QAAQ;gCACV,CAAC,CAAC,KAAK,CAAC;wBACZ,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,CAAC;wBACjG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACnB,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;gCAC/B,IAAI,EAAE,mBAAmB;gCACzB,MAAM,EAAE,0BAA0B;gCAClC,IAAI;gCACJ,MAAM,EAAE,OAAO;gCACf,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE;gCAC9E,MAAM,EAAE,WAAW;6BACpB,CAAC,CAAC;4BACH,OAAO,cAAc,CAAC;gCACpB,MAAM,EAAE,0BAA0B;gCAClC,IAAI;gCACJ,YAAY,EAAE,qDAAqD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gCACxF,OAAO;gCACP,OAAO,EAAE,2BAA2B,GAAG,CAAC,IAAI,IAAI,OAAO,yBAAyB,MAAM,CAAC,OAAO,CAAC,IAAI,2FAA2F;6BAC/L,CAAC,CAAC;wBACL,CAAC;wBACD,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC;wBACtC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;4BAC/B,IAAI,EAAE,mBAAmB;4BACzB,MAAM,EAAE,0BAA0B;4BAClC,IAAI;4BACJ,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;4BACxF,MAAM,EAAE,UAAU;yBACnB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAAe,EAAE,EAAE;wBACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,MAAM,IAAI,MAAM,CAAC,OAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,qBAAqB,MAAM,SAAS,CAAC,CAAC;wBAC7M,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClB,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3C,CAAC,CAAC;oBACF,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACtF,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;wBAC/E,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,QAAQ,CAAC,MAAM,aAAa,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnK,CAAC;yBAAM,CAAC;wBACN,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;wBAClE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;wBAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;4BACxC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iCAAiC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvJ,CAAC;6BAAM,CAAC;4BACN,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACpE,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gCAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oCACjB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oCAC3G,SAAS;gCACX,CAAC;gCACD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gCACjH,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;4BACnH,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACvF,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBACjC,IAAI,eAAe,EAAE,CAAC;wBACpB,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;wBACzF,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;4BAC/B,IAAI,EAAE,mBAAmB;4BACzB,MAAM,EAAE,0BAA0B;4BAClC,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;4BACnD,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;4BAC9F,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;4BACxF,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;4BACnC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;4BACrB,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,iCAAiC;yBAC7E,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QAC/H,MAAM,WAAW,GAAG;YAClB,QAAQ,EAAE,GAAG,CAAC,aAAa;YAC3B,gBAAgB,EAAE,UAAU,KAAK,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;YAC/H,oBAAoB,EAAE,UAAU,KAAK,aAAa,IAAI,CAAC,CAAC,YAAY;YACpE,aAAa,EAAE,UAAU,KAAK,aAAa,IAAI,cAAc,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC;YACzF,cAAc,EAAE,UAAU,KAAK,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,cAAc,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC;SAC5K,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,CAAC,UAAU,KAAK,cAAc,IAAI,UAAU,KAAK,aAAa,CAAC,IAAI,YAAY,CAAC;QACtG,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QACnH,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjG,IAAI,aAAa,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7F,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;QACxD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QAClE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC7C,MAAM,EAAE,2BAA2B;gBACnC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;gBACtD,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,mBAAmB;gBAC9B,eAAe;gBACf,SAAS;gBACT,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;gBACpG,OAAO;gBACP,WAAW;gBACX,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC7K,KAAK;gBACL,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;aAC/B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QACD,4FAA4F;QAC5F,+FAA+F;QAC/F,wFAAwF;QACxF,IAAI,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC;QACnC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;YAClF,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;gBACpC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE;oBAChC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;oBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,YAAY;iBACb,CAAC,CAAC;gBACH,UAAU,CAAC,OAAO,EAAE;oBAClB,EAAE,IAAI,EAAE,aAAa,QAAQ,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE;oBAC9D,EAAE,IAAI,EAAE,aAAa,QAAQ,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE;iBACjE,CAAC,CAAC;gBACH,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GACX,YAAY,GAAG,CAAC,IAAI,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,+BAA+B;YAC9H,eAAe,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,UAAU,YAAY;YACrH,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,2EAA2E,CAAC,CAAC,CAAC,EAAE,CAAC;YACtH,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,gBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC;YACzH,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,8DAA8D,CAAC,CAAC,CAAC,uDAAuD,CAAC;YACpM,kBAAkB,UAAU,MAAM,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,eAAe,SAAS,YAAY,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5K,CAAC,OAAO,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1O,OAAO,IAAI,CACT,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,EAC7W,OAAO,CACR,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,6RAA6R;QAC/R,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;YACvD,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAC5J,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACvJ,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC;QAC7B,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,IAAI,GAAG,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,QAAQ,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACnG,IAAI,GAAG,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,QAAQ,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClL,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACzJ,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,8cAA8c;QAChd,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;SACvG;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,IAAI,IAAwB,CAAC;QAC7B,IAAI,SAAS;YAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QACpD,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAE5I,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,mBAAmB,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,4BAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,mEAAmE,CAAC,EAAE,CAAC,CAAC;QAC3M,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAa,EAAE,CAAC;YAC7E,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;YAC1E,IAAI,QAA4B,CAAC;YACjC,IAAI,YAAgC,CAAC;YACrC,IAAI,EAAE,EAAE,CAAC;gBACP,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,6CAA6C;gBACxF,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC;gBACtD,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC5H,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,OAAO,GACX,YAAY,OAAO,IAAI,QAAQ,CAAC,MAAM,iBAAiB,MAAM,CAAC,KAAK,KAAK;YACxE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,iCAAiC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvK,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,0SAA0S;QAC5S,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;KACtF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;QACnC,IAAI,IAAwB,CAAC;QAC7B,IAAI,SAAS;YAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QACpD,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAE5I,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,4CAA4C,CAAC,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QACpE,MAAM,OAAO,GACX,UAAU,QAAQ,CAAC,SAAS,oBAAoB,QAAQ,CAAC,KAAK,CAAC,MAAM,cAAc,MAAM,CAAC,MAAM,cAAc;YAC9G,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;gBACpB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnI,CAAC,CAAC,+BAA+B,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,233 @@
1
+ // qa_test_suite_* — the MCP surface for the persistent, project-level QA test-case suite
2
+ // (SWIPIUM-REQ-06). These query, update, generate, export, and lint the canonical suite under
3
+ // `.swipium/test-suite.json` independently of per-run suite generation. All persistence + merge
4
+ // logic lives in src/testSuite/* (pure); these tools resolve a root/session, call that layer, and
5
+ // surface the result. Time is read once per call here (the pure layer never reads the clock).
6
+ import { z } from 'zod';
7
+ import { mkdirSync, writeFileSync } from 'node:fs';
8
+ import { join, dirname } from 'node:path';
9
+ import { qaOk, qaError } from '../lib/result.js';
10
+ import { loadProjectConfig } from '../cli/scan.js';
11
+ import { pomForSession } from '../services/suiteGenerate.js';
12
+ import { generateCanonicalCases, normalizeCase } from '../testSuite/generator.js';
13
+ import { applyMerge, loadSuite, runIdFromNow, suiteRoot } from '../testSuite/store.js';
14
+ import { exportSuite } from '../testSuite/exporter.js';
15
+ import { lintSuite } from '../testSuite/lint.js';
16
+ function resolveRoot(sessions, sessionId, projectRoot) {
17
+ const session = sessionId ? sessions.get(sessionId) : undefined;
18
+ const root = session?.root ?? projectRoot;
19
+ if (!root)
20
+ return null;
21
+ const appId = session?.appId ?? loadProjectConfig(root)?.appId;
22
+ return { root, appId, session };
23
+ }
24
+ const noRoot = () => qaError({ what: 'No project root', changedState: false, retrySafe: true, nextSteps: ['Pass sessionId or projectRoot.'] });
25
+ /** Register the suite JSON as a session artifact so its resource URI resolves; returns the URI. */
26
+ function publishSuiteArtifact(sessions, session, json) {
27
+ if (!session)
28
+ return undefined;
29
+ return sessions.saveArtifact(session, 'test-suite', 'test-suite.json', json, 'application/json', 'Persistent QA test suite');
30
+ }
31
+ export function registerTestSuite(server, sessions) {
32
+ // ---- qa_test_suite_read ----
33
+ server.registerTool('qa_test_suite_read', {
34
+ title: 'Read the persistent QA test suite',
35
+ description: 'Read the canonical, project-level QA test-case suite (.swipium/test-suite.json) — the long-lived suite divided by functionality that grows across runs (distinct from a per-run catalog). Filter by functionality and/or status. format: summary (counts + ids), json (full cases), or markdown (review-ready). Returns a resource URI for the full suite.',
36
+ inputSchema: {
37
+ sessionId: z.string().optional(),
38
+ projectRoot: z.string().optional(),
39
+ functionality: z.string().optional().describe('Only return cases under this functionality/feature.'),
40
+ status: z.enum(['active', 'draft', 'deprecated', 'blocked', 'manual_only']).optional(),
41
+ format: z.enum(['summary', 'json', 'markdown']).optional(),
42
+ },
43
+ }, async ({ sessionId, projectRoot, functionality, status, format }) => {
44
+ const r = resolveRoot(sessions, sessionId, projectRoot);
45
+ if (!r)
46
+ return noRoot();
47
+ const suite = loadSuite(r.root, r.appId);
48
+ let cases = suite.cases;
49
+ if (functionality)
50
+ cases = cases.filter((c) => c.functionality === functionality || c.featureId === functionality);
51
+ if (status)
52
+ cases = cases.filter((c) => c.status === status);
53
+ const filtered = { ...suite, cases };
54
+ const uri = publishSuiteArtifact(sessions, r.session, JSON.stringify(suite, null, 2));
55
+ const byFunctionality = {};
56
+ for (const c of suite.cases)
57
+ byFunctionality[c.functionality] = (byFunctionality[c.functionality] ?? 0) + 1;
58
+ const byStatus = {};
59
+ for (const c of suite.cases)
60
+ byStatus[c.status] = (byStatus[c.status] ?? 0) + 1;
61
+ const fmt = format ?? 'summary';
62
+ const summaryText = `QA test suite: ${suite.cases.length} case(s) across ${Object.keys(byFunctionality).length} functionality area(s); ${cases.length} match filter.\n` +
63
+ Object.entries(byFunctionality).map(([k, n]) => ` ${k}: ${n}`).join('\n');
64
+ const payload = {
65
+ totalCases: suite.cases.length,
66
+ matched: cases.length,
67
+ byFunctionality,
68
+ byStatus,
69
+ ids: cases.map((c) => c.id),
70
+ ...(uri ? { suiteUri: uri } : {}),
71
+ };
72
+ if (fmt === 'json')
73
+ payload.cases = cases;
74
+ if (fmt === 'markdown')
75
+ payload.markdown = exportSuite(filtered, 'markdown').content;
76
+ return qaOk(payload, summaryText);
77
+ });
78
+ // ---- qa_test_suite_update ----
79
+ server.registerTool('qa_test_suite_update', {
80
+ title: 'Update the persistent QA test suite',
81
+ description: 'Merge cases into the persistent QA suite and persist them. Cases matching an existing case by feature + objective + normalized steps are UPDATED (not duplicated); new coverage creates new stable ids (TC-<FEATURE>-NNN). source records provenance; mergeMode controls whether generated fields overwrite curated ones. Returns created/updated/deprecated ids + conflicts. Every run that observes QA knowledge should call this.',
82
+ inputSchema: {
83
+ sessionId: z.string().optional(),
84
+ projectRoot: z.string().optional(),
85
+ source: z.enum(['report', 'exploration', 'feature', 'ticket', 'manual', 'generate', 'suite']),
86
+ sourceUri: z.string().optional(),
87
+ cases: z.array(z.record(z.any())).optional().describe('Canonical (or partial) test cases to merge. Partial cases are normalized with sane defaults.'),
88
+ mergeMode: z.enum(['append', 'update', 'replace_generated']).optional(),
89
+ },
90
+ }, async ({ sessionId, projectRoot, source, sourceUri, cases, mergeMode }) => {
91
+ const r = resolveRoot(sessions, sessionId, projectRoot);
92
+ if (!r)
93
+ return noRoot();
94
+ if (!cases || !cases.length) {
95
+ return qaError({ what: 'No cases provided to merge', changedState: false, retrySafe: true, nextSteps: ['Pass cases:[...], or use qa_test_suite_generate to build them from the app.'] });
96
+ }
97
+ const now = new Date().toISOString();
98
+ const incoming = cases.map((c) => {
99
+ const normalized = normalizeCase(c, now);
100
+ // A manual edit/author marks the case curated so future generation won't clobber it.
101
+ if (source === 'manual')
102
+ normalized.manuallyEdited = true;
103
+ return normalized;
104
+ });
105
+ const applied = applyMerge(r.root, incoming, { source: source, mode: mergeMode ?? 'update', now, runId: runIdFromNow(now), sourceUri }, r.appId);
106
+ const uri = publishSuiteArtifact(sessions, r.session, JSON.stringify(applied.result.suite, null, 2));
107
+ const { created, updated, deprecated, conflicts } = applied.result;
108
+ const summary = `Suite merge (${source}): +${created.length} created, ~${updated.length} updated, -${deprecated.length} deprecated, ${conflicts.length} conflict(s).` +
109
+ (conflicts.length ? `\nConflicts (curated fields kept): ${conflicts.map((c) => `${c.id}.${c.field}`).join(', ')}` : '');
110
+ return qaOk({
111
+ created,
112
+ updated,
113
+ deprecated,
114
+ conflicts,
115
+ totalCases: applied.result.suite.cases.length,
116
+ validationErrors: applied.validationErrors,
117
+ runLedgerPath: applied.runPath,
118
+ ...(uri ? { suiteUri: uri } : {}),
119
+ }, summary);
120
+ });
121
+ // ---- qa_test_suite_generate ----
122
+ server.registerTool('qa_test_suite_generate', {
123
+ title: 'Generate persistent suite cases from the app',
124
+ description: "Generate or refresh canonical test cases from this session's recorded actions (POM flow) + observed outcomes + guided-exploration coverage, then merge them into the persistent suite. Cases are grouped by functionality, carry a creativityLevel, expected vs. actual results, automation readiness, and traceability. Re-running updates existing cases instead of duplicating them. Returns generated cases + skipped/blocked features + map-coverage gaps.",
125
+ inputSchema: {
126
+ sessionId: z.string().optional(),
127
+ projectRoot: z.string().optional(),
128
+ feature: z.string().optional().describe('Functionality label for the generated flow case (defaults from the recorded flow name).'),
129
+ creativityLevel: z.enum(['conservative', 'standard', 'creative', 'adversarial']).optional(),
130
+ includeManualOnly: z.boolean().optional(),
131
+ },
132
+ }, async ({ sessionId, projectRoot, feature, creativityLevel, includeManualOnly }) => {
133
+ const r = resolveRoot(sessions, sessionId, projectRoot);
134
+ if (!r)
135
+ return noRoot();
136
+ if (!r.session) {
137
+ return qaError({ what: 'qa_test_suite_generate needs a session to read recorded actions', changedState: false, retrySafe: true, nextSteps: ['Pass sessionId of a session that drove the app (qa_act/qa_smoke/qa_explore).'] });
138
+ }
139
+ const session = r.session;
140
+ const hasActions = session.recordedActions.length > 0;
141
+ const hasExploration = !!session.exploration;
142
+ if (!hasActions && !hasExploration) {
143
+ return qaOk({ generated: [], skipped: ['no recorded actions or exploration'], coverageGaps: ['Drive the app first (qa_act/qa_smoke/qa_explore) so cases can be generated.'], created: [], updated: [] }, 'No recorded actions or exploration in this session — nothing to generate yet.');
144
+ }
145
+ const now = new Date().toISOString();
146
+ const { pom } = hasActions ? pomForSession(session, feature) : { pom: undefined };
147
+ const incoming = generateCanonicalCases({
148
+ pom,
149
+ appId: r.appId,
150
+ functionality: feature,
151
+ creativityLevel: creativityLevel ?? 'standard',
152
+ fixtures: session.fixtures,
153
+ notes: session.notes,
154
+ exploration: session.exploration,
155
+ source: 'generate',
156
+ now,
157
+ });
158
+ const filtered = includeManualOnly === false ? incoming.filter((c) => c.automation.status !== 'manual') : incoming;
159
+ const applied = applyMerge(r.root, filtered, { source: 'generate', mode: 'update', now, runId: runIdFromNow(now) }, r.appId);
160
+ const uri = publishSuiteArtifact(sessions, session, JSON.stringify(applied.result.suite, null, 2));
161
+ const coverageGaps = pom ? pom.audit.entries.filter((e) => e.durability === 'brittle').map((e) => `${e.page}.${e.element}: ${e.remediation ?? 'brittle locator'}`) : [];
162
+ const summary = `Generated ${filtered.length} case(s) → +${applied.result.created.length} new, ~${applied.result.updated.length} updated. Suite now ${applied.result.suite.cases.length} case(s).`;
163
+ return qaOk({
164
+ generated: filtered.map((c) => ({ functionality: c.functionality, title: c.title, type: c.type, creativityLevel: c.creativityLevel, automation: c.automation.status })),
165
+ created: applied.result.created,
166
+ updated: applied.result.updated,
167
+ deprecated: applied.result.deprecated,
168
+ coverageGaps,
169
+ totalCases: applied.result.suite.cases.length,
170
+ ...(uri ? { suiteUri: uri } : {}),
171
+ }, summary);
172
+ });
173
+ // ---- qa_test_suite_export ----
174
+ server.registerTool('qa_test_suite_export', {
175
+ title: 'Export the persistent QA test suite',
176
+ description: 'Export the persistent suite to markdown (review-ready), yaml (a per-functionality directory), json, or junit (CI-style results). Pass save:true to write the export under .swipium/test-suite-export/.',
177
+ inputSchema: {
178
+ sessionId: z.string().optional(),
179
+ projectRoot: z.string().optional(),
180
+ format: z.enum(['markdown', 'yaml', 'json', 'junit']),
181
+ save: z.boolean().optional(),
182
+ },
183
+ }, async ({ sessionId, projectRoot, format, save }) => {
184
+ const r = resolveRoot(sessions, sessionId, projectRoot);
185
+ if (!r)
186
+ return noRoot();
187
+ const suite = loadSuite(r.root, r.appId);
188
+ const result = exportSuite(suite, format);
189
+ const written = [];
190
+ if (save) {
191
+ const base = join(suiteRoot(r.root), 'test-suite-export');
192
+ if (result.files) {
193
+ for (const f of result.files) {
194
+ const abs = join(base, 'yaml', f.path);
195
+ mkdirSync(dirname(abs), { recursive: true });
196
+ writeFileSync(abs, f.content);
197
+ written.push(abs);
198
+ }
199
+ }
200
+ else if (result.content) {
201
+ const ext = format === 'junit' ? 'xml' : format === 'markdown' ? 'md' : format;
202
+ const abs = join(base, `test-suite.${ext}`);
203
+ mkdirSync(dirname(abs), { recursive: true });
204
+ writeFileSync(abs, result.content);
205
+ written.push(abs);
206
+ }
207
+ }
208
+ return qaOk({ format, ...(result.content ? { content: result.content } : {}), ...(result.files ? { fileCount: result.files.length } : {}), written, totalCases: suite.cases.length }, `${result.summary}${written.length ? ` Wrote ${written.length} file(s).` : ''}`);
209
+ });
210
+ // ---- qa_test_suite_lint ----
211
+ server.registerTool('qa_test_suite_lint', {
212
+ title: 'Lint the persistent QA test suite',
213
+ description: 'Validate the persistent suite: missing expected results, missing actual results after a run, unlinked feature/screen, stale map links, duplicate ids, brittle automation above threshold, and adversarial cases lacking disposable-state/consent safety metadata. Returns errors (block) and warnings.',
214
+ inputSchema: {
215
+ sessionId: z.string().optional(),
216
+ projectRoot: z.string().optional(),
217
+ brittleThreshold: z.enum(['C', 'D']).optional(),
218
+ liveFeatureIds: z.array(z.string()).optional().describe('Feature ids still present in the app map (enables the stale-map-link rule).'),
219
+ },
220
+ }, async ({ sessionId, projectRoot, brittleThreshold, liveFeatureIds }) => {
221
+ const r = resolveRoot(sessions, sessionId, projectRoot);
222
+ if (!r)
223
+ return noRoot();
224
+ const suite = loadSuite(r.root, r.appId);
225
+ const result = lintSuite(suite, { brittleThreshold, liveFeatureIds });
226
+ const summary = `Linted ${suite.cases.length} case(s): ${result.errorCount} error(s), ${result.warnCount} warning(s).\n` +
227
+ (result.findings.length
228
+ ? result.findings.slice(0, 25).map((f) => ` ${f.severity === 'error' ? '✗' : '⚠'} ${f.id ? `${f.id} ` : ''}[${f.rule}] ${f.message}`).join('\n')
229
+ : ' ✓ no issues.');
230
+ return qaOk({ ok: result.ok, errorCount: result.errorCount, warnCount: result.warnCount, findings: result.findings }, summary);
231
+ });
232
+ }
233
+ //# sourceMappingURL=testSuite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testSuite.js","sourceRoot":"","sources":["../../src/tools/testSuite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ // qa_wait — non-shell synchronization for setup conditions (Phase 2.1 P1.6), so agents
2
+ // don't shell out to `sleep`/poll. Waits for: device_online, metro_ready (serving), or
3
+ // a job_done. Returns timeout + current state + next steps.
4
+ import { z } from 'zod';
5
+ import { qaOk, qaError } from '../lib/result.js';
6
+ import { resolveDevice } from '../session/attach.js';
7
+ import { metroReadiness } from '../lib/metroState.js';
8
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
9
+ export function registerWait(server, sessions) {
10
+ server.registerTool('qa_wait', {
11
+ title: 'Wait for a setup condition',
12
+ description: 'Block (bounded) until a non-UI condition holds, instead of shelling out to sleep/poll: for="device_online" (a device appears), "metro_ready" (Metro serving the bundle), or "job_done" (a qa_prepare_target jobId finishes). Returns satisfied/timedOut + the current state + next steps.',
13
+ inputSchema: {
14
+ sessionId: z.string(),
15
+ for: z.enum(['device_online', 'metro_ready', 'job_done']),
16
+ jobId: z.string().optional().describe('Required for for="job_done".'),
17
+ timeoutMs: z.number().optional().describe('default 60000 (180000 for device_online).'),
18
+ },
19
+ }, async ({ sessionId, for: cond, jobId, timeoutMs }) => {
20
+ const session = sessions.get(sessionId);
21
+ if (!session)
22
+ return qaError({ what: `Unknown sessionId ${sessionId}`, changedState: false, retrySafe: true, nextSteps: ['Call qa_start_session first.'] });
23
+ const deadline = Date.now() + (timeoutMs ?? (cond === 'device_online' ? 180000 : 60000));
24
+ const intervalMs = 1500;
25
+ if (cond === 'job_done') {
26
+ if (!jobId)
27
+ return qaError({ what: 'for="job_done" needs jobId', changedState: false, retrySafe: true, nextSteps: ['Pass the jobId from qa_prepare_target.'] });
28
+ while (Date.now() < deadline) {
29
+ const job = session.jobs.get(jobId);
30
+ if (!job)
31
+ return qaError({ what: `Unknown job ${jobId}`, changedState: false, retrySafe: true, nextSteps: ['Check the jobId.'] });
32
+ if (job.status !== 'running') {
33
+ return qaOk({ satisfied: true, condition: cond, jobStatus: job.status, result: job.result, error: job.error }, `job ${jobId} = ${job.status}${job.error ? `: ${job.error}` : ''}`);
34
+ }
35
+ await sleep(intervalMs);
36
+ }
37
+ return qaError({ what: `Timed out waiting for job ${jobId}`, changedState: false, retrySafe: true, nextSteps: ['Poll qa_job_status, or qa_job_cancel.'] });
38
+ }
39
+ while (Date.now() < deadline) {
40
+ if (cond === 'device_online') {
41
+ const dev = await resolveDevice(session);
42
+ if (dev.available.length > 0)
43
+ return qaOk({ satisfied: true, condition: cond, availableDevices: dev.available }, `device online: ${dev.available.join(', ')}`);
44
+ }
45
+ else {
46
+ const dev = await resolveDevice(session);
47
+ if (dev.effective) {
48
+ const rd = await metroReadiness(dev.effective);
49
+ if (rd.serving)
50
+ return qaOk({ satisfied: true, condition: cond, metro: rd }, `Metro serving=${rd.serving} reverse=${rd.reverseSet} ready=${rd.ready}`);
51
+ }
52
+ }
53
+ await sleep(intervalMs);
54
+ }
55
+ return qaOk({ satisfied: false, timedOut: true, condition: cond }, `Timed out waiting for ${cond}. ${cond === 'device_online' ? 'Boot one with qa_prepare_target { bindOnly:true }.' : 'Start Metro with qa_metro action="start", or qa_metro diagnose.'}`);
56
+ });
57
+ }
58
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -1,11 +1,12 @@
1
1
  // Single source of truth for the Swipium version and the public tool surface. Used by the
2
2
  // server identity, qa_doctor / qa_start_session, qa_capabilities, and `swipium verify`.
3
- export const SWIPIUM_VERSION = '1.1.0';
3
+ export const SWIPIUM_VERSION = '1.2.0';
4
4
  export const TOOL_NAMES = [
5
5
  'qa_agent_brief',
6
6
  'qa_capabilities',
7
7
  'qa_test_this',
8
8
  'qa_job_status',
9
+ 'qa_job_cancel',
9
10
  'qa_status',
10
11
  'qa_explain_blocker',
11
12
  'qa_continue_from_blocker',
@@ -38,6 +39,11 @@ export const TOOL_NAMES = [
38
39
  // Visual intelligence (Phase 8, local-first OCR + coordinate audit)
39
40
  'qa_visual',
40
41
  'qa_visual_find_text',
42
+ // Agent-efficiency helpers (Phase 7)
43
+ 'qa_locator_suggest',
44
+ 'qa_wait',
45
+ 'qa_idling_status',
46
+ 'qa_input_capabilities',
41
47
  'qa_smoke',
42
48
  'qa_explore',
43
49
  'qa_report',
@@ -54,17 +60,40 @@ export const TOOL_NAMES = [
54
60
  'qa_app_map_query',
55
61
  'qa_app_map_feature_scope',
56
62
  'qa_app_map_validate',
63
+ // Repeatable flow system (Phase 4)
57
64
  'qa_flow_check',
65
+ 'qa_flow_plan',
58
66
  'qa_flow_run',
59
67
  'qa_flow_generate',
68
+ 'qa_flow_repair',
69
+ // Persistent test suite + POM (REQ-06)
60
70
  'qa_suite_generate',
61
71
  'qa_suite_compile',
72
+ 'qa_suite_lint',
73
+ 'qa_pom_generate',
62
74
  'qa_testcase_generate',
75
+ 'qa_test_suite_read',
76
+ 'qa_test_suite_update',
77
+ 'qa_test_suite_generate',
78
+ 'qa_test_suite_export',
79
+ 'qa_test_suite_lint',
63
80
  'qa_first_run_plan',
64
81
  'qa_first_run_continue',
65
82
  'qa_automation_plan',
66
83
  'qa_automation_generate',
67
84
  'qa_automation_validate',
85
+ // Maestro interop
86
+ 'qa_maestro_import',
87
+ 'qa_maestro_export',
88
+ // Durable issue memory + executable mobile audit (REQ-07/08)
89
+ 'qa_issue_log',
90
+ 'qa_issue_history',
91
+ 'qa_issue_mark_fixed',
92
+ 'qa_issue_triage',
93
+ 'qa_issue_suppress',
94
+ 'qa_issue_verify_fixed',
95
+ 'qa_issue_metrics',
96
+ 'qa_mobile_audit',
68
97
  ];
69
98
  export const TOOL_COUNT = TOOL_NAMES.length;
70
99
  export const TOOL_NAME_SET = new Set(TOOL_NAMES);
@@ -79,6 +108,6 @@ export const PROMPT_NAMES = [
79
108
  export const PROMPT_COUNT = PROMPT_NAMES.length;
80
109
  /** Shown when a client may be running an older build than what's installed on disk. */
81
110
  export const STALE_CLIENT_HINT = `Swipium v${SWIPIUM_VERSION} exposes ${TOOL_COUNT} tools + ${PROMPT_COUNT} prompts. If your MCP client lists fewer ` +
82
- `(e.g. qa_device_info / qa_permissions / qa_visual / qa_seed / qa_run_history missing), it is running a server ` +
111
+ `(e.g. qa_issue_log / qa_test_suite_read / qa_mobile_audit / qa_maestro_export / qa_flow_repair missing), it is running a server ` +
83
112
  `spawned before the upgrade. Restart the client to reload Swipium.`;
84
113
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,wFAAwF;AAExF,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,0BAA0B;IAC1B,iBAAiB;IACjB,WAAW;IACX,kBAAkB;IAClB,mBAAmB;IACnB,SAAS;IACT,mBAAmB;IACnB,uBAAuB;IACvB,QAAQ;IACR,QAAQ;IACR,4CAA4C;IAC5C,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,kBAAkB;IAClB,oEAAoE;IACpE,WAAW;IACX,qBAAqB;IACrB,UAAU;IACV,YAAY;IACZ,WAAW;IACX,4DAA4D;IAC5D,mBAAmB;IACnB,gBAAgB;IAChB,yBAAyB;IACzB,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,0BAA0B;IAC1B,qBAAqB;IACrB,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,oBAAoB;IACpB,wBAAwB;IACxB,wBAAwB;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAEtE,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qBAAqB;IACrB,8BAA8B;IAC9B,oBAAoB;IACpB,mBAAmB;IACnB,6BAA6B;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;AAEhD,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,YAAY,eAAe,YAAY,UAAU,YAAY,YAAY,2CAA2C;IACpH,gHAAgH;IAChH,mEAAmE,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,wFAAwF;AAExF,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,0BAA0B;IAC1B,iBAAiB;IACjB,WAAW;IACX,kBAAkB;IAClB,mBAAmB;IACnB,SAAS;IACT,mBAAmB;IACnB,uBAAuB;IACvB,QAAQ;IACR,QAAQ;IACR,4CAA4C;IAC5C,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,kBAAkB;IAClB,oEAAoE;IACpE,WAAW;IACX,qBAAqB;IACrB,qCAAqC;IACrC,oBAAoB;IACpB,SAAS;IACT,kBAAkB;IAClB,uBAAuB;IACvB,UAAU;IACV,YAAY;IACZ,WAAW;IACX,4DAA4D;IAC5D,mBAAmB;IACnB,gBAAgB;IAChB,yBAAyB;IACzB,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,0BAA0B;IAC1B,qBAAqB;IACrB,mCAAmC;IACnC,eAAe;IACf,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,uCAAuC;IACvC,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,oBAAoB;IACpB,wBAAwB;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,6DAA6D;IAC7D,cAAc;IACd,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAEtE,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qBAAqB;IACrB,8BAA8B;IAC9B,oBAAoB;IACpB,mBAAmB;IACnB,6BAA6B;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;AAEhD,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,YAAY,eAAe,YAAY,UAAU,YAAY,YAAY,2CAA2C;IACpH,kIAAkI;IAClI,mEAAmE,CAAC"}