@agentplat/inference-control 0.3.0-beta.2 → 0.3.0-beta.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 (150) hide show
  1. package/README.md +360 -0
  2. package/dist/anytime-semantic-guarantees.d.ts +216 -0
  3. package/dist/anytime-semantic-guarantees.d.ts.map +1 -0
  4. package/dist/anytime-semantic-guarantees.js +817 -0
  5. package/dist/anytime-semantic-guarantees.js.map +1 -0
  6. package/dist/assessor-ensemble-contracts.d.ts +145 -0
  7. package/dist/assessor-ensemble-contracts.d.ts.map +1 -0
  8. package/dist/assessor-ensemble-contracts.js +29 -0
  9. package/dist/assessor-ensemble-contracts.js.map +1 -0
  10. package/dist/assessor-ensemble-runtime.d.ts +55 -0
  11. package/dist/assessor-ensemble-runtime.d.ts.map +1 -0
  12. package/dist/assessor-ensemble-runtime.js +308 -0
  13. package/dist/assessor-ensemble-runtime.js.map +1 -0
  14. package/dist/assessor-ensemble-validation.d.ts +12 -0
  15. package/dist/assessor-ensemble-validation.d.ts.map +1 -0
  16. package/dist/assessor-ensemble-validation.js +156 -0
  17. package/dist/assessor-ensemble-validation.js.map +1 -0
  18. package/dist/assessor-ensemble.d.ts +4 -0
  19. package/dist/assessor-ensemble.d.ts.map +1 -0
  20. package/dist/assessor-ensemble.js +4 -0
  21. package/dist/assessor-ensemble.js.map +1 -0
  22. package/dist/cognitive-adapters.d.ts +92 -0
  23. package/dist/cognitive-adapters.d.ts.map +1 -0
  24. package/dist/cognitive-adapters.js +263 -0
  25. package/dist/cognitive-adapters.js.map +1 -0
  26. package/dist/context-integrity-analyzers.d.ts +35 -0
  27. package/dist/context-integrity-analyzers.d.ts.map +1 -0
  28. package/dist/context-integrity-analyzers.js +387 -0
  29. package/dist/context-integrity-analyzers.js.map +1 -0
  30. package/dist/context-integrity-contracts.d.ts +304 -0
  31. package/dist/context-integrity-contracts.d.ts.map +1 -0
  32. package/dist/context-integrity-contracts.js +24 -0
  33. package/dist/context-integrity-contracts.js.map +1 -0
  34. package/dist/context-integrity-model.d.ts +25 -0
  35. package/dist/context-integrity-model.d.ts.map +1 -0
  36. package/dist/context-integrity-model.js +192 -0
  37. package/dist/context-integrity-model.js.map +1 -0
  38. package/dist/context-integrity-portable-agent.d.ts +79 -0
  39. package/dist/context-integrity-portable-agent.d.ts.map +1 -0
  40. package/dist/context-integrity-portable-agent.js +511 -0
  41. package/dist/context-integrity-portable-agent.js.map +1 -0
  42. package/dist/context-integrity-role-alignment.d.ts +28 -0
  43. package/dist/context-integrity-role-alignment.d.ts.map +1 -0
  44. package/dist/context-integrity-role-alignment.js +95 -0
  45. package/dist/context-integrity-role-alignment.js.map +1 -0
  46. package/dist/context-integrity-runtime.d.ts +95 -0
  47. package/dist/context-integrity-runtime.d.ts.map +1 -0
  48. package/dist/context-integrity-runtime.js +1512 -0
  49. package/dist/context-integrity-runtime.js.map +1 -0
  50. package/dist/context-integrity.d.ts +5 -0
  51. package/dist/context-integrity.d.ts.map +1 -0
  52. package/dist/context-integrity.js +5 -0
  53. package/dist/context-integrity.js.map +1 -0
  54. package/dist/governed-role-evolution.d.ts +172 -0
  55. package/dist/governed-role-evolution.d.ts.map +1 -0
  56. package/dist/governed-role-evolution.js +613 -0
  57. package/dist/governed-role-evolution.js.map +1 -0
  58. package/dist/heterogeneous-agent-composition.d.ts +96 -0
  59. package/dist/heterogeneous-agent-composition.d.ts.map +1 -0
  60. package/dist/heterogeneous-agent-composition.js +512 -0
  61. package/dist/heterogeneous-agent-composition.js.map +1 -0
  62. package/dist/index.d.ts +21 -13
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +21 -13
  65. package/dist/index.js.map +1 -1
  66. package/dist/intervention-adapters.d.ts +29 -0
  67. package/dist/intervention-adapters.d.ts.map +1 -0
  68. package/dist/intervention-adapters.js +107 -0
  69. package/dist/intervention-adapters.js.map +1 -0
  70. package/dist/intervention-contracts.d.ts +311 -0
  71. package/dist/intervention-contracts.d.ts.map +1 -0
  72. package/dist/intervention-contracts.js +28 -0
  73. package/dist/intervention-contracts.js.map +1 -0
  74. package/dist/intervention-runtime.d.ts +86 -0
  75. package/dist/intervention-runtime.d.ts.map +1 -0
  76. package/dist/intervention-runtime.js +958 -0
  77. package/dist/intervention-runtime.js.map +1 -0
  78. package/dist/intervention-validation.d.ts +27 -0
  79. package/dist/intervention-validation.d.ts.map +1 -0
  80. package/dist/intervention-validation.js +273 -0
  81. package/dist/intervention-validation.js.map +1 -0
  82. package/dist/intervention.d.ts +6 -0
  83. package/dist/intervention.d.ts.map +1 -0
  84. package/dist/intervention.js +6 -0
  85. package/dist/intervention.js.map +1 -0
  86. package/dist/model.d.ts +18 -0
  87. package/dist/model.d.ts.map +1 -1
  88. package/dist/model.js +60 -2
  89. package/dist/model.js.map +1 -1
  90. package/dist/operational-cognitive-control.d.ts +208 -0
  91. package/dist/operational-cognitive-control.d.ts.map +1 -0
  92. package/dist/operational-cognitive-control.js +590 -0
  93. package/dist/operational-cognitive-control.js.map +1 -0
  94. package/dist/portable-agent.d.ts +50 -0
  95. package/dist/portable-agent.d.ts.map +1 -0
  96. package/dist/portable-agent.js +243 -0
  97. package/dist/portable-agent.js.map +1 -0
  98. package/dist/reference-controllers.d.ts +121 -0
  99. package/dist/reference-controllers.d.ts.map +1 -0
  100. package/dist/reference-controllers.js +411 -0
  101. package/dist/reference-controllers.js.map +1 -0
  102. package/dist/role-alignment-portable-agent.d.ts +145 -0
  103. package/dist/role-alignment-portable-agent.d.ts.map +1 -0
  104. package/dist/role-alignment-portable-agent.js +484 -0
  105. package/dist/role-alignment-portable-agent.js.map +1 -0
  106. package/dist/role-alignment.d.ts +226 -0
  107. package/dist/role-alignment.d.ts.map +1 -0
  108. package/dist/role-alignment.js +1074 -0
  109. package/dist/role-alignment.js.map +1 -0
  110. package/dist/role-realignment-portable-agent.d.ts +163 -0
  111. package/dist/role-realignment-portable-agent.d.ts.map +1 -0
  112. package/dist/role-realignment-portable-agent.js +634 -0
  113. package/dist/role-realignment-portable-agent.js.map +1 -0
  114. package/dist/role-realignment.d.ts +368 -0
  115. package/dist/role-realignment.d.ts.map +1 -0
  116. package/dist/role-realignment.js +1609 -0
  117. package/dist/role-realignment.js.map +1 -0
  118. package/dist/semantic-alignment-assessors.d.ts +12 -0
  119. package/dist/semantic-alignment-assessors.d.ts.map +1 -0
  120. package/dist/semantic-alignment-assessors.js +55 -0
  121. package/dist/semantic-alignment-assessors.js.map +1 -0
  122. package/dist/semantic-alignment-contracts.d.ts +385 -0
  123. package/dist/semantic-alignment-contracts.d.ts.map +1 -0
  124. package/dist/semantic-alignment-contracts.js +16 -0
  125. package/dist/semantic-alignment-contracts.js.map +1 -0
  126. package/dist/semantic-alignment-memory.d.ts +53 -0
  127. package/dist/semantic-alignment-memory.d.ts.map +1 -0
  128. package/dist/semantic-alignment-memory.js +170 -0
  129. package/dist/semantic-alignment-memory.js.map +1 -0
  130. package/dist/semantic-alignment-runtime.d.ts +67 -0
  131. package/dist/semantic-alignment-runtime.d.ts.map +1 -0
  132. package/dist/semantic-alignment-runtime.js +778 -0
  133. package/dist/semantic-alignment-runtime.js.map +1 -0
  134. package/dist/semantic-alignment-validation.d.ts +31 -0
  135. package/dist/semantic-alignment-validation.d.ts.map +1 -0
  136. package/dist/semantic-alignment-validation.js +477 -0
  137. package/dist/semantic-alignment-validation.js.map +1 -0
  138. package/dist/semantic-alignment.d.ts +8 -0
  139. package/dist/semantic-alignment.d.ts.map +1 -0
  140. package/dist/semantic-alignment.js +8 -0
  141. package/dist/semantic-alignment.js.map +1 -0
  142. package/dist/semantic-horizon-budget.d.ts +118 -0
  143. package/dist/semantic-horizon-budget.d.ts.map +1 -0
  144. package/dist/semantic-horizon-budget.js +536 -0
  145. package/dist/semantic-horizon-budget.js.map +1 -0
  146. package/dist/semantic-metric-engine.d.ts +96 -0
  147. package/dist/semantic-metric-engine.d.ts.map +1 -0
  148. package/dist/semantic-metric-engine.js +396 -0
  149. package/dist/semantic-metric-engine.js.map +1 -0
  150. package/package.json +79 -7
@@ -0,0 +1,484 @@
1
+ import { normalizeCheckpointTransferV1, normalizeRoleBindingV1, } from '@agentplat/runtime/adapter';
2
+ import { assertRoleAlignmentStateV1, closeRoleAlignmentStateV1, createRoleAlignmentPolicyRecordV1, createRoleAlignmentRoleAnchorV1, createRoleAlignmentStateV1, decisionForInactiveRoleAlignmentStateV1, digestRoleAlignmentJsonV1, findRoleAlignmentDecisionV1, observeRoleAlignmentSignalV1, rebindRoleAlignmentSessionV1, replaceRoleAlignmentRoleV1, resumeRoleAlignmentStateV1, } from './role-alignment.js';
3
+ import { assertDigest, assertExactKeys, assertIdentifier, assertSafeInteger, deepFreeze, } from './validation.js';
4
+ export class RoleAlignmentStoreConflictErrorV1 extends Error {
5
+ name = 'RoleAlignmentStoreConflictErrorV1';
6
+ constructor(message = 'role alignment state revision conflict') {
7
+ super(message);
8
+ }
9
+ }
10
+ export class InMemoryRoleAlignmentStateStoreV1 {
11
+ states = new Map();
12
+ async load(sessionId) {
13
+ assertIdentifier(sessionId, 'sessionId');
14
+ return this.states.get(sessionId);
15
+ }
16
+ async save(state, expectedRevision) {
17
+ assertIdentifier(state.sessionId, 'sessionId');
18
+ const current = this.states.get(state.sessionId);
19
+ if ((expectedRevision === null && current !== undefined) ||
20
+ (expectedRevision !== null && current?.revision !== expectedRevision))
21
+ throw new RoleAlignmentStoreConflictErrorV1();
22
+ this.states.set(state.sessionId, state);
23
+ }
24
+ }
25
+ export function createRoleAlignmentPortableAgentControlV1(options) {
26
+ return new RoleAlignmentPortableAgentControl(options);
27
+ }
28
+ class RoleAlignmentPortableAgentControl {
29
+ controlId;
30
+ controlVersion;
31
+ implementationId;
32
+ binding;
33
+ policy;
34
+ assessorBinding;
35
+ assessor;
36
+ assessmentTtlMs;
37
+ stateStore;
38
+ decisionObserver;
39
+ constructor(options) {
40
+ if (!options || typeof options !== 'object')
41
+ throw new TypeError('role_alignment_options_required');
42
+ assertIdentifier(options.controlId, 'controlId');
43
+ assertSafeInteger(options.controlVersion, 'controlVersion', 1);
44
+ assertIdentifier(options.implementationId, 'implementationId');
45
+ const policyRecord = createRoleAlignmentPolicyRecordV1(options.policy);
46
+ const assessorBinding = validateAssessorBinding(options.assessorBinding);
47
+ if (!options.assessor || typeof options.assessor.assess !== 'function')
48
+ throw new TypeError('role_alignment_assessor_required');
49
+ assertSafeInteger(options.assessmentTtlMs, 'assessmentTtlMs', 1);
50
+ if (options.assessmentTtlMs >
51
+ policyRecord.policy.limits.maximumAssessmentTtlMs)
52
+ throw new TypeError('role_alignment_assessment_ttl_exceeds_policy');
53
+ if (options.stateStore !== undefined &&
54
+ (typeof options.stateStore.load !== 'function' ||
55
+ typeof options.stateStore.save !== 'function'))
56
+ throw new TypeError('role_alignment_state_store_invalid');
57
+ if (options.decisionObserver !== undefined &&
58
+ typeof options.decisionObserver.observe !== 'function')
59
+ throw new TypeError('role_alignment_decision_observer_invalid');
60
+ this.controlId = options.controlId;
61
+ this.controlVersion = options.controlVersion;
62
+ this.implementationId = options.implementationId;
63
+ this.policy = policyRecord.policy;
64
+ this.assessorBinding = assessorBinding;
65
+ this.assessor = options.assessor;
66
+ this.assessmentTtlMs = options.assessmentTtlMs;
67
+ this.stateStore =
68
+ options.stateStore ?? new InMemoryRoleAlignmentStateStoreV1();
69
+ this.decisionObserver = options.decisionObserver;
70
+ this.binding = deepFreeze({
71
+ policyId: policyRecord.policy.policyId,
72
+ policyVersion: policyRecord.policy.policyVersion,
73
+ policyDigest: policyRecord.policyDigest,
74
+ assessorId: assessorBinding.assessorId,
75
+ assessorVersion: assessorBinding.assessorVersion,
76
+ assessorBindingDigest: assessorBinding.assessorBindingDigest,
77
+ });
78
+ }
79
+ async evaluate(target) {
80
+ try {
81
+ return await this.evaluateStrict(target);
82
+ }
83
+ catch {
84
+ return deepFreeze({
85
+ disposition: 'deny',
86
+ reasonCode: 'role_alignment_control_unavailable',
87
+ });
88
+ }
89
+ }
90
+ async getState(sessionId) {
91
+ assertIdentifier(sessionId, 'sessionId');
92
+ const state = await this.stateStore.load(sessionId);
93
+ if (state === undefined)
94
+ return undefined;
95
+ assertRoleAlignmentStateV1(state, this.policy, this.stateBinding(sessionId));
96
+ return state;
97
+ }
98
+ async resumeSession(input) {
99
+ const state = await this.requireState(input.sessionId);
100
+ const next = resumeRoleAlignmentStateV1(state, input, this.policy);
101
+ await this.stateStore.save(next, state.revision);
102
+ return next;
103
+ }
104
+ async activateSessionRole(input) {
105
+ const state = await this.requireState(input.sessionId);
106
+ assertSafeInteger(input.expectedRevision, 'expectedRevision');
107
+ if (state.revision !== input.expectedRevision)
108
+ throw new RoleAlignmentStoreConflictErrorV1();
109
+ assertIdentifier(input.tenantId, 'tenantId');
110
+ assertIdentifier(input.agentId, 'agentId');
111
+ const role = normalizeRoleBindingV1(input.role);
112
+ const anchor = anchorFor({
113
+ tenantId: input.tenantId,
114
+ sessionId: input.sessionId,
115
+ agentId: input.agentId,
116
+ role,
117
+ });
118
+ if (anchor.anchorDigest === state.roleAnchor.anchorDigest)
119
+ return state;
120
+ const next = replaceRoleAlignmentRoleV1(state, {
121
+ expectedRevision: state.revision,
122
+ roleAnchor: anchor,
123
+ logicalTimeMs: input.logicalTimeMs,
124
+ }, this.policy);
125
+ await this.stateStore.save(next, state.revision);
126
+ return next;
127
+ }
128
+ async closeSession(input) {
129
+ const state = await this.requireState(input.sessionId);
130
+ const next = closeRoleAlignmentStateV1(state, input, this.policy);
131
+ if (next !== state)
132
+ await this.stateStore.save(next, state.revision);
133
+ return next;
134
+ }
135
+ async exportHandoff(input) {
136
+ const state = await this.requireState(input.sessionId);
137
+ const transfer = normalizeCheckpointTransferV1(input.checkpointTransfer, {
138
+ maximumStateBytes: this.policy.limits.maximumStateBytes,
139
+ });
140
+ assertSafeInteger(input.logicalTimeMs, 'logicalTimeMs');
141
+ if (input.logicalTimeMs < state.lastLogicalTimeMs ||
142
+ transfer.sourceSessionId !== state.sessionId ||
143
+ transfer.sourceAgentId !== state.agentId ||
144
+ transfer.objectiveId !== state.objectiveId ||
145
+ transfer.roleBindingId !== state.roleAnchor.roleBindingId)
146
+ throw new TypeError('role_alignment_handoff_binding_invalid');
147
+ const checkpointTransferDigest = digestRoleAlignmentJsonV1('handoff', transfer);
148
+ const withoutDigest = {
149
+ schemaVersion: 1,
150
+ contentClass: 'role_alignment_state',
151
+ controllerId: this.controlId,
152
+ controllerVersion: this.controlVersion,
153
+ implementationId: this.implementationId,
154
+ policyDigest: this.binding.policyDigest,
155
+ sourceSessionId: state.sessionId,
156
+ sourceAgentId: state.agentId,
157
+ sourceRoleAnchorDigest: state.roleAnchor.anchorDigest,
158
+ checkpointTransferDigest,
159
+ sourceState: state,
160
+ exportedAtLogicalMs: input.logicalTimeMs,
161
+ };
162
+ return deepFreeze({
163
+ ...withoutDigest,
164
+ handoffDigest: digestRoleAlignmentJsonV1('handoff', withoutDigest),
165
+ });
166
+ }
167
+ async importHandoff(input) {
168
+ const transfer = normalizeCheckpointTransferV1(input.checkpointTransfer, {
169
+ maximumStateBytes: this.policy.limits.maximumStateBytes,
170
+ });
171
+ const handoff = this.validateHandoff(input.handoff, transfer);
172
+ assertIdentifier(input.targetSessionId, 'targetSessionId');
173
+ assertIdentifier(input.targetAgentId, 'targetAgentId');
174
+ assertSafeInteger(input.logicalTimeMs, 'logicalTimeMs');
175
+ if (input.logicalTimeMs < handoff.exportedAtLogicalMs)
176
+ throw new TypeError('role_alignment_clock_rollback');
177
+ const role = normalizeRoleBindingV1(input.targetRole);
178
+ if (role.objectiveId !== transfer.objectiveId)
179
+ throw new TypeError('role_alignment_handoff_objective_mismatch');
180
+ const targetAnchor = anchorFor({
181
+ tenantId: handoff.sourceState.tenantId,
182
+ sessionId: input.targetSessionId,
183
+ agentId: input.targetAgentId,
184
+ role,
185
+ });
186
+ const rebound = rebindRoleAlignmentSessionV1(handoff.sourceState, {
187
+ expectedRevision: handoff.sourceState.revision,
188
+ targetRoleAnchor: targetAnchor,
189
+ transferDigest: handoff.checkpointTransferDigest,
190
+ logicalTimeMs: input.logicalTimeMs,
191
+ }, this.policy);
192
+ await this.stateStore.save(rebound, null);
193
+ return rebound;
194
+ }
195
+ async evaluateStrict(target) {
196
+ validateControlTarget(target);
197
+ const logicalTimeMs = target.request.logicalTimeMs;
198
+ const role = normalizeRoleBindingV1(target.role);
199
+ const requestedAnchor = anchorFor({
200
+ tenantId: target.tenantId,
201
+ sessionId: target.sessionId,
202
+ agentId: target.agentId,
203
+ role,
204
+ });
205
+ let state = await this.stateStore.load(target.sessionId);
206
+ if (state === undefined) {
207
+ const created = createRoleAlignmentStateV1({
208
+ controllerId: this.controlId,
209
+ controllerVersion: this.controlVersion,
210
+ implementationId: this.implementationId,
211
+ policy: this.policy,
212
+ roleAnchor: requestedAnchor,
213
+ createdAtLogicalMs: logicalTimeMs,
214
+ });
215
+ await this.stateStore.save(created, null);
216
+ state = created;
217
+ }
218
+ else {
219
+ assertRoleAlignmentStateV1(state, this.policy, this.stateBinding(target.sessionId));
220
+ if (state.tenantId !== target.tenantId ||
221
+ state.agentId !== target.agentId ||
222
+ state.objectiveId !== role.objectiveId)
223
+ throw new TypeError('role_alignment_target_binding_mismatch');
224
+ if (state.roleAnchor.anchorDigest !== requestedAnchor.anchorDigest) {
225
+ const replaced = replaceRoleAlignmentRoleV1(state, {
226
+ expectedRevision: state.revision,
227
+ roleAnchor: requestedAnchor,
228
+ logicalTimeMs,
229
+ }, this.policy);
230
+ await this.stateStore.save(replaced, state.revision);
231
+ state = replaced;
232
+ }
233
+ }
234
+ if (state.status !== 'active')
235
+ return portableDecision(decisionForInactiveRoleAlignmentStateV1(state));
236
+ const targetDigest = digestRoleAlignmentJsonV1('target', target);
237
+ const retained = findRoleAlignmentDecisionV1(state, targetDigest);
238
+ if (retained !== undefined)
239
+ return portableDecision(retained);
240
+ const assessmentRequest = this.createAssessmentRequest(state, target, targetDigest);
241
+ const assessment = validateAssessment(await this.assessor.assess(assessmentRequest, target), assessmentRequest, this.assessorBinding);
242
+ const signal = assessmentToSignal(assessment, assessmentRequest, state.roleAnchor);
243
+ const reduced = observeRoleAlignmentSignalV1(state, { expectedRevision: state.revision, signal }, this.policy);
244
+ await this.stateStore.save(reduced.state, state.revision);
245
+ if (this.decisionObserver !== undefined) {
246
+ try {
247
+ await this.decisionObserver.observe(reduced);
248
+ }
249
+ catch {
250
+ // Evidence sinks are deliberately outside the enforcement decision.
251
+ }
252
+ }
253
+ return portableDecision(reduced.decision);
254
+ }
255
+ createAssessmentRequest(state, target, targetDigest) {
256
+ const createdAtLogicalMs = target.request.logicalTimeMs;
257
+ return deepFreeze({
258
+ schemaVersion: 1,
259
+ assessmentRequestId: `role-alignment:${state.sessionId}:${state.revision + 1}`,
260
+ targetDigest,
261
+ controllerId: this.controlId,
262
+ controllerVersion: this.controlVersion,
263
+ implementationId: this.implementationId,
264
+ policyId: this.binding.policyId,
265
+ policyVersion: this.binding.policyVersion,
266
+ policyDigest: this.binding.policyDigest,
267
+ tenantId: state.tenantId,
268
+ sessionId: state.sessionId,
269
+ agentId: state.agentId,
270
+ stepId: target.request.stepId,
271
+ checkpoint: target.checkpoint,
272
+ roleAnchorDigest: state.roleAnchor.anchorDigest,
273
+ roleRevision: state.roleAnchor.roleRevision,
274
+ stateRevision: state.revision,
275
+ previousRollingCoherenceBps: state.rollingCoherenceBps,
276
+ previousDegraded: state.degraded,
277
+ createdAtLogicalMs,
278
+ expiresAtLogicalMs: createdAtLogicalMs + this.assessmentTtlMs,
279
+ });
280
+ }
281
+ validateHandoff(input, transfer) {
282
+ assertExactKeys(input, [
283
+ 'schemaVersion',
284
+ 'contentClass',
285
+ 'controllerId',
286
+ 'controllerVersion',
287
+ 'implementationId',
288
+ 'policyDigest',
289
+ 'sourceSessionId',
290
+ 'sourceAgentId',
291
+ 'sourceRoleAnchorDigest',
292
+ 'checkpointTransferDigest',
293
+ 'sourceState',
294
+ 'exportedAtLogicalMs',
295
+ 'handoffDigest',
296
+ ], 'role alignment handoff');
297
+ if (input.schemaVersion !== 1 ||
298
+ input.contentClass !== 'role_alignment_state')
299
+ throw new TypeError('role_alignment_handoff_invalid');
300
+ for (const [label, value] of [
301
+ ['controllerId', input.controllerId],
302
+ ['implementationId', input.implementationId],
303
+ ['sourceSessionId', input.sourceSessionId],
304
+ ['sourceAgentId', input.sourceAgentId],
305
+ ])
306
+ assertIdentifier(value, label);
307
+ assertSafeInteger(input.controllerVersion, 'controllerVersion', 1);
308
+ for (const [label, value] of [
309
+ ['policyDigest', input.policyDigest],
310
+ ['sourceRoleAnchorDigest', input.sourceRoleAnchorDigest],
311
+ ['checkpointTransferDigest', input.checkpointTransferDigest],
312
+ ['handoffDigest', input.handoffDigest],
313
+ ])
314
+ assertDigest(value, label);
315
+ assertSafeInteger(input.exportedAtLogicalMs, 'exportedAtLogicalMs');
316
+ assertRoleAlignmentStateV1(input.sourceState, this.policy, this.stateBinding(input.sourceSessionId));
317
+ const { handoffDigest: _ignored, ...withoutDigest } = input;
318
+ if (digestRoleAlignmentJsonV1('handoff', withoutDigest) !== input.handoffDigest ||
319
+ input.controllerId !== this.controlId ||
320
+ input.controllerVersion !== this.controlVersion ||
321
+ input.implementationId !== this.implementationId ||
322
+ input.policyDigest !== this.binding.policyDigest ||
323
+ input.sourceSessionId !== input.sourceState.sessionId ||
324
+ input.sourceAgentId !== input.sourceState.agentId ||
325
+ input.sourceRoleAnchorDigest !==
326
+ input.sourceState.roleAnchor.anchorDigest ||
327
+ input.checkpointTransferDigest !==
328
+ digestRoleAlignmentJsonV1('handoff', transfer) ||
329
+ transfer.sourceSessionId !== input.sourceSessionId ||
330
+ transfer.sourceAgentId !== input.sourceAgentId ||
331
+ transfer.roleBindingId !== input.sourceState.roleAnchor.roleBindingId)
332
+ throw new TypeError('role_alignment_handoff_binding_invalid');
333
+ return input;
334
+ }
335
+ async requireState(sessionId) {
336
+ const state = await this.getState(sessionId);
337
+ if (state === undefined)
338
+ throw new TypeError('role_alignment_state_not_found');
339
+ return state;
340
+ }
341
+ stateBinding(sessionId) {
342
+ return {
343
+ controllerId: this.controlId,
344
+ controllerVersion: this.controlVersion,
345
+ implementationId: this.implementationId,
346
+ sessionId,
347
+ };
348
+ }
349
+ }
350
+ function validateAssessorBinding(input) {
351
+ assertExactKeys(input, ['schemaVersion', 'assessorId', 'assessorVersion', 'assessorBindingDigest'], 'role alignment assessor binding');
352
+ if (input.schemaVersion !== 1)
353
+ throw new TypeError('role_alignment_assessor_binding_invalid');
354
+ assertIdentifier(input.assessorId, 'assessorId');
355
+ assertSafeInteger(input.assessorVersion, 'assessorVersion', 1);
356
+ assertDigest(input.assessorBindingDigest, 'assessorBindingDigest');
357
+ return deepFreeze({ ...input });
358
+ }
359
+ function validateAssessment(input, request, binding) {
360
+ assertExactKeys(input, [
361
+ 'schemaVersion',
362
+ 'assessmentId',
363
+ 'assessmentRequestId',
364
+ 'targetDigest',
365
+ 'assessorId',
366
+ 'assessorVersion',
367
+ 'assessorBindingDigest',
368
+ 'coherenceBps',
369
+ 'uncertaintyBps',
370
+ 'contextInconsistencyBps',
371
+ 'hardViolation',
372
+ 'reasonCodes',
373
+ 'evidenceReferenceIds',
374
+ 'assessedAtLogicalMs',
375
+ ], 'role alignment assessment');
376
+ if (input.schemaVersion !== 1)
377
+ throw new TypeError('role_alignment_assessment_invalid');
378
+ assertIdentifier(input.assessmentId, 'assessmentId');
379
+ assertIdentifier(input.assessmentRequestId, 'assessmentRequestId');
380
+ assertDigest(input.targetDigest, 'targetDigest');
381
+ assertIdentifier(input.assessorId, 'assessorId');
382
+ assertSafeInteger(input.assessorVersion, 'assessorVersion', 1);
383
+ assertDigest(input.assessorBindingDigest, 'assessorBindingDigest');
384
+ for (const [label, value] of [
385
+ ['coherenceBps', input.coherenceBps],
386
+ ['uncertaintyBps', input.uncertaintyBps],
387
+ ['contextInconsistencyBps', input.contextInconsistencyBps],
388
+ ]) {
389
+ assertSafeInteger(value, label);
390
+ if (value > 10_000)
391
+ throw new TypeError('role_alignment_assessment_score_invalid');
392
+ }
393
+ if (typeof input.hardViolation !== 'boolean' ||
394
+ !Array.isArray(input.reasonCodes) ||
395
+ !Array.isArray(input.evidenceReferenceIds))
396
+ throw new TypeError('role_alignment_assessment_invalid');
397
+ for (const value of [...input.reasonCodes, ...input.evidenceReferenceIds])
398
+ assertIdentifier(value, 'assessment reference');
399
+ if (input.reasonCodes.some((value, index) => index > 0 && input.reasonCodes[index - 1] >= value) ||
400
+ input.evidenceReferenceIds.some((value, index) => index > 0 && input.evidenceReferenceIds[index - 1] >= value))
401
+ throw new TypeError('role_alignment_assessment_references_invalid');
402
+ assertSafeInteger(input.assessedAtLogicalMs, 'assessedAtLogicalMs');
403
+ if (input.assessmentRequestId !== request.assessmentRequestId ||
404
+ input.targetDigest !== request.targetDigest ||
405
+ input.assessorId !== binding.assessorId ||
406
+ input.assessorVersion !== binding.assessorVersion ||
407
+ input.assessorBindingDigest !== binding.assessorBindingDigest ||
408
+ input.assessedAtLogicalMs < request.createdAtLogicalMs ||
409
+ input.assessedAtLogicalMs >= request.expiresAtLogicalMs)
410
+ throw new TypeError('role_alignment_assessment_binding_invalid');
411
+ return deepFreeze({ ...input });
412
+ }
413
+ function assessmentToSignal(assessment, request, roleAnchor) {
414
+ return deepFreeze({
415
+ schemaVersion: 1,
416
+ signalId: assessment.assessmentId,
417
+ assessmentRequestId: assessment.assessmentRequestId,
418
+ assessorId: assessment.assessorId,
419
+ assessorVersion: assessment.assessorVersion,
420
+ assessorBindingDigest: assessment.assessorBindingDigest,
421
+ tenantId: request.tenantId,
422
+ sessionId: request.sessionId,
423
+ agentId: request.agentId,
424
+ stepId: request.stepId,
425
+ checkpoint: request.checkpoint,
426
+ roleAnchorDigest: roleAnchor.anchorDigest,
427
+ roleRevision: roleAnchor.roleRevision,
428
+ targetDigest: request.targetDigest,
429
+ coherenceBps: assessment.coherenceBps,
430
+ uncertaintyBps: assessment.uncertaintyBps,
431
+ contextInconsistencyBps: assessment.contextInconsistencyBps,
432
+ hardViolation: assessment.hardViolation,
433
+ reasonCodes: [...assessment.reasonCodes],
434
+ evidenceReferenceIds: [...assessment.evidenceReferenceIds],
435
+ observedAtLogicalMs: assessment.assessedAtLogicalMs,
436
+ expiresAtLogicalMs: request.expiresAtLogicalMs,
437
+ });
438
+ }
439
+ function anchorFor(input) {
440
+ return createRoleAlignmentRoleAnchorV1({
441
+ tenantId: input.tenantId,
442
+ sessionId: input.sessionId,
443
+ agentId: input.agentId,
444
+ objectiveId: input.role.objectiveId,
445
+ roleBindingId: input.role.roleBindingId,
446
+ roleRevision: input.role.roleRevision,
447
+ predecessorRoleBindingId: input.role.predecessorRoleBindingId,
448
+ roleKey: input.role.roleKey,
449
+ roleContent: {
450
+ instructions: [...input.role.instructions],
451
+ constraints: input.role.constraints,
452
+ validFromLogicalMs: input.role.validFromLogicalMs,
453
+ validUntilLogicalMs: input.role.validUntilLogicalMs,
454
+ },
455
+ });
456
+ }
457
+ function validateControlTarget(target) {
458
+ if (!target || typeof target !== 'object' || target.schemaVersion !== 1)
459
+ throw new TypeError('role_alignment_target_invalid');
460
+ for (const [label, value] of [
461
+ ['sessionId', target.sessionId],
462
+ ['tenantId', target.tenantId],
463
+ ['agentId', target.agentId],
464
+ ['stepId', target.request?.stepId],
465
+ ])
466
+ assertIdentifier(value, label);
467
+ if (!['pre_step', 'post_output', 'pre_action'].includes(target.checkpoint))
468
+ throw new TypeError('role_alignment_checkpoint_invalid');
469
+ assertSafeInteger(target.stepSequence, 'stepSequence', 1);
470
+ const checkpointItemIndex = target.checkpointItemIndex ?? 0;
471
+ assertSafeInteger(checkpointItemIndex, 'checkpointItemIndex', 0);
472
+ if (checkpointItemIndex > 4_095 ||
473
+ (target.checkpoint === 'pre_step' && checkpointItemIndex !== 0))
474
+ throw new TypeError('role_alignment_checkpoint_item_index_invalid');
475
+ assertSafeInteger(target.request.logicalTimeMs, 'logicalTimeMs');
476
+ normalizeRoleBindingV1(target.role);
477
+ }
478
+ function portableDecision(decision) {
479
+ return deepFreeze({
480
+ disposition: decision.disposition,
481
+ reasonCode: decision.reasonCode,
482
+ });
483
+ }
484
+ //# sourceMappingURL=role-alignment-portable-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-alignment-portable-agent.js","sourceRoot":"","sources":["../src/role-alignment-portable-agent.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,GAMvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,iCAAiC,EACjC,+BAA+B,EAC/B,0BAA0B,EAC1B,uCAAuC,EACvC,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,GAQ3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,iBAAiB,CAAC;AAmEzB,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IACjD,IAAI,GAAG,mCAAmC,CAAC;IAEpD,YAAY,OAAO,GAAG,wCAAwC;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,MAAM,OAAO,iCAAiC;IAC3B,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IAElE,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAA2B,EAC3B,gBAA+B;QAE/B,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IACE,CAAC,gBAAgB,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;YACpD,CAAC,gBAAgB,KAAK,IAAI,IAAI,OAAO,EAAE,QAAQ,KAAK,gBAAgB,CAAC;YAErE,MAAM,IAAI,iCAAiC,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF;AAoFD,MAAM,UAAU,yCAAyC,CACvD,OAAkD;IAElD,OAAO,IAAI,iCAAiC,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,iCAAiC;IAC5B,SAAS,CAAS;IAClB,cAAc,CAAS;IACvB,gBAAgB,CAAS;IACzB,OAAO,CAAiD;IAEhD,MAAM,CAAwB;IAC9B,eAAe,CAAiC;IAChD,QAAQ,CAA0B;IAClC,eAAe,CAAS;IACxB,UAAU,CAA4B;IACtC,gBAAgB,CAAmC;IAEpE,YAAY,OAAkD;QAC5D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YACzC,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACzD,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjD,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC/D,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,iCAAiC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU;YACpE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC1D,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACjE,IACE,OAAO,CAAC,eAAe;YACvB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB;YAEjD,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,IACE,OAAO,CAAC,UAAU,KAAK,SAAS;YAChC,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU;gBAC5C,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;YAEhD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC5D,IACE,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACtC,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,KAAK,UAAU;YAEtD,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,UAAU;YACb,OAAO,CAAC,UAAU,IAAI,IAAI,iCAAiC,EAAE,CAAC;QAChE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YACxB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;YACtC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,aAAa;YAChD,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,UAAU,EAAE,eAAe,CAAC,UAAU;YACtC,eAAe,EAAE,eAAe,CAAC,eAAe;YAChD,qBAAqB,EAAE,eAAe,CAAC,qBAAqB;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAqC;QAErC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAC;gBAChB,WAAW,EAAE,MAAe;gBAC5B,UAAU,EAAE,oCAAoC;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,0BAA0B,CACxB,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAC7B,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAKnB;QACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAOzB;QACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,gBAAgB;YAC3C,MAAM,IAAI,iCAAiC,EAAE,CAAC;QAChD,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,UAAU,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,IAAI,GAAG,0BAA0B,CACrC,KAAK,EACL;YACE,gBAAgB,EAAE,KAAK,CAAC,QAAQ;YAChC,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,EACD,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAKlB;QACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,KAAK;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAInB;QACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,KAAK,CAAC,kBAAkB,EAAE;YACvE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB;SACxD,CAAC,CAAC;QACH,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACxD,IACE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB;YAC7C,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,SAAS;YAC5C,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,OAAO;YACxC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;YAC1C,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,UAAU,CAAC,aAAa;YAEzD,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,MAAM,wBAAwB,GAAG,yBAAyB,CACxD,SAAS,EACT,QAAgC,CACjC,CAAC;QACF,MAAM,aAAa,GAAG;YACpB,aAAa,EAAE,CAAU;YACzB,YAAY,EAAE,sBAA+B;YAC7C,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,iBAAiB,EAAE,IAAI,CAAC,cAAc;YACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,eAAe,EAAE,KAAK,CAAC,SAAS;YAChC,aAAa,EAAE,KAAK,CAAC,OAAO;YAC5B,sBAAsB,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY;YACrD,wBAAwB;YACxB,WAAW,EAAE,KAAK;YAClB,mBAAmB,EAAE,KAAK,CAAC,aAAa;SACzC,CAAC;QACF,OAAO,UAAU,CAAC;YAChB,GAAG,aAAa;YAChB,aAAa,EAAE,yBAAyB,CACtC,SAAS,EACT,aAAqC,CACtC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAOnB;QACC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,KAAK,CAAC,kBAAkB,EAAE;YACvE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB;SACxD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9D,gBAAgB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC3D,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACvD,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,mBAAmB;YACnD,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;YAC3C,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,SAAS,CAAC;YAC7B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ;YACtC,SAAS,EAAE,KAAK,CAAC,eAAe;YAChC,OAAO,EAAE,KAAK,CAAC,aAAa;YAC5B,IAAI;SACL,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAC1C,OAAO,CAAC,WAAW,EACnB;YACE,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ;YAC9C,gBAAgB,EAAE,YAAY;YAC9B,cAAc,EAAE,OAAO,CAAC,wBAAwB;YAChD,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,EACD,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,MAAqC;QAErC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QACnD,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,SAAS,CAAC;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,0BAA0B,CAAC;gBACzC,YAAY,EAAE,IAAI,CAAC,SAAS;gBAC5B,iBAAiB,EAAE,IAAI,CAAC,cAAc;gBACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,eAAe;gBAC3B,kBAAkB,EAAE,aAAa;aAClC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,0BAA0B,CACxB,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CACpC,CAAC;YACF,IACE,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;gBAClC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;gBAChC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;gBAEtC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;YAChE,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,eAAe,CAAC,YAAY,EAAE,CAAC;gBACnE,MAAM,QAAQ,GAAG,0BAA0B,CACzC,KAAK,EACL;oBACE,gBAAgB,EAAE,KAAK,CAAC,QAAQ;oBAChC,UAAU,EAAE,eAAe;oBAC3B,aAAa;iBACd,EACD,IAAI,CAAC,MAAM,CACZ,CAAC;gBACF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrD,KAAK,GAAG,QAAQ,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAC3B,OAAO,gBAAgB,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1E,MAAM,YAAY,GAAG,yBAAyB,CAC5C,QAAQ,EACR,MAA8B,CAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CACpD,KAAK,EACL,MAAM,EACN,YAAY,CACb,CAAC;QACF,MAAM,UAAU,GAAG,kBAAkB,CACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACrD,iBAAiB,EACjB,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAC/B,UAAU,EACV,iBAAiB,EACjB,KAAK,CAAC,UAAU,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,4BAA4B,CAC1C,KAAK,EACL,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,EAC5C,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;QACD,OAAO,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,uBAAuB,CAC7B,KAA2B,EAC3B,MAAqC,EACrC,YAAoB;QAEpB,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QACxD,OAAO,UAAU,CAAC;YAChB,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,kBAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;YAC9E,YAAY;YACZ,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,iBAAiB,EAAE,IAAI,CAAC,cAAc;YACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY;YAC/C,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY;YAC3C,aAAa,EAAE,KAAK,CAAC,QAAQ;YAC7B,2BAA2B,EAAE,KAAK,CAAC,mBAAmB;YACtD,gBAAgB,EAAE,KAAK,CAAC,QAAQ;YAChC,kBAAkB;YAClB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC,eAAe;SAC9D,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CACrB,KAAqC,EACrC,QAA2C;QAE3C,eAAe,CACb,KAAK,EACL;YACE,eAAe;YACf,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,kBAAkB;YAClB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,wBAAwB;YACxB,0BAA0B;YAC1B,aAAa;YACb,qBAAqB;YACrB,eAAe;SAChB,EACD,wBAAwB,CACzB,CAAC;QACF,IACE,KAAK,CAAC,aAAa,KAAK,CAAC;YACzB,KAAK,CAAC,YAAY,KAAK,sBAAsB;YAE7C,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;YAC3B,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;YACpC,CAAC,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,CAAC;YAC5C,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC;YAC1C,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;SAC9B;YACR,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;YAC3B,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;YACpC,CAAC,wBAAwB,EAAE,KAAK,CAAC,sBAAsB,CAAC;YACxD,CAAC,0BAA0B,EAAE,KAAK,CAAC,wBAAwB,CAAC;YAC5D,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;SAC9B;YACR,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;QACpE,0BAA0B,CACxB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CACzC,CAAC;QACF,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;QAC5D,IACE,yBAAyB,CACvB,SAAS,EACT,aAAqC,CACtC,KAAK,KAAK,CAAC,aAAa;YACzB,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS;YACrC,KAAK,CAAC,iBAAiB,KAAK,IAAI,CAAC,cAAc;YAC/C,KAAK,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB;YAChD,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY;YAChD,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,WAAW,CAAC,SAAS;YACrD,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,WAAW,CAAC,OAAO;YACjD,KAAK,CAAC,sBAAsB;gBAC1B,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY;YAC3C,KAAK,CAAC,wBAAwB;gBAC5B,yBAAyB,CACvB,SAAS,EACT,QAAgC,CACjC;YACH,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;YAClD,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;YAC9C,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa;YAErE,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,SAAiB;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,SAAiB;QACpC,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,iBAAiB,EAAE,IAAI,CAAC,cAAc;YACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AAED,SAAS,uBAAuB,CAC9B,KAAqC;IAErC,eAAe,CACb,KAAK,EACL,CAAC,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,EAC3E,iCAAiC,CAClC,CAAC;IACF,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjD,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC/D,YAAY,CAAC,KAAK,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAgC,EAChC,OAAyC,EACzC,OAAuC;IAEvC,eAAe,CACb,KAAK,EACL;QACE,eAAe;QACf,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,YAAY;QACZ,iBAAiB;QACjB,uBAAuB;QACvB,cAAc;QACd,gBAAgB;QAChB,yBAAyB;QACzB,eAAe;QACf,aAAa;QACb,sBAAsB;QACtB,qBAAqB;KACtB,EACD,2BAA2B,CAC5B,CAAC;IACF,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACrD,gBAAgB,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IACnE,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACjD,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjD,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC/D,YAAY,CAAC,KAAK,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IACnE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;QAC3B,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;QACpC,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC;QACxC,CAAC,yBAAyB,EAAE,KAAK,CAAC,uBAAuB,CAAC;KAClD,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,MAAM;YAChB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACnE,CAAC;IACD,IACE,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS;QACxC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QACjC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAE1C,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC;QACvE,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAClD,IACE,KAAK,CAAC,WAAW,CAAC,IAAI,CACpB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CACrE;QACD,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAC9D;QAED,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IACpE,IACE,KAAK,CAAC,mBAAmB,KAAK,OAAO,CAAC,mBAAmB;QACzD,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY;QAC3C,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;QACvC,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe;QACjD,KAAK,CAAC,qBAAqB,KAAK,OAAO,CAAC,qBAAqB;QAC7D,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB;QACtD,KAAK,CAAC,mBAAmB,IAAI,OAAO,CAAC,kBAAkB;QAEvD,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAqC,EACrC,OAAyC,EACzC,UAAqC;IAErC,OAAO,UAAU,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAC,YAAY;QACjC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,qBAAqB,EAAE,UAAU,CAAC,qBAAqB;QACvD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,gBAAgB,EAAE,UAAU,CAAC,YAAY;QACzC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;QAC3D,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;QACxC,oBAAoB,EAAE,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC;QAC1D,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAKlB;IACC,OAAO,+BAA+B,CAAC;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;QACnC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;QACvC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY;QACrC,wBAAwB,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB;QAC7D,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;QAC3B,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACnC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB;YACjD,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB;SACpD;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqC;IAClE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;QAC3B,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;QAC/B,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B;QACR,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAC;IAC5D,iBAAiB,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACjE,IACE,mBAAmB,GAAG,KAAK;QAC3B,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,mBAAmB,KAAK,CAAC,CAAC;QAE/D,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACjE,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAiC;IAEjC,OAAO,UAAU,CAAC;QAChB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;AACL,CAAC"}