@clien-ai/mcp 0.13.0 → 0.13.2

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.
@@ -11,10 +11,12 @@ export const VERDICT_STATUSES = ['validated', 'invalidated', 'inconclusive'];
11
11
  export const CONFIDENCE_LEVELS = ['low', 'medium', 'high'];
12
12
  export const EVIDENCE_SUFFICIENCY_LEVELS = ['none', 'thin', 'moderate', 'substantial'];
13
13
  export const ROBUSTNESS_OUTCOMES = ['held', 'flipped', 'not_retested'];
14
- export const CONFIDENCE_BASES = ['evidence', 'recomputed_after_flip', 'withheld_no_evidence'];
14
+ export const CONFIDENCE_BASES = ['evidence', 'recomputed_after_flip', 'recomputed_after_clause_gap', 'withheld_no_evidence'];
15
+ export const CLAUSE_COVERAGE_OUTCOMES = ['complete', 'uncovered', 'contradicted', 'invalid'];
15
16
  export const HYPOTHESIS_PRIORITIES = ['high', 'medium', 'low'];
16
17
  /** The semantics contract version this MCP build knows how to read. */
17
- export const HYPOTHESIS_SEMANTICS_VERSION = 1;
18
+ export const LEGACY_HYPOTHESIS_SEMANTICS_VERSION = 1;
19
+ export const HYPOTHESIS_SEMANTICS_VERSION = 2;
18
20
  const VERDICT_STRENGTH = {
19
21
  validated: 2,
20
22
  inconclusive: 1,
@@ -30,6 +32,271 @@ function asMember(value, members) {
30
32
  ? value
31
33
  : null;
32
34
  }
35
+ const BOILERPLATE = new Set([
36
+ 'a', 'an', 'and', 'are', 'as', 'at', 'be', 'but', 'by', 'can', 'could', 'for', 'from',
37
+ 'if', 'in', 'is', 'of', 'on', 'or', 'should', 'that', 'the', 'this', 'through', 'to',
38
+ 'was', 'were', 'when', 'will', 'with', 'without', 'would',
39
+ ]);
40
+ const ECONOMIC_PATTERNS = {
41
+ acquisition: /\b(?:(?:(?:customer|user|client) )?acquisition costs?|cac|costs? per (?:acquisition|(?:(?:customers?|users?|clients?) acquired|acquired (?:customers?|users?|clients?)))|cpa|payback(?: period)?|costs? to acquire (?:(?:an?|the|each|every) )?(?:customers?|users?|clients?)|acquir(?:e|es|ed|ing) (?:(?:an?|the|each|every) )?(?:customers?|users?|clients?)(?!\s+feedback\b)(?: for)?)\b/i,
42
+ conversion: /\b(?:conversion|convert|converted)\b/i,
43
+ market_size: /\b(?:market size|tam|sam|som|unit volume|sales volume)\b/i,
44
+ pricing: /(?:\b(?:price|pricing|pay|paid|afford|affordable|willingness to pay)\b|[$£€¥])/i,
45
+ revenue: /\b(?:revenue|arpu|average revenue per user|ltv|lifetime value)\b/i,
46
+ profitability: /\b(?:break[ -]?even|breakeven|margin|profit|profitable|unit economics|roi|return on investment)\b/i,
47
+ retention: /\b(?:churn|retention|renewal)\b/i,
48
+ frequency: /\b(?:daily|weekly|monthly|quarterly|annually|every (?:day|week|month|quarter|year))\b/i,
49
+ rate: /(?:\b(?:percent|percentage)\b|\d+\s*%)/i,
50
+ };
51
+ const CONDITION_PATTERN = /\b(?:if|when|whenever|provided that|as long as|unless|while)\b/i;
52
+ const REACHABILITY_PATTERN = /\b(?:reach|reached|reachable|access|accessible|target|targetable|addressable|discoverable|recruit|recruitable)\b/i;
53
+ const NEGATION_PATTERN = /\b(?:no|not|never|false|fails?|failed|without|cannot|can't|doesn't|isn't|aren't|won't|disproves?|disproven|unsupported|contradicts?|refutes?|refuted)\b/i;
54
+ const MEASURED_POPULATION_PATTERN = /(?:\b(?:\d[\d,]*(?:\.\d+)?(?:k|m|bn|million|billion)?|(?:one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|dozens?|scores?|hundreds?|thousands?|millions?|billions?)(?:\s+(?:of|hundred|thousand|million|billion))?)\s+(?:[\p{L}-]+\s+){0,3}(?:people|users|customers|teams|designers|freelancers|businesses|companies|studios|agencies|households|professionals|workers|organisations|organizations)\b|\b(?:prevalence|adoption rate)\b)/iu;
55
+ const EVIDENCE_SOURCES = ['synthetic_interview', 'web_research', 'forum_research'];
56
+ const HYPOTHESIS_CATEGORIES = ['problem', 'solution', 'market', 'willingness_to_pay'];
57
+ const EXTERNAL_ECONOMIC_PATTERN = /\b(?:market (?:size|growth)|tam|sam|som|unit volume|sales volume|cagr|demand|prevalence|adoption(?: rate)?|benchmark|customer acquisition|user acquisition|cac|cpa|conversion(?: rate)?|unit economics|revenue|arpu|ltv|lifetime value|retention|churn|profit(?:ability)?|margin)\b/i;
58
+ const MARKET_GROWTH_PATTERN = /(?:\b(?:compound annual growth rate|growth rate)\b|\b(?:market|category|industry|sector)\b[^.!?\n]{0,80}\b(?:grow|grows|grew|grown|growing)\b|\b(?:grow|grows|grew|grown|growing)\b[^.!?\n]{0,40}(?:\d+(?:\.\d+)?\s*%|\bannually\b|\bper year\b|\byear(?:[- ]over[- ]year| on year)\b|\byoy\b))/i;
59
+ export function reportClaimNeedsIndependentMarketAuthority(section, text) {
60
+ if (section === 'market')
61
+ return true;
62
+ return typeof text === 'string' &&
63
+ (EXTERNAL_ECONOMIC_PATTERN.test(text) || MARKET_GROWTH_PATTERN.test(text) || MEASURED_POPULATION_PATTERN.test(text));
64
+ }
65
+ export function sourceAuthenticatesMarketEconomics(source) {
66
+ if (typeof source !== 'object' || source === null || Array.isArray(source))
67
+ return false;
68
+ const row = source;
69
+ return row.contentType === 'report_evidence' &&
70
+ row.publisherSubjectRelationship === 'independent' &&
71
+ row.marketEconomicsAuthority === 'independent';
72
+ }
73
+ function classifyEvidenceClaimKind(text, category) {
74
+ if (EXTERNAL_ECONOMIC_PATTERN.test(text) || MARKET_GROWTH_PATTERN.test(text) || MEASURED_POPULATION_PATTERN.test(text))
75
+ return 'market_fact';
76
+ if (category === 'market' || category === 'willingness_to_pay')
77
+ return 'market_fact';
78
+ return category === 'problem' ? 'lived_problem' : 'vendor_capability';
79
+ }
80
+ function normalizedContains(container, span) {
81
+ if (typeof container !== 'string' || typeof span !== 'string' || !span.trim())
82
+ return false;
83
+ const normalize = (value) => value.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
84
+ const needle = normalize(span);
85
+ return needle.length > 0 && normalize(container).includes(needle);
86
+ }
87
+ export function resolveHypothesisReceipt(rawEvidence, rawReport) {
88
+ const evidence = asRecord(rawEvidence);
89
+ const receipt = asRecord(evidence?.receipt);
90
+ const report = asRecord(rawReport);
91
+ const match = typeof receipt?.sourceId === 'string' ? /^RRCP-s(0|[1-9]\d*)$/.exec(receipt.sourceId) : null;
92
+ const sources = report?.reportEvidence;
93
+ const source = match && Array.isArray(sources) ? asRecord(sources[Number(match[1])]) : null;
94
+ return source?.section === 'hypothesis' && normalizedContains(source.quote, receipt?.quoteSpan) ? source : null;
95
+ }
96
+ function hostKey(value) {
97
+ if (typeof value !== 'string')
98
+ return null;
99
+ try {
100
+ return new URL(value).hostname.toLocaleLowerCase().replace(/^www\./, '') || null;
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ }
106
+ function sameNamedVendor(clauseText, source, rawReport) {
107
+ const report = asRecord(rawReport);
108
+ const web = asRecord(report?.webResearch);
109
+ const competitors = Array.isArray(web?.competitors) ? web.competitors : [];
110
+ const normalizedClause = clauseText.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
111
+ const namedHosts = new Set();
112
+ for (const rawCompetitor of competitors) {
113
+ const competitor = asRecord(rawCompetitor);
114
+ const name = typeof competitor?.name === 'string'
115
+ ? competitor.name.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim()
116
+ : '';
117
+ const host = hostKey(competitor?.url);
118
+ if (name && host && ` ${normalizedClause} `.includes(` ${name} `))
119
+ namedHosts.add(host);
120
+ }
121
+ const sourceHost = hostKey(source.url);
122
+ return sourceHost !== null && namedHosts.size === 1 && [...namedHosts].some(host => sourceHost === host || sourceHost.endsWith(`.${host}`));
123
+ }
124
+ function sourceSuitsClaim(kind, source, clauseText, rawReport) {
125
+ const role = source.contentType ?? 'unknown';
126
+ const relationship = source.publisherSubjectRelationship ?? 'unknown';
127
+ if (relationship === 'unknown')
128
+ return false;
129
+ if (kind === 'market_fact') {
130
+ return role === 'report_evidence' && relationship === 'independent' &&
131
+ source.marketEconomicsAuthority === 'independent';
132
+ }
133
+ if (kind === 'lived_problem')
134
+ return role === 'user_voice' && relationship === 'independent';
135
+ if (role === 'user_voice')
136
+ return relationship === 'independent';
137
+ if (relationship === 'independent')
138
+ return role === 'report_evidence';
139
+ return relationship === 'self' && sameNamedVendor(clauseText, source, rawReport) &&
140
+ (role === 'report_evidence' || role === 'marketing_seo');
141
+ }
142
+ function spanStatesClaim(claimText, span) {
143
+ if (typeof span !== 'string')
144
+ return false;
145
+ const claim = new Set(materialTokens(claimText));
146
+ const evidence = new Set(materialTokens(span));
147
+ if (claim.size === 0)
148
+ return false;
149
+ return [...claim].filter(token => evidence.has(token)).length / claim.size >= 0.5;
150
+ }
151
+ /** Authenticate one web evidence receipt against the exact clause and cited span it supports. */
152
+ export function hypothesisWebReceiptAuthenticates(rawEvidence, clauseText, rawCategory, rawReport) {
153
+ const evidence = asRecord(rawEvidence);
154
+ const receipt = asRecord(evidence?.receipt);
155
+ const reportSource = resolveHypothesisReceipt(evidence, rawReport);
156
+ const category = asMember(rawCategory, HYPOTHESIS_CATEGORIES);
157
+ if (!receipt || !reportSource || !category)
158
+ return false;
159
+ const kind = classifyEvidenceClaimKind(clauseText, category);
160
+ return sourceSuitsClaim(kind, reportSource, clauseText, rawReport) &&
161
+ spanStatesClaim(clauseText, receipt.quoteSpan);
162
+ }
163
+ function economicKinds(value) {
164
+ return Object.entries(ECONOMIC_PATTERNS)
165
+ .filter(([, pattern]) => pattern.test(value))
166
+ .map(([kind]) => kind);
167
+ }
168
+ function materialTokens(value) {
169
+ return (value.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []).filter(token => !BOILERPLATE.has(token));
170
+ }
171
+ /** Keep this conservative classifier identical to the producer's no-paid-stage backstop. */
172
+ function isUnderDecomposed(text) {
173
+ if (CONDITION_PATTERN.test(text))
174
+ return true;
175
+ if (economicKinds(text).length > 1 || (economicKinds(text).length > 0 && REACHABILITY_PATTERN.test(text)))
176
+ return true;
177
+ const connective = /\b(?:as well as|along with|in addition to|and|or|but|plus)\b|&/gi;
178
+ for (const match of text.matchAll(connective)) {
179
+ const index = match.index ?? 0;
180
+ if (materialTokens(text.slice(0, index)).length >= 1 && materialTokens(text.slice(index + match[0].length)).length >= 1)
181
+ return true;
182
+ }
183
+ for (const match of text.matchAll(/(?<!\d),(?!\d)|[;—]/g)) {
184
+ const index = match.index ?? 0;
185
+ if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + 1)).length > 0)
186
+ return true;
187
+ }
188
+ for (const match of text.matchAll(/(?<!\d)[.!?](?!\d)\s+/g)) {
189
+ const index = match.index ?? 0;
190
+ if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + match[0].length)).length > 0)
191
+ return true;
192
+ }
193
+ return false;
194
+ }
195
+ function evidenceRefAuthenticates(row, rawRef, expectedSide, clauseText, category, rawReport) {
196
+ const ref = asRecord(rawRef);
197
+ if (ref?.side !== expectedSide || typeof ref.index !== 'number' ||
198
+ !Number.isInteger(ref.index) || ref.index < 0)
199
+ return false;
200
+ const evidenceRows = expectedSide === 'contradicting' ? row.contradictingEvidence : row.supportingEvidence;
201
+ if (!Array.isArray(evidenceRows))
202
+ return false;
203
+ const evidence = asRecord(evidenceRows[ref.index]);
204
+ const source = asMember(evidence?.source, EVIDENCE_SOURCES);
205
+ const summary = typeof evidence?.summary === 'string' ? evidence.summary : null;
206
+ if (!evidence || !source || summary === null)
207
+ return false;
208
+ if (source === 'web_research') {
209
+ if (!hypothesisWebReceiptAuthenticates(evidence, clauseText, category, rawReport))
210
+ return false;
211
+ }
212
+ const clauseEconomicKinds = economicKinds(clauseText);
213
+ if ((clauseEconomicKinds.length > 0 || category === 'willingness_to_pay' ||
214
+ MEASURED_POPULATION_PATTERN.test(clauseText)) && source === 'synthetic_interview')
215
+ return false;
216
+ if (expectedSide === 'supporting' && NEGATION_PATTERN.test(summary) !== NEGATION_PATTERN.test(clauseText))
217
+ return false;
218
+ if (clauseEconomicKinds.length > 0) {
219
+ const evidenceKinds = new Set(economicKinds(summary));
220
+ return clauseEconomicKinds.every(kind => evidenceKinds.has(kind)) &&
221
+ materialTokens(clauseText).every(token => materialTokens(summary).includes(token));
222
+ }
223
+ const evidenceTokens = materialTokens(summary);
224
+ return materialTokens(clauseText).every(token => evidenceTokens.includes(token));
225
+ }
226
+ /**
227
+ * Authenticate the current final coverage summary against the producer-owned clause result.
228
+ * Both fields are code-derived from the same resolved clauses, so absence, malformed values, or
229
+ * disagreement means neither reader may preserve the final block as current-contract truth.
230
+ */
231
+ export function finalClauseCoverageMatchesIntegrity(rawRow, rawReport) {
232
+ const row = asRecord(rawRow);
233
+ if (!row)
234
+ return false;
235
+ const final = asRecord(row.final);
236
+ const integrity = asRecord(row.clauseIntegrity);
237
+ const finalCoverage = asMember(final?.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES);
238
+ const integrityOutcome = asMember(integrity?.outcome, CLAUSE_COVERAGE_OUTCOMES);
239
+ const clauses = integrity?.clauses;
240
+ const statement = typeof row.statement === 'string' ? row.statement : '';
241
+ const category = asMember(row.category, HYPOTHESIS_CATEGORIES);
242
+ if (!statement.trim() || !category || !Array.isArray(clauses) || clauses.length < 1 || clauses.length > 4)
243
+ return false;
244
+ const clauseIds = new Set();
245
+ const clauseTexts = new Set();
246
+ const coveredRanges = [];
247
+ const refOwners = new Set();
248
+ const statuses = [];
249
+ let cursor = 0;
250
+ for (const [position, rawClause] of clauses.entries()) {
251
+ const clause = asRecord(rawClause);
252
+ const clauseId = typeof clause?.clauseId === 'string' ? clause.clauseId.trim() : '';
253
+ const text = typeof clause?.text === 'string' ? clause.text.trim() : '';
254
+ const status = asMember(clause?.status, ['supported', 'contradicted', 'uncovered']);
255
+ const start = statement.indexOf(text, cursor);
256
+ if (clauseId !== `C${position + 1}` || clauseIds.has(clauseId) || clauseTexts.has(text) ||
257
+ !text || clause?.text !== text || isUnderDecomposed(text) || start < 0 ||
258
+ !status || !Array.isArray(clause?.evidenceRefs) || clause.evidenceRefs.length > 16)
259
+ return false;
260
+ if (status === 'uncovered' && clause.evidenceRefs.length !== 0)
261
+ return false;
262
+ if (status !== 'uncovered' && clause.evidenceRefs.length === 0)
263
+ return false;
264
+ const expectedSide = status === 'contradicted' ? 'contradicting' : 'supporting';
265
+ for (const rawRef of clause.evidenceRefs) {
266
+ const ref = asRecord(rawRef);
267
+ if (!evidenceRefAuthenticates(row, ref, expectedSide, text, category, rawReport))
268
+ return false;
269
+ const refKey = `${String(ref?.side)}:${String(ref?.index)}`;
270
+ if (refOwners.has(refKey))
271
+ return false;
272
+ refOwners.add(refKey);
273
+ }
274
+ clauseIds.add(clauseId);
275
+ clauseTexts.add(text);
276
+ coveredRanges.push([start, start + text.length]);
277
+ cursor = start + text.length;
278
+ statuses.push(status);
279
+ }
280
+ let uncovered = '';
281
+ cursor = 0;
282
+ for (const [start, end] of coveredRanges) {
283
+ uncovered += ` ${statement.slice(cursor, start)}`;
284
+ cursor = end;
285
+ }
286
+ uncovered += ` ${statement.slice(cursor)}`;
287
+ if (materialTokens(uncovered).length > 0)
288
+ return false;
289
+ const derivedOutcome = statuses.some(status => status === 'contradicted')
290
+ ? 'contradicted'
291
+ : statuses.some(status => status === 'uncovered') ? 'uncovered' : 'complete';
292
+ const integrityIsCoherent = integrityOutcome === 'invalid'
293
+ ? statuses.every(status => status === 'uncovered')
294
+ : integrityOutcome === derivedOutcome;
295
+ return final?.version === HYPOTHESIS_SEMANTICS_VERSION &&
296
+ finalCoverage !== null &&
297
+ integrityIsCoherent &&
298
+ finalCoverage === integrityOutcome;
299
+ }
33
300
  /** The weaker of the original and candidate verdicts; an attempted upgrade is ignored. */
34
301
  export function resolveMonotoneVerdict(rawOriginal, rawCandidate) {
35
302
  const original = asMember(rawOriginal, VERDICT_STATUSES);
@@ -173,14 +440,59 @@ export function readLegacyRobustnessOutcome(value) {
173
440
  }
174
441
  function finalAxesAreCoherent(final) {
175
442
  const confidence = final.confidence ?? null;
443
+ if (final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidenceBasis === 'evidence' && final.clauseCoverage !== 'complete')
444
+ return false;
176
445
  if (final.confidenceBasis === 'withheld_no_evidence') {
177
446
  return confidence === null && final.sufficiency === 'none';
178
447
  }
179
448
  if (final.confidenceBasis === 'recomputed_after_flip') {
180
- return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped';
449
+ return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped' &&
450
+ (final.version === LEGACY_HYPOTHESIS_SEMANTICS_VERSION || final.clauseCoverage === 'complete');
451
+ }
452
+ if (final.confidenceBasis === 'recomputed_after_clause_gap') {
453
+ return final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidence === 'low' &&
454
+ final.sufficiency !== 'none' && final.clauseCoverage !== undefined && final.clauseCoverage !== 'complete';
181
455
  }
182
456
  return confidence !== null && final.sufficiency !== 'none' && final.robustness !== 'flipped';
183
457
  }
458
+ function failClosedCurrentState(row) {
459
+ const originalVerdict = asMember(row.status, VERDICT_STATUSES);
460
+ if (!originalVerdict)
461
+ return null;
462
+ const rawRobustness = asRecord(row.robustness);
463
+ const weakestRecorded = resolveMonotoneVerdict(originalVerdict, rawRobustness?.downgradedStatus);
464
+ const verdict = resolveMonotoneVerdict(weakestRecorded, 'inconclusive');
465
+ const evidence = [
466
+ ...(Array.isArray(row.supportingEvidence) ? row.supportingEvidence : []),
467
+ ...(Array.isArray(row.contradictingEvidence) ? row.contradictingEvidence : []),
468
+ ].filter(item => asRecord(item) !== null);
469
+ const methods = new Set(evidence.flatMap((item) => {
470
+ const source = asRecord(item)?.source;
471
+ return typeof source === 'string' ? [source] : [];
472
+ }));
473
+ const sufficiency = evidence.length === 0
474
+ ? 'none'
475
+ : evidence.length >= 5 && methods.size >= 3
476
+ ? 'substantial'
477
+ : evidence.length >= 3 && methods.size >= 2 ? 'moderate' : 'thin';
478
+ const robustness = readRowRobustnessOutcome(row);
479
+ if (robustness === null)
480
+ return null;
481
+ return {
482
+ version: HYPOTHESIS_SEMANTICS_VERSION,
483
+ verdict,
484
+ originalVerdict,
485
+ ...(sufficiency === 'none' ? {} : { confidence: 'low' }),
486
+ confidenceBasis: sufficiency === 'none'
487
+ ? 'withheld_no_evidence'
488
+ : 'recomputed_after_clause_gap',
489
+ sufficiency,
490
+ // An unreadable re-test cannot be called held; the conservative current-contract fallback
491
+ // treats it as not authenticated while retaining any separately recorded weaker verdict.
492
+ robustness,
493
+ clauseCoverage: 'invalid',
494
+ };
495
+ }
184
496
  /**
185
497
  * Authenticate and normalize a producer-owned `final` block against its raw row.
186
498
  *
@@ -192,39 +504,50 @@ function finalAxesAreCoherent(final) {
192
504
  export function normalizeFinalHypothesisState(rawRow) {
193
505
  const row = asRecord(rawRow);
194
506
  const block = asRecord(row?.final);
195
- if (!row || !block || block.version !== HYPOTHESIS_SEMANTICS_VERSION)
507
+ if (!row || !block || (block.version !== LEGACY_HYPOTHESIS_SEMANTICS_VERSION && block.version !== HYPOTHESIS_SEMANTICS_VERSION))
196
508
  return null;
509
+ const currentFallback = block.version === HYPOTHESIS_SEMANTICS_VERSION
510
+ ? failClosedCurrentState(row)
511
+ : null;
197
512
  const rowVerdict = asMember(row.status, VERDICT_STATUSES);
198
513
  const originalVerdict = asMember(block.originalVerdict, VERDICT_STATUSES);
199
514
  const verdict = asMember(block.verdict, VERDICT_STATUSES);
200
515
  if (!rowVerdict || originalVerdict !== rowVerdict || !verdict)
201
- return null;
516
+ return currentFallback;
202
517
  const rawRobustness = asRecord(row.robustness);
203
518
  const weakestRecorded = resolveMonotoneVerdict(rowVerdict, rawRobustness?.downgradedStatus);
204
519
  if (resolveMonotoneVerdict(weakestRecorded, verdict) !== verdict)
205
- return null;
520
+ return currentFallback;
206
521
  const confidence = asMember(block.confidence, CONFIDENCE_LEVELS);
207
522
  if (block.confidence !== undefined && confidence === null)
208
- return null;
523
+ return currentFallback;
209
524
  const confidenceBasis = asMember(block.confidenceBasis, CONFIDENCE_BASES);
210
525
  const sufficiency = asMember(block.sufficiency, EVIDENCE_SUFFICIENCY_LEVELS);
211
526
  const robustness = asMember(block.robustness, ROBUSTNESS_OUTCOMES);
527
+ const clauseCoverage = block.version === HYPOTHESIS_SEMANTICS_VERSION
528
+ ? asMember(block.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES)
529
+ : null;
212
530
  if (!confidenceBasis || !sufficiency || !robustness)
213
- return null;
531
+ return currentFallback;
532
+ if (block.version === HYPOTHESIS_SEMANTICS_VERSION && !clauseCoverage)
533
+ return currentFallback;
534
+ if (block.version === HYPOTHESIS_SEMANTICS_VERSION && verdict === 'validated' && clauseCoverage !== 'complete')
535
+ return currentFallback;
214
536
  if (readRowRobustnessOutcome(row) !== robustness)
215
- return null;
537
+ return currentFallback;
216
538
  const normalized = {
217
- version: HYPOTHESIS_SEMANTICS_VERSION,
539
+ version: block.version,
218
540
  verdict,
219
541
  originalVerdict,
220
542
  ...(confidence ? { confidence } : {}),
221
543
  confidenceBasis,
222
544
  sufficiency,
223
545
  robustness,
546
+ ...(clauseCoverage ? { clauseCoverage } : {}),
224
547
  };
225
548
  const priority = asMember(block.priority, HYPOTHESIS_PRIORITIES);
226
549
  if (priority)
227
550
  normalized.priority = priority;
228
- return finalAxesAreCoherent(normalized) ? normalized : null;
551
+ return finalAxesAreCoherent(normalized) ? normalized : currentFallback;
229
552
  }
230
553
  //# sourceMappingURL=hypothesis-semantics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hypothesis-semantics.js","sourceRoot":"","sources":["../src/hypothesis-semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAU,CAAA;AAGrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAGnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAU,CAAA;AAG/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAU,CAAA;AAG/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,sBAAsB,CAAU,CAAA;AAGtG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAA;AAGvE,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAiB7C,MAAM,gBAAgB,GAAkC;IACtD,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;CACf,CAAA;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,QAAQ,CAAmB,KAAc,EAAE,OAAqB;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChF,CAAC,CAAE,KAAW;QACd,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,sBAAsB,CACpC,WAAoB,EACpB,YAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;IAClC,IACE,OAAO,QAAQ,KAAK,QAAQ;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3B,QAAQ,GAAG,CAAC;QACZ,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC;QACV,QAAQ,GAAG,KAAK;QAChB,OAAO,OAAO,KAAK,SAAS;QAC5B,OAAO,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,CAAA;IACrC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAElD,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACpF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,cAAc,KAAK,cAAc,CAAC;YAAE,OAAO,KAAK,CAAA;QACxE,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,IAAI,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,WAAW,KAAK,MAAM,CAAC,QAAQ,CAAA;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAA;IAEhC,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,SAAQ;QAChF,aAAa,IAAI,CAAC,CAAA;QAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,cAAc,KAAK,cAAc,CAAC;YAAE,OAAO,IAAI,CAAA;QACvE,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,IAAI,CAAC,CAAA;;YAC/B,cAAc,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAC/C,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IACjG,OAAO,CACL,aAAa,KAAK,QAAQ,CAAC,MAAM;QACjC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK;QAChC,WAAW,KAAK,MAAM,CAAC,QAAQ,CAChC,CAAA;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,wBAAwB,CAAC,MAAe;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAClF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3C,IAAI,CAAC,UAAU,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAClE,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,KAAK,SAAS;QACnE,OAAO,IAAI,CAAA;IACb,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAC5D,mCAAmC,CAAC,UAAU,CAAC;QAC/C,OAAO,IAAI,CAAA;IACb,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvE,MAAM,qBAAqB,GACzB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC3D,IAAI,qBAAqB,IAAI,oBAAoB,CAAC,UAAU,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACnF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAqC;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;IAC3C,IAAI,KAAK,CAAC,eAAe,KAAK,sBAAsB,EAAE,CAAC;QACrD,OAAO,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAA;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,uBAAuB,EAAE,CAAC;QACtD,OAAO,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAA;IAC/F,CAAC;IACD,OAAO,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAA;AAC9F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAAe;IAEf,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,4BAA4B;QAAE,OAAO,IAAI,CAAA;IAEjF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzD,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACzD,IAAI,CAAC,UAAU,IAAI,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAA;IAC3F,IAAI,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAE7E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAChE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACtE,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;IAClE,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAChE,IAAI,wBAAwB,CAAC,GAAG,CAAC,KAAK,UAAU;QAAE,OAAO,IAAI,CAAA;IAE7D,MAAM,UAAU,GAAmC;QACjD,OAAO,EAAE,4BAA4B;QACrC,OAAO;QACP,eAAe;QACf,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,eAAe;QACf,WAAW;QACX,UAAU;KACX,CAAA;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAChE,IAAI,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE5C,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"hypothesis-semantics.js","sourceRoot":"","sources":["../src/hypothesis-semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAU,CAAA;AAGrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAGnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAU,CAAA;AAG/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAU,CAAA;AAG/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,CAAU,CAAA;AAErI,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,CAAU,CAAA;AAGrG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAA;AAGvE,uEAAuE;AACvE,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAkB7C,MAAM,gBAAgB,GAAkC;IACtD,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;CACf,CAAA;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,QAAQ,CAAmB,KAAc,EAAE,OAAqB;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChF,CAAC,CAAE,KAAW;QACd,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACrF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;IACpF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;CAC1D,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,8XAA8X;IAC3Y,UAAU,EAAE,uCAAuC;IACnD,WAAW,EAAE,2DAA2D;IACxE,OAAO,EAAE,iFAAiF;IAC1F,OAAO,EAAE,mEAAmE;IAC5E,aAAa,EAAE,oGAAoG;IACnH,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,wFAAwF;IACnG,IAAI,EAAE,yCAAyC;CACvC,CAAA;AACV,MAAM,iBAAiB,GAAG,iEAAiE,CAAA;AAC3F,MAAM,oBAAoB,GAAG,mHAAmH,CAAA;AAChJ,MAAM,gBAAgB,GAAG,0JAA0J,CAAA;AACnL,MAAM,2BAA2B,GAAG,8iBAA8iB,CAAA;AACllB,MAAM,gBAAgB,GAAG,CAAC,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,CAAU,CAAA;AAC3F,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAU,CAAA;AAC9F,MAAM,yBAAyB,GAAG,sRAAsR,CAAA;AACxT,MAAM,qBAAqB,GAAG,kSAAkS,CAAA;AAEhU,MAAM,UAAU,0CAA0C,CAAC,OAAgB,EAAE,IAAa;IACxF,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC7B,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAAe;IAChE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IACxF,MAAM,GAAG,GAAG,MAAiC,CAAA;IAC7C,OAAO,GAAG,CAAC,WAAW,KAAK,iBAAiB;QAC1C,GAAG,CAAC,4BAA4B,KAAK,aAAa;QAClD,GAAG,CAAC,wBAAwB,KAAK,aAAa,CAAA;AAClD,CAAC;AAID,SAAS,yBAAyB,CAChC,IAAY,EACZ,QAAgD;IAEhD,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAA;IAC5I,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,oBAAoB;QAAE,OAAO,aAAa,CAAA;IACpF,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAA;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAkB,EAAE,IAAa;IAC3D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAA;IAC3F,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACtG,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,WAAoB,EAAE,SAAkB;IAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,KAAK,GAAG,OAAO,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1G,MAAM,OAAO,GAAG,MAAM,EAAE,cAAc,CAAA;IACtC,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3F,OAAO,MAAM,EAAE,OAAO,KAAK,YAAY,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;AACjH,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1C,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AAChH,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB,EAAE,MAA+B,EAAE,SAAkB;IAC9F,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,MAAM,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/F,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,KAAK,MAAM,aAAa,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,OAAO,UAAU,EAAE,IAAI,KAAK,QAAQ;YAC/C,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;YAC7E,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACrC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,gBAAgB,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACzF,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtC,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;AAC7I,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAuB,EACvB,MAA+B,EAC/B,UAAkB,EAClB,SAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,SAAS,CAAA;IAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,4BAA4B,IAAI,SAAS,CAAA;IACrE,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO,IAAI,KAAK,iBAAiB,IAAI,YAAY,KAAK,aAAa;YACjE,MAAM,CAAC,wBAAwB,KAAK,aAAa,CAAA;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,IAAI,KAAK,YAAY,IAAI,YAAY,KAAK,aAAa,CAAA;IAC5F,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,KAAK,aAAa,CAAA;IAChE,IAAI,YAAY,KAAK,aAAa;QAAE,OAAO,IAAI,KAAK,iBAAiB,CAAA;IACrE,OAAO,YAAY,KAAK,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC;QAC9E,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,eAAe,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB,EAAE,IAAa;IACvD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,CAAA;AACnF,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,iCAAiC,CAC/C,WAAoB,EACpB,UAAkB,EAClB,WAAoB,EACpB,SAAkB;IAElB,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IACxD,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC5D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC;QAChE,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACtG,CAAC;AAED,4FAA4F;AAC5F,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7C,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACtH,MAAM,UAAU,GAAG,kEAAkE,CAAA;IACrF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;QAC9B,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACtI,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;QAC9B,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;IACtH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;QAC9B,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;IACpI,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAA4B,EAC5B,MAAe,EACf,YAA4C,EAC5C,UAAkB,EAClB,QAAgD,EAChD,SAAkB;IAElB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAC7D,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,YAAY,GAAG,YAAY,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC1D,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,IAAI,CAAC,iCAAiC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAA;IACjG,CAAC;IAED,MAAM,mBAAmB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACrD,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,oBAAoB;QACtE,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,KAAK,qBAAqB;QAAE,OAAO,KAAK,CAAA;IACjG,IAAI,YAAY,KAAK,YAAY,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACvH,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;QACrD,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/D,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACtF,CAAC;IACD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC9C,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAAC,MAAe,EAAE,SAAmB;IACtF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,wBAAwB,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAA;IAC/E,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,CAAA;IAClC,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAE9D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IACrC,MAAM,aAAa,GAA4B,EAAE,CAAA;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,QAAQ,GAAsD,EAAE,CAAA;IACtE,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACnF,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAU,CAAC,CAAA;QAC5F,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC7C,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YACrF,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;YACtE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAA;QAClG,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC5E,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC5E,MAAM,YAAY,GAAG,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAA;QAC/E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC9F,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAA;YAC3D,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YACvC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACvB,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAChD,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,MAAM,GAAG,CAAC,CAAA;IACV,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;QACzC,SAAS,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAA;QACjD,MAAM,GAAG,GAAG,CAAA;IACd,CAAC;IACD,SAAS,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;IAC1C,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAEtD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,cAAc,CAAC;QACvE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9E,MAAM,mBAAmB,GAAG,gBAAgB,KAAK,SAAS;QACxD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC;QAClD,CAAC,CAAC,gBAAgB,KAAK,cAAc,CAAA;IAEvC,OAAO,KAAK,EAAE,OAAO,KAAK,4BAA4B;QACpD,aAAa,KAAK,IAAI;QACtB,mBAAmB;QACnB,aAAa,KAAK,gBAAgB,CAAA;AACtC,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,sBAAsB,CACpC,WAAoB,EACpB,YAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;IAClC,IACE,OAAO,QAAQ,KAAK,QAAQ;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3B,QAAQ,GAAG,CAAC;QACZ,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC;QACV,QAAQ,GAAG,KAAK;QAChB,OAAO,OAAO,KAAK,SAAS;QAC5B,OAAO,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,CAAA;IACrC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAElD,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACpF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,cAAc,KAAK,cAAc,CAAC;YAAE,OAAO,KAAK,CAAA;QACxE,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,IAAI,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,WAAW,KAAK,MAAM,CAAC,QAAQ,CAAA;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAA;IAEhC,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,SAAQ;QAChF,aAAa,IAAI,CAAC,CAAA;QAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,cAAc,KAAK,cAAc,CAAC;YAAE,OAAO,IAAI,CAAA;QACvE,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,IAAI,CAAC,CAAA;;YAC/B,cAAc,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAC/C,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IACjG,OAAO,CACL,aAAa,KAAK,QAAQ,CAAC,MAAM;QACjC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK;QAChC,WAAW,KAAK,MAAM,CAAC,QAAQ,CAChC,CAAA;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,wBAAwB,CAAC,MAAe;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAClF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3C,IAAI,CAAC,UAAU,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAClE,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,KAAK,SAAS;QACnE,OAAO,IAAI,CAAA;IACb,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAC5D,mCAAmC,CAAC,UAAU,CAAC;QAC/C,OAAO,IAAI,CAAA;IACb,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvE,MAAM,qBAAqB,GACzB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC3D,IAAI,qBAAqB,IAAI,oBAAoB,CAAC,UAAU,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACnF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAqC;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;IAC3C,IAAI,KAAK,CAAC,OAAO,KAAK,4BAA4B,IAAI,KAAK,CAAC,eAAe,KAAK,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU;QAAE,OAAO,KAAK,CAAA;IAC/I,IAAI,KAAK,CAAC,eAAe,KAAK,sBAAsB,EAAE,CAAC;QACrD,OAAO,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAA;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,uBAAuB,EAAE,CAAC;QACtD,OAAO,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;YAC3F,CAAC,KAAK,CAAC,OAAO,KAAK,mCAAmC,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,CAAC,CAAA;IAClG,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,6BAA6B,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC,OAAO,KAAK,4BAA4B,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK;YACjF,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,CAAA;IAC7G,CAAC;IACD,OAAO,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAA;AAC9F,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAA4B;IAE5B,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC9D,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,eAAe,GAAG,sBAAsB,CAC5C,eAAe,EACf,aAAa,EAAE,gBAAgB,CAChC,CAAA;IACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,eAAe,EAAE,cAAc,CAAE,CAAA;IACxE,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;QACrC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnD,CAAC,CAAC,CAAC,CAAA;IACH,MAAM,WAAW,GAAwB,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5D,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC;YACzC,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAA;IACrE,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAChD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO;QACL,OAAO,EAAE,4BAA4B;QACrC,OAAO;QACP,eAAe;QACf,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAc,EAAE,CAAC;QACjE,eAAe,EAAE,WAAW,KAAK,MAAM;YACrC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,6BAA6B;QACjC,WAAW;QACX,0FAA0F;QAC1F,yFAAyF;QACzF,UAAU;QACV,cAAc,EAAE,SAAS;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAAe;IAEf,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,mCAAmC,IAAI,KAAK,CAAC,OAAO,KAAK,4BAA4B,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5I,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,KAAK,4BAA4B;QACpE,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzD,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACzD,IAAI,CAAC,UAAU,IAAI,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO;QAAE,OAAO,eAAe,CAAA;IAErF,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAA;IAC3F,IAAI,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,OAAO;QAAE,OAAO,eAAe,CAAA;IAExF,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAChE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,eAAe,CAAA;IACjF,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,KAAK,4BAA4B;QACnE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,wBAAwB,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAA;IACR,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;QAAE,OAAO,eAAe,CAAA;IAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,4BAA4B,IAAI,CAAC,cAAc;QAAE,OAAO,eAAe,CAAA;IAC7F,IAAI,KAAK,CAAC,OAAO,KAAK,4BAA4B,IAAI,OAAO,KAAK,WAAW,IAAI,cAAc,KAAK,UAAU;QAAE,OAAO,eAAe,CAAA;IACtI,IAAI,wBAAwB,CAAC,GAAG,CAAC,KAAK,UAAU;QAAE,OAAO,eAAe,CAAA;IAExE,MAAM,UAAU,GAAmC;QACjD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;QACP,eAAe;QACf,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,eAAe;QACf,WAAW;QACX,UAAU;QACV,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAA;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAChE,IAAI,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE5C,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAA;AACxE,CAAC"}
@@ -0,0 +1,46 @@
1
+ /** Display-only predicate. Safe strings retain their exact source bytes; unsafe strings vanish. */
2
+ export const UNSUITABLE_EXCERPT_TERMS = [
3
+ 'fuck', 'fucked', 'fucker', 'fucking', 'motherfucker', 'shit', 'shitty', 'bullshit',
4
+ 'bitch', 'bastard', 'asshole', 'arsehole', 'cunt', 'dickhead', 'prick', 'twat', 'wanker',
5
+ 'dumbass', 'shithead', 'slut', 'whore',
6
+ 'idiot', 'moron', 'imbecile', 'retard', 'retarded', 'scumbag', 'blowjob', 'handjob',
7
+ 'pornography', 'pornographic', 'nigger', 'nigga', 'chink', 'kike', 'spic', 'faggot',
8
+ ];
9
+ export const UNSUITABLE_EXCERPT_PHRASES = [
10
+ 'piece of shit', 'go fuck yourself', 'fuck you', 'suck my dick', 'suck my cock', 'anal sex',
11
+ 'oral sex', 'kill you', 'kill yourself', 'murder you', 'hurt you', 'beat you', 'shoot you',
12
+ 'stab you', 'burn you alive', 'rape you', 'death threat', 'strangle you', 'choke you',
13
+ 'slit your throat', 'break your neck', 'worthless loser', 'you are worthless', 'you are useless',
14
+ 'you are pathetic', 'piece of garbage', 'piece of trash', 'send nudes', 'explicit nude',
15
+ 'nude photo', 'nude photos', 'nude picture', 'nude pictures', 'naked photo', 'naked photos',
16
+ 'sex video', 'sex videos', 'sexually explicit',
17
+ ];
18
+ const BETWEEN_CHARACTERS = String.raw `[\p{Z}\p{P}\p{S}\p{M}\p{Cc}\p{Cf}\p{Default_Ignorable_Code_Point}_]`;
19
+ function policyFold(value) {
20
+ return value.normalize('NFKC').toLocaleLowerCase('en-US').normalize('NFKD');
21
+ }
22
+ function escapeRegex(value) {
23
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
+ }
25
+ function obfuscatedWord(value) {
26
+ return Array.from(policyFold(value)).map(escapeRegex).join(`${BETWEEN_CHARACTERS}*`);
27
+ }
28
+ function obfuscationAwarePattern(value) {
29
+ const words = policyFold(value).trim().split(/\s+/gu).map(obfuscatedWord);
30
+ const body = words.join(`${BETWEEN_CHARACTERS}+`);
31
+ return new RegExp(`(?:^|[^\\p{L}\\p{N}])${body}(?=$|[^\\p{L}\\p{N}])`, 'u');
32
+ }
33
+ const UNSUITABLE_PATTERNS = [
34
+ ...UNSUITABLE_EXCERPT_TERMS,
35
+ ...UNSUITABLE_EXCERPT_PHRASES,
36
+ ].map(obfuscationAwarePattern);
37
+ export function isDisplaySuitableExcerpt(value) {
38
+ if (typeof value !== 'string')
39
+ return false;
40
+ const folded = policyFold(value);
41
+ return folded.trim().length > 0 && !UNSUITABLE_PATTERNS.some((pattern) => pattern.test(folded));
42
+ }
43
+ export function displaySuitableExcerpts(values) {
44
+ return values.filter(isDisplaySuitableExcerpt);
45
+ }
46
+ //# sourceMappingURL=excerpt-suitability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excerpt-suitability.js","sourceRoot":"","sources":["../../src/lib/excerpt-suitability.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IACnF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;IACxF,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO;IACtC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACnF,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;CAC3E,CAAA;AAEV,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU;IAC3F,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;IAC1F,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW;IACrF,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB;IAChG,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe;IACvF,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc;IAC3F,WAAW,EAAE,YAAY,EAAE,mBAAmB;CACtC,CAAA;AAEV,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,qEAAqE,CAAA;AAE1G,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,CAAC,CAAA;IACjD,OAAO,IAAI,MAAM,CAAC,wBAAwB,IAAI,uBAAuB,EAAE,GAAG,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,mBAAmB,GAAG;IAC1B,GAAG,wBAAwB;IAC3B,GAAG,0BAA0B;CAC9B,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAE9B,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA0B;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAChD,CAAC"}
@@ -60,6 +60,7 @@ import { ToolError } from './errors.js';
60
60
  import { formatEngagement } from './engagement-display.js';
61
61
  import { canonicalContentType, contentTypeProvenanceLine } from './content-type-display.js';
62
62
  import { publicationDateLine } from './publication-date-display.js';
63
+ import { displaySuitableExcerpts } from '../lib/excerpt-suitability.js';
63
64
  import { apiCall, categorizeFetchError, } from './research.js';
64
65
  import { truncate, collapseWhitespace, safeInline, safeId, firstQuoteWithCount, } from './render-safety.js';
65
66
  const COLLECTIONS_FETCH_TIMEOUT_MS = 30_000;
@@ -782,7 +783,10 @@ export async function listCommunitySignals(input, deps) {
782
783
  }
783
784
  const { project_id: projectId, limit, offset } = parsed.data;
784
785
  const { rows, pagination } = await fetchCollection(deps, '/api/community', 'communitySignals', projectId, limit, offset, 'list community signals');
785
- const signals = rows.map(toCommunitySignalSummary);
786
+ const signals = rows.map((row) => {
787
+ const signal = toCommunitySignalSummary(row);
788
+ return { ...signal, relevantQuotes: displaySuitableExcerpts(signal.relevantQuotes) };
789
+ });
786
790
  const total = pagination.total ?? signals.length;
787
791
  let text;
788
792
  if (signals.length === 0) {
@@ -843,8 +847,8 @@ export async function listCommunitySignals(input, deps) {
843
847
  `${lines.join('\n\n')}${moreLine(offset, signals.length, total)}\n\n` +
844
848
  // FUL-243: same as `list_competitors` above — `structuredContent` first,
845
849
  // `_meta` named only as the mirror.
846
- 'Full records — including every cached quote — are in `structuredContent.communitySignals` ' +
847
- '(also mirrored in `_meta.communitySignals`).';
850
+ 'Full records — with unsuitable cached excerpts withheld — are in ' +
851
+ '`structuredContent.communitySignals` (also mirrored in `_meta.communitySignals`).';
848
852
  }
849
853
  return {
850
854
  content: [{ type: 'text', text }],