orbit-agent-runtime 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/CHANGELOG.md +750 -0
  2. package/LICENSE +201 -0
  3. package/README.md +492 -0
  4. package/README.zh-CN.md +389 -0
  5. package/benchmarks/README.md +24 -0
  6. package/benchmarks/gateway.mjs +68 -0
  7. package/benchmarks/pae.mjs +90 -0
  8. package/benchmarks/replay.mjs +51 -0
  9. package/benchmarks/run-all.mjs +24 -0
  10. package/benchmarks/wal.mjs +50 -0
  11. package/bin/orbit.mjs +523 -0
  12. package/dist/.tsbuildinfo +1 -0
  13. package/dist/demo-deepseek.d.ts +2 -0
  14. package/dist/demo-deepseek.d.ts.map +1 -0
  15. package/dist/demo-deepseek.js +66 -0
  16. package/dist/demo-deepseek.js.map +1 -0
  17. package/dist/demo-host.d.ts +2 -0
  18. package/dist/demo-host.d.ts.map +1 -0
  19. package/dist/demo-host.js +98 -0
  20. package/dist/demo-host.js.map +1 -0
  21. package/dist/demo-replay.d.ts +2 -0
  22. package/dist/demo-replay.d.ts.map +1 -0
  23. package/dist/demo-replay.js +68 -0
  24. package/dist/demo-replay.js.map +1 -0
  25. package/dist/src/core/orbitRuntimeHost.d.ts +349 -0
  26. package/dist/src/core/orbitRuntimeHost.d.ts.map +1 -0
  27. package/dist/src/core/orbitRuntimeHost.js +706 -0
  28. package/dist/src/core/orbitRuntimeHost.js.map +1 -0
  29. package/dist/src/index.d.ts +92 -0
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/dist/src/index.js +226 -0
  32. package/dist/src/index.js.map +1 -0
  33. package/dist/test/audit_chain.test.d.ts +2 -0
  34. package/dist/test/audit_chain.test.d.ts.map +1 -0
  35. package/dist/test/audit_chain.test.js +283 -0
  36. package/dist/test/audit_chain.test.js.map +1 -0
  37. package/dist/test/channel_hub.test.d.ts +2 -0
  38. package/dist/test/channel_hub.test.d.ts.map +1 -0
  39. package/dist/test/channel_hub.test.js +66 -0
  40. package/dist/test/channel_hub.test.js.map +1 -0
  41. package/dist/test/cordis_adapter.test.d.ts +2 -0
  42. package/dist/test/cordis_adapter.test.d.ts.map +1 -0
  43. package/dist/test/cordis_adapter.test.js +280 -0
  44. package/dist/test/cordis_adapter.test.js.map +1 -0
  45. package/dist/test/cost_routing.test.d.ts +2 -0
  46. package/dist/test/cost_routing.test.d.ts.map +1 -0
  47. package/dist/test/cost_routing.test.js +31 -0
  48. package/dist/test/cost_routing.test.js.map +1 -0
  49. package/dist/test/domain_transaction.test.d.ts +2 -0
  50. package/dist/test/domain_transaction.test.d.ts.map +1 -0
  51. package/dist/test/domain_transaction.test.js +351 -0
  52. package/dist/test/domain_transaction.test.js.map +1 -0
  53. package/dist/test/file_channel.test.d.ts +2 -0
  54. package/dist/test/file_channel.test.d.ts.map +1 -0
  55. package/dist/test/file_channel.test.js +179 -0
  56. package/dist/test/file_channel.test.js.map +1 -0
  57. package/dist/test/gateway.test.d.ts +2 -0
  58. package/dist/test/gateway.test.d.ts.map +1 -0
  59. package/dist/test/gateway.test.js +548 -0
  60. package/dist/test/gateway.test.js.map +1 -0
  61. package/dist/test/governance_profile.test.d.ts +2 -0
  62. package/dist/test/governance_profile.test.d.ts.map +1 -0
  63. package/dist/test/governance_profile.test.js +214 -0
  64. package/dist/test/governance_profile.test.js.map +1 -0
  65. package/dist/test/governance_schema.test.d.ts +2 -0
  66. package/dist/test/governance_schema.test.d.ts.map +1 -0
  67. package/dist/test/governance_schema.test.js +200 -0
  68. package/dist/test/governance_schema.test.js.map +1 -0
  69. package/dist/test/host_integration.test.d.ts +2 -0
  70. package/dist/test/host_integration.test.d.ts.map +1 -0
  71. package/dist/test/host_integration.test.js +104 -0
  72. package/dist/test/host_integration.test.js.map +1 -0
  73. package/dist/test/host_journal_persistence.test.d.ts +2 -0
  74. package/dist/test/host_journal_persistence.test.d.ts.map +1 -0
  75. package/dist/test/host_journal_persistence.test.js +367 -0
  76. package/dist/test/host_journal_persistence.test.js.map +1 -0
  77. package/dist/test/impact_domain.test.d.ts +2 -0
  78. package/dist/test/impact_domain.test.d.ts.map +1 -0
  79. package/dist/test/impact_domain.test.js +48 -0
  80. package/dist/test/impact_domain.test.js.map +1 -0
  81. package/dist/test/injected_clock.test.d.ts +13 -0
  82. package/dist/test/injected_clock.test.d.ts.map +1 -0
  83. package/dist/test/injected_clock.test.js +200 -0
  84. package/dist/test/injected_clock.test.js.map +1 -0
  85. package/dist/test/isolation_domain.test.d.ts +2 -0
  86. package/dist/test/isolation_domain.test.d.ts.map +1 -0
  87. package/dist/test/isolation_domain.test.js +302 -0
  88. package/dist/test/isolation_domain.test.js.map +1 -0
  89. package/dist/test/journal_wal.test.d.ts +2 -0
  90. package/dist/test/journal_wal.test.d.ts.map +1 -0
  91. package/dist/test/journal_wal.test.js +622 -0
  92. package/dist/test/journal_wal.test.js.map +1 -0
  93. package/dist/test/mcp_adapter.test.d.ts +2 -0
  94. package/dist/test/mcp_adapter.test.d.ts.map +1 -0
  95. package/dist/test/mcp_adapter.test.js +440 -0
  96. package/dist/test/mcp_adapter.test.js.map +1 -0
  97. package/dist/test/openai_compat_channel.test.d.ts +2 -0
  98. package/dist/test/openai_compat_channel.test.d.ts.map +1 -0
  99. package/dist/test/openai_compat_channel.test.js +325 -0
  100. package/dist/test/openai_compat_channel.test.js.map +1 -0
  101. package/dist/test/openapi_adapter.test.d.ts +2 -0
  102. package/dist/test/openapi_adapter.test.d.ts.map +1 -0
  103. package/dist/test/openapi_adapter.test.js +270 -0
  104. package/dist/test/openapi_adapter.test.js.map +1 -0
  105. package/dist/test/orbit_cli.test.d.ts +2 -0
  106. package/dist/test/orbit_cli.test.d.ts.map +1 -0
  107. package/dist/test/orbit_cli.test.js +137 -0
  108. package/dist/test/orbit_cli.test.js.map +1 -0
  109. package/dist/test/pact_verifier.test.d.ts +2 -0
  110. package/dist/test/pact_verifier.test.d.ts.map +1 -0
  111. package/dist/test/pact_verifier.test.js +41 -0
  112. package/dist/test/pact_verifier.test.js.map +1 -0
  113. package/dist/test/pae_adapter.test.d.ts +2 -0
  114. package/dist/test/pae_adapter.test.d.ts.map +1 -0
  115. package/dist/test/pae_adapter.test.js +469 -0
  116. package/dist/test/pae_adapter.test.js.map +1 -0
  117. package/dist/test/plugin_sandbox_guard.test.d.ts +2 -0
  118. package/dist/test/plugin_sandbox_guard.test.d.ts.map +1 -0
  119. package/dist/test/plugin_sandbox_guard.test.js +57 -0
  120. package/dist/test/plugin_sandbox_guard.test.js.map +1 -0
  121. package/dist/test/rate_limit_behavior.test.d.ts +2 -0
  122. package/dist/test/rate_limit_behavior.test.d.ts.map +1 -0
  123. package/dist/test/rate_limit_behavior.test.js +85 -0
  124. package/dist/test/rate_limit_behavior.test.js.map +1 -0
  125. package/dist/test/replay_compat.test.d.ts +2 -0
  126. package/dist/test/replay_compat.test.d.ts.map +1 -0
  127. package/dist/test/replay_compat.test.js +1122 -0
  128. package/dist/test/replay_compat.test.js.map +1 -0
  129. package/dist/test/replay_engine.test.d.ts +2 -0
  130. package/dist/test/replay_engine.test.d.ts.map +1 -0
  131. package/dist/test/replay_engine.test.js +85 -0
  132. package/dist/test/replay_engine.test.js.map +1 -0
  133. package/dist/test/shell_channel.test.d.ts +2 -0
  134. package/dist/test/shell_channel.test.d.ts.map +1 -0
  135. package/dist/test/shell_channel.test.js +173 -0
  136. package/dist/test/shell_channel.test.js.map +1 -0
  137. package/dist/test/teardown_isolation.test.d.ts +10 -0
  138. package/dist/test/teardown_isolation.test.d.ts.map +1 -0
  139. package/dist/test/teardown_isolation.test.js +279 -0
  140. package/dist/test/teardown_isolation.test.js.map +1 -0
  141. package/dist/test/token_budget.test.d.ts +2 -0
  142. package/dist/test/token_budget.test.d.ts.map +1 -0
  143. package/dist/test/token_budget.test.js +113 -0
  144. package/dist/test/token_budget.test.js.map +1 -0
  145. package/dist/test/trace_journal.test.d.ts +2 -0
  146. package/dist/test/trace_journal.test.d.ts.map +1 -0
  147. package/dist/test/trace_journal.test.js +43 -0
  148. package/dist/test/trace_journal.test.js.map +1 -0
  149. package/dist/test/trace_journal_persistence.test.d.ts +2 -0
  150. package/dist/test/trace_journal_persistence.test.d.ts.map +1 -0
  151. package/dist/test/trace_journal_persistence.test.js +175 -0
  152. package/dist/test/trace_journal_persistence.test.js.map +1 -0
  153. package/dist/test/trace_persistence.test.d.ts +2 -0
  154. package/dist/test/trace_persistence.test.d.ts.map +1 -0
  155. package/dist/test/trace_persistence.test.js +216 -0
  156. package/dist/test/trace_persistence.test.js.map +1 -0
  157. package/dist/test/trip_protector.test.d.ts +2 -0
  158. package/dist/test/trip_protector.test.d.ts.map +1 -0
  159. package/dist/test/trip_protector.test.js +42 -0
  160. package/dist/test/trip_protector.test.js.map +1 -0
  161. package/examples/README.md +34 -0
  162. package/examples/cli-record-replay.mjs +74 -0
  163. package/examples/custom-channel.mjs +102 -0
  164. package/examples/js-pae-plugin.mjs +128 -0
  165. package/examples/mcp-adapter.mjs +102 -0
  166. package/package.json +60 -0
  167. package/src/core/orbitRuntimeHost.ts +853 -0
  168. package/src/index.ts +256 -0
@@ -0,0 +1,548 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_test_1 = require("node:test");
40
+ const strict_1 = __importDefault(require("node:assert/strict"));
41
+ const fs = __importStar(require("node:fs"));
42
+ const os = __importStar(require("node:os"));
43
+ const path = __importStar(require("node:path"));
44
+ const index_1 = require("../src/index");
45
+ function makeHost() {
46
+ const host = new index_1.OrbitRuntimeHost();
47
+ return host;
48
+ }
49
+ (0, node_test_1.test)("gateway: record computes and stores the full decision snapshot", async () => {
50
+ const host = makeHost();
51
+ await host.bootHost();
52
+ host.registerPlugin({
53
+ id: "p1",
54
+ displayName: "P1",
55
+ edition: "1.0.0",
56
+ requireHostMinEdition: "1.0.0",
57
+ allowCapabilities: ["channel:read"]
58
+ });
59
+ const journal = host.beginRecording();
60
+ const out = await host.capabilityInvoke({
61
+ kind: index_1.ChannelKind.MEM_KV_STORE,
62
+ pluginId: "p1",
63
+ funcName: "readEntry",
64
+ args: ["k"],
65
+ mode: "live"
66
+ });
67
+ strict_1.default.equal(journal.size(), 1);
68
+ const rec = journal.get(0);
69
+ strict_1.default.equal(rec.decision.tripAllowed, true);
70
+ strict_1.default.equal(rec.decision.pactPass, true); // p1 declared channel:read
71
+ strict_1.default.equal(rec.decision.budget.strategy, "normal");
72
+ strict_1.default.equal(rec.decision.compression.level, "normal");
73
+ strict_1.default.equal(rec.decision.compression.applied, false);
74
+ strict_1.default.equal(rec.decision.route, "native");
75
+ strict_1.default.equal(rec.decision.rateLimited, false);
76
+ strict_1.default.equal(rec.runFingerprint.kernelVersion, "0.8.0");
77
+ strict_1.default.equal(out, null); // key not set in the mock KV
78
+ await host.shutdownHost();
79
+ });
80
+ (0, node_test_1.test)("gateway: replay restores the decision and returns the frozen output without re-executing", async () => {
81
+ const host = makeHost();
82
+ await host.bootHost();
83
+ host.registerPlugin({
84
+ id: "p1",
85
+ displayName: "P1",
86
+ edition: "1.0.0",
87
+ requireHostMinEdition: "1.0.0",
88
+ allowCapabilities: ["channel:read"]
89
+ });
90
+ const journal = host.beginRecording();
91
+ const out = await host.capabilityInvoke({
92
+ kind: index_1.ChannelKind.MEM_KV_STORE,
93
+ pluginId: "p1",
94
+ funcName: "readEntry",
95
+ args: ["k"],
96
+ mode: "live"
97
+ });
98
+ host.attachReplayEngine(journal);
99
+ const replayed = await host.capabilityInvoke({
100
+ kind: index_1.ChannelKind.MEM_KV_STORE,
101
+ pluginId: "p1",
102
+ funcName: "readEntry",
103
+ args: ["k"],
104
+ mode: "replay"
105
+ });
106
+ strict_1.default.deepEqual(replayed, out);
107
+ strict_1.default.equal(host.gateway.lastDecision.pactPass, true);
108
+ await host.shutdownHost();
109
+ });
110
+ (0, node_test_1.test)("gateway: replay performs zero real I/O (deleted side-effect file is not recreated)", async () => {
111
+ const host = makeHost();
112
+ await host.bootHost();
113
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), "gw-zeroio-"));
114
+ host.channelHub.registerPluginExtChannel(index_1.ChannelKind.FILE_SYSTEM, new index_1.FileChannel({ rootDir: root }));
115
+ host.registerPlugin({
116
+ id: "f1",
117
+ displayName: "F1",
118
+ edition: "1.0.0",
119
+ requireHostMinEdition: "1.0.0",
120
+ allowCapabilities: ["channel:write"]
121
+ });
122
+ const journal = host.beginRecording();
123
+ const wrote = await host.capabilityInvoke({
124
+ kind: index_1.ChannelKind.FILE_SYSTEM,
125
+ pluginId: "f1",
126
+ funcName: "writeTextFile",
127
+ args: ["a.txt", "hi"],
128
+ mode: "live"
129
+ });
130
+ strict_1.default.equal(typeof wrote, "number"); // FileChannel.writeTextFile returns bytes written
131
+ strict_1.default.equal(fs.existsSync(path.join(root, "a.txt")), true);
132
+ fs.rmSync(path.join(root, "a.txt")); // wipe the side effect
133
+ host.attachReplayEngine(journal);
134
+ const replayed = await host.capabilityInvoke({
135
+ kind: index_1.ChannelKind.FILE_SYSTEM,
136
+ pluginId: "f1",
137
+ funcName: "writeTextFile",
138
+ args: ["a.txt", "hi"],
139
+ mode: "replay"
140
+ });
141
+ strict_1.default.equal(replayed, wrote);
142
+ // The file is NOT recreated — proof that replay injected the frozen output.
143
+ strict_1.default.equal(fs.existsSync(path.join(root, "a.txt")), false);
144
+ fs.rmSync(root, { recursive: true, force: true });
145
+ await host.shutdownHost();
146
+ });
147
+ (0, node_test_1.test)("gateway: replay re-verifies the capability gate (revoked pact still blocks)", async () => {
148
+ const host = makeHost();
149
+ await host.bootHost();
150
+ host.registerPlugin({
151
+ id: "p1",
152
+ displayName: "P1",
153
+ edition: "1.0.0",
154
+ requireHostMinEdition: "1.0.0",
155
+ allowCapabilities: ["channel:read"]
156
+ });
157
+ const journal = host.beginRecording();
158
+ await host.capabilityInvoke({
159
+ kind: index_1.ChannelKind.MEM_KV_STORE,
160
+ pluginId: "p1",
161
+ funcName: "readEntry",
162
+ args: ["k"],
163
+ mode: "live"
164
+ });
165
+ // Revoke the capability, then replay — governance must not be weakened.
166
+ // This is DECISION drift (the recorded pactPass no longer holds), reported
167
+ // distinctly from config drift and call drift.
168
+ host.pluginPactVerifier.unregisterPluginUnit("p1");
169
+ host.attachReplayEngine(journal);
170
+ await strict_1.default.rejects(host.capabilityInvoke({
171
+ kind: index_1.ChannelKind.MEM_KV_STORE,
172
+ pluginId: "p1",
173
+ funcName: "readEntry",
174
+ args: ["k"],
175
+ mode: "replay"
176
+ }), (e) => e instanceof index_1.DecisionDriftError && e.decisionField === "pactPass");
177
+ await host.shutdownHost();
178
+ });
179
+ (0, node_test_1.test)("gateway: a missing capability blocks the live call and records nothing", async () => {
180
+ const host = makeHost();
181
+ await host.bootHost();
182
+ host.registerPlugin({
183
+ id: "readonly",
184
+ displayName: "RO",
185
+ edition: "1.0.0",
186
+ requireHostMinEdition: "1.0.0",
187
+ allowCapabilities: ["channel:read"] // no channel:write
188
+ });
189
+ const journal = host.beginRecording();
190
+ await strict_1.default.rejects(host.capabilityInvoke({
191
+ kind: index_1.ChannelKind.MEM_KV_STORE,
192
+ pluginId: "readonly",
193
+ funcName: "writeEntry", // requires channel:write
194
+ args: ["k", "v"],
195
+ mode: "live"
196
+ }), /lacks capability/);
197
+ strict_1.default.equal(journal.size(), 0); // failed governance → not recorded
198
+ await host.shutdownHost();
199
+ });
200
+ (0, node_test_1.test)("gateway: run-fingerprint drift reports a config-drift error (not digest drift)", async () => {
201
+ const hub = new index_1.ChannelHub();
202
+ const checkers = {
203
+ tripAllowed: () => true,
204
+ pactPass: () => true,
205
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
206
+ rateLimited: () => false,
207
+ route: () => "native",
208
+ compression: () => ({ level: "normal", applied: false }),
209
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false })
210
+ };
211
+ const gw = new index_1.CapabilityGateway(hub, checkers);
212
+ const digest = (0, index_1.digestInputs)("k");
213
+ const journal = new index_1.RecordJournal();
214
+ journal.append({
215
+ channelKind: index_1.ChannelKind.MEM_KV_STORE,
216
+ funcName: "readEntry",
217
+ inputDigest: digest,
218
+ outputSnapshot: "v",
219
+ durationMs: 0,
220
+ decision: {
221
+ tripAllowed: true,
222
+ pactPass: true,
223
+ budget: { allow: true, strategy: "normal" },
224
+ compression: { level: "normal", applied: false },
225
+ route: "native",
226
+ rateLimited: false
227
+ },
228
+ // Recorded under a DIFFERENT kernel version.
229
+ runFingerprint: { kernelVersion: "9.9.9", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
230
+ });
231
+ gw.attachJournal(journal);
232
+ await strict_1.default.rejects(gw.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["k"], mode: "replay" }), (e) => e instanceof index_1.RunFingerprintDriftError && e.driftField === "kernelVersion");
233
+ });
234
+ (0, node_test_1.test)("gateway: replay signature mismatch throws ReplayDriftError", async () => {
235
+ const hub = new index_1.ChannelHub();
236
+ const checkers = {
237
+ tripAllowed: () => true,
238
+ pactPass: () => true,
239
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
240
+ rateLimited: () => false,
241
+ route: () => "native",
242
+ compression: () => ({ level: "normal", applied: false }),
243
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false })
244
+ };
245
+ const gw = new index_1.CapabilityGateway(hub, checkers);
246
+ const journal = new index_1.RecordJournal();
247
+ journal.append({
248
+ channelKind: index_1.ChannelKind.MEM_KV_STORE,
249
+ funcName: "readEntry",
250
+ inputDigest: (0, index_1.digestInputs)("k"),
251
+ outputSnapshot: "v",
252
+ durationMs: 0,
253
+ decision: {
254
+ tripAllowed: true,
255
+ pactPass: true,
256
+ budget: { allow: true, strategy: "normal" },
257
+ compression: { level: "normal", applied: false },
258
+ route: "native",
259
+ rateLimited: false
260
+ },
261
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
262
+ });
263
+ gw.attachJournal(journal);
264
+ // Different input -> inputDigest mismatch -> ReplayDriftError.
265
+ await strict_1.default.rejects(gw.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["OTHER"], mode: "replay" }), (e) => e instanceof index_1.ReplayDriftError);
266
+ });
267
+ // W8: a token-config hash mismatch is reported as a distinct config-drift
268
+ // error (not a digest mismatch), proving the fingerprint catches threshold changes.
269
+ (0, node_test_1.test)("gateway: token-config-hash drift reports RunFingerprintDriftError(tokenConfigHash)", async () => {
270
+ const hub = new index_1.ChannelHub();
271
+ const checkers = {
272
+ tripAllowed: () => true,
273
+ pactPass: () => true,
274
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
275
+ rateLimited: () => false,
276
+ route: () => "native",
277
+ compression: () => ({ level: "normal", applied: false }),
278
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "RECORDED-HASH", paeEnabled: false })
279
+ };
280
+ const gw = new index_1.CapabilityGateway(hub, checkers);
281
+ const journal = new index_1.RecordJournal();
282
+ journal.append({
283
+ channelKind: index_1.ChannelKind.MEM_KV_STORE,
284
+ funcName: "readEntry",
285
+ inputDigest: (0, index_1.digestInputs)("k"),
286
+ outputSnapshot: "v",
287
+ durationMs: 0,
288
+ decision: {
289
+ tripAllowed: true,
290
+ pactPass: true,
291
+ budget: { allow: true, strategy: "normal" },
292
+ compression: { level: "normal", applied: false },
293
+ route: "native",
294
+ rateLimited: false
295
+ },
296
+ // Recorded under a DIFFERENT token-budget config.
297
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "RECORDED-HASH", paeEnabled: false }
298
+ });
299
+ gw.attachJournal(journal);
300
+ // Replay-time checker reports a changed hash.
301
+ const drifted = { ...checkers, fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "CURRENT-HASH", paeEnabled: false }) };
302
+ const gw2 = new index_1.CapabilityGateway(hub, drifted);
303
+ gw2.attachJournal(journal);
304
+ await strict_1.default.rejects(gw2.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["k"], mode: "replay" }), (e) => e instanceof index_1.RunFingerprintDriftError && e.driftField === "tokenConfigHash");
305
+ });
306
+ // W8: route decision is computed from the PAE registry, not a literal stub.
307
+ (0, node_test_1.test)("gateway: route decision flips to 'pae' once a PAE adapter is registered", async () => {
308
+ const host = makeHost();
309
+ await host.bootHost();
310
+ host.registerPlugin({
311
+ id: "p1",
312
+ displayName: "P1",
313
+ edition: "1.0.0",
314
+ requireHostMinEdition: "1.0.0",
315
+ allowCapabilities: ["channel:read"]
316
+ });
317
+ const journal = host.beginRecording();
318
+ await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "live" });
319
+ strict_1.default.equal(journal.get(0).decision.route, "native");
320
+ host.registerPaeAdapter(index_1.ChannelKind.LLM_ACCESS);
321
+ await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k2"], mode: "live" });
322
+ strict_1.default.equal(journal.get(1).decision.route, "pae");
323
+ await host.shutdownHost();
324
+ });
325
+ // W8: cumulative LLM token usage drives the budget decision across calls.
326
+ (0, node_test_1.test)("gateway: cumulative LLM usage moves budget strategy normal -> shrink", async () => {
327
+ const host = makeHost();
328
+ await host.bootHost();
329
+ class LongLlmChannel extends index_1.LlmMockChannel {
330
+ async chatRound() {
331
+ return Array(5000).fill("word").join(" "); // ~5000 estimated tokens
332
+ }
333
+ }
334
+ host.channelHub.registerPluginExtChannel(index_1.ChannelKind.LLM_ACCESS, new LongLlmChannel());
335
+ host.registerPlugin({
336
+ id: "llm1",
337
+ displayName: "LLM1",
338
+ edition: "1.0.0",
339
+ requireHostMinEdition: "1.0.0",
340
+ allowCapabilities: ["channel:read"]
341
+ });
342
+ const journal = host.beginRecording();
343
+ await host.capabilityInvoke({ kind: index_1.ChannelKind.LLM_ACCESS, pluginId: "llm1", funcName: "chatRound", args: ["prompt"], mode: "live" });
344
+ // First call: usage 0 -> normal (its own cost is accounted afterwards).
345
+ strict_1.default.equal(journal.get(0).decision.budget.strategy, "normal");
346
+ await host.capabilityInvoke({ kind: index_1.ChannelKind.LLM_ACCESS, pluginId: "llm1", funcName: "chatRound", args: ["prompt"], mode: "live" });
347
+ // Second call: ~5000 tokens already accounted (> compressAboveTokens) -> shrink.
348
+ strict_1.default.equal(journal.get(1).decision.budget.strategy, "shrink");
349
+ await host.shutdownHost();
350
+ });
351
+ // W9: compression is actually applied to the STORED snapshot (not merely
352
+ // decided), yet the consumer receives the original value and replay reproduces
353
+ // it byte-for-byte — proof that storage compression preserves axioms A1/A2.
354
+ (0, node_test_1.test)("gateway: large output is compressed at rest while replay stays byte-identical", async () => {
355
+ const host = makeHost();
356
+ await host.bootHost();
357
+ class BigLlmChannel extends index_1.LlmMockChannel {
358
+ async chatRound() {
359
+ return "z".repeat(20000); // ~20 KB serialized -> exceeds compressThresholdBytes
360
+ }
361
+ }
362
+ host.channelHub.registerPluginExtChannel(index_1.ChannelKind.LLM_ACCESS, new BigLlmChannel());
363
+ host.registerPlugin({
364
+ id: "llm2",
365
+ displayName: "LLM2",
366
+ edition: "1.0.0",
367
+ requireHostMinEdition: "1.0.0",
368
+ allowCapabilities: ["channel:read"]
369
+ });
370
+ const journal = host.beginRecording();
371
+ const out = await host.capabilityInvoke({
372
+ kind: index_1.ChannelKind.LLM_ACCESS,
373
+ pluginId: "llm2",
374
+ funcName: "chatRound",
375
+ args: ["p"],
376
+ mode: "live"
377
+ });
378
+ const rec = journal.get(0);
379
+ strict_1.default.equal(rec.decision.compression.applied, true);
380
+ strict_1.default.ok((rec.decision.compression.bytesSaved ?? 0) > 0);
381
+ // The stored snapshot is the compressed envelope, NOT the raw 20 KB string.
382
+ strict_1.default.equal((0, index_1.isCompressedPayload)(rec.outputSnapshot), true);
383
+ host.attachReplayEngine(journal);
384
+ const replayed = await host.capabilityInvoke({
385
+ kind: index_1.ChannelKind.LLM_ACCESS,
386
+ pluginId: "llm2",
387
+ funcName: "chatRound",
388
+ args: ["p"],
389
+ mode: "replay"
390
+ });
391
+ // Consumer-transparent: replay returns the identical original string.
392
+ strict_1.default.equal(replayed, out);
393
+ strict_1.default.equal(replayed, "z".repeat(20000));
394
+ await host.shutdownHost();
395
+ });
396
+ // ===========================================================================
397
+ // W12 · A.5 gateway determinism gate (7 cases)
398
+ // Coverage: 压缩 / 限流 / 采集 / 指纹漂移 / 决策漂移. Every case proves the
399
+ // gateway stays a faithful determinism boundary: decisions are recorded, and
400
+ // replay restores them verbatim (rate limiter & collector are bypassed).
401
+ // ===========================================================================
402
+ // A.5 · 压缩: a small payload is NOT compressed at rest, yet replay is still
403
+ // byte-identical — the storage-compression decision is honest about savings.
404
+ (0, node_test_1.test)("A.5 gateway: small payload is left uncompressed at rest, replay byte-identical", async () => {
405
+ const host = makeHost();
406
+ await host.bootHost();
407
+ host.registerPlugin({ id: "p1", displayName: "P1", edition: "1.0.0", requireHostMinEdition: "1.0.0", allowCapabilities: ["channel:read"] });
408
+ const journal = host.beginRecording();
409
+ const out = await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "live" });
410
+ const rec = journal.get(0);
411
+ strict_1.default.equal(rec.decision.compression.applied, false);
412
+ strict_1.default.equal((0, index_1.isCompressedPayload)(rec.outputSnapshot), false); // raw, never bloated
413
+ host.attachReplayEngine(journal);
414
+ const replayed = await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "replay" });
415
+ strict_1.default.deepEqual(replayed, out);
416
+ await host.shutdownHost();
417
+ });
418
+ // A.5 · 限流 (recorded limited): the recorded decision is replayed verbatim
419
+ // even when the live limiter would now report "not limited" — replay bypasses.
420
+ (0, node_test_1.test)("A.5 gateway: rate-limited decision recorded as true is replayed verbatim (replay bypasses limiter)", async () => {
421
+ const hub = new index_1.ChannelHub();
422
+ const recordedLimited = true;
423
+ const base = {
424
+ tripAllowed: () => true,
425
+ pactPass: () => true,
426
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
427
+ rateLimited: () => recordedLimited,
428
+ route: () => "native",
429
+ compression: () => ({ level: "normal", applied: false }),
430
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false })
431
+ };
432
+ const journal = new index_1.RecordJournal();
433
+ journal.append({
434
+ channelKind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", inputDigest: (0, index_1.digestInputs)("k"), outputSnapshot: "v", durationMs: 0,
435
+ decision: { tripAllowed: true, pactPass: true, budget: { allow: true, strategy: "normal" }, compression: { level: "normal", applied: false }, route: "native", rateLimited: recordedLimited },
436
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
437
+ });
438
+ const gw = new index_1.CapabilityGateway(hub, base);
439
+ gw.attachJournal(journal);
440
+ // Replay-time checker claims NOT limited; the recorded (limited) value must win.
441
+ const replayGw = new index_1.CapabilityGateway(hub, { ...base, rateLimited: () => false });
442
+ replayGw.attachJournal(journal);
443
+ await replayGw.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["k"], mode: "replay" });
444
+ strict_1.default.equal(replayGw.lastDecision.rateLimited, true);
445
+ });
446
+ // A.5 · 限流 (recorded not limited): symmetric — a recorded "false" is restored
447
+ // even when the live limiter would now report "limited".
448
+ (0, node_test_1.test)("A.5 gateway: rate-not-limited decision recorded as false is replayed verbatim (replay bypasses limiter)", async () => {
449
+ const hub = new index_1.ChannelHub();
450
+ const base = {
451
+ tripAllowed: () => true, pactPass: () => true,
452
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
453
+ rateLimited: () => false,
454
+ route: () => "native",
455
+ compression: () => ({ level: "normal", applied: false }),
456
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false })
457
+ };
458
+ const journal = new index_1.RecordJournal();
459
+ journal.append({
460
+ channelKind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", inputDigest: (0, index_1.digestInputs)("k"), outputSnapshot: "v", durationMs: 0,
461
+ decision: { tripAllowed: true, pactPass: true, budget: { allow: true, strategy: "normal" }, compression: { level: "normal", applied: false }, route: "native", rateLimited: false },
462
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
463
+ });
464
+ const gw = new index_1.CapabilityGateway(hub, base);
465
+ gw.attachJournal(journal);
466
+ const replayGw = new index_1.CapabilityGateway(hub, { ...base, rateLimited: () => true });
467
+ replayGw.attachJournal(journal);
468
+ await replayGw.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["k"], mode: "replay" });
469
+ strict_1.default.equal(replayGw.lastDecision.rateLimited, false);
470
+ });
471
+ // A.5 · 采集 (record mode): the behavior note is captured and persisted on the record.
472
+ (0, node_test_1.test)("A.5 gateway: behavior collector attaches a populated note on the record (record mode)", async () => {
473
+ const host = makeHost();
474
+ await host.bootHost();
475
+ host.registerPlugin({ id: "p1", displayName: "P1", edition: "1.0.0", requireHostMinEdition: "1.0.0", allowCapabilities: ["channel:read"] });
476
+ const journal = host.beginRecording();
477
+ await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "live" });
478
+ const rec = journal.get(0);
479
+ strict_1.default.ok(rec.behavior, "behavior note should be attached in record mode");
480
+ strict_1.default.equal(rec.behavior.route, "native");
481
+ strict_1.default.equal(rec.behavior.budget.strategy, "normal");
482
+ strict_1.default.equal(rec.behavior.rateLimited, false);
483
+ strict_1.default.equal(rec.behavior.compression.applied, false);
484
+ strict_1.default.equal(rec.behavior.recordedAtMode, "record");
485
+ strict_1.default.equal(typeof rec.behavior.tokensEstimated, "number");
486
+ await host.shutdownHost();
487
+ });
488
+ // A.5 · 采集 (replay mode): replay bypasses the collector and restores the
489
+ // stored behavior note — it is never re-collected or cleared.
490
+ (0, node_test_1.test)("A.5 gateway: replay restores the stored behavior note (collector bypass)", async () => {
491
+ const host = makeHost();
492
+ await host.bootHost();
493
+ host.registerPlugin({ id: "p1", displayName: "P1", edition: "1.0.0", requireHostMinEdition: "1.0.0", allowCapabilities: ["channel:read"] });
494
+ const journal = host.beginRecording();
495
+ const out = await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "live" });
496
+ strict_1.default.ok(journal.get(0).behavior, "behavior present after recording");
497
+ host.attachReplayEngine(journal);
498
+ const replayed = await host.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, pluginId: "p1", funcName: "readEntry", args: ["k"], mode: "replay" });
499
+ strict_1.default.deepEqual(replayed, out);
500
+ // The stored note survives replay untouched (collector is bypassed).
501
+ strict_1.default.ok(journal.get(0).behavior, "behavior note preserved across replay");
502
+ strict_1.default.equal(journal.get(0).behavior.recordedAtMode, "record");
503
+ await host.shutdownHost();
504
+ });
505
+ // A.5 · 决策漂移: decision drift is reported distinctly from config/call drift
506
+ // via reconcile (here the rateLimited axis differs between the two chains).
507
+ (0, node_test_1.test)("A.5 gateway: decision drift reported via reconcile (decisionDriftFields)", () => {
508
+ const original = new index_1.RecordJournal();
509
+ original.append({
510
+ channelKind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", inputDigest: (0, index_1.digestInputs)("k"), outputSnapshot: "v", durationMs: 0,
511
+ decision: { tripAllowed: true, pactPass: true, budget: { allow: true, strategy: "normal" }, compression: { level: "normal", applied: false }, route: "native", rateLimited: false },
512
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
513
+ });
514
+ const replayed = new index_1.RecordJournal();
515
+ replayed.append({
516
+ channelKind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", inputDigest: (0, index_1.digestInputs)("k"), outputSnapshot: "v", durationMs: 0,
517
+ decision: { tripAllowed: true, pactPass: true, budget: { allow: true, strategy: "normal" }, compression: { level: "normal", applied: false }, route: "native", rateLimited: true },
518
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false }
519
+ });
520
+ const report = new index_1.ReplayEngine(original).reconcile(original.snapshot(), replayed.snapshot());
521
+ strict_1.default.equal(report.digestChainConsistent, false);
522
+ strict_1.default.equal(report.decisionConsistent, false);
523
+ strict_1.default.deepEqual(report.decisionDriftFields, ["rateLimited"]);
524
+ });
525
+ // A.5 · 指纹漂移: a changed PAE-enabled flag surfaces as config drift with the
526
+ // right field, never as a generic digest mismatch.
527
+ (0, node_test_1.test)("A.5 gateway: paeEnabled fingerprint drift reports RunFingerprintDriftError(paeEnabled)", async () => {
528
+ const hub = new index_1.ChannelHub();
529
+ const checkers = {
530
+ tripAllowed: () => true, pactPass: () => true,
531
+ budgetDecision: () => ({ allow: true, strategy: "normal" }),
532
+ rateLimited: () => false,
533
+ route: () => "native",
534
+ compression: () => ({ level: "normal", applied: false }),
535
+ fingerprint: () => ({ kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: false })
536
+ };
537
+ const journal = new index_1.RecordJournal();
538
+ journal.append({
539
+ channelKind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", inputDigest: (0, index_1.digestInputs)("k"), outputSnapshot: "v", durationMs: 0,
540
+ decision: { tripAllowed: true, pactPass: true, budget: { allow: true, strategy: "normal" }, compression: { level: "normal", applied: false }, route: "native", rateLimited: false },
541
+ // Recorded WITH PAE enabled.
542
+ runFingerprint: { kernelVersion: "0.1.0", pactVersions: {}, tokenConfigHash: "default", paeEnabled: true }
543
+ });
544
+ const gw = new index_1.CapabilityGateway(hub, checkers);
545
+ gw.attachJournal(journal);
546
+ await strict_1.default.rejects(gw.capabilityInvoke({ kind: index_1.ChannelKind.MEM_KV_STORE, funcName: "readEntry", args: ["k"], mode: "replay" }), (e) => e instanceof index_1.RunFingerprintDriftError && e.driftField === "paeEnabled");
547
+ });
548
+ //# sourceMappingURL=gateway.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.test.js","sourceRoot":"","sources":["../../test/gateway.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAiC;AACjC,gEAAwC;AACxC,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAElC,wCAcsB;AAGtB,SAAS,QAAQ;IACf,MAAM,IAAI,GAAG,IAAI,wBAAgB,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAA,gBAAI,EAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;IAChF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAEtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QACtC,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAC5B,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B;IACvE,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxD,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACzD,gBAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B;IACtD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;IAC1G,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QACtC,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,gBAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChC,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;IACpG,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,mBAAW,CAAC,WAAW,EAAE,IAAI,mBAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,eAAe,CAAC;KACrC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QACxC,IAAI,EAAE,mBAAW,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;QACrB,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,kDAAkD;IACxF,gBAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAE5D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAuB;IAC5D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,EAAE,mBAAW,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;QACrB,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,gBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,4EAA4E;IAC5E,gBAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;IAC7F,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC1B,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,wEAAwE;IACxE,2EAA2E;IAC3E,+CAA+C;IAC/C,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,gBAAM,CAAC,OAAO,CAClB,IAAI,CAAC,gBAAgB,CAAC;QACpB,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,QAAQ;KACf,CAAC,EACF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,0BAAkB,IAAI,CAAC,CAAC,aAAa,KAAK,UAAU,CACzE,CAAC;IACF,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;IACxF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,mBAAmB;KACxD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,gBAAM,CAAC,OAAO,CAClB,IAAI,CAAC,gBAAgB,CAAC;QACpB,IAAI,EAAE,mBAAW,CAAC,YAAY;QAC9B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY,EAAE,yBAAyB;QACjD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QAChB,IAAI,EAAE,MAAM;KACb,CAAC,EACF,kBAAkB,CACnB,CAAC;IACF,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mCAAmC;IACpE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;IAChG,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QACpB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACjH,CAAC;IACF,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY;QACrC,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,MAAM;QACnB,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;YAChD,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,KAAK;SACnB;QACD,6CAA6C;QAC7C,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,gBAAM,CAAC,OAAO,CAClB,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC3G,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,gCAAwB,IAAI,CAAC,CAAC,UAAU,KAAK,eAAe,CACjF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;IAC5E,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QACpB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACjH,CAAC;IACF,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY;QACrC,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC;QAC9B,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;YAChD,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,KAAK;SACnB;QACD,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE1B,+DAA+D;IAC/D,MAAM,gBAAM,CAAC,OAAO,CAClB,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC/G,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,wBAAgB,CACrC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,oFAAoF;AACpF,IAAA,gBAAI,EAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;IACpG,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QACpB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACvH,CAAC;IACF,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY;QACrC,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC;QAC9B,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC3C,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;YAChD,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,KAAK;SACnB;QACD,kDAAkD;QAClD,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;KAClH,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1B,8CAA8C;IAC9C,MAAM,OAAO,GAAoB,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACxK,MAAM,GAAG,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,gBAAM,CAAC,OAAO,CAClB,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC5G,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,gCAAwB,IAAI,CAAC,CAAC,UAAU,KAAK,iBAAiB,CACnF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,4EAA4E;AAC5E,IAAA,gBAAI,EAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;IACzF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClI,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,CAAC,kBAAkB,CAAC,mBAAW,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnI,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,IAAA,gBAAI,EAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;IACtF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,MAAM,cAAe,SAAQ,sBAAc;QACzB,KAAK,CAAC,SAAS;YAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB;QACtE,CAAC;KACF;IACD,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,mBAAW,CAAC,UAAU,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvI,wEAAwE;IACxE,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvI,iFAAiF;IACjF,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,+EAA+E;AAC/E,4EAA4E;AAC5E,IAAA,gBAAI,EAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,MAAM,aAAc,SAAQ,sBAAc;QACxB,KAAK,CAAC,SAAS;YAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,sDAAsD;QAClF,CAAC;KACF;IACD,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,mBAAW,CAAC,UAAU,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,cAAc,CAAC;QAClB,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,OAAO;QAChB,qBAAqB,EAAE,OAAO;QAC9B,iBAAiB,EAAE,CAAC,cAAc,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QACtC,IAAI,EAAE,mBAAW,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAC5B,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,gBAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,4EAA4E;IAC5E,gBAAM,CAAC,KAAK,CAAC,IAAA,2BAAmB,EAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,EAAE,mBAAW,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,sEAAsE;IACtE,gBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,gBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,+CAA+C;AAC/C,8DAA8D;AAC9D,6EAA6E;AAC7E,yEAAyE;AACzE,8EAA8E;AAE9E,2EAA2E;AAC3E,6EAA6E;AAC7E,IAAA,gBAAI,EAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;IAChG,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5I,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9I,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAC5B,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,gBAAM,CAAC,KAAK,CAAC,IAAA,2BAAmB,EAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB;IACnF,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrJ,gBAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,+EAA+E;AAC/E,IAAA,gBAAI,EAAC,oGAAoG,EAAE,KAAK,IAAI,EAAE;IACpH,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,eAAe,GAAG,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAoB;QAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QACpB,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACjH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAChI,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;QAC7L,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1B,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxH,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,yDAAyD;AACzD,IAAA,gBAAI,EAAC,yGAAyG,EAAE,KAAK,IAAI,EAAE;IACzH,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAoB;QAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QAC7C,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACjH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAChI,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;QACnL,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxH,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,qFAAqF;AACrF,IAAA,gBAAI,EAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;IACvG,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5I,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClI,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAC5B,gBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;IAC3E,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACrD,gBAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,QAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,8DAA8D;AAC9D,IAAA,gBAAI,EAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;IAC1F,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5I,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9I,gBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAExE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrJ,gBAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChC,qEAAqE;IACrE,gBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC;IAC7E,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,4EAA4E;AAC5E,IAAA,gBAAI,EAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,QAAQ,GAAG,IAAI,qBAAa,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAChI,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;QACnL,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,qBAAa,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAChI,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;QAClL,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;KAC5G,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9F,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAClD,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC/C,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,mDAAmD;AACnD,IAAA,gBAAI,EAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;IACxG,MAAM,GAAG,GAAG,IAAI,kBAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QAC7C,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACjH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,qBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAChI,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;QACnL,6BAA6B;QAC7B,cAAc,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;KAC3G,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,gBAAM,CAAC,OAAO,CAClB,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC3G,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,gCAAwB,IAAI,CAAC,CAAC,UAAU,KAAK,YAAY,CAC9E,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=governance_profile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance_profile.test.d.ts","sourceRoot":"","sources":["../../test/governance_profile.test.ts"],"names":[],"mappings":""}