@getmarrow/mcp 3.9.49 → 3.9.51

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.
@@ -21,8 +21,8 @@ exports.installUserPromptSubmitHook = installUserPromptSubmitHook;
21
21
  const index_1 = require("./index");
22
22
  const env_1 = require("./env");
23
23
  const lifecycle_spool_1 = require("./lifecycle-spool");
24
- const node_crypto_1 = require("node:crypto");
25
- exports.CONTEXT_HOOK_COMMAND = 'npx -y @getmarrow/mcp context-hook';
24
+ const hook_contract_1 = require("./hook-contract");
25
+ exports.CONTEXT_HOOK_COMMAND = hook_contract_1.CONTEXT_HOOK_COMMAND;
26
26
  const HOOK_DEBUG = process.env.MARROW_CONTEXT_HOOK_DEBUG === 'true' || process.env.MARROW_HOOK_DEBUG === 'true';
27
27
  const MARROW_API_TIMEOUT_MS = 2000;
28
28
  const MAX_CONTEXT_BYTES = 4000; // safety cap on injected context size
@@ -44,6 +44,87 @@ function asRecord(value) {
44
44
  function asString(value) {
45
45
  return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
46
46
  }
47
+ const CLIENT_VERSION_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
48
+ function parseClientVersion(value) {
49
+ const version = typeof value === 'string' ? value.trim() : '';
50
+ if (version.length > 64)
51
+ return null;
52
+ const match = CLIENT_VERSION_PATTERN.exec(version);
53
+ return match ? {
54
+ major: match[1],
55
+ minor: match[2],
56
+ patch: match[3],
57
+ prerelease: match[4] ? match[4].split('.') : null,
58
+ } : null;
59
+ }
60
+ function strictClientVersion(value) {
61
+ const version = typeof value === 'string' ? value.trim() : '';
62
+ return parseClientVersion(version) ? version : undefined;
63
+ }
64
+ function compareNumericIdentifier(left, right) {
65
+ if (left.length !== right.length)
66
+ return left.length < right.length ? -1 : 1;
67
+ return left === right ? 0 : left < right ? -1 : 1;
68
+ }
69
+ function compareClientVersions(left, right) {
70
+ const parsedLeft = parseClientVersion(left);
71
+ const parsedRight = parseClientVersion(right);
72
+ if (!parsedLeft || !parsedRight)
73
+ throw new Error('compareClientVersions requires strict semantic versions');
74
+ for (const key of ['major', 'minor', 'patch']) {
75
+ const compared = compareNumericIdentifier(parsedLeft[key], parsedRight[key]);
76
+ if (compared !== 0)
77
+ return compared;
78
+ }
79
+ if (!parsedLeft.prerelease && !parsedRight.prerelease)
80
+ return 0;
81
+ if (!parsedLeft.prerelease)
82
+ return 1;
83
+ if (!parsedRight.prerelease)
84
+ return -1;
85
+ const length = Math.max(parsedLeft.prerelease.length, parsedRight.prerelease.length);
86
+ for (let index = 0; index < length; index += 1) {
87
+ const leftIdentifier = parsedLeft.prerelease[index];
88
+ const rightIdentifier = parsedRight.prerelease[index];
89
+ if (leftIdentifier == null)
90
+ return -1;
91
+ if (rightIdentifier == null)
92
+ return 1;
93
+ if (leftIdentifier === rightIdentifier)
94
+ continue;
95
+ const leftNumeric = /^\d+$/.test(leftIdentifier);
96
+ const rightNumeric = /^\d+$/.test(rightIdentifier);
97
+ if (leftNumeric && rightNumeric)
98
+ return compareNumericIdentifier(leftIdentifier, rightIdentifier);
99
+ if (leftNumeric !== rightNumeric)
100
+ return leftNumeric ? -1 : 1;
101
+ return leftIdentifier < rightIdentifier ? -1 : 1;
102
+ }
103
+ return 0;
104
+ }
105
+ function boundedClientCommand(value) {
106
+ if (typeof value !== 'string' || value.length > 240 || /[\u0000-\u001f\u007f-\u009f\u2028\u2029]/.test(value))
107
+ return undefined;
108
+ return value.trim() || undefined;
109
+ }
110
+ function validClientCommandTarget(value) {
111
+ return value === 'latest' || Boolean(strictClientVersion(value));
112
+ }
113
+ function strictClientUpdateCommand(value) {
114
+ const command = boundedClientCommand(value);
115
+ if (!command)
116
+ return undefined;
117
+ const match = /^(?:npx @getmarrow\/install@(\S+) --repair|npx @getmarrow\/mcp@(\S+) setup|npm install @getmarrow\/sdk@(\S+))$/.exec(command);
118
+ const target = match?.[1] || match?.[2] || match?.[3];
119
+ return target && validClientCommandTarget(target) ? command : undefined;
120
+ }
121
+ function strictClientVerificationCommand(value) {
122
+ const command = boundedClientCommand(value);
123
+ if (!command)
124
+ return undefined;
125
+ const match = /^npx @getmarrow\/install@(\S+) doctor$/.exec(command);
126
+ return match && validClientCommandTarget(match[1]) ? command : undefined;
127
+ }
47
128
  async function readStdin() {
48
129
  return new Promise((resolve) => {
49
130
  const chunks = [];
@@ -276,6 +357,59 @@ function appendAgentRuntime(lines, runtime) {
276
357
  if (closure) {
277
358
  lines.push(`- Outcome closure: ${asString(closure.state) || 'unknown'}${typeof closure.recent_coverage_24h === 'number' ? ` (${Math.round(closure.recent_coverage_24h * 100)}% recent)` : ''}`);
278
359
  }
360
+ const status = asRecord(runtime.status);
361
+ const update = asRecord(runtime.client_update) || asRecord(status?.client_update);
362
+ const rawNotification = update?.notification_state ?? update?.notification;
363
+ const notification = rawNotification === 'unknown' || rawNotification === 'version_unknown' || rawNotification === 'recommended' || rawNotification === 'security_required' || rawNotification === 'none'
364
+ ? rawNotification
365
+ : undefined;
366
+ const versionStatus = update?.version_status === 'unknown' || update?.version_status === 'behind' || update?.version_status === 'current' || update?.version_status === 'ahead'
367
+ ? update.version_status
368
+ : undefined;
369
+ const currentVersion = strictClientVersion(update?.installed_version) || strictClientVersion(update?.current_version);
370
+ const latestVersion = strictClientVersion(update?.latest_version);
371
+ const versionComparison = currentVersion && latestVersion
372
+ ? compareClientVersions(currentVersion, latestVersion)
373
+ : null;
374
+ const securityPolicy = asRecord(update?.security_policy);
375
+ const minimumSecureVersion = strictClientVersion(securityPolicy?.minimum_secure_version);
376
+ const coherentVersionStatus = versionStatus === 'behind'
377
+ ? versionComparison != null && versionComparison < 0
378
+ : versionStatus === 'current'
379
+ ? versionComparison === 0
380
+ : versionStatus === 'ahead'
381
+ ? versionComparison != null && versionComparison > 0
382
+ : versionStatus === 'unknown';
383
+ const versionUnknown = versionStatus === 'unknown' || notification === 'unknown' || notification === 'version_unknown';
384
+ const explicitSecurityPolicy = securityPolicy?.source === 'server_policy'
385
+ && versionStatus === 'behind'
386
+ && coherentVersionStatus
387
+ && Boolean(currentVersion && latestVersion && minimumSecureVersion)
388
+ && compareClientVersions(currentVersion, minimumSecureVersion) < 0
389
+ && compareClientVersions(minimumSecureVersion, latestVersion) <= 0;
390
+ const priority = versionUnknown
391
+ ? 'version_unknown'
392
+ : notification === 'security_required' && update?.update_available === true && coherentVersionStatus && Boolean(currentVersion && latestVersion) && explicitSecurityPolicy
393
+ ? 'security_required'
394
+ : notification === 'recommended' && versionStatus === 'behind' && update?.update_available === true && coherentVersionStatus && versionComparison != null && versionComparison < 0
395
+ ? 'recommended'
396
+ : null;
397
+ if (update && priority) {
398
+ const current = currentVersion || 'unknown';
399
+ const latest = latestVersion || 'unknown';
400
+ const updateSummary = priority === 'version_unknown'
401
+ ? 'Marrow client version unrecognized'
402
+ : priority === 'security_required'
403
+ ? 'Marrow client update required by server policy'
404
+ : 'Marrow client update available';
405
+ lines.push(`- ${updateSummary}: installed=${current}; latest=${latest}. Hosted Marrow services are already current; no local changes were applied.`);
406
+ const updateCommand = strictClientUpdateCommand(update.update_command) || strictClientUpdateCommand(update.exact_update_command);
407
+ const verifyCommand = strictClientVerificationCommand(update.verification_command) || strictClientVerificationCommand(update.exact_verification_command);
408
+ if (updateCommand)
409
+ lines.push(`- Update command (operator approval): ${updateCommand}`);
410
+ if (verifyCommand)
411
+ lines.push(`- Verify after update: ${verifyCommand}`);
412
+ }
279
413
  }
280
414
  function buildCombinedContextBlock(signals, brief, valueReport, runtime = null) {
281
415
  const lines = buildContextBlock(signals).split('\n');
@@ -362,10 +496,8 @@ async function runContextHookCommand() {
362
496
  const passiveBriefInput = inferPassiveBriefInput(prompt);
363
497
  const runtimeInput = passiveBriefInput || defaultRuntimeInput(prompt);
364
498
  const action = runtimeInput.action;
365
- const requestCorrelation = (0, node_crypto_1.createHash)('sha256')
366
- .update(JSON.stringify([sessionId || '', event.hook_event_name || 'UserPromptSubmit', prompt]))
367
- .digest('hex')
368
- .slice(0, 32);
499
+ const requestCorrelation = (0, hook_contract_1.stablePromptCorrelation)({ session_id: sessionId, prompt });
500
+ const workflowId = (0, hook_contract_1.stableSessionWorkflowId)(sessionId, requestCorrelation);
369
501
  void (0, lifecycle_spool_1.recordLifecycleEvent)({
370
502
  apiKey,
371
503
  baseUrl,
@@ -375,7 +507,9 @@ async function runContextHookCommand() {
375
507
  harness: 'claude-code',
376
508
  agent_id: agentId,
377
509
  session_id: sessionId,
378
- workflow_id: `request-${requestCorrelation}`,
510
+ workflow_id: workflowId,
511
+ correlation_id: requestCorrelation,
512
+ ...(0, hook_contract_1.nativeHookEvidence)('prompt'),
379
513
  action: `user prompt submitted: ${passiveBriefInput?.type || 'general'}`,
380
514
  risk_level: passiveBriefInput ? 'medium' : 'low',
381
515
  outcome_state: 'pending',
@@ -421,7 +555,9 @@ async function runContextHookCommand() {
421
555
  harness: 'claude-code',
422
556
  agent_id: agentId,
423
557
  session_id: sessionId,
424
- workflow_id: `request-${requestCorrelation}`,
558
+ workflow_id: workflowId,
559
+ correlation_id: requestCorrelation,
560
+ ...(0, hook_contract_1.nativeHookEvidence)('prompt'),
425
561
  action: `pre-action check: ${passiveBriefInput?.type || 'general'}`,
426
562
  risk_level: runtimeResult.risk_gate?.risk_level,
427
563
  outcome_state: 'pending',
@@ -458,62 +594,19 @@ function appendValueSummary(lines, report) {
458
594
  function installUserPromptSubmitHook(startDir = process.cwd()) {
459
595
  const fs = require('fs');
460
596
  const path = require('path');
461
- // Re-implement findSettingsPath here to avoid circular dependency on hook.ts
462
- let dir = startDir;
463
- let settingsPath = null;
464
- for (let i = 0; i < 5; i++) {
465
- const candidate = path.join(dir, '.claude', 'settings.json');
466
- const projectMarker = path.join(dir, '.git');
467
- const claudeDir = path.join(dir, '.claude');
468
- if (fs.existsSync(candidate) || fs.existsSync(claudeDir) || fs.existsSync(projectMarker)) {
469
- settingsPath = candidate;
470
- break;
471
- }
472
- const parent = path.dirname(dir);
473
- if (parent === dir)
474
- break;
475
- dir = parent;
476
- }
477
- if (!settingsPath) {
478
- settingsPath = path.join(startDir, '.claude', 'settings.json');
479
- }
480
- let settings = {};
481
- if (fs.existsSync(settingsPath)) {
482
- const raw = fs.readFileSync(settingsPath, 'utf8').trim();
483
- if (raw) {
484
- const parsed = JSON.parse(raw);
485
- const record = asRecord(parsed);
486
- if (!record) {
487
- throw new Error(`Existing settings file is not a JSON object: ${settingsPath}`);
488
- }
489
- settings = record;
490
- }
491
- }
597
+ const settingsPath = (0, hook_contract_1.findHookSettingsPath)(startDir);
598
+ const settings = (0, hook_contract_1.readHookSettingsForInstall)(startDir);
492
599
  const hooks = asRecord(settings.hooks) || {};
493
- const userPromptSubmit = Array.isArray(hooks.UserPromptSubmit) ? [...hooks.UserPromptSubmit] : [];
494
- const alreadyInstalled = userPromptSubmit.some((entry) => {
495
- const record = asRecord(entry);
496
- if (!record || !Array.isArray(record.hooks))
497
- return false;
498
- return record.hooks.some((hook) => {
499
- const hookRecord = asRecord(hook);
500
- return !!(hookRecord && typeof hookRecord.command === 'string' && hookRecord.command.includes(exports.CONTEXT_HOOK_COMMAND));
501
- });
502
- });
503
- if (!alreadyInstalled) {
504
- userPromptSubmit.push({
505
- hooks: [{ type: 'command', command: exports.CONTEXT_HOOK_COMMAND }],
506
- });
507
- }
600
+ const reconciled = (0, hook_contract_1.reconcileMarrowCommandHook)(settings, 'UserPromptSubmit', 'context-hook', exports.CONTEXT_HOOK_COMMAND);
508
601
  settings.hooks = {
509
602
  ...hooks,
510
- UserPromptSubmit: userPromptSubmit,
603
+ UserPromptSubmit: reconciled.entries,
511
604
  };
512
605
  fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
513
606
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
514
607
  return {
515
608
  settingsPath,
516
- installed: !alreadyInstalled,
609
+ installed: reconciled.changed,
517
610
  };
518
611
  }
519
612
  //# sourceMappingURL=hook-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook-context.js","sourceRoot":"","sources":["../src/hook-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-context.js","sourceRoot":"","sources":["../src/hook-context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAkdH,8DAgBC;AAiCD,sDAiJC;AAkBD,kEA2BC;AA/rBD,mCAAmH;AACnH,+BAAyC;AAEzC,uDAAyD;AACzD,mDAQyB;AAEZ,QAAA,oBAAoB,GAAG,oCAA6B,CAAC;AAClE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;AAChH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,sCAAsC;AACtE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,CAAC;AACtE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,MAAM,CAAC;AAE9E,MAAM,kBAAkB,GAAG,qOAAqO,CAAC;AACjQ,MAAM,qBAAqB,GAAG,0KAA0K,CAAC;AACzM,MAAM,8BAA8B,GAAG,iOAAiO,CAAC;AACzQ,MAAM,sBAAsB,GAAG,8NAA8N,CAAC;AAa9P,SAAS,KAAK,CAAC,GAAW;IACxB,IAAI,UAAU;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,MAAM,sBAAsB,GAAG,mLAAmL,CAAC;AASnN,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC;QACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;KAClD,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAa;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC5G,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,WAAW,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,cAAc,IAAI,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,eAAe,IAAI,IAAI;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,cAAc,KAAK,eAAe;YAAE,SAAS;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,WAAW,IAAI,YAAY;YAAE,OAAO,wBAAwB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAClG,IAAI,WAAW,KAAK,YAAY;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChI,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,gHAAgH,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7I,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAc;IACrD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,wCAAwC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,OAAO,KAAK,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,0GAA0G;QAC1G,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAoBD,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,QAAQ,EAAE,cAAc,CAAC,QAAQ;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,IAAI,GAAG,SAAS,CAAC;IACrB,IAAI,sDAAsD,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,GAAG,QAAQ,CAAC;SACnF,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,GAAG,OAAO,CAAC;SAClG,IAAI,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,GAAG,OAAO,CAAC;SACzE,IAAI,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,GAAG,QAAQ,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC;QACtB,sDAAsD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAClF,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC9D,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACjE,0DAA0D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QAC1F,gDAAgD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;KAC9E,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACxE,OAAO;QACL,MAAM,EAAE,6BAA6B,IAAI,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7E,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,WAAoB;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAElD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACtD,CAAC,CAAC,MAAM,CAAC,aAAa;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAEvD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnF,MAAM,SAAS,GACb,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,YAAY,GAAG,CAAC;QAChB,aAAa,GAAG,CAAC;QACjB,SAAS,GAAG,CAAC;QACb,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,iBAAiB,CAAC;IAEtB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,kBAAkB,EAAE,SAAS;QAC7B,cAAc;QACd,iBAAiB;QACjB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB;IAChD,MAAM,KAAK,GAAa,CAAC,oCAAoC,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,YAAY,yBAAyB,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC;IAC5I,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,aAAa,WAAW,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,0CAA0C,CAAC,CAAC;IACpI,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,kBAAkB,+BAA+B,OAAO,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,6CAA6C,CAAC,CAAC;IACrK,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAE3G,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACrC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,WAAW,GACf,kBAAkB,KAAK,QAAQ;QAC/B,CAAC,kBAAkB,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAElG,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,KAAuC;IAClF,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/H,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAExD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,2CAA2C,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,OAAwC;IACnF,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,YAAY,CAAC,QAAQ,KAAK,OAAO,CAAC,YAAY,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClI,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACnF,KAAK,CAAC,IAAI,CAAC,yJAAyJ,CAAC,CAAC;QACxK,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5H,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5H,KAAK,CAAC,IAAI,CAAC,kCAAkC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,6HAA6H,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,YAAY,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC,IAAI,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClI,KAAK,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,2DAA2D,OAAO,CAAC,wBAAwB,CAAC,wBAAwB,GAAG,CAAC,CAAC;IACtI,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,GAAG,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClM,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClF,MAAM,eAAe,GAAG,MAAM,EAAE,kBAAkB,IAAI,MAAM,EAAE,YAAY,CAAC;IAC3E,MAAM,YAAY,GAAG,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,iBAAiB,IAAI,eAAe,KAAK,aAAa,IAAI,eAAe,KAAK,mBAAmB,IAAI,eAAe,KAAK,MAAM;QACvM,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,MAAM,EAAE,cAAc,KAAK,SAAS,IAAI,MAAM,EAAE,cAAc,KAAK,QAAQ,IAAI,MAAM,EAAE,cAAc,KAAK,SAAS,IAAI,MAAM,EAAE,cAAc,KAAK,OAAO;QAC7K,CAAC,CAAC,MAAM,CAAC,cAAc;QACvB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtH,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,cAAc,IAAI,aAAa;QACvD,CAAC,CAAC,qBAAqB,CAAC,cAAc,EAAE,aAAa,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;IACzF,MAAM,qBAAqB,GAAG,aAAa,KAAK,QAAQ;QACtD,CAAC,CAAC,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,GAAG,CAAC;QACpD,CAAC,CAAC,aAAa,KAAK,SAAS;YAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC;YACzB,CAAC,CAAC,aAAa,KAAK,OAAO;gBAC3B,CAAC,CAAC,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,GAAG,CAAC;gBACpD,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC;IAChC,MAAM,cAAc,GAAG,aAAa,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,iBAAiB,CAAC;IACvH,MAAM,sBAAsB,GAAG,cAAc,EAAE,MAAM,KAAK,eAAe;WACpE,aAAa,KAAK,QAAQ;WAC1B,qBAAqB;WACrB,OAAO,CAAC,cAAc,IAAI,aAAa,IAAI,oBAAoB,CAAC;WAChE,qBAAqB,CAAC,cAAe,EAAE,oBAAqB,CAAC,GAAG,CAAC;WACjE,qBAAqB,CAAC,oBAAqB,EAAE,aAAc,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,YAAY,KAAK,mBAAmB,IAAI,MAAM,EAAE,gBAAgB,KAAK,IAAI,IAAI,qBAAqB,IAAI,OAAO,CAAC,cAAc,IAAI,aAAa,CAAC,IAAI,sBAAsB;YAC1K,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,YAAY,KAAK,aAAa,IAAI,aAAa,KAAK,QAAQ,IAAI,MAAM,EAAE,gBAAgB,KAAK,IAAI,IAAI,qBAAqB,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,GAAG,CAAC;gBAClL,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,cAAc,IAAI,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC;QAC1C,MAAM,aAAa,GAAG,QAAQ,KAAK,iBAAiB;YAClD,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,QAAQ,KAAK,mBAAmB;gBAClC,CAAC,CAAC,gDAAgD;gBAClD,CAAC,CAAC,gCAAgC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,eAAe,OAAO,YAAY,MAAM,8EAA8E,CAAC,CAAC;QACrJ,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACjI,MAAM,aAAa,GAAG,+BAA+B,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,+BAA+B,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACzJ,IAAI,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;QACxF,IAAI,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAgB,yBAAyB,CACvC,OAAuB,EACvB,KAAuC,EACvC,WAA2C,EAC3C,UAA2C,IAAI;IAE/C,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEvC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACrC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,kBAAkB,EAAE;YAClB,aAAa,EAAE,kBAAkB;YACjC,iBAAiB,EAAE,OAAO;SAC3B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAI,OAAmB,EAAE,EAAU;IAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO;aACJ,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,qBAAqB;IACzC,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;QAC7C,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACxC,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,KAA4B,CAAC;QACjC,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC5C,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC/C,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAA,sBAAgB,GAAE,CAAC;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,KAAK,CAAC,iDAAiD,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/E,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,WAAW,CAAC,OAAO,IAAI,0BAA0B,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,SAAS,CAAC;QAEjD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,iBAAiB,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,MAAM,kBAAkB,GAAG,IAAA,uCAAuB,EAAC,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,MAAM,UAAU,GAAG,IAAA,uCAAuB,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC1E,KAAK,IAAA,sCAAoB,EAAC;YACxB,MAAM;YACN,OAAO;YACP,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU,kBAAkB,EAAE;gBACxC,UAAU,EAAE,kBAAkB;gBAC9B,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAA,kCAAkB,EAAC,QAAQ,CAAC;gBAC/B,MAAM,EAAE,0BAA0B,iBAAiB,EAAE,IAAI,IAAI,SAAS,EAAE;gBACxE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBAChD,aAAa,EAAE,SAAS;aACzB;SACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,MAAM,uBAAuB,GAC3B,kBAAkB,KAAK,QAAQ;YAC/B,CAAC,kBAAkB,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,uEAAuE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE3J,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/E,WAAW,CACT,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,IAAI,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EACxG,qBAAqB,CACtB;YACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO;gBAC1C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,WAAW,CACT,IAAA,0BAAkB,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACrE,qBAAqB,CACtB;oBACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,MAAM;gBACvE,CAAC,CAAC,WAAW,CACT,IAAA,2BAAmB,EAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3E,qBAAqB,CACtB;gBACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,uBAAuB;gBACrB,CAAC,CAAC,WAAW,CACT,IAAA,yBAAiB,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/G,qBAAqB,CACtB;gBACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACnE,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACjE,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACzE,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAChE,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,cAAc,IAAI,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QACrI,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,IAAA,sCAAoB,EAAC;gBACxB,MAAM;gBACN,OAAO;gBACP,KAAK,EAAE;oBACL,QAAQ,EAAE,aAAa,kBAAkB,EAAE;oBAC3C,UAAU,EAAE,oBAAoB;oBAChC,OAAO,EAAE,aAAa;oBACtB,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,SAAS;oBACrB,WAAW,EAAE,UAAU;oBACvB,cAAc,EAAE,kBAAkB;oBAClC,GAAG,IAAA,kCAAkB,EAAC,QAAQ,CAAC;oBAC/B,MAAM,EAAE,qBAAqB,iBAAiB,EAAE,IAAI,IAAI,SAAS,EAAE;oBACnE,UAAU,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU;oBAC/C,aAAa,EAAE,SAAS;iBACzB;aACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,kCAAkC,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC3E,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;QACtC,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,MAAsC;IACjF,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,mBAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACtK,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC1E,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAwB,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAA0B,CAAC;IAEtD,MAAM,YAAY,GAAG,IAAA,oCAAoB,EAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAA,0CAA0B,EAAC,QAAQ,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAA,0CAA0B,EAC3C,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,4BAAoB,CACrB,CAAC;IAEF,QAAQ,CAAC,KAAK,GAAG;QACf,GAAG,KAAK;QACR,gBAAgB,EAAE,UAAU,CAAC,OAAO;KACrC,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY;QACZ,SAAS,EAAE,UAAU,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ export declare const MCP_ADAPTER_VERSION = "3.9.51";
2
+ export declare const NATIVE_HOOK_MATCHER = "Bash|Edit|Write|MultiEdit|mcp__(?!marrow_).*";
3
+ export declare const MCP_PACKAGE_SPEC = "@getmarrow/mcp@3.9.51";
4
+ export declare const CONTEXT_HOOK_COMMAND = "npx -y @getmarrow/mcp@3.9.51 context-hook";
5
+ export declare const PRE_ACTION_HOOK_COMMAND = "npx -y @getmarrow/mcp@3.9.51 pre-action-hook";
6
+ export declare const ACTION_RESULT_HOOK_COMMAND = "npx -y @getmarrow/mcp@3.9.51 hook";
7
+ export declare const SESSION_END_HOOK_COMMAND = "npx -y @getmarrow/mcp@3.9.51 session-hook";
8
+ export declare const NATIVE_EXPECTED_HOOKS: readonly ["prompt", "pre_action", "action_result", "session_end"];
9
+ type HookSettings = Record<string, unknown>;
10
+ export declare function findHookSettingsPath(startDir?: string): string;
11
+ export declare function readHookSettings(startDir?: string): HookSettings;
12
+ export declare function readHookSettingsForInstall(startDir?: string): HookSettings;
13
+ export type MarrowHookSubcommand = 'context-hook' | 'pre-action-hook' | 'hook' | 'session-hook';
14
+ export declare function reconcileMarrowCommandHook(settings: HookSettings, eventName: string, subcommand: MarrowHookSubcommand, command: string, matcher?: string): {
15
+ entries: unknown[];
16
+ changed: boolean;
17
+ };
18
+ export declare function hasExactCommandHook(settings: HookSettings, eventName: string, command: string, matcher?: string): boolean;
19
+ export declare function nativeHookConfigurationFingerprint(startDir?: string): string;
20
+ export declare function nativeHookEvidence(observedHook: typeof NATIVE_EXPECTED_HOOKS[number], startDir?: string): {
21
+ adapter_version: string;
22
+ capability_level: 'native_hooks';
23
+ config_fingerprint: string;
24
+ expected_hooks: string[];
25
+ observed_hook: typeof observedHook;
26
+ };
27
+ export declare function stableToolCorrelation(event: {
28
+ session_id?: string;
29
+ tool_use_id?: string;
30
+ tool_name?: string;
31
+ tool_input?: unknown;
32
+ }): string;
33
+ export declare function stablePromptCorrelation(event: {
34
+ session_id?: string;
35
+ prompt?: string;
36
+ }): string;
37
+ export declare function stableSessionWorkflowId(sessionId?: string, fallback?: unknown): string;
38
+ export {};
39
+ //# sourceMappingURL=hook-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-contract.d.ts","sourceRoot":"","sources":["../src/hook-contract.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,mBAAmB,iDAAiD,CAAC;AAClF,eAAO,MAAM,gBAAgB,0BAA0C,CAAC;AACxE,eAAO,MAAM,oBAAoB,8CAA4C,CAAC;AAC9E,eAAO,MAAM,uBAAuB,iDAA+C,CAAC;AACpF,eAAO,MAAM,0BAA0B,sCAAoC,CAAC;AAC5E,eAAO,MAAM,wBAAwB,8CAA4C,CAAC;AAClF,eAAO,MAAM,qBAAqB,mEAAoE,CAAC;AAEvG,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAQ5C,wBAAgB,oBAAoB,CAAC,QAAQ,SAAgB,GAAG,MAAM,CAYrE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,SAAgB,GAAG,YAAY,CAQvE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,SAAgB,GAAG,YAAY,CAejF;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GAAG,MAAM,GAAG,cAAc,CAAC;AAUhG,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAuC1C;AA4BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAcT;AA4BD,wBAAgB,kCAAkC,CAAC,QAAQ,SAAgB,GAAG,MAAM,CA6BnF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,OAAO,qBAAqB,CAAC,MAAM,CAAC,EAClD,QAAQ,SAAgB,GACvB;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,cAAc,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,YAAY,CAAC;CACpC,CAQA;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,CAOT;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAET;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAEtF"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NATIVE_EXPECTED_HOOKS = exports.SESSION_END_HOOK_COMMAND = exports.ACTION_RESULT_HOOK_COMMAND = exports.PRE_ACTION_HOOK_COMMAND = exports.CONTEXT_HOOK_COMMAND = exports.MCP_PACKAGE_SPEC = exports.NATIVE_HOOK_MATCHER = exports.MCP_ADAPTER_VERSION = void 0;
4
+ exports.findHookSettingsPath = findHookSettingsPath;
5
+ exports.readHookSettings = readHookSettings;
6
+ exports.readHookSettingsForInstall = readHookSettingsForInstall;
7
+ exports.reconcileMarrowCommandHook = reconcileMarrowCommandHook;
8
+ exports.hasExactCommandHook = hasExactCommandHook;
9
+ exports.nativeHookConfigurationFingerprint = nativeHookConfigurationFingerprint;
10
+ exports.nativeHookEvidence = nativeHookEvidence;
11
+ exports.stableToolCorrelation = stableToolCorrelation;
12
+ exports.stablePromptCorrelation = stablePromptCorrelation;
13
+ exports.stableSessionWorkflowId = stableSessionWorkflowId;
14
+ const node_crypto_1 = require("node:crypto");
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ exports.MCP_ADAPTER_VERSION = '3.9.51';
18
+ exports.NATIVE_HOOK_MATCHER = 'Bash|Edit|Write|MultiEdit|mcp__(?!marrow_).*';
19
+ exports.MCP_PACKAGE_SPEC = `@getmarrow/mcp@${exports.MCP_ADAPTER_VERSION}`;
20
+ exports.CONTEXT_HOOK_COMMAND = `npx -y ${exports.MCP_PACKAGE_SPEC} context-hook`;
21
+ exports.PRE_ACTION_HOOK_COMMAND = `npx -y ${exports.MCP_PACKAGE_SPEC} pre-action-hook`;
22
+ exports.ACTION_RESULT_HOOK_COMMAND = `npx -y ${exports.MCP_PACKAGE_SPEC} hook`;
23
+ exports.SESSION_END_HOOK_COMMAND = `npx -y ${exports.MCP_PACKAGE_SPEC} session-hook`;
24
+ exports.NATIVE_EXPECTED_HOOKS = ['prompt', 'pre_action', 'action_result', 'session_end'];
25
+ function asRecord(value) {
26
+ return value && typeof value === 'object' && !Array.isArray(value)
27
+ ? value
28
+ : null;
29
+ }
30
+ function findHookSettingsPath(startDir = process.cwd()) {
31
+ let dir = startDir;
32
+ let fallback = null;
33
+ for (let depth = 0; depth < 8; depth += 1) {
34
+ const candidate = (0, node_path_1.join)(dir, '.claude', 'settings.json');
35
+ if ((0, node_fs_1.existsSync)(candidate) || (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, '.claude')))
36
+ return candidate;
37
+ if (!fallback && (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, '.git')))
38
+ fallback = candidate;
39
+ const parent = (0, node_path_1.dirname)(dir);
40
+ if (parent === dir)
41
+ break;
42
+ dir = parent;
43
+ }
44
+ return fallback || (0, node_path_1.join)(startDir, '.claude', 'settings.json');
45
+ }
46
+ function readHookSettings(startDir = process.cwd()) {
47
+ const path = findHookSettingsPath(startDir);
48
+ if (!(0, node_fs_1.existsSync)(path))
49
+ return {};
50
+ try {
51
+ return asRecord(JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'))) || {};
52
+ }
53
+ catch {
54
+ return {};
55
+ }
56
+ }
57
+ function readHookSettingsForInstall(startDir = process.cwd()) {
58
+ const path = findHookSettingsPath(startDir);
59
+ if (!(0, node_fs_1.existsSync)(path))
60
+ return {};
61
+ let parsed;
62
+ try {
63
+ parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
64
+ }
65
+ catch (error) {
66
+ const detail = error instanceof Error ? error.message : 'invalid JSON';
67
+ throw new Error(`Cannot update Claude hook settings at ${path}: ${detail}`);
68
+ }
69
+ const settings = asRecord(parsed);
70
+ if (!settings) {
71
+ throw new Error(`Cannot update Claude hook settings at ${path}: root must be a JSON object`);
72
+ }
73
+ return settings;
74
+ }
75
+ function marrowHookSubcommand(command) {
76
+ if (typeof command !== 'string')
77
+ return null;
78
+ const match = command.trim().match(/^npx\s+(?:-y\s+)?@getmarrow\/mcp(?:@[^\s]+)?\s+(context-hook|pre-action-hook|hook|session-hook)$/);
79
+ return match?.[1] || null;
80
+ }
81
+ function reconcileMarrowCommandHook(settings, eventName, subcommand, command, matcher) {
82
+ const hooks = asRecord(settings.hooks);
83
+ const original = Array.isArray(hooks?.[eventName]) ? hooks[eventName] : [];
84
+ let preferredHandler = null;
85
+ const retained = [];
86
+ for (const entry of original) {
87
+ const record = asRecord(entry);
88
+ if (!record || !Array.isArray(record.hooks)) {
89
+ retained.push(entry);
90
+ continue;
91
+ }
92
+ const remaining = [];
93
+ for (const hook of record.hooks) {
94
+ const handler = asRecord(hook);
95
+ const detected = marrowHookSubcommand(handler?.command);
96
+ if (handler?.type === 'command' && detected) {
97
+ const exactMatcher = matcher === undefined
98
+ ? record.matcher === undefined
99
+ : record.matcher === matcher;
100
+ if (detected === subcommand && (!preferredHandler || (handler.command === command && exactMatcher))) {
101
+ preferredHandler = handler;
102
+ }
103
+ continue;
104
+ }
105
+ remaining.push(hook);
106
+ }
107
+ if (remaining.length > 0)
108
+ retained.push({ ...record, hooks: remaining });
109
+ }
110
+ const handler = { ...(preferredHandler || {}), type: 'command', command };
111
+ const canonicalEntry = { hooks: [handler] };
112
+ if (matcher !== undefined)
113
+ canonicalEntry.matcher = matcher;
114
+ retained.push(canonicalEntry);
115
+ return {
116
+ entries: retained,
117
+ changed: JSON.stringify(original) !== JSON.stringify(retained),
118
+ };
119
+ }
120
+ function marrowHookDescriptors(settings, eventName, subcommand) {
121
+ const hooks = asRecord(settings.hooks);
122
+ const entries = hooks?.[eventName];
123
+ if (!Array.isArray(entries))
124
+ return [];
125
+ return entries.flatMap((entry) => {
126
+ const record = asRecord(entry);
127
+ if (!record || !Array.isArray(record.hooks))
128
+ return [];
129
+ return record.hooks.flatMap((hook) => {
130
+ const handler = asRecord(hook);
131
+ const detected = marrowHookSubcommand(handler?.command);
132
+ if (handler?.type !== 'command' || !detected || (subcommand && detected !== subcommand))
133
+ return [];
134
+ return [{
135
+ matcher: typeof record.matcher === 'string' ? record.matcher : null,
136
+ command: String(handler.command).trim(),
137
+ timeout: typeof handler.timeout === 'number' && Number.isFinite(handler.timeout)
138
+ ? handler.timeout
139
+ : null,
140
+ }];
141
+ });
142
+ });
143
+ }
144
+ function hasExactCommandHook(settings, eventName, command, matcher) {
145
+ const hooks = asRecord(settings.hooks);
146
+ const entries = hooks?.[eventName];
147
+ if (!Array.isArray(entries))
148
+ return false;
149
+ return entries.some((entry) => {
150
+ const record = asRecord(entry);
151
+ if (!record || (matcher !== undefined && record.matcher !== matcher) || !Array.isArray(record.hooks))
152
+ return false;
153
+ return record.hooks.some((hook) => {
154
+ const handler = asRecord(hook);
155
+ return handler?.type === 'command'
156
+ && typeof handler.command === 'string'
157
+ && handler.command.trim() === command;
158
+ });
159
+ });
160
+ }
161
+ function exactHookDescriptors(settings, eventName, command, matcher) {
162
+ const hooks = asRecord(settings.hooks);
163
+ const entries = hooks?.[eventName];
164
+ if (!Array.isArray(entries))
165
+ return [];
166
+ return entries.flatMap((entry) => {
167
+ const record = asRecord(entry);
168
+ if (!record || (matcher !== undefined && record.matcher !== matcher) || !Array.isArray(record.hooks))
169
+ return [];
170
+ return record.hooks.flatMap((hook) => {
171
+ const handler = asRecord(hook);
172
+ if (handler?.type !== 'command' || typeof handler.command !== 'string' || handler.command.trim() !== command)
173
+ return [];
174
+ return [{
175
+ matcher: typeof record.matcher === 'string' ? record.matcher : null,
176
+ command,
177
+ timeout: typeof handler.timeout === 'number' && Number.isFinite(handler.timeout)
178
+ ? handler.timeout
179
+ : null,
180
+ }];
181
+ });
182
+ });
183
+ }
184
+ function nativeHookConfigurationFingerprint(startDir = process.cwd()) {
185
+ const settings = readHookSettings(startDir);
186
+ const contract = {
187
+ schema: 'marrow-claude-native-hooks.v3',
188
+ adapter_version: exports.MCP_ADAPTER_VERSION,
189
+ expected_hooks: exports.NATIVE_EXPECTED_HOOKS,
190
+ configured: {
191
+ prompt: hasExactCommandHook(settings, 'UserPromptSubmit', exports.CONTEXT_HOOK_COMMAND),
192
+ pre_action: hasExactCommandHook(settings, 'PreToolUse', exports.PRE_ACTION_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
193
+ action_result_success: hasExactCommandHook(settings, 'PostToolUse', exports.ACTION_RESULT_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
194
+ action_result_failure: hasExactCommandHook(settings, 'PostToolUseFailure', exports.ACTION_RESULT_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
195
+ session_end: hasExactCommandHook(settings, 'Stop', exports.SESSION_END_HOOK_COMMAND),
196
+ },
197
+ descriptors: {
198
+ prompt: exactHookDescriptors(settings, 'UserPromptSubmit', exports.CONTEXT_HOOK_COMMAND),
199
+ pre_action: exactHookDescriptors(settings, 'PreToolUse', exports.PRE_ACTION_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
200
+ action_result_success: exactHookDescriptors(settings, 'PostToolUse', exports.ACTION_RESULT_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
201
+ action_result_failure: exactHookDescriptors(settings, 'PostToolUseFailure', exports.ACTION_RESULT_HOOK_COMMAND, exports.NATIVE_HOOK_MATCHER),
202
+ session_end: exactHookDescriptors(settings, 'Stop', exports.SESSION_END_HOOK_COMMAND),
203
+ },
204
+ active_marrow_handlers: {
205
+ prompt: marrowHookDescriptors(settings, 'UserPromptSubmit'),
206
+ pre_action: marrowHookDescriptors(settings, 'PreToolUse'),
207
+ action_result_success: marrowHookDescriptors(settings, 'PostToolUse'),
208
+ action_result_failure: marrowHookDescriptors(settings, 'PostToolUseFailure'),
209
+ session_end: marrowHookDescriptors(settings, 'Stop'),
210
+ },
211
+ };
212
+ return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(contract)).digest('hex');
213
+ }
214
+ function nativeHookEvidence(observedHook, startDir = process.cwd()) {
215
+ return {
216
+ adapter_version: exports.MCP_ADAPTER_VERSION,
217
+ capability_level: 'native_hooks',
218
+ config_fingerprint: nativeHookConfigurationFingerprint(startDir),
219
+ expected_hooks: [...exports.NATIVE_EXPECTED_HOOKS],
220
+ observed_hook: observedHook,
221
+ };
222
+ }
223
+ function stableHash(value) {
224
+ return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(value)).digest('hex').slice(0, 32);
225
+ }
226
+ function stableToolCorrelation(event) {
227
+ return stableHash([
228
+ event.session_id || '',
229
+ event.tool_use_id || '',
230
+ event.tool_name || 'tool',
231
+ event.tool_use_id ? null : event.tool_input ?? null,
232
+ ]);
233
+ }
234
+ function stablePromptCorrelation(event) {
235
+ return stableHash([event.session_id || '', event.prompt || '']);
236
+ }
237
+ function stableSessionWorkflowId(sessionId, fallback) {
238
+ return `session-${stableHash([sessionId || '', sessionId ? null : fallback ?? null])}`;
239
+ }
240
+ //# sourceMappingURL=hook-contract.js.map