@agentplat/trust 0.3.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +14 -0
  3. package/dist/canonical.d.ts +20 -0
  4. package/dist/canonical.d.ts.map +1 -0
  5. package/dist/canonical.js +173 -0
  6. package/dist/canonical.js.map +1 -0
  7. package/dist/causal.d.ts +7 -0
  8. package/dist/causal.d.ts.map +1 -0
  9. package/dist/causal.js +155 -0
  10. package/dist/causal.js.map +1 -0
  11. package/dist/eligibility.d.ts +8 -0
  12. package/dist/eligibility.d.ts.map +1 -0
  13. package/dist/eligibility.js +325 -0
  14. package/dist/eligibility.js.map +1 -0
  15. package/dist/evidence.d.ts +20 -0
  16. package/dist/evidence.d.ts.map +1 -0
  17. package/dist/evidence.js +424 -0
  18. package/dist/evidence.js.map +1 -0
  19. package/dist/fusion.d.ts +8 -0
  20. package/dist/fusion.d.ts.map +1 -0
  21. package/dist/fusion.js +1278 -0
  22. package/dist/fusion.js.map +1 -0
  23. package/dist/index.d.ts +13 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +13 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lifecycle.d.ts +41 -0
  28. package/dist/lifecycle.d.ts.map +1 -0
  29. package/dist/lifecycle.js +1369 -0
  30. package/dist/lifecycle.js.map +1 -0
  31. package/dist/mesh-records.d.ts +36 -0
  32. package/dist/mesh-records.d.ts.map +1 -0
  33. package/dist/mesh-records.js +133 -0
  34. package/dist/mesh-records.js.map +1 -0
  35. package/dist/policy.d.ts +9 -0
  36. package/dist/policy.d.ts.map +1 -0
  37. package/dist/policy.js +598 -0
  38. package/dist/policy.js.map +1 -0
  39. package/dist/profile.d.ts +21 -0
  40. package/dist/profile.d.ts.map +1 -0
  41. package/dist/profile.js +253 -0
  42. package/dist/profile.js.map +1 -0
  43. package/dist/quarantine.d.ts +53 -0
  44. package/dist/quarantine.d.ts.map +1 -0
  45. package/dist/quarantine.js +742 -0
  46. package/dist/quarantine.js.map +1 -0
  47. package/dist/sha256.d.ts +2 -0
  48. package/dist/sha256.d.ts.map +1 -0
  49. package/dist/sha256.js +66 -0
  50. package/dist/sha256.js.map +1 -0
  51. package/dist/state.d.ts +18 -0
  52. package/dist/state.d.ts.map +1 -0
  53. package/dist/state.js +1015 -0
  54. package/dist/state.js.map +1 -0
  55. package/dist/types.d.ts +862 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +60 -0
  58. package/dist/types.js.map +1 -0
  59. package/dist/validation.d.ts +18 -0
  60. package/dist/validation.d.ts.map +1 -0
  61. package/dist/validation.js +223 -0
  62. package/dist/validation.js.map +1 -0
  63. package/package.json +43 -0
@@ -0,0 +1,424 @@
1
+ import { digestTrustJsonV1, sha256TrustBytesV1, utf8ByteLengthV1, } from "./canonical.js";
2
+ import { assertExactKeys, assertIdentifier, assertRfc3339OrNull, assertSafeInteger, assertToken, assertTrustDigest, TrustValidationError, validateEvidenceReferenceV1, validateEvidenceScopeV1, validateReasonCodeV1, validateSortedReferencesV1, validateTrustSubjectV1, } from "./validation.js";
3
+ function json(value) {
4
+ return value;
5
+ }
6
+ function omit(value, key) {
7
+ const copy = { ...value };
8
+ delete copy[key];
9
+ return copy;
10
+ }
11
+ function assertSource(sourceId, sourceKind, causationId) {
12
+ assertIdentifier(sourceId, "sourceId");
13
+ if (sourceKind !== "local" && sourceKind !== "peer")
14
+ throw new TrustValidationError("sourceKind is invalid");
15
+ if (causationId !== null)
16
+ assertIdentifier(causationId, "causationId");
17
+ }
18
+ function assertDigestId(value, prefix, digest, label) {
19
+ if (value !== `${prefix}:${digest}`)
20
+ throw new TrustValidationError(`${label} does not match its digest`);
21
+ }
22
+ export function digestScopeV1(scope) {
23
+ return digestTrustJsonV1("scope", json(scope));
24
+ }
25
+ export function digestSubjectV1(subject) {
26
+ return digestTrustJsonV1("subject", json(subject));
27
+ }
28
+ export function digestRootBasisV1(references) {
29
+ return digestTrustJsonV1("root-basis", json(references));
30
+ }
31
+ export function digestClaimRelationV1(claim) {
32
+ return digestTrustJsonV1("claim-relation", json({
33
+ sourceId: claim.sourceId,
34
+ sourceKind: claim.sourceKind,
35
+ subjectDigest: digestSubjectV1(claim.subject),
36
+ scopeDigest: digestScopeV1(claim.scope),
37
+ criterionId: claim.criterionId,
38
+ rootBasisDigest: claim.rootBasisDigest,
39
+ }));
40
+ }
41
+ export function digestAttestationRelationV1(record) {
42
+ return digestTrustJsonV1("attestation-relation", json({
43
+ sourceId: record.sourceId,
44
+ sourceKind: record.sourceKind,
45
+ claimId: record.claimId,
46
+ claimDigest: record.claimDigest,
47
+ }));
48
+ }
49
+ export function digestChallengeRelationV1(record) {
50
+ return digestTrustJsonV1("challenge-relation", json({
51
+ sourceId: record.sourceId,
52
+ sourceKind: record.sourceKind,
53
+ targetKind: record.targetKind,
54
+ targetId: record.targetId,
55
+ targetDigest: record.targetDigest,
56
+ }));
57
+ }
58
+ export function digestRetractionRelationV1(record) {
59
+ return digestTrustJsonV1("retraction-relation", json({
60
+ sourceId: record.sourceId,
61
+ sourceKind: record.sourceKind,
62
+ targetKind: record.targetKind,
63
+ targetId: record.targetId,
64
+ targetDigest: record.targetDigest,
65
+ }));
66
+ }
67
+ export function validateEvidenceContentV1(value) {
68
+ if (value === null || typeof value !== "object" || Array.isArray(value))
69
+ throw new TrustValidationError("content is invalid");
70
+ const content = value;
71
+ if (content.kind === "inline_summary") {
72
+ assertExactKeys(content, ["kind", "mediaType", "summary", "contentDigest", "encodedBytes"], "content");
73
+ assertToken(content.mediaType, "mediaType");
74
+ if (typeof content.summary !== "string")
75
+ throw new TrustValidationError("summary is invalid");
76
+ assertTrustDigest(content.contentDigest, "contentDigest");
77
+ assertSafeInteger(content.encodedBytes, "encodedBytes");
78
+ const bytes = utf8ByteLengthV1(content.summary);
79
+ if (bytes !== content.encodedBytes ||
80
+ sha256TrustBytesV1(new TextEncoder().encode(content.summary)) !==
81
+ content.contentDigest)
82
+ throw new TrustValidationError("inline content does not match its digest");
83
+ return content;
84
+ }
85
+ if (content.kind === "reference") {
86
+ assertExactKeys(content, ["kind", "mediaType", "reference", "contentDigest", "encodedBytes"], "content");
87
+ assertToken(content.mediaType, "mediaType");
88
+ const reference = validateEvidenceReferenceV1(content.reference);
89
+ if (reference.kind === "evidence")
90
+ throw new TrustValidationError("evidence references cannot contain content bytes");
91
+ assertTrustDigest(content.contentDigest, "contentDigest");
92
+ assertSafeInteger(content.encodedBytes, "encodedBytes");
93
+ return {
94
+ kind: "reference",
95
+ mediaType: content.mediaType,
96
+ reference,
97
+ contentDigest: content.contentDigest,
98
+ encodedBytes: content.encodedBytes,
99
+ };
100
+ }
101
+ throw new TrustValidationError("content kind is invalid");
102
+ }
103
+ function validateClaimFields(value) {
104
+ assertExactKeys(value, [
105
+ "schemaVersion",
106
+ "claimId",
107
+ "claimRelationDigest",
108
+ "rootBasisDigest",
109
+ "sourceId",
110
+ "sourceKind",
111
+ "causationId",
112
+ "subject",
113
+ "scope",
114
+ "criterionId",
115
+ "outcome",
116
+ "assertionDigest",
117
+ "content",
118
+ "basisReferences",
119
+ "observedAt",
120
+ ], "claim");
121
+ const claim = value;
122
+ if (claim.schemaVersion !== 1)
123
+ throw new TrustValidationError("claim schema is invalid");
124
+ assertSource(claim.sourceId, claim.sourceKind, claim.causationId);
125
+ const subject = validateTrustSubjectV1(claim.subject), scope = validateEvidenceScopeV1(claim.scope);
126
+ assertToken(claim.criterionId, "criterionId");
127
+ if (!["satisfied", "violated", "inconclusive"].includes(claim.outcome))
128
+ throw new TrustValidationError("claim outcome is invalid");
129
+ assertTrustDigest(claim.claimRelationDigest, "claimRelationDigest");
130
+ assertTrustDigest(claim.rootBasisDigest, "rootBasisDigest");
131
+ assertTrustDigest(claim.assertionDigest, "assertionDigest");
132
+ const content = claim.content === null ? null : validateEvidenceContentV1(claim.content);
133
+ const references = validateSortedReferencesV1(claim.basisReferences, "basisReferences");
134
+ assertRfc3339OrNull(claim.observedAt, "observedAt");
135
+ return {
136
+ ...claim,
137
+ subject,
138
+ scope,
139
+ content,
140
+ basisReferences: references,
141
+ };
142
+ }
143
+ export function createEvidenceClaimV1(input) {
144
+ const subject = validateTrustSubjectV1(input.subject), scope = validateEvidenceScopeV1(input.scope), refs = validateSortedReferencesV1(input.basisReferences, "basisReferences");
145
+ const content = input.content === null ? null : validateEvidenceContentV1(input.content);
146
+ const rootBasisDigest = digestRootBasisV1(refs);
147
+ const assertionDigest = digestTrustJsonV1("assertion", json({
148
+ subject,
149
+ scope,
150
+ criterionId: input.criterionId,
151
+ outcome: input.outcome,
152
+ contentDigest: content?.contentDigest ?? null,
153
+ basisReferences: refs,
154
+ }));
155
+ const core = {
156
+ ...input,
157
+ subject,
158
+ scope,
159
+ content,
160
+ basisReferences: refs,
161
+ rootBasisDigest,
162
+ };
163
+ const claimRelationDigest = digestClaimRelationV1(core);
164
+ const withoutId = { ...core, claimRelationDigest, assertionDigest };
165
+ const digest = digestTrustJsonV1("claim", json(withoutId));
166
+ return validateEvidenceClaimV1({ ...withoutId, claimId: `claim:${digest}` });
167
+ }
168
+ export function validateEvidenceClaimV1(value) {
169
+ const claim = validateClaimFields(value);
170
+ if (claim.rootBasisDigest !== digestRootBasisV1(claim.basisReferences))
171
+ throw new TrustValidationError("rootBasisDigest does not match");
172
+ const assertion = digestTrustJsonV1("assertion", json({
173
+ subject: claim.subject,
174
+ scope: claim.scope,
175
+ criterionId: claim.criterionId,
176
+ outcome: claim.outcome,
177
+ contentDigest: claim.content?.contentDigest ?? null,
178
+ basisReferences: claim.basisReferences,
179
+ }));
180
+ if (claim.assertionDigest !== assertion ||
181
+ claim.claimRelationDigest !== digestClaimRelationV1(claim))
182
+ throw new TrustValidationError("claim derived digest does not match");
183
+ const digest = digestTrustJsonV1("claim", json(omit(claim, "claimId")));
184
+ assertDigestId(claim.claimId, "claim", digest, "claimId");
185
+ return claim;
186
+ }
187
+ function validateRelationship(value, kind) {
188
+ const layouts = {
189
+ attestation: [
190
+ "schemaVersion",
191
+ "attestationId",
192
+ "attestationRelationDigest",
193
+ "sourceId",
194
+ "sourceKind",
195
+ "causationId",
196
+ "scope",
197
+ "claimId",
198
+ "claimDigest",
199
+ "disposition",
200
+ "confidenceBasisPoints",
201
+ "basisReferences",
202
+ "observedAt",
203
+ ],
204
+ challenge: [
205
+ "schemaVersion",
206
+ "challengeId",
207
+ "challengeRelationDigest",
208
+ "sourceId",
209
+ "sourceKind",
210
+ "causationId",
211
+ "scope",
212
+ "targetKind",
213
+ "targetId",
214
+ "targetDigest",
215
+ "reasonCode",
216
+ "basisReferences",
217
+ "observedAt",
218
+ ],
219
+ retraction: [
220
+ "schemaVersion",
221
+ "retractionId",
222
+ "retractionRelationDigest",
223
+ "sourceId",
224
+ "sourceKind",
225
+ "causationId",
226
+ "scope",
227
+ "targetKind",
228
+ "targetId",
229
+ "targetDigest",
230
+ "reasonCode",
231
+ "observedAt",
232
+ ],
233
+ };
234
+ assertExactKeys(value, layouts[kind], kind);
235
+ const record = value;
236
+ if (record.schemaVersion !== 1)
237
+ throw new TrustValidationError(`${kind} schema is invalid`);
238
+ assertSource(record.sourceId, record.sourceKind, record.causationId);
239
+ const scope = validateEvidenceScopeV1(record.scope);
240
+ assertRfc3339OrNull(record.observedAt, "observedAt");
241
+ if (kind === "attestation") {
242
+ assertIdentifier(record.claimId, "claimId");
243
+ assertTrustDigest(record.claimDigest, "claimDigest");
244
+ if (!["support", "contradict", "inconclusive"].includes(record.disposition))
245
+ throw new TrustValidationError("attestation disposition is invalid");
246
+ assertSafeInteger(record.confidenceBasisPoints, "confidenceBasisPoints");
247
+ if (record.confidenceBasisPoints > 10_000)
248
+ throw new TrustValidationError("attestation confidence is invalid");
249
+ const refs = validateSortedReferencesV1(record.basisReferences, "basisReferences");
250
+ assertTrustDigest(record.attestationRelationDigest, "attestationRelationDigest");
251
+ const result = {
252
+ ...record,
253
+ scope,
254
+ basisReferences: refs,
255
+ };
256
+ if (result.attestationRelationDigest !== digestAttestationRelationV1(result))
257
+ throw new TrustValidationError("attestation relation does not match");
258
+ const digest = digestTrustJsonV1("attestation", json(omit(result, "attestationId")));
259
+ assertDigestId(result.attestationId, "attestation", digest, "attestationId");
260
+ return result;
261
+ }
262
+ if (record.targetKind !== "claim" && record.targetKind !== "attestation")
263
+ throw new TrustValidationError(`${kind} target kind is invalid`);
264
+ assertIdentifier(record.targetId, "targetId");
265
+ assertTrustDigest(record.targetDigest, "targetDigest");
266
+ validateReasonCodeV1(record.reasonCode);
267
+ if (kind === "challenge") {
268
+ const refs = validateSortedReferencesV1(record.basisReferences, "basisReferences", true);
269
+ assertTrustDigest(record.challengeRelationDigest, "challengeRelationDigest");
270
+ const result = {
271
+ ...record,
272
+ scope,
273
+ basisReferences: refs,
274
+ };
275
+ if (result.challengeRelationDigest !== digestChallengeRelationV1(result))
276
+ throw new TrustValidationError("challenge relation does not match");
277
+ const digest = digestTrustJsonV1("challenge", json(omit(result, "challengeId")));
278
+ assertDigestId(result.challengeId, "challenge", digest, "challengeId");
279
+ return result;
280
+ }
281
+ assertTrustDigest(record.retractionRelationDigest, "retractionRelationDigest");
282
+ const result = { ...record, scope };
283
+ if (result.retractionRelationDigest !== digestRetractionRelationV1(result))
284
+ throw new TrustValidationError("retraction relation does not match");
285
+ const digest = digestTrustJsonV1("retraction", json(omit(result, "retractionId")));
286
+ assertDigestId(result.retractionId, "retraction", digest, "retractionId");
287
+ return result;
288
+ }
289
+ export function validateEvidenceAttestationV1(value) {
290
+ return validateRelationship(value, "attestation");
291
+ }
292
+ export function validateEvidenceChallengeV1(value) {
293
+ return validateRelationship(value, "challenge");
294
+ }
295
+ export function validateEvidenceRetractionV1(value) {
296
+ return validateRelationship(value, "retraction");
297
+ }
298
+ export function createEvidenceAttestationV1(input) {
299
+ const relation = digestAttestationRelationV1(input);
300
+ const body = { ...input, attestationRelationDigest: relation };
301
+ return validateEvidenceAttestationV1({
302
+ ...body,
303
+ attestationId: `attestation:${digestTrustJsonV1("attestation", json(body))}`,
304
+ });
305
+ }
306
+ export function createEvidenceChallengeV1(input) {
307
+ const relation = digestChallengeRelationV1(input);
308
+ const body = { ...input, challengeRelationDigest: relation };
309
+ return validateEvidenceChallengeV1({
310
+ ...body,
311
+ challengeId: `challenge:${digestTrustJsonV1("challenge", json(body))}`,
312
+ });
313
+ }
314
+ export function createEvidenceRetractionV1(input) {
315
+ const relation = digestRetractionRelationV1(input);
316
+ const body = { ...input, retractionRelationDigest: relation };
317
+ return validateEvidenceRetractionV1({
318
+ ...body,
319
+ retractionId: `retraction:${digestTrustJsonV1("retraction", json(body))}`,
320
+ });
321
+ }
322
+ function validateSortedIdentifiers(value, label) {
323
+ if (!Array.isArray(value))
324
+ throw new TrustValidationError(`${label} is invalid`);
325
+ const identifiers = value.map((item) => {
326
+ assertIdentifier(item, label);
327
+ return item;
328
+ });
329
+ if (identifiers.some((item, index) => index > 0 && identifiers[index - 1] >= item))
330
+ throw new TrustValidationError(`${label} must be sorted and unique`);
331
+ return identifiers;
332
+ }
333
+ function validateSortedReasonCodes(value) {
334
+ if (!Array.isArray(value))
335
+ throw new TrustValidationError("reasonCodes is invalid");
336
+ const codes = value.map(validateReasonCodeV1);
337
+ if (codes.some((item, index) => index > 0 && codes[index - 1] >= item))
338
+ throw new TrustValidationError("reasonCodes must be sorted and unique");
339
+ return codes;
340
+ }
341
+ export function createTrustObservationV1(input) {
342
+ const body = validateTrustObservationFields({
343
+ ...input,
344
+ observationId: "pending",
345
+ });
346
+ const { observationId: _ignored, ...withoutId } = body;
347
+ return validateTrustObservationV1({
348
+ ...withoutId,
349
+ observationId: `observation:${digestTrustJsonV1("observation", json(withoutId))}`,
350
+ });
351
+ }
352
+ function validateTrustObservationFields(value) {
353
+ assertExactKeys(value, [
354
+ "schemaVersion",
355
+ "observationId",
356
+ "observerId",
357
+ "observerKind",
358
+ "causationId",
359
+ "subject",
360
+ "scope",
361
+ "policyId",
362
+ "policyVersion",
363
+ "policyDigest",
364
+ "profileDigest",
365
+ "fusionDecisionDigest",
366
+ "dimensionId",
367
+ "scoreBand",
368
+ "uncertaintyBand",
369
+ "disposition",
370
+ "evidenceIds",
371
+ "observedAt",
372
+ "validUntil",
373
+ "reasonCodes",
374
+ ], "observation");
375
+ const observation = value;
376
+ if (observation.schemaVersion !== 1)
377
+ throw new TrustValidationError("observation schema is invalid");
378
+ assertIdentifier(observation.observerId, "observerId");
379
+ if (observation.observerKind !== "local" &&
380
+ observation.observerKind !== "peer")
381
+ throw new TrustValidationError("observerKind is invalid");
382
+ if (observation.causationId !== null)
383
+ assertIdentifier(observation.causationId, "causationId");
384
+ const subject = validateTrustSubjectV1(observation.subject);
385
+ const scope = validateEvidenceScopeV1(observation.scope);
386
+ assertIdentifier(observation.policyId, "policyId");
387
+ assertSafeInteger(observation.policyVersion, "policyVersion", 1);
388
+ for (const key of [
389
+ "policyDigest",
390
+ "profileDigest",
391
+ "fusionDecisionDigest",
392
+ ])
393
+ assertTrustDigest(observation[key], key);
394
+ assertToken(observation.dimensionId, "dimensionId");
395
+ if (!["unknown", "low", "medium", "high"].includes(observation.scoreBand))
396
+ throw new TrustValidationError("scoreBand is invalid");
397
+ if (!["low", "medium", "high"].includes(observation.uncertaintyBand))
398
+ throw new TrustValidationError("uncertaintyBand is invalid");
399
+ if (!["eligible", "restricted", "quarantined", "unavailable"].includes(observation.disposition))
400
+ throw new TrustValidationError("disposition is invalid");
401
+ const evidenceIds = validateSortedIdentifiers(observation.evidenceIds, "evidenceIds");
402
+ const reasonCodes = validateSortedReasonCodes(observation.reasonCodes);
403
+ assertRfc3339OrNull(observation.observedAt, "observedAt");
404
+ assertRfc3339OrNull(observation.validUntil, "validUntil");
405
+ if (observation.observedAt === null ||
406
+ observation.validUntil === null ||
407
+ Date.parse(observation.validUntil) <=
408
+ Date.parse(observation.observedAt))
409
+ throw new TrustValidationError("observation validity is invalid");
410
+ return {
411
+ ...observation,
412
+ subject,
413
+ scope,
414
+ evidenceIds,
415
+ reasonCodes,
416
+ };
417
+ }
418
+ export function validateTrustObservationV1(value) {
419
+ const observation = validateTrustObservationFields(value);
420
+ const { observationId, ...withoutId } = observation;
421
+ assertDigestId(observationId, "observation", digestTrustJsonV1("observation", json(withoutId)), "observationId");
422
+ return observation;
423
+ }
424
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EACL,eAAe,EACf,gBAAgB,EAEhB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,KAAkB,CAAC;AAC5B,CAAC;AACD,SAAS,IAAI,CACX,KAAQ,EACR,GAAW;IAEX,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,YAAY,CACnB,QAAiB,EACjB,UAAmB,EACnB,WAAoB;IAEpB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvC,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM;QACjD,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;IAC1D,IAAI,WAAW,KAAK,IAAI;QAAE,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,cAAc,CACrB,KAAc,EACd,MAAc,EACd,MAAc,EACd,KAAa;IAEb,IAAI,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE;QACjC,MAAM,IAAI,oBAAoB,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAC;AACzE,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,OAAO,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAC/B,UAA0C;IAE1C,OAAO,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AACD,MAAM,UAAU,qBAAqB,CACnC,KAQC;IAED,OAAO,iBAAiB,CACtB,gBAAgB,EAChB,IAAI,CAAC;QACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7C,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CACH,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,2BAA2B,CACzC,MAGC;IAED,OAAO,iBAAiB,CACtB,sBAAsB,EACtB,IAAI,CAAC;QACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CACH,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,yBAAyB,CACvC,MAGC;IAED,OAAO,iBAAiB,CACtB,oBAAoB,EACpB,IAAI,CAAC;QACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CACH,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,0BAA0B,CACxC,MAGC;IAED,OAAO,iBAAiB,CACtB,qBAAqB,EACrB,IAAI,CAAC;QACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CACH,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrE,MAAM,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACtC,eAAe,CACb,OAAO,EACP,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC,EACjE,SAAS,CACV,CAAC;QACF,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACrC,MAAM,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QACvD,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC1D,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IACE,KAAK,KAAK,OAAO,CAAC,YAAY;YAC9B,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3D,OAAO,CAAC,aAAa;YAEvB,MAAM,IAAI,oBAAoB,CAC5B,0CAA0C,CAC3C,CAAC;QACJ,OAAO,OAAuC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,eAAe,CACb,OAAO,EACP,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,EACnE,SAAS,CACV,CAAC;QACF,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;YAC/B,MAAM,IAAI,oBAAoB,CAC5B,kDAAkD,CACnD,CAAC;QACJ,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC1D,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,OAAO,CAAC,SAAmB;YACtC,SAAS;YACT,aAAa,EAAE,OAAO,CAAC,aAAuB;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAsB;SAC7C,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AAC5D,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc;IACzC,eAAe,CACb,KAAK,EACL;QACE,eAAe;QACf,SAAS;QACT,qBAAqB;QACrB,iBAAiB;QACjB,UAAU;QACV,YAAY;QACZ,aAAa;QACb,SAAS;QACT,OAAO;QACP,aAAa;QACb,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,iBAAiB;QACjB,YAAY;KACb,EACD,OAAO,CACR,CAAC;IACF,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;QAC3B,MAAM,IAAI,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAC5D,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,EACnD,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9C,IACE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAiB,CAAC;QAE5E,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IAC7D,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IACpE,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,0BAA0B,CAC3C,KAAK,CAAC,eAAe,EACrB,iBAAiB,CAClB,CAAC;IACF,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACpD,OAAO;QACL,GAAG,KAAK;QACR,OAAO;QACP,KAAK;QACL,OAAO;QACP,eAAe,EAAE,UAAU;KACT,CAAC;AACvB,CAAC;AACD,MAAM,UAAU,qBAAqB,CACnC,KAGC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,EACnD,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,EAC5C,IAAI,GAAG,0BAA0B,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC9E,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,iBAAiB,CACvC,WAAW,EACX,IAAI,CAAC;QACH,OAAO;QACP,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;QAC7C,eAAe,EAAE,IAAI;KACtB,CAAC,CACH,CAAC;IACF,MAAM,IAAI,GAAG;QACX,GAAG,KAAK;QACR,OAAO;QACP,KAAK;QACL,OAAO;QACP,eAAe,EAAE,IAAI;QACrB,eAAe;KAChB,CAAC;IACF,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACpE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,OAAO,uBAAuB,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,eAAe,KAAK,iBAAiB,CAAC,KAAK,CAAC,eAAe,CAAC;QACpE,MAAM,IAAI,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,iBAAiB,CACjC,WAAW,EACX,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI;QACnD,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CACH,CAAC;IACF,IACE,KAAK,CAAC,eAAe,KAAK,SAAS;QACnC,KAAK,CAAC,mBAAmB,KAAK,qBAAqB,CAAC,KAAK,CAAC;QAE1D,MAAM,IAAI,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,iBAAiB,CAC9B,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,KAA2C,EAAE,SAAS,CAAC,CAAC,CACnE,CAAC;IACF,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,oBAAoB,CAE3B,KAAc,EAAE,IAAgD;IAChE,MAAM,OAAO,GAAG;QACd,WAAW,EAAE;YACX,eAAe;YACf,eAAe;YACf,2BAA2B;YAC3B,UAAU;YACV,YAAY;YACZ,aAAa;YACb,OAAO;YACP,SAAS;YACT,aAAa;YACb,aAAa;YACb,uBAAuB;YACvB,iBAAiB;YACjB,YAAY;SACb;QACD,SAAS,EAAE;YACT,eAAe;YACf,aAAa;YACb,yBAAyB;YACzB,UAAU;YACV,YAAY;YACZ,aAAa;YACb,OAAO;YACP,YAAY;YACZ,UAAU;YACV,cAAc;YACd,YAAY;YACZ,iBAAiB;YACjB,YAAY;SACb;QACD,UAAU,EAAE;YACV,eAAe;YACf,cAAc;YACd,0BAA0B;YAC1B,UAAU;YACV,YAAY;YACZ,aAAa;YACb,OAAO;YACP,YAAY;YACZ,UAAU;YACV,cAAc;YACd,YAAY;YACZ,YAAY;SACb;KACO,CAAC;IACX,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC;QAC5B,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC9D,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACrD,IACE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,QAAQ,CACjD,MAAM,CAAC,WAAqB,CAC7B;YAED,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,CAAC,CAAC;QACvE,iBAAiB,CAAC,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;QACzE,IAAK,MAAM,CAAC,qBAAgC,GAAG,MAAM;YACnD,MAAM,IAAI,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,0BAA0B,CACrC,MAAM,CAAC,eAAe,EACtB,iBAAiB,CAClB,CAAC;QACF,iBAAiB,CACf,MAAM,CAAC,yBAAyB,EAChC,2BAA2B,CAC5B,CAAC;QACF,MAAM,MAAM,GAAG;YACb,GAAG,MAAM;YACT,KAAK;YACL,eAAe,EAAE,IAAI;SACG,CAAC;QAC3B,IACE,MAAM,CAAC,yBAAyB,KAAK,2BAA2B,CAAC,MAAM,CAAC;YAExE,MAAM,IAAI,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,iBAAiB,CAC9B,aAAa,EACb,IAAI,CAAC,IAAI,CAAC,MAA4C,EAAE,eAAe,CAAC,CAAC,CAC1E,CAAC;QACF,cAAc,CACZ,MAAM,CAAC,aAAa,EACpB,aAAa,EACb,MAAM,EACN,eAAe,CAChB,CAAC;QACF,OAAO,MAAW,CAAC;IACrB,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,KAAK,aAAa;QACtE,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACnE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9C,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvD,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,0BAA0B,CACrC,MAAM,CAAC,eAAe,EACtB,iBAAiB,EACjB,IAAI,CACL,CAAC;QACF,iBAAiB,CACf,MAAM,CAAC,uBAAuB,EAC9B,yBAAyB,CAC1B,CAAC;QACF,MAAM,MAAM,GAAG;YACb,GAAG,MAAM;YACT,KAAK;YACL,eAAe,EAAE,IAAI;SACC,CAAC;QACzB,IAAI,MAAM,CAAC,uBAAuB,KAAK,yBAAyB,CAAC,MAAM,CAAC;YACtE,MAAM,IAAI,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,iBAAiB,CAC9B,WAAW,EACX,IAAI,CAAC,IAAI,CAAC,MAA4C,EAAE,aAAa,CAAC,CAAC,CACxE,CAAC;QACF,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACvE,OAAO,MAAW,CAAC;IACrB,CAAC;IACD,iBAAiB,CACf,MAAM,CAAC,wBAAwB,EAC/B,0BAA0B,CAC3B,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAA0B,CAAC;IAC5D,IAAI,MAAM,CAAC,wBAAwB,KAAK,0BAA0B,CAAC,MAAM,CAAC;QACxE,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,iBAAiB,CAC9B,YAAY,EACZ,IAAI,CAAC,IAAI,CAAC,MAA4C,EAAE,cAAc,CAAC,CAAC,CACzE,CAAC;IACF,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,MAAW,CAAC;AACrB,CAAC;AACD,MAAM,UAAU,6BAA6B,CAC3C,KAAc;IAEd,OAAO,oBAAoB,CAAwB,KAAK,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC;AACD,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,OAAO,oBAAoB,CAAsB,KAAK,EAAE,WAAW,CAAC,CAAC;AACvE,CAAC;AACD,MAAM,UAAU,4BAA4B,CAC1C,KAAc;IAEd,OAAO,oBAAoB,CAAuB,KAAK,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC;AACD,MAAM,UAAU,2BAA2B,CACzC,KAGC;IAED,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC;IAC/D,OAAO,6BAA6B,CAAC;QACnC,GAAG,IAAI;QACP,aAAa,EAAE,eAAe,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;KAC7E,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,yBAAyB,CACvC,KAA2E;IAE3E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC;IAC7D,OAAO,2BAA2B,CAAC;QACjC,GAAG,IAAI;QACP,WAAW,EAAE,aAAa,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;KACvE,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,0BAA0B,CACxC,KAGC;IAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,CAAC;IAC9D,OAAO,4BAA4B,CAAC;QAClC,GAAG,IAAI;QACP,YAAY,EAAE,cAAc,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;KAC1E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAc,EACd,KAAa;IAEb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IACE,WAAW,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAC7D;QAED,MAAM,IAAI,oBAAoB,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAc;IAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACpE,MAAM,IAAI,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAgD;IAEhD,MAAM,IAAI,GAAG,8BAA8B,CAAC;QAC1C,GAAG,KAAK;QACR,aAAa,EAAE,SAAS;KACzB,CAAC,CAAC;IACH,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;IACvD,OAAO,0BAA0B,CAAC;QAChC,GAAG,SAAS;QACZ,aAAa,EAAE,eAAe,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;KAClF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAc;IACpD,eAAe,CACb,KAAK,EACL;QACE,eAAe;QACf,eAAe;QACf,YAAY;QACZ,cAAc;QACd,aAAa;QACb,SAAS;QACT,OAAO;QACP,UAAU;QACV,eAAe;QACf,cAAc;QACd,eAAe;QACf,sBAAsB;QACtB,aAAa;QACb,WAAW;QACX,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,aAAa;KACd,EACD,aAAa,CACd,CAAC;IACF,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,IAAI,WAAW,CAAC,aAAa,KAAK,CAAC;QACjC,MAAM,IAAI,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;IAClE,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvD,IACE,WAAW,CAAC,YAAY,KAAK,OAAO;QACpC,WAAW,CAAC,YAAY,KAAK,MAAM;QAEnC,MAAM,IAAI,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAC5D,IAAI,WAAW,CAAC,WAAW,KAAK,IAAI;QAClC,gBAAgB,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,sBAAsB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzD,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnD,iBAAiB,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI;QAChB,cAAc;QACd,eAAe;QACf,sBAAsB;KACd;QACR,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpD,IACE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAC5C,WAAW,CAAC,SAAmB,CAChC;QAED,MAAM,IAAI,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IACzD,IACE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAyB,CAAC;QAE1E,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC/D,IACE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,QAAQ,CAChE,WAAW,CAAC,WAAqB,CAClC;QAED,MAAM,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,yBAAyB,CAC3C,WAAW,CAAC,WAAW,EACvB,aAAa,CACd,CAAC;IACF,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACvE,mBAAmB,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1D,mBAAmB,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1D,IACE,WAAW,CAAC,UAAU,KAAK,IAAI;QAC/B,WAAW,CAAC,UAAU,KAAK,IAAI;QAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAoB,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAoB,CAAC;QAE9C,MAAM,IAAI,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,WAAW;QACd,OAAO;QACP,KAAK;QACL,WAAW;QACX,WAAW;KACqB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,MAAM,WAAW,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC;IACpD,cAAc,CACZ,aAAa,EACb,aAAa,EACb,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EACjD,eAAe,CAChB,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { EvidenceFusionDecisionV1, EvidenceFusionEvaluationRequestV1, EvidenceTrustStateV1 } from "./types.js";
2
+ export declare function deriveApplicableBindingDigests(state: EvidenceTrustStateV1, policyDigest: string, logicalTimeMs: number): readonly string[];
3
+ export declare function digestEvidenceFusionDecisionV1(decision: EvidenceFusionDecisionV1): string;
4
+ declare function simpleDecisionValidation(value: unknown): EvidenceFusionDecisionV1;
5
+ export declare const validateEvidenceFusionDecisionV1: typeof simpleDecisionValidation;
6
+ export declare function evaluateEvidenceFusionV1(state: EvidenceTrustStateV1, requestValue: EvidenceFusionEvaluationRequestV1, logicalTimeMs: number): EvidenceFusionDecisionV1;
7
+ export {};
8
+ //# sourceMappingURL=fusion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAQV,wBAAwB,EACxB,iCAAiC,EAKjC,oBAAoB,EAIrB,MAAM,YAAY,CAAC;AA0KpB,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,SAAS,MAAM,EAAE,CAkCnB;AAuUD,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,wBAAwB,GACjC,MAAM,CAMR;AAWD,iBAAS,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAgc1E;AACD,eAAO,MAAM,gCAAgC,iCAA2B,CAAC;AAEzE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,EAC3B,YAAY,EAAE,iCAAiC,EAC/C,aAAa,EAAE,MAAM,GACpB,wBAAwB,CA6mC1B"}