@maci-protocol/testing 0.0.0-ci.00107eb

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 (93) hide show
  1. package/CHANGELOG.md +262 -0
  2. package/LICENSE +21 -0
  3. package/README.md +16 -0
  4. package/build/hardhat.config.d.ts +5 -0
  5. package/build/hardhat.config.d.ts.map +1 -0
  6. package/build/hardhat.config.js +37 -0
  7. package/build/hardhat.config.js.map +1 -0
  8. package/build/ts/__tests__/e2e.full.test.d.ts +2 -0
  9. package/build/ts/__tests__/e2e.full.test.d.ts.map +1 -0
  10. package/build/ts/__tests__/e2e.full.test.js +839 -0
  11. package/build/ts/__tests__/e2e.full.test.js.map +1 -0
  12. package/build/ts/__tests__/e2e.nonQv.test.d.ts +2 -0
  13. package/build/ts/__tests__/e2e.nonQv.test.d.ts.map +1 -0
  14. package/build/ts/__tests__/e2e.nonQv.test.js +605 -0
  15. package/build/ts/__tests__/e2e.nonQv.test.js.map +1 -0
  16. package/build/ts/__tests__/e2e.test.d.ts +2 -0
  17. package/build/ts/__tests__/e2e.test.d.ts.map +1 -0
  18. package/build/ts/__tests__/e2e.test.js +1596 -0
  19. package/build/ts/__tests__/e2e.test.js.map +1 -0
  20. package/build/ts/__tests__/integration.test.d.ts +2 -0
  21. package/build/ts/__tests__/integration.test.d.ts.map +1 -0
  22. package/build/ts/__tests__/integration.test.js +288 -0
  23. package/build/ts/__tests__/integration.test.js.map +1 -0
  24. package/build/ts/__tests__/keyChange.test.d.ts +2 -0
  25. package/build/ts/__tests__/keyChange.test.d.ts.map +1 -0
  26. package/build/ts/__tests__/keyChange.test.js +455 -0
  27. package/build/ts/__tests__/keyChange.test.js.map +1 -0
  28. package/build/ts/__tests__/maciKeys.test.d.ts +2 -0
  29. package/build/ts/__tests__/maciKeys.test.d.ts.map +1 -0
  30. package/build/ts/__tests__/maciKeys.test.js +78 -0
  31. package/build/ts/__tests__/maciKeys.test.js.map +1 -0
  32. package/build/ts/__tests__/stress/stress.full.test.d.ts +2 -0
  33. package/build/ts/__tests__/stress/stress.full.test.d.ts.map +1 -0
  34. package/build/ts/__tests__/stress/stress.full.test.js +186 -0
  35. package/build/ts/__tests__/stress/stress.full.test.js.map +1 -0
  36. package/build/ts/__tests__/unit/fundWallet.test.d.ts +2 -0
  37. package/build/ts/__tests__/unit/fundWallet.test.d.ts.map +1 -0
  38. package/build/ts/__tests__/unit/fundWallet.test.js +15 -0
  39. package/build/ts/__tests__/unit/fundWallet.test.js.map +1 -0
  40. package/build/ts/__tests__/unit/joinPoll.test.d.ts +2 -0
  41. package/build/ts/__tests__/unit/joinPoll.test.d.ts.map +1 -0
  42. package/build/ts/__tests__/unit/joinPoll.test.js +160 -0
  43. package/build/ts/__tests__/unit/joinPoll.test.js.map +1 -0
  44. package/build/ts/__tests__/unit/poll.test.d.ts +2 -0
  45. package/build/ts/__tests__/unit/poll.test.d.ts.map +1 -0
  46. package/build/ts/__tests__/unit/poll.test.js +87 -0
  47. package/build/ts/__tests__/unit/poll.test.js.map +1 -0
  48. package/build/ts/__tests__/unit/publish.test.d.ts +2 -0
  49. package/build/ts/__tests__/unit/publish.test.d.ts.map +1 -0
  50. package/build/ts/__tests__/unit/publish.test.js +130 -0
  51. package/build/ts/__tests__/unit/publish.test.js.map +1 -0
  52. package/build/ts/__tests__/unit/setVerifyingKeys.test.d.ts +2 -0
  53. package/build/ts/__tests__/unit/setVerifyingKeys.test.d.ts.map +1 -0
  54. package/build/ts/__tests__/unit/setVerifyingKeys.test.js +52 -0
  55. package/build/ts/__tests__/unit/setVerifyingKeys.test.js.map +1 -0
  56. package/build/ts/__tests__/unit/signup.test.d.ts +2 -0
  57. package/build/ts/__tests__/unit/signup.test.d.ts.map +1 -0
  58. package/build/ts/__tests__/unit/signup.test.js +65 -0
  59. package/build/ts/__tests__/unit/signup.test.js.map +1 -0
  60. package/build/ts/__tests__/unit/timeTravel.test.d.ts +2 -0
  61. package/build/ts/__tests__/unit/timeTravel.test.d.ts.map +1 -0
  62. package/build/ts/__tests__/unit/timeTravel.test.js +14 -0
  63. package/build/ts/__tests__/unit/timeTravel.test.js.map +1 -0
  64. package/build/ts/__tests__/unit/utils.test.d.ts +2 -0
  65. package/build/ts/__tests__/unit/utils.test.d.ts.map +1 -0
  66. package/build/ts/__tests__/unit/utils.test.js +36 -0
  67. package/build/ts/__tests__/unit/utils.test.js.map +1 -0
  68. package/build/ts/constants.d.ts +82 -0
  69. package/build/ts/constants.d.ts.map +1 -0
  70. package/build/ts/constants.js +198 -0
  71. package/build/ts/constants.js.map +1 -0
  72. package/build/ts/index.d.ts +4 -0
  73. package/build/ts/index.d.ts.map +1 -0
  74. package/build/ts/index.js +23 -0
  75. package/build/ts/index.js.map +1 -0
  76. package/build/ts/testingClass.d.ts +43 -0
  77. package/build/ts/testingClass.d.ts.map +1 -0
  78. package/build/ts/testingClass.js +145 -0
  79. package/build/ts/testingClass.js.map +1 -0
  80. package/build/ts/types.d.ts +99 -0
  81. package/build/ts/types.d.ts.map +1 -0
  82. package/build/ts/types.js +3 -0
  83. package/build/ts/types.js.map +1 -0
  84. package/build/ts/user.d.ts +27 -0
  85. package/build/ts/user.d.ts.map +1 -0
  86. package/build/ts/user.js +36 -0
  87. package/build/ts/user.js.map +1 -0
  88. package/build/ts/utils.d.ts +70 -0
  89. package/build/ts/utils.d.ts.map +1 -0
  90. package/build/ts/utils.js +192 -0
  91. package/build/ts/utils.js.map +1 -0
  92. package/build/tsconfig.tsbuildinfo +1 -0
  93. package/package.json +54 -0
@@ -0,0 +1,605 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@maci-protocol/core");
4
+ const crypto_1 = require("@maci-protocol/crypto");
5
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
6
+ const sdk_1 = require("@maci-protocol/sdk");
7
+ const chai_1 = require("chai");
8
+ const constants_1 = require("../constants");
9
+ const utils_1 = require("../utils");
10
+ /**
11
+ Test scenarios:
12
+ 1 signup, 1 message with quadratic voting disabled
13
+ 1 signup, 1 relayed message
14
+ 1 signup, 2 valid messages
15
+ 1 signup, 2 valid and 2 invalid messages
16
+ 2 signups, 2 different messages
17
+ */
18
+ describe("e2e tests with non quadratic voting", function test() {
19
+ const useWasm = (0, sdk_1.isArm)();
20
+ this.timeout(900000);
21
+ let maciAddresses;
22
+ let initialVoiceCreditProxyContractAddress;
23
+ let signer;
24
+ const generateProofsArgs = {
25
+ outputDir: constants_1.testProofsDirPath,
26
+ tallyFile: constants_1.testTallyFilePath,
27
+ voteTallyZkey: constants_1.testVoteTallyNonQvZkeyPath,
28
+ messageProcessorZkey: constants_1.testProcessMessageNonQvZkeyPath,
29
+ pollId: 0n,
30
+ rapidsnark: constants_1.testRapidsnarkPath,
31
+ messageProcessorWitnessGenerator: constants_1.testProcessMessagesNonQvWitnessPath,
32
+ messageProcessorWitnessDatFile: constants_1.testProcessMessagesNonQvWitnessDatPath,
33
+ voteTallyWitnessGenerator: constants_1.testVoteTallyNonQvWitnessPath,
34
+ voteTallyWitnessDatFile: constants_1.testVoteTallyNonQvWitnessDatPath,
35
+ coordinatorPrivateKey: constants_1.coordinatorPrivateKey,
36
+ messageProcessorWasm: constants_1.testProcessMessagesNonQvWasmPath,
37
+ voteTallyWasm: constants_1.testVoteTallyNonQvWasmPath,
38
+ useWasm,
39
+ mode: sdk_1.EMode.NON_QV,
40
+ };
41
+ // before all tests we deploy the verifying keys registry contract and set the verifying keys
42
+ before(async () => {
43
+ signer = await (0, sdk_1.getDefaultSigner)();
44
+ const constantInitialVoiceCreditProxyFactory = await (0, sdk_1.deployConstantInitialVoiceCreditProxyFactory)(signer, true);
45
+ const initialVoiceCreditProxy = await (0, sdk_1.deployConstantInitialVoiceCreditProxy)({ amount: constants_1.DEFAULT_INITIAL_VOICE_CREDITS }, constantInitialVoiceCreditProxyFactory, signer);
46
+ initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();
47
+ });
48
+ describe("1 signup, 1 message", () => {
49
+ after(async () => {
50
+ await (0, utils_1.clean)();
51
+ });
52
+ const user = new domainobjs_1.Keypair();
53
+ const voteWeight = 9n;
54
+ before(async () => {
55
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
56
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
57
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ policy: signupPolicyFactory, checker: signupCheckerFactory }, signer, true);
58
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
59
+ // deploy the smart contracts
60
+ maciAddresses = await (0, sdk_1.deployMaci)({
61
+ ...constants_1.deployArgs,
62
+ signer,
63
+ signupPolicyAddress: signupPolicyContractAddress,
64
+ });
65
+ // we set the verifying keys
66
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
67
+ await (0, sdk_1.setVerifyingKeys)({
68
+ ...(await (0, constants_1.verifyingKeysArgs)(signer, [sdk_1.EMode.NON_QV])),
69
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
70
+ });
71
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
72
+ // deploy a poll contract
73
+ await (0, sdk_1.deployPoll)({
74
+ ...constants_1.deployPollArgs,
75
+ signer,
76
+ pollStartTimestamp: startDate,
77
+ pollEndTimestamp: startDate + constants_1.pollDuration,
78
+ relayers: [await signer.getAddress()],
79
+ maciAddress: maciAddresses.maciContractAddress,
80
+ policyContractAddress: pollPolicyContractAddress,
81
+ initialVoiceCreditProxyContractAddress,
82
+ mode: sdk_1.EMode.NON_QV,
83
+ });
84
+ });
85
+ it("should signup one user", async () => {
86
+ await (0, sdk_1.signup)({
87
+ maciAddress: maciAddresses.maciContractAddress,
88
+ maciPublicKey: user.publicKey.serialize(),
89
+ sgData: constants_1.DEFAULT_SG_DATA,
90
+ signer,
91
+ });
92
+ });
93
+ it("should join one user", async () => {
94
+ await (0, sdk_1.joinPoll)({
95
+ maciAddress: maciAddresses.maciContractAddress,
96
+ privateKey: user.privateKey.serialize(),
97
+ pollId: 0n,
98
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
99
+ useWasm,
100
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
101
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
102
+ rapidsnark: constants_1.testRapidsnarkPath,
103
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
104
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
105
+ signer,
106
+ });
107
+ });
108
+ it("should publish one message", async () => {
109
+ await (0, sdk_1.publish)({
110
+ publicKey: user.publicKey.serialize(),
111
+ stateIndex: 1n,
112
+ voteOptionIndex: 0n,
113
+ nonce: 1n,
114
+ pollId: 0n,
115
+ newVoteWeight: voteWeight,
116
+ maciAddress: maciAddresses.maciContractAddress,
117
+ salt: (0, crypto_1.generateRandomSalt)(),
118
+ privateKey: user.privateKey.serialize(),
119
+ signer,
120
+ });
121
+ });
122
+ it("should generate zk-SNARK proofs and verify them", async () => {
123
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
124
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
125
+ const { tallyData: tallyFileData } = await (0, sdk_1.generateProofs)({
126
+ ...generateProofsArgs,
127
+ signer,
128
+ maciAddress: maciAddresses.maciContractAddress,
129
+ mode: sdk_1.EMode.NON_QV,
130
+ });
131
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
132
+ await (0, sdk_1.verify)({
133
+ ...(await (0, constants_1.verifyArgs)(signer)),
134
+ tallyData: tallyFileData,
135
+ maciAddress: tallyFileData.maci,
136
+ });
137
+ (0, chai_1.expect)(tallyFileData.totalSpentVoiceCredits.spent.toString()).to.eq(voteWeight.toString());
138
+ tallyFileData.results.tally.forEach((result, index) => {
139
+ (0, chai_1.expect)(result.toString()).to.eq(index === 0 ? voteWeight.toString() : "0");
140
+ });
141
+ });
142
+ });
143
+ describe("1 signup, 1 relayed message", () => {
144
+ after(async () => {
145
+ await (0, utils_1.clean)();
146
+ });
147
+ const user = new domainobjs_1.Keypair();
148
+ const voteWeight = 9n;
149
+ before(async () => {
150
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
151
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
152
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ policy: signupPolicyFactory, checker: signupCheckerFactory }, signer, true);
153
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
154
+ // deploy the smart contracts
155
+ maciAddresses = await (0, sdk_1.deployMaci)({
156
+ ...constants_1.deployArgs,
157
+ signer,
158
+ signupPolicyAddress: signupPolicyContractAddress,
159
+ });
160
+ // we set the verifying keys
161
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
162
+ await (0, sdk_1.setVerifyingKeys)({
163
+ ...(await (0, constants_1.verifyingKeysArgs)(signer, [sdk_1.EMode.NON_QV])),
164
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
165
+ });
166
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
167
+ // deploy a poll contract
168
+ await (0, sdk_1.deployPoll)({
169
+ ...constants_1.deployPollArgs,
170
+ signer,
171
+ pollStartTimestamp: startDate,
172
+ pollEndTimestamp: startDate + constants_1.pollDuration,
173
+ relayers: [await signer.getAddress()],
174
+ maciAddress: maciAddresses.maciContractAddress,
175
+ policyContractAddress: pollPolicyContractAddress,
176
+ initialVoiceCreditProxyContractAddress,
177
+ mode: sdk_1.EMode.NON_QV,
178
+ });
179
+ });
180
+ it("should signup one user", async () => {
181
+ await (0, sdk_1.signup)({
182
+ maciAddress: maciAddresses.maciContractAddress,
183
+ maciPublicKey: user.publicKey.serialize(),
184
+ sgData: constants_1.DEFAULT_SG_DATA,
185
+ signer,
186
+ });
187
+ });
188
+ it("should join one user", async () => {
189
+ await (0, sdk_1.joinPoll)({
190
+ maciAddress: maciAddresses.maciContractAddress,
191
+ privateKey: user.privateKey.serialize(),
192
+ pollId: 0n,
193
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
194
+ useWasm,
195
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
196
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
197
+ rapidsnark: constants_1.testRapidsnarkPath,
198
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
199
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
200
+ signer,
201
+ });
202
+ });
203
+ it("should relay one message", async () => {
204
+ const { message, ephemeralKeypair } = (0, sdk_1.generateVote)({
205
+ pollId: 0n,
206
+ voteOptionIndex: 0n,
207
+ salt: (0, crypto_1.generateRandomSalt)(),
208
+ nonce: 1n,
209
+ privateKey: user.privateKey,
210
+ stateIndex: 1n,
211
+ voteWeight,
212
+ coordinatorPublicKey: constants_1.coordinatorKeypair.publicKey,
213
+ maxVoteOption: BigInt(core_1.VOTE_OPTION_TREE_ARITY ** constants_1.deployPollArgs.voteOptionTreeDepth),
214
+ newPublicKey: user.publicKey,
215
+ });
216
+ const messages = [
217
+ {
218
+ maciAddress: maciAddresses.maciContractAddress,
219
+ poll: 0,
220
+ data: message.data.map(String),
221
+ publicKey: ephemeralKeypair.publicKey.asArray().map(String),
222
+ hash: message.hash(ephemeralKeypair.publicKey).toString(),
223
+ },
224
+ ];
225
+ await (0, utils_1.relayTestMessages)({ messages, signer, pollId: 0, maciAddress: maciAddresses.maciContractAddress });
226
+ });
227
+ it("should generate zk-SNARK proofs and verify them", async () => {
228
+ const ipfsMessageBackupFiles = await (0, utils_1.getBackupFilenames)();
229
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
230
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
231
+ const { tallyData: tallyFileData } = await (0, sdk_1.generateProofs)({
232
+ ...generateProofsArgs,
233
+ signer,
234
+ maciAddress: maciAddresses.maciContractAddress,
235
+ ipfsMessageBackupFiles,
236
+ mode: sdk_1.EMode.NON_QV,
237
+ });
238
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
239
+ await (0, sdk_1.verify)({
240
+ ...(await (0, constants_1.verifyArgs)(signer)),
241
+ tallyData: tallyFileData,
242
+ maciAddress: tallyFileData.maci,
243
+ });
244
+ (0, chai_1.expect)(tallyFileData.totalSpentVoiceCredits.spent.toString()).to.eq(voteWeight.toString());
245
+ tallyFileData.results.tally.forEach((result, index) => {
246
+ (0, chai_1.expect)(result.toString()).to.eq(index === 0 ? voteWeight.toString() : "0");
247
+ });
248
+ });
249
+ });
250
+ describe("1 signup, 2 valid messages", () => {
251
+ after(async () => {
252
+ await (0, utils_1.clean)();
253
+ });
254
+ const user = new domainobjs_1.Keypair();
255
+ before(async () => {
256
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
257
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
258
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ policy: signupPolicyFactory, checker: signupCheckerFactory }, signer, true);
259
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
260
+ // deploy the smart contracts
261
+ maciAddresses = await (0, sdk_1.deployMaci)({
262
+ ...constants_1.deployArgs,
263
+ signer,
264
+ signupPolicyAddress: signupPolicyContractAddress,
265
+ });
266
+ // we set the verifying keys
267
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
268
+ await (0, sdk_1.setVerifyingKeys)({
269
+ ...(await (0, constants_1.verifyingKeysArgs)(signer, [sdk_1.EMode.NON_QV])),
270
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
271
+ });
272
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
273
+ // deploy a poll contract
274
+ await (0, sdk_1.deployPoll)({
275
+ ...constants_1.deployPollArgs,
276
+ signer,
277
+ pollStartTimestamp: startDate,
278
+ pollEndTimestamp: startDate + constants_1.pollDuration,
279
+ relayers: [await signer.getAddress()],
280
+ maciAddress: maciAddresses.maciContractAddress,
281
+ policyContractAddress: pollPolicyContractAddress,
282
+ initialVoiceCreditProxyContractAddress,
283
+ mode: sdk_1.EMode.NON_QV,
284
+ });
285
+ });
286
+ it("should signup one user", async () => {
287
+ await (0, sdk_1.signup)({
288
+ maciAddress: maciAddresses.maciContractAddress,
289
+ maciPublicKey: user.publicKey.serialize(),
290
+ sgData: constants_1.DEFAULT_SG_DATA,
291
+ signer,
292
+ });
293
+ });
294
+ it("should join one user", async () => {
295
+ await (0, sdk_1.joinPoll)({
296
+ maciAddress: maciAddresses.maciContractAddress,
297
+ privateKey: user.privateKey.serialize(),
298
+ pollId: 0n,
299
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
300
+ useWasm,
301
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
302
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
303
+ rapidsnark: constants_1.testRapidsnarkPath,
304
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
305
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
306
+ signer,
307
+ });
308
+ });
309
+ it("should publish two messages", async () => {
310
+ await (0, sdk_1.publish)({
311
+ publicKey: user.publicKey.serialize(),
312
+ stateIndex: 1n,
313
+ voteOptionIndex: 0n,
314
+ nonce: 2n,
315
+ pollId: 0n,
316
+ newVoteWeight: BigInt(constants_1.DEFAULT_INITIAL_VOICE_CREDITS),
317
+ maciAddress: maciAddresses.maciContractAddress,
318
+ salt: (0, crypto_1.generateRandomSalt)(),
319
+ privateKey: user.privateKey.serialize(),
320
+ signer,
321
+ });
322
+ await (0, sdk_1.publish)({
323
+ publicKey: user.publicKey.serialize(),
324
+ stateIndex: 1n,
325
+ voteOptionIndex: 1n,
326
+ nonce: 1n,
327
+ pollId: 0n,
328
+ newVoteWeight: BigInt(constants_1.DEFAULT_INITIAL_VOICE_CREDITS),
329
+ maciAddress: maciAddresses.maciContractAddress,
330
+ salt: (0, crypto_1.generateRandomSalt)(),
331
+ privateKey: user.privateKey.serialize(),
332
+ signer,
333
+ });
334
+ });
335
+ it("should generate zk-SNARK proofs and verify them", async () => {
336
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
337
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
338
+ const { tallyData: tallyFileData } = await (0, sdk_1.generateProofs)({
339
+ ...generateProofsArgs,
340
+ signer,
341
+ maciAddress: maciAddresses.maciContractAddress,
342
+ mode: sdk_1.EMode.NON_QV,
343
+ });
344
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
345
+ await (0, sdk_1.verify)({
346
+ ...(await (0, constants_1.verifyArgs)(signer)),
347
+ tallyData: tallyFileData,
348
+ maciAddress: tallyFileData.maci,
349
+ });
350
+ (0, chai_1.expect)(tallyFileData.totalSpentVoiceCredits.spent.toString()).to.eq(constants_1.DEFAULT_INITIAL_VOICE_CREDITS.toString());
351
+ tallyFileData.results.tally.forEach((result, index) => {
352
+ (0, chai_1.expect)(result.toString()).to.eq(index === 1 ? constants_1.DEFAULT_INITIAL_VOICE_CREDITS.toString() : "0");
353
+ });
354
+ });
355
+ });
356
+ describe("1 signup, 2 valid and 1 invalid message", () => {
357
+ after(async () => {
358
+ await (0, utils_1.clean)();
359
+ });
360
+ const user = new domainobjs_1.Keypair();
361
+ const voteWeight = 9n;
362
+ before(async () => {
363
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
364
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
365
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ policy: signupPolicyFactory, checker: signupCheckerFactory }, signer, true);
366
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
367
+ // deploy the smart contracts
368
+ maciAddresses = await (0, sdk_1.deployMaci)({
369
+ ...constants_1.deployArgs,
370
+ signer,
371
+ signupPolicyAddress: signupPolicyContractAddress,
372
+ });
373
+ // we set the verifying keys
374
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
375
+ await (0, sdk_1.setVerifyingKeys)({
376
+ ...(await (0, constants_1.verifyingKeysArgs)(signer, [sdk_1.EMode.NON_QV])),
377
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
378
+ });
379
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
380
+ // deploy a poll contract
381
+ await (0, sdk_1.deployPoll)({
382
+ ...constants_1.deployPollArgs,
383
+ signer,
384
+ pollStartTimestamp: startDate,
385
+ pollEndTimestamp: startDate + constants_1.pollDuration,
386
+ relayers: [await signer.getAddress()],
387
+ maciAddress: maciAddresses.maciContractAddress,
388
+ policyContractAddress: pollPolicyContractAddress,
389
+ initialVoiceCreditProxyContractAddress,
390
+ mode: sdk_1.EMode.NON_QV,
391
+ });
392
+ });
393
+ it("should signup one user", async () => {
394
+ await (0, sdk_1.signup)({
395
+ maciAddress: maciAddresses.maciContractAddress,
396
+ maciPublicKey: user.publicKey.serialize(),
397
+ sgData: constants_1.DEFAULT_SG_DATA,
398
+ signer,
399
+ });
400
+ });
401
+ it("should join one user", async () => {
402
+ await (0, sdk_1.joinPoll)({
403
+ maciAddress: maciAddresses.maciContractAddress,
404
+ privateKey: user.privateKey.serialize(),
405
+ pollId: 0n,
406
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
407
+ useWasm,
408
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
409
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
410
+ rapidsnark: constants_1.testRapidsnarkPath,
411
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
412
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
413
+ signer,
414
+ });
415
+ });
416
+ it("should publish two valid and two invalid messages", async () => {
417
+ await (0, sdk_1.publish)({
418
+ publicKey: user.publicKey.serialize(),
419
+ stateIndex: 1n,
420
+ voteOptionIndex: 0n,
421
+ nonce: 1n,
422
+ pollId: 0n,
423
+ newVoteWeight: voteWeight,
424
+ maciAddress: maciAddresses.maciContractAddress,
425
+ salt: (0, crypto_1.generateRandomSalt)(),
426
+ privateKey: user.privateKey.serialize(),
427
+ signer,
428
+ });
429
+ await (0, sdk_1.publish)({
430
+ publicKey: user.publicKey.serialize(),
431
+ stateIndex: 1n,
432
+ voteOptionIndex: 1n,
433
+ nonce: 1n,
434
+ pollId: 0n,
435
+ newVoteWeight: BigInt(constants_1.DEFAULT_INITIAL_VOICE_CREDITS + 10),
436
+ maciAddress: maciAddresses.maciContractAddress,
437
+ salt: (0, crypto_1.generateRandomSalt)(),
438
+ privateKey: user.privateKey.serialize(),
439
+ signer,
440
+ });
441
+ await (0, sdk_1.publish)({
442
+ publicKey: user.publicKey.serialize(),
443
+ stateIndex: 1n,
444
+ voteOptionIndex: 1n,
445
+ nonce: 1n,
446
+ pollId: 0n,
447
+ newVoteWeight: -voteWeight,
448
+ maciAddress: maciAddresses.maciContractAddress,
449
+ salt: (0, crypto_1.generateRandomSalt)(),
450
+ privateKey: user.privateKey.serialize(),
451
+ signer,
452
+ });
453
+ await (0, sdk_1.publish)({
454
+ publicKey: user.publicKey.serialize(),
455
+ stateIndex: 1n,
456
+ voteOptionIndex: 1n,
457
+ nonce: 1n,
458
+ pollId: 0n,
459
+ newVoteWeight: voteWeight,
460
+ maciAddress: maciAddresses.maciContractAddress,
461
+ salt: (0, crypto_1.generateRandomSalt)(),
462
+ privateKey: user.privateKey.serialize(),
463
+ signer,
464
+ });
465
+ });
466
+ it("should generate zk-SNARK proofs and verify them", async () => {
467
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
468
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
469
+ const { tallyData: tallyFileData } = await (0, sdk_1.generateProofs)({
470
+ ...generateProofsArgs,
471
+ signer,
472
+ maciAddress: maciAddresses.maciContractAddress,
473
+ mode: sdk_1.EMode.NON_QV,
474
+ });
475
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
476
+ await (0, sdk_1.verify)({
477
+ ...(await (0, constants_1.verifyArgs)(signer)),
478
+ tallyData: tallyFileData,
479
+ maciAddress: tallyFileData.maci,
480
+ });
481
+ (0, chai_1.expect)(tallyFileData.totalSpentVoiceCredits.spent.toString()).to.eq(voteWeight.toString());
482
+ tallyFileData.results.tally.forEach((result, index) => {
483
+ (0, chai_1.expect)(result.toString()).to.eq(index === 1 ? voteWeight.toString() : "0");
484
+ });
485
+ });
486
+ });
487
+ describe("2 signups, 2 different messages", () => {
488
+ after(async () => {
489
+ await (0, utils_1.clean)();
490
+ });
491
+ const users = [new domainobjs_1.Keypair(), new domainobjs_1.Keypair()];
492
+ const voteWeight = 9n;
493
+ before(async () => {
494
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
495
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
496
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ policy: signupPolicyFactory, checker: signupCheckerFactory }, signer, true);
497
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
498
+ // deploy the smart contracts
499
+ maciAddresses = await (0, sdk_1.deployMaci)({
500
+ ...constants_1.deployArgs,
501
+ signer,
502
+ signupPolicyAddress: signupPolicyContractAddress,
503
+ });
504
+ // we set the verifying keys
505
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
506
+ await (0, sdk_1.setVerifyingKeys)({
507
+ ...(await (0, constants_1.verifyingKeysArgs)(signer, [sdk_1.EMode.NON_QV])),
508
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
509
+ });
510
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
511
+ // deploy a poll contract
512
+ await (0, sdk_1.deployPoll)({
513
+ ...constants_1.deployPollArgs,
514
+ signer,
515
+ pollStartTimestamp: startDate,
516
+ pollEndTimestamp: startDate + constants_1.pollDuration,
517
+ relayers: [await signer.getAddress()],
518
+ maciAddress: maciAddresses.maciContractAddress,
519
+ policyContractAddress: pollPolicyContractAddress,
520
+ initialVoiceCreditProxyContractAddress,
521
+ mode: sdk_1.EMode.NON_QV,
522
+ });
523
+ });
524
+ it("should signup two users", async () => {
525
+ await (0, sdk_1.signup)({
526
+ maciAddress: maciAddresses.maciContractAddress,
527
+ maciPublicKey: users[0].publicKey.serialize(),
528
+ sgData: constants_1.DEFAULT_SG_DATA,
529
+ signer,
530
+ });
531
+ await (0, sdk_1.signup)({
532
+ maciAddress: maciAddresses.maciContractAddress,
533
+ maciPublicKey: users[1].publicKey.serialize(),
534
+ sgData: constants_1.DEFAULT_SG_DATA,
535
+ signer,
536
+ });
537
+ });
538
+ it("should join two users", async () => {
539
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
540
+ for (let index = 0; index < users.length; index += 1) {
541
+ // eslint-disable-next-line no-await-in-loop
542
+ await (0, sdk_1.joinPoll)({
543
+ maciAddress: maciAddresses.maciContractAddress,
544
+ privateKey: users[index].privateKey.serialize(),
545
+ pollId: 0n,
546
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
547
+ useWasm,
548
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
549
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
550
+ rapidsnark: constants_1.testRapidsnarkPath,
551
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
552
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
553
+ signer,
554
+ });
555
+ }
556
+ });
557
+ it("should publish two different messages", async () => {
558
+ await (0, sdk_1.publish)({
559
+ publicKey: users[0].publicKey.serialize(),
560
+ stateIndex: 1n,
561
+ voteOptionIndex: 0n,
562
+ nonce: 1n,
563
+ pollId: 0n,
564
+ newVoteWeight: voteWeight,
565
+ maciAddress: maciAddresses.maciContractAddress,
566
+ salt: (0, crypto_1.generateRandomSalt)(),
567
+ privateKey: users[0].privateKey.serialize(),
568
+ signer,
569
+ });
570
+ await (0, sdk_1.publish)({
571
+ publicKey: users[1].publicKey.serialize(),
572
+ stateIndex: 2n,
573
+ voteOptionIndex: 1n,
574
+ nonce: 1n,
575
+ pollId: 0n,
576
+ newVoteWeight: voteWeight,
577
+ maciAddress: maciAddresses.maciContractAddress,
578
+ salt: (0, crypto_1.generateRandomSalt)(),
579
+ privateKey: users[1].privateKey.serialize(),
580
+ signer,
581
+ });
582
+ });
583
+ it("should generate zk-SNARK proofs and verify them", async () => {
584
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
585
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
586
+ const { tallyData: tallyFileData } = await (0, sdk_1.generateProofs)({
587
+ ...generateProofsArgs,
588
+ signer,
589
+ maciAddress: maciAddresses.maciContractAddress,
590
+ mode: sdk_1.EMode.NON_QV,
591
+ });
592
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
593
+ await (0, sdk_1.verify)({
594
+ ...(await (0, constants_1.verifyArgs)(signer)),
595
+ tallyData: tallyFileData,
596
+ maciAddress: tallyFileData.maci,
597
+ });
598
+ (0, chai_1.expect)(tallyFileData.totalSpentVoiceCredits.spent.toString()).to.eq((voteWeight * 2n).toString());
599
+ tallyFileData.results.tally.forEach((result, index) => {
600
+ (0, chai_1.expect)(result.toString()).to.eq(index < 2 ? voteWeight.toString() : "0");
601
+ });
602
+ });
603
+ });
604
+ });
605
+ //# sourceMappingURL=e2e.nonQv.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.nonQv.test.js","sourceRoot":"","sources":["../../../ts/__tests__/e2e.nonQv.test.ts"],"names":[],"mappings":";;AAAA,8CAA6D;AAC7D,kDAA2D;AAC3D,0DAAoD;AACpD,4CAsB4B;AAC5B,+BAA8B;AAI9B,4CA2BsB;AACtB,oCAAwE;AAExE;;;;;;;GAOG;AACH,QAAQ,CAAC,qCAAqC,EAAE,SAAS,IAAI;IAC3D,MAAM,OAAO,GAAG,IAAA,WAAK,GAAE,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErB,IAAI,aAA6B,CAAC;IAClC,IAAI,sCAA8C,CAAC;IACnD,IAAI,MAAc,CAAC;IAEnB,MAAM,kBAAkB,GAAwD;QAC9E,SAAS,EAAE,6BAAiB;QAC5B,SAAS,EAAE,6BAAiB;QAC5B,aAAa,EAAE,sCAA0B;QACzC,oBAAoB,EAAE,2CAA+B;QACrD,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,8BAAkB;QAC9B,gCAAgC,EAAE,+CAAmC;QACrE,8BAA8B,EAAE,kDAAsC;QACtE,yBAAyB,EAAE,yCAA6B;QACxD,uBAAuB,EAAE,4CAAgC;QACzD,qBAAqB,EAArB,iCAAqB;QACrB,oBAAoB,EAAE,4CAAgC;QACtD,aAAa,EAAE,sCAA0B;QACzC,OAAO;QACP,IAAI,EAAE,WAAK,CAAC,MAAM;KACnB,CAAC;IAEF,6FAA6F;IAC7F,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,GAAG,MAAM,IAAA,sBAAgB,GAAE,CAAC;QAElC,MAAM,sCAAsC,GAAG,MAAM,IAAA,kDAA4C,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChH,MAAM,uBAAuB,GAAG,MAAM,IAAA,2CAAqC,EACzE,EAAE,MAAM,EAAE,yCAA6B,EAAE,EACzC,sCAAsC,EACtC,MAAM,CACP,CAAC;QACF,sCAAsC,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAA,aAAK,GAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,oBAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,YAAY,EAAE,AAAD,EAAG,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACpG,EAAE,EACF,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,2BAA2B,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACrD,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAC9D,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAEhE,6BAA6B;YAC7B,aAAa,GAAG,MAAM,IAAA,gBAAU,EAAC;gBAC/B,GAAG,sBAAU;gBACb,MAAM;gBACN,mBAAmB,EAAE,2BAA2B;aACjD,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,EAAE,oCAAoC,EAAE,GAAG,aAAa,CAAC;YAC/D,MAAM,IAAA,sBAAgB,EAAC;gBACrB,GAAG,CAAC,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,CAAC,WAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpD,4BAA4B,EAAE,oCAAoC;aACnE,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAiB,EAAC,MAAM,CAAC,CAAC;YAElD,yBAAyB;YACzB,MAAM,IAAA,gBAAU,EAAC;gBACf,GAAG,0BAAc;gBACjB,MAAM;gBACN,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS,GAAG,wBAAY;gBAC1C,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,qBAAqB,EAAE,yBAAyB;gBAChD,sCAAsC;gBACtC,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,IAAA,cAAQ,EAAC;gBACb,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,mCAAuB;gBACxC,OAAO;gBACP,eAAe,EAAE,mCAAuB;gBACxC,oBAAoB,EAAE,sCAA0B;gBAChD,UAAU,EAAE,8BAAkB;gBAC9B,SAAS,EAAE,2BAAe;gBAC1B,WAAW,EAAE,6BAAiB;gBAC9B,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,wBAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,oBAAc,EAAC;gBACxD,GAAG,kBAAkB;gBACrB,MAAM;gBACN,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,IAAA,YAAM,EAAC;gBACX,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAA,aAAM,EAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE3F,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAA,aAAK,GAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,oBAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,YAAY,EAAE,AAAD,EAAG,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACpG,EAAE,EACF,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,2BAA2B,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACrD,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAC9D,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAEhE,6BAA6B;YAC7B,aAAa,GAAG,MAAM,IAAA,gBAAU,EAAC;gBAC/B,GAAG,sBAAU;gBACb,MAAM;gBACN,mBAAmB,EAAE,2BAA2B;aACjD,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,EAAE,oCAAoC,EAAE,GAAG,aAAa,CAAC;YAC/D,MAAM,IAAA,sBAAgB,EAAC;gBACrB,GAAG,CAAC,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,CAAC,WAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpD,4BAA4B,EAAE,oCAAoC;aACnE,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAiB,EAAC,MAAM,CAAC,CAAC;YAElD,yBAAyB;YACzB,MAAM,IAAA,gBAAU,EAAC;gBACf,GAAG,0BAAc;gBACjB,MAAM;gBACN,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS,GAAG,wBAAY;gBAC1C,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,qBAAqB,EAAE,yBAAyB;gBAChD,sCAAsC;gBACtC,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,IAAA,cAAQ,EAAC;gBACb,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,mCAAuB;gBACxC,OAAO;gBACP,eAAe,EAAE,mCAAuB;gBACxC,oBAAoB,EAAE,sCAA0B;gBAChD,UAAU,EAAE,8BAAkB;gBAC9B,SAAS,EAAE,2BAAe;gBAC1B,WAAW,EAAE,6BAAiB;gBAC9B,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAY,EAAC;gBACjD,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,EAAE;gBACnB,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,EAAE;gBACd,UAAU;gBACV,oBAAoB,EAAE,8BAAkB,CAAC,SAAS;gBAClD,aAAa,EAAE,MAAM,CAAC,6BAAsB,IAAI,0BAAc,CAAC,mBAAmB,CAAC;gBACnF,YAAY,EAAE,IAAI,CAAC,SAAS;aAC7B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG;gBACf;oBACE,WAAW,EAAE,aAAa,CAAC,mBAAmB;oBAC9C,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC9B,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC3D,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;iBAC1D;aACF,CAAC;YAEF,MAAM,IAAA,yBAAiB,EAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,sBAAsB,GAAG,MAAM,IAAA,0BAAkB,GAAE,CAAC;YAC1D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,wBAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,oBAAc,EAAC;gBACxD,GAAG,kBAAkB;gBACrB,MAAM;gBACN,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,sBAAsB;gBACtB,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,IAAA,YAAM,EAAC;gBACX,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAA,aAAM,EAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE3F,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAA,aAAK,GAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,oBAAO,EAAE,CAAC;QAE3B,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,YAAY,EAAE,AAAD,EAAG,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACpG,EAAE,EACF,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,2BAA2B,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACrD,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAC9D,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAEhE,6BAA6B;YAC7B,aAAa,GAAG,MAAM,IAAA,gBAAU,EAAC;gBAC/B,GAAG,sBAAU;gBACb,MAAM;gBACN,mBAAmB,EAAE,2BAA2B;aACjD,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,EAAE,oCAAoC,EAAE,GAAG,aAAa,CAAC;YAC/D,MAAM,IAAA,sBAAgB,EAAC;gBACrB,GAAG,CAAC,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,CAAC,WAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpD,4BAA4B,EAAE,oCAAoC;aACnE,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAiB,EAAC,MAAM,CAAC,CAAC;YAElD,yBAAyB;YACzB,MAAM,IAAA,gBAAU,EAAC;gBACf,GAAG,0BAAc;gBACjB,MAAM;gBACN,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS,GAAG,wBAAY;gBAC1C,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,qBAAqB,EAAE,yBAAyB;gBAChD,sCAAsC;gBACtC,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,IAAA,cAAQ,EAAC;gBACb,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,mCAAuB;gBACxC,OAAO;gBACP,eAAe,EAAE,mCAAuB;gBACxC,oBAAoB,EAAE,sCAA0B;gBAChD,UAAU,EAAE,8BAAkB;gBAC9B,SAAS,EAAE,2BAAe;gBAC1B,WAAW,EAAE,6BAAiB;gBAC9B,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,MAAM,CAAC,yCAA6B,CAAC;gBACpD,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,MAAM,CAAC,yCAA6B,CAAC;gBACpD,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,wBAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,oBAAc,EAAC;gBACxD,GAAG,kBAAkB;gBACrB,MAAM;gBACN,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,IAAA,YAAM,EAAC;gBACX,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAA,aAAM,EAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yCAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE9G,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,yCAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACvD,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAA,aAAK,GAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,oBAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,YAAY,EAAE,AAAD,EAAG,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACpG,EAAE,EACF,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,2BAA2B,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACrD,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAC9D,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAEhE,6BAA6B;YAC7B,aAAa,GAAG,MAAM,IAAA,gBAAU,EAAC;gBAC/B,GAAG,sBAAU;gBACb,MAAM;gBACN,mBAAmB,EAAE,2BAA2B;aACjD,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,EAAE,oCAAoC,EAAE,GAAG,aAAa,CAAC;YAC/D,MAAM,IAAA,sBAAgB,EAAC;gBACrB,GAAG,CAAC,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,CAAC,WAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpD,4BAA4B,EAAE,oCAAoC;aACnE,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAiB,EAAC,MAAM,CAAC,CAAC;YAElD,yBAAyB;YACzB,MAAM,IAAA,gBAAU,EAAC;gBACf,GAAG,0BAAc;gBACjB,MAAM;gBACN,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS,GAAG,wBAAY;gBAC1C,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,qBAAqB,EAAE,yBAAyB;gBAChD,sCAAsC;gBACtC,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,IAAA,cAAQ,EAAC;gBACb,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,mCAAuB;gBACxC,OAAO;gBACP,eAAe,EAAE,mCAAuB;gBACxC,oBAAoB,EAAE,sCAA0B;gBAChD,UAAU,EAAE,8BAAkB;gBAC9B,SAAS,EAAE,2BAAe;gBAC1B,WAAW,EAAE,6BAAiB;gBAC9B,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,MAAM,CAAC,yCAA6B,GAAG,EAAE,CAAC;gBACzD,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,CAAC,UAAU;gBAC1B,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBACrC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvC,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,wBAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,oBAAc,EAAC;gBACxD,GAAG,kBAAkB;gBACrB,MAAM;gBACN,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,IAAA,YAAM,EAAC;gBACX,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAA,aAAM,EAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE3F,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAA,aAAK,GAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,CAAC,IAAI,oBAAO,EAAE,EAAE,IAAI,oBAAO,EAAE,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,YAAY,EAAE,AAAD,EAAG,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACpG,EAAE,EACF,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,2BAA2B,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,kCAA4B,EACrD,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAC9D,MAAM,EACN,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAEhE,6BAA6B;YAC7B,aAAa,GAAG,MAAM,IAAA,gBAAU,EAAC;gBAC/B,GAAG,sBAAU;gBACb,MAAM;gBACN,mBAAmB,EAAE,2BAA2B;aACjD,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,EAAE,oCAAoC,EAAE,GAAG,aAAa,CAAC;YAC/D,MAAM,IAAA,sBAAgB,EAAC;gBACrB,GAAG,CAAC,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,CAAC,WAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpD,4BAA4B,EAAE,oCAAoC;aACnE,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAiB,EAAC,MAAM,CAAC,CAAC;YAElD,yBAAyB;YACzB,MAAM,IAAA,gBAAU,EAAC;gBACf,GAAG,0BAAc;gBACjB,MAAM;gBACN,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS,GAAG,wBAAY;gBAC1C,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,qBAAqB,EAAE,yBAAyB;gBAChD,sCAAsC;gBACtC,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,YAAM,EAAC;gBACX,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,2BAAe;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,4DAA4D;YAC5D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACrD,4CAA4C;gBAC5C,MAAM,IAAA,cAAQ,EAAC;oBACb,WAAW,EAAE,aAAa,CAAC,mBAAmB;oBAC9C,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE;oBAC/C,MAAM,EAAE,EAAE;oBACV,eAAe,EAAE,mCAAuB;oBACxC,OAAO;oBACP,eAAe,EAAE,mCAAuB;oBACxC,oBAAoB,EAAE,sCAA0B;oBAChD,UAAU,EAAE,8BAAkB;oBAC9B,SAAS,EAAE,2BAAe;oBAC1B,WAAW,EAAE,6BAAiB;oBAC9B,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC3C,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAA,aAAO,EAAC;gBACZ,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;gBACzC,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,IAAA,2BAAkB,GAAE;gBAC1B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC3C,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,wBAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,oBAAc,EAAC;gBACxD,GAAG,kBAAkB;gBACrB,MAAM;gBACN,WAAW,EAAE,aAAa,CAAC,mBAAmB;gBAC9C,IAAI,EAAE,WAAK,CAAC,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,IAAA,kBAAY,EAAC,EAAE,GAAG,4BAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,MAAM,IAAA,YAAM,EAAC;gBACX,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;gBAC7B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAA,aAAM,EAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAElG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.test.d.ts","sourceRoot":"","sources":["../../../ts/__tests__/e2e.test.ts"],"names":[],"mappings":""}