@maci-protocol/domainobjs 0.0.0-ci.ec84efe → 0.0.0-ci.eea13a2

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 (57) hide show
  1. package/LICENSE +1 -2
  2. package/build/ts/ballot.d.ts +8 -7
  3. package/build/ts/ballot.d.ts.map +1 -1
  4. package/build/ts/ballot.js +19 -19
  5. package/build/ts/ballot.js.map +1 -1
  6. package/build/ts/commands/{PCommand.d.ts → VoteCommand.d.ts} +18 -18
  7. package/build/ts/commands/VoteCommand.d.ts.map +1 -0
  8. package/build/ts/commands/{PCommand.js → VoteCommand.js} +30 -30
  9. package/build/ts/commands/VoteCommand.js.map +1 -0
  10. package/build/ts/commands/index.d.ts +1 -1
  11. package/build/ts/commands/index.d.ts.map +1 -1
  12. package/build/ts/commands/index.js +3 -3
  13. package/build/ts/commands/index.js.map +1 -1
  14. package/build/ts/commands/types.d.ts +1 -1
  15. package/build/ts/commands/types.d.ts.map +1 -1
  16. package/build/ts/constants.d.ts +2 -2
  17. package/build/ts/constants.d.ts.map +1 -1
  18. package/build/ts/constants.js +2 -2
  19. package/build/ts/constants.js.map +1 -1
  20. package/build/ts/index.d.ts +5 -4
  21. package/build/ts/index.d.ts.map +1 -1
  22. package/build/ts/index.js +7 -5
  23. package/build/ts/index.js.map +1 -1
  24. package/build/ts/keyPair.d.ts +10 -10
  25. package/build/ts/keyPair.d.ts.map +1 -1
  26. package/build/ts/keyPair.js +21 -22
  27. package/build/ts/keyPair.js.map +1 -1
  28. package/build/ts/message.d.ts +3 -3
  29. package/build/ts/message.d.ts.map +1 -1
  30. package/build/ts/message.js +2 -2
  31. package/build/ts/message.js.map +1 -1
  32. package/build/ts/privateKey.d.ts +12 -12
  33. package/build/ts/privateKey.d.ts.map +1 -1
  34. package/build/ts/privateKey.js +20 -20
  35. package/build/ts/privateKey.js.map +1 -1
  36. package/build/ts/publicKey.d.ts +16 -16
  37. package/build/ts/publicKey.d.ts.map +1 -1
  38. package/build/ts/publicKey.js +27 -27
  39. package/build/ts/publicKey.js.map +1 -1
  40. package/build/ts/stateLeaf.d.ts +9 -11
  41. package/build/ts/stateLeaf.d.ts.map +1 -1
  42. package/build/ts/stateLeaf.js +22 -26
  43. package/build/ts/stateLeaf.js.map +1 -1
  44. package/build/ts/types.d.ts +27 -12
  45. package/build/ts/types.d.ts.map +1 -1
  46. package/build/ts/verifyingKey.d.ts +7 -7
  47. package/build/ts/verifyingKey.d.ts.map +1 -1
  48. package/build/ts/verifyingKey.js +9 -9
  49. package/build/ts/verifyingKey.js.map +1 -1
  50. package/build/ts/voteCounts.d.ts +63 -0
  51. package/build/ts/voteCounts.d.ts.map +1 -0
  52. package/build/ts/voteCounts.js +110 -0
  53. package/build/ts/voteCounts.js.map +1 -0
  54. package/build/tsconfig.build.tsbuildinfo +1 -1
  55. package/package.json +5 -5
  56. package/build/ts/commands/PCommand.d.ts.map +0 -1
  57. package/build/ts/commands/PCommand.js.map +0 -1
@@ -1,20 +1,18 @@
1
1
  import type { IJsonStateLeaf, IStateLeaf, IStateLeafContractParams } from "./types";
2
- import { PubKey } from "./publicKey";
2
+ import { PublicKey } from "./publicKey";
3
3
  /**
4
4
  * @notice A leaf in the state tree, which maps
5
5
  * public keys to voice credit balances
6
6
  */
7
7
  export declare class StateLeaf implements IStateLeaf {
8
- pubKey: PubKey;
8
+ publicKey: PublicKey;
9
9
  voiceCreditBalance: bigint;
10
- timestamp: bigint;
11
10
  /**
12
11
  * Create a new instance of a state leaf
13
- * @param pubKey the public key of the user signin up
12
+ * @param publicKey the public key of the user signin up
14
13
  * @param voiceCreditBalance the voice credit balance of the user
15
- * @param timestamp the timestamp of when the user signed-up
16
14
  */
17
- constructor(pubKey: PubKey, voiceCreditBalance: bigint, timestamp: bigint);
15
+ constructor(publicKey: PublicKey, voiceCreditBalance: bigint);
18
16
  /**
19
17
  * Crate a deep copy of the object
20
18
  * @returns a copy of the state leaf
@@ -24,12 +22,12 @@ export declare class StateLeaf implements IStateLeaf {
24
22
  * Generate a blank state leaf
25
23
  * @returns a blank state leaf
26
24
  */
27
- static genBlankLeaf(): StateLeaf;
25
+ static generateBlank(): StateLeaf;
28
26
  /**
29
27
  * Generate a random leaf (random salt and random key pair)
30
28
  * @returns a random state leaf
31
29
  */
32
- static genRandomLeaf(): StateLeaf;
30
+ static generateRandom(): StateLeaf;
33
31
  /**
34
32
  * Return this state leaf as an array of bigints
35
33
  * @returns the state leaf as an array of bigints
@@ -52,14 +50,14 @@ export declare class StateLeaf implements IStateLeaf {
52
50
  asContractParam(): IStateLeafContractParams;
53
51
  /**
54
52
  * Check if two state leaves are equal
55
- * @param s the state leaf to compare with
53
+ * @param leaf the state leaf to compare with
56
54
  * @returns whether they are equal or not
57
55
  */
58
- equals(s: StateLeaf): boolean;
56
+ equals(leaf: StateLeaf): boolean;
59
57
  /**
60
58
  * Serialize the state leaf
61
59
  * @notice serialize the public key
62
- * @notice convert the voice credit balance and timestamp to a hex string
60
+ * @notice convert the voice credit balance to a hex string
63
61
  * @returns
64
62
  */
65
63
  serialize: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"stateLeaf.d.ts","sourceRoot":"","sources":["../../ts/stateLeaf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;GAGG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kBAAkB,EAAE,MAAM,CAAC;IAE3B,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMzE;;;OAGG;IACH,IAAI,IAAI,SAAS;IAQjB;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,SAAS;IAmBhC;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,SAAS;IAKjC;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAuF;IAEtG;;;OAGG;IACH,eAAe,QAAO,MAAM,EAAE,CAAmB;IAEjD;;;OAGG;IACH,IAAI,QAAO,MAAM,CAA0B;IAE3C;;;OAGG;IACH,eAAe,IAAI,wBAAwB;IAQ3C;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO;IAM7B;;;;;OAKG;IACH,SAAS,QAAO,MAAM,CAIpB;IAEF;;;;OAIG;IACH,MAAM,CAAC,WAAW,GAAI,YAAY,MAAM,KAAG,SAAS,CAKlD;IAEF;;OAEG;IACH,MAAM,IAAI,cAAc;IAQxB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS;CAGjD"}
1
+ {"version":3,"file":"stateLeaf.d.ts","sourceRoot":"","sources":["../../ts/stateLeaf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGpF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C,SAAS,EAAE,SAAS,CAAC;IAErB,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;gBACS,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM;IAK5D;;;OAGG;IACH,IAAI,IAAI,SAAS;IAIjB;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,SAAS;IAkBjC;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,SAAS;IAKlC;;;OAGG;IACH,OAAO,CAAC,OAAO,CAA0E;IAEzF;;;OAGG;IACH,eAAe,QAAO,MAAM,EAAE,CAAmB;IAEjD;;;OAGG;IACH,IAAI,QAAO,MAAM,CAA0B;IAE3C;;;OAGG;IACH,eAAe,IAAI,wBAAwB;IAO3C;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAIhC;;;;;OAKG;IACH,SAAS,QAAO,MAAM,CAIpB;IAEF;;;;OAIG;IACH,MAAM,CAAC,WAAW,GAAI,YAAY,MAAM,KAAG,SAAS,CAKlD;IAEF;;OAEG;IACH,MAAM,IAAI,cAAc;IAOxB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS;CAGjD"}
@@ -11,16 +11,15 @@ const publicKey_1 = require("./publicKey");
11
11
  class StateLeaf {
12
12
  /**
13
13
  * Create a new instance of a state leaf
14
- * @param pubKey the public key of the user signin up
14
+ * @param publicKey the public key of the user signin up
15
15
  * @param voiceCreditBalance the voice credit balance of the user
16
- * @param timestamp the timestamp of when the user signed-up
17
16
  */
18
- constructor(pubKey, voiceCreditBalance, timestamp) {
17
+ constructor(publicKey, voiceCreditBalance) {
19
18
  /**
20
19
  * Return this state leaf as an array of bigints
21
20
  * @returns the state leaf as an array of bigints
22
21
  */
23
- this.asArray = () => [...this.pubKey.asArray(), this.voiceCreditBalance, this.timestamp];
22
+ this.asArray = () => [...this.publicKey.asArray(), this.voiceCreditBalance];
24
23
  /**
25
24
  * Return this state leaf as an array of bigints
26
25
  * @returns the state leaf as an array of bigints
@@ -30,33 +29,32 @@ class StateLeaf {
30
29
  * Hash this state leaf (first convert as array)
31
30
  * @returns the has of the state leaf elements
32
31
  */
33
- this.hash = () => (0, crypto_1.hash4)(this.asArray());
32
+ this.hash = () => (0, crypto_1.hash3)(this.asArray());
34
33
  /**
35
34
  * Serialize the state leaf
36
35
  * @notice serialize the public key
37
- * @notice convert the voice credit balance and timestamp to a hex string
36
+ * @notice convert the voice credit balance to a hex string
38
37
  * @returns
39
38
  */
40
39
  this.serialize = () => {
41
- const j = [this.pubKey.serialize(), this.voiceCreditBalance.toString(16), this.timestamp.toString(16)];
42
- return Buffer.from(JSON.stringify(j, null, 0), "utf8").toString("base64url");
40
+ const data = [this.publicKey.serialize(), this.voiceCreditBalance.toString(16)];
41
+ return Buffer.from(JSON.stringify(data, null, 0), "utf8").toString("base64url");
43
42
  };
44
- this.pubKey = pubKey;
43
+ this.publicKey = publicKey;
45
44
  this.voiceCreditBalance = voiceCreditBalance;
46
- this.timestamp = timestamp;
47
45
  }
48
46
  /**
49
47
  * Crate a deep copy of the object
50
48
  * @returns a copy of the state leaf
51
49
  */
52
50
  copy() {
53
- return new StateLeaf(this.pubKey.copy(), BigInt(this.voiceCreditBalance.toString()), BigInt(this.timestamp.toString()));
51
+ return new StateLeaf(this.publicKey.copy(), BigInt(this.voiceCreditBalance.toString()));
54
52
  }
55
53
  /**
56
54
  * Generate a blank state leaf
57
55
  * @returns a blank state leaf
58
56
  */
59
- static genBlankLeaf() {
57
+ static generateBlank() {
60
58
  // The public key for a blank state leaf is the first Pedersen base
61
59
  // point from iden3's circomlib implementation of the Pedersen hash.
62
60
  // Since it is generated using a hash-to-curve function, we are
@@ -64,19 +62,19 @@ class StateLeaf {
64
62
  // public key. See:
65
63
  // https://github.com/iden3/circomlib/blob/d5ed1c3ce4ca137a6b3ca48bec4ac12c1b38957a/src/pedersen_printbases.js
66
64
  // Its hash should equal
67
- // 6769006970205099520508948723718471724660867171122235270773600567925038008762.
68
- return new StateLeaf(new publicKey_1.PubKey([
65
+ // 11672248758340751985123309654953904206381780234474872690580702076708041504880.
66
+ return new StateLeaf(new publicKey_1.PublicKey([
69
67
  BigInt("10457101036533406547632367118273992217979173478358440826365724437999023779287"),
70
68
  BigInt("19824078218392094440610104313265183977899662750282163392862422243483260492317"),
71
- ]), BigInt(0), BigInt(0));
69
+ ]), BigInt(0));
72
70
  }
73
71
  /**
74
72
  * Generate a random leaf (random salt and random key pair)
75
73
  * @returns a random state leaf
76
74
  */
77
- static genRandomLeaf() {
75
+ static generateRandom() {
78
76
  const keypair = new keyPair_1.Keypair();
79
- return new StateLeaf(keypair.pubKey, (0, crypto_1.genRandomSalt)(), BigInt(0));
77
+ return new StateLeaf(keypair.publicKey, (0, crypto_1.generateRandomSalt)());
80
78
  }
81
79
  /**
82
80
  * Return this state leaf as a contract param
@@ -84,27 +82,25 @@ class StateLeaf {
84
82
  */
85
83
  asContractParam() {
86
84
  return {
87
- pubKey: this.pubKey.asContractParam(),
85
+ publicKey: this.publicKey.asContractParam(),
88
86
  voiceCreditBalance: this.voiceCreditBalance.toString(),
89
- timestamp: this.timestamp.toString(),
90
87
  };
91
88
  }
92
89
  /**
93
90
  * Check if two state leaves are equal
94
- * @param s the state leaf to compare with
91
+ * @param leaf the state leaf to compare with
95
92
  * @returns whether they are equal or not
96
93
  */
97
- equals(s) {
98
- return (this.pubKey.equals(s.pubKey) && this.voiceCreditBalance === s.voiceCreditBalance && this.timestamp === s.timestamp);
94
+ equals(leaf) {
95
+ return this.publicKey.equals(leaf.publicKey) && this.voiceCreditBalance === leaf.voiceCreditBalance;
99
96
  }
100
97
  /**
101
98
  * Serialize to a JSON object
102
99
  */
103
100
  toJSON() {
104
101
  return {
105
- pubKey: this.pubKey.serialize(),
102
+ publicKey: this.publicKey.serialize(),
106
103
  voiceCreditBalance: this.voiceCreditBalance.toString(),
107
- timestamp: this.timestamp.toString(),
108
104
  };
109
105
  }
110
106
  /**
@@ -113,7 +109,7 @@ class StateLeaf {
113
109
  * @returns the deserialized object as a StateLeaf instance
114
110
  */
115
111
  static fromJSON(json) {
116
- return new StateLeaf(publicKey_1.PubKey.deserialize(json.pubKey), BigInt(json.voiceCreditBalance), BigInt(json.timestamp));
112
+ return new StateLeaf(publicKey_1.PublicKey.deserialize(json.publicKey), BigInt(json.voiceCreditBalance));
117
113
  }
118
114
  }
119
115
  exports.StateLeaf = StateLeaf;
@@ -125,6 +121,6 @@ exports.StateLeaf = StateLeaf;
125
121
  StateLeaf.deserialize = (serialized) => {
126
122
  const base64 = serialized.replace(/-/g, "+").replace(/_/g, "/");
127
123
  const json = JSON.parse(Buffer.from(base64, "base64").toString("utf8"));
128
- return new StateLeaf(publicKey_1.PubKey.deserialize(json[0]), BigInt(`0x${json[1]}`), BigInt(`0x${json[2]}`));
124
+ return new StateLeaf(publicKey_1.PublicKey.deserialize(json[0]), BigInt(`0x${json[1]}`));
129
125
  };
130
126
  //# sourceMappingURL=stateLeaf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateLeaf.js","sourceRoot":"","sources":["../../ts/stateLeaf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateLeaf.js","sourceRoot":"","sources":["../../ts/stateLeaf.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PubKey } from "./publicKey";
1
+ import type { PublicKey } from "./publicKey";
2
2
  import type { G1Point, G2Point } from "@maci-protocol/crypto";
3
3
  /**
4
4
  * @notice An interface representing a zk-SNARK proof
@@ -12,7 +12,7 @@ export interface Proof {
12
12
  * @notice An interface representing a MACI state leaf
13
13
  */
14
14
  export interface IStateLeaf {
15
- pubKey: PubKey;
15
+ publicKey: PublicKey;
16
16
  voiceCreditBalance: bigint;
17
17
  }
18
18
  /**
@@ -22,15 +22,14 @@ export interface VoteOptionTreeLeaf {
22
22
  votes: bigint;
23
23
  }
24
24
  export interface IJsonKeyPair {
25
- privKey: string;
26
- pubKey: string;
25
+ privateKey: string;
26
+ publicKey: string;
27
27
  }
28
- export type IJsonPrivateKey = Pick<IJsonKeyPair, "privKey">;
29
- export type IJsonPublicKey = Pick<IJsonKeyPair, "pubKey">;
28
+ export type IJsonPrivateKey = Pick<IJsonKeyPair, "privateKey">;
29
+ export type IJsonPublicKey = Pick<IJsonKeyPair, "publicKey">;
30
30
  export interface IJsonStateLeaf {
31
- pubKey: string;
31
+ publicKey: string;
32
32
  voiceCreditBalance: string;
33
- timestamp: string;
34
33
  }
35
34
  export type BigNumberish = number | string | bigint;
36
35
  export interface IG1ContractParams {
@@ -41,14 +40,14 @@ export interface IG2ContractParams {
41
40
  x: BigNumberish[];
42
41
  y: BigNumberish[];
43
42
  }
44
- export interface IVkContractParams {
43
+ export interface IVerifyingKeyContractParams {
45
44
  alpha1: IG1ContractParams;
46
45
  beta2: IG2ContractParams;
47
46
  gamma2: IG2ContractParams;
48
47
  delta2: IG2ContractParams;
49
48
  ic: IG1ContractParams[];
50
49
  }
51
- export interface IVkObjectParams {
50
+ export interface IVerifyingKeyObjectParams {
52
51
  protocol: BigNumberish;
53
52
  curve: BigNumberish;
54
53
  nPublic: BigNumberish;
@@ -60,9 +59,8 @@ export interface IVkObjectParams {
60
59
  IC: BigNumberish[][];
61
60
  }
62
61
  export interface IStateLeafContractParams {
63
- pubKey: IG1ContractParams;
62
+ publicKey: IG1ContractParams;
64
63
  voiceCreditBalance: BigNumberish;
65
- timestamp: BigNumberish;
66
64
  }
67
65
  export interface IMessageContractParams {
68
66
  data: BigNumberish[];
@@ -72,4 +70,21 @@ export interface IJsonBallot {
72
70
  nonce: BigNumberish;
73
71
  voteOptionTreeDepth: BigNumberish;
74
72
  }
73
+ /**
74
+ * A JSON representation of the vote counts
75
+ */
76
+ export interface IJsonVoteCounts {
77
+ /**
78
+ * The vote counts for each vote option in the poll
79
+ */
80
+ counts: BigNumberish[];
81
+ /**
82
+ * The nonce for the vote counts
83
+ */
84
+ nonce: BigNumberish;
85
+ /**
86
+ * The depth of the merkle tree holding the vote options
87
+ */
88
+ voteOptionTreeDepth: BigNumberish;
89
+ }
75
90
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,YAAY,CAAC;IAChB,CAAC,EAAE,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,YAAY,EAAE,CAAC;IAClB,CAAC,EAAE,YAAY,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,iBAAiB,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACpC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB,EAAE,YAAY,CAAC;IACjC,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,mBAAmB,EAAE,YAAY,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,YAAY,CAAC;IAChB,CAAC,EAAE,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,YAAY,EAAE,CAAC;IAClB,CAAC,EAAE,YAAY,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,iBAAiB,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACpC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB,EAAE,YAAY,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,mBAAmB,EAAE,YAAY,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,mBAAmB,EAAE,YAAY,CAAC;CACnC"}
@@ -1,5 +1,5 @@
1
1
  import { G1Point, G2Point } from "@maci-protocol/crypto";
2
- import type { IVkContractParams, IVkObjectParams } from "./types";
2
+ import type { IVerifyingKeyContractParams, IVerifyingKeyObjectParams } from "./types";
3
3
  /**
4
4
  * @notice A TS Class representing a zk-SNARK VerifyingKey
5
5
  */
@@ -23,19 +23,19 @@ export declare class VerifyingKey {
23
23
  * to the smart contract
24
24
  * @returns the object representation of this
25
25
  */
26
- asContractParam(): IVkContractParams;
26
+ asContractParam(): IVerifyingKeyContractParams;
27
27
  /**
28
- * Create a new verifying key from a contract representation of the VK
28
+ * Create a new verifying key from a contract representation of the verifying key
29
29
  * @param data the object representation
30
30
  * @returns a new VerifyingKey
31
31
  */
32
- static fromContract(data: IVkContractParams): VerifyingKey;
32
+ static fromContract(data: IVerifyingKeyContractParams): VerifyingKey;
33
33
  /**
34
34
  * Check whether this is equal to another verifying key
35
- * @param vk the other verifying key
35
+ * @param verifyingKey the other verifying key
36
36
  * @returns whether this is equal to the other verifying key
37
37
  */
38
- equals(vk: VerifyingKey): boolean;
38
+ equals(verifyingKey: VerifyingKey): boolean;
39
39
  /**
40
40
  * Produce a copy of this verifying key
41
41
  * @returns the copy
@@ -52,6 +52,6 @@ export declare class VerifyingKey {
52
52
  * @param data the object representation
53
53
  * @returns the VerifyingKey
54
54
  */
55
- static fromObj: (data: IVkObjectParams) => VerifyingKey;
55
+ static fromObj: (data: IVerifyingKeyObjectParams) => VerifyingKey;
56
56
  }
57
57
  //# sourceMappingURL=verifyingKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyingKey.d.ts","sourceRoot":"","sources":["../../ts/verifyingKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAElE;;GAEG;AACH,qBAAa,YAAY;IACvB,MAAM,EAAE,OAAO,CAAC;IAEhB,KAAK,EAAE,OAAO,CAAC;IAEf,MAAM,EAAE,OAAO,CAAC;IAEhB,MAAM,EAAE,OAAO,CAAC;IAEhB,EAAE,EAAE,OAAO,EAAE,CAAC;IAEd;;;;;;;OAOG;gBACS,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;IAQ5F;;;;OAIG;IACH,eAAe,IAAI,iBAAiB;IAUpC;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY;IAa1D;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO;IAiBjC;;;OAGG;IACH,IAAI,IAAI,YAAY;IAgBpB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,GAAI,MAAM,MAAM,KAAG,YAAY,CAG5C;IAEF;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAI,MAAM,eAAe,KAAG,YAAY,CAiBpD;CACH"}
1
+ {"version":3,"file":"verifyingKey.d.ts","sourceRoot":"","sources":["../../ts/verifyingKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEtF;;GAEG;AACH,qBAAa,YAAY;IACvB,MAAM,EAAE,OAAO,CAAC;IAEhB,KAAK,EAAE,OAAO,CAAC;IAEf,MAAM,EAAE,OAAO,CAAC;IAEhB,MAAM,EAAE,OAAO,CAAC;IAEhB,EAAE,EAAE,OAAO,EAAE,CAAC;IAEd;;;;;;;OAOG;gBACS,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;IAQ5F;;;;OAIG;IACH,eAAe,IAAI,2BAA2B;IAU9C;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,2BAA2B,GAAG,YAAY;IAapE;;;;OAIG;IACH,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAiB3C;;;OAGG;IACH,IAAI,IAAI,YAAY;IAgBpB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,GAAI,MAAM,MAAM,KAAG,YAAY,CAG5C;IAEF;;;;OAIG;IACH,MAAM,CAAC,OAAO,GAAI,MAAM,yBAAyB,KAAG,YAAY,CAiB9D;CACH"}
@@ -36,7 +36,7 @@ class VerifyingKey {
36
36
  };
37
37
  }
38
38
  /**
39
- * Create a new verifying key from a contract representation of the VK
39
+ * Create a new verifying key from a contract representation of the verifying key
40
40
  * @param data the object representation
41
41
  * @returns a new VerifyingKey
42
42
  */
@@ -46,19 +46,19 @@ class VerifyingKey {
46
46
  }
47
47
  /**
48
48
  * Check whether this is equal to another verifying key
49
- * @param vk the other verifying key
49
+ * @param verifyingKey the other verifying key
50
50
  * @returns whether this is equal to the other verifying key
51
51
  */
52
- equals(vk) {
52
+ equals(verifyingKey) {
53
53
  // Immediately return false if the length doesn't match
54
- if (this.ic.length !== vk.ic.length) {
54
+ if (this.ic.length !== verifyingKey.ic.length) {
55
55
  return false;
56
56
  }
57
- const icEqual = this.ic.every((ic, index) => ic.equals(vk.ic[index]));
58
- return (this.alpha1.equals(vk.alpha1) &&
59
- this.beta2.equals(vk.beta2) &&
60
- this.gamma2.equals(vk.gamma2) &&
61
- this.delta2.equals(vk.delta2) &&
57
+ const icEqual = this.ic.every((ic, index) => ic.equals(verifyingKey.ic[index]));
58
+ return (this.alpha1.equals(verifyingKey.alpha1) &&
59
+ this.beta2.equals(verifyingKey.beta2) &&
60
+ this.gamma2.equals(verifyingKey.gamma2) &&
61
+ this.delta2.equals(verifyingKey.delta2) &&
62
62
  icEqual);
63
63
  }
64
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verifyingKey.js","sourceRoot":"","sources":["../../ts/verifyingKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyingKey.js","sourceRoot":"","sources":["../../ts/verifyingKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { IJsonVoteCounts } from "./types";
2
+ /**
3
+ * A VoteCounts represents a User's vote counts in a Poll, as well as their next valid
4
+ * nonce.
5
+ */
6
+ export declare class VoteCounts {
7
+ counts: bigint[];
8
+ nonce: bigint;
9
+ voteOptionTreeDepth: number;
10
+ /**
11
+ * Create a new VoteCounts instance
12
+ * @param totalVoteOptions How many vote options are available in the poll
13
+ * @param voteOptionTreeDepth The depth of the merkle tree holding the vote options
14
+ */
15
+ constructor(totalVoteOptions: number, voteOptionTreeDepth: number);
16
+ /**
17
+ * Generate a blank VoteCounts object
18
+ * @param totalVoteOptions How many vote options are available
19
+ * @param voteOptionTreeDepth How deep is the merkle tree holding the vote options
20
+ * @returns a Blank VoteCounts object
21
+ */
22
+ static generateBlank(totalVoteOptions: number, voteOptionTreeDepth: number): VoteCounts;
23
+ /**
24
+ * Generate an hash of this vote counts
25
+ * @returns The hash of the vote counts
26
+ */
27
+ hash: () => bigint;
28
+ /**
29
+ * Convert in a format suitable for the circuit
30
+ * @returns the vote counts as a BigInt array
31
+ */
32
+ asCircuitInputs: () => bigint[];
33
+ /**
34
+ * Convert in a an array of bigints
35
+ * @notice this is the nonce and the root of the vote option tree
36
+ * @returns the vote counts as a bigint array
37
+ */
38
+ asArray: () => bigint[];
39
+ /**
40
+ * Create a deep clone of this VoteCounts
41
+ * @returns a copy of the vote counts
42
+ */
43
+ copy: () => VoteCounts;
44
+ /**
45
+ * Check if two vote counts are equal (same counts and same nonce)
46
+ * @param voteCounts - The vote counts to compare with
47
+ * @returns whether the two vote counts are equal
48
+ */
49
+ equals(voteCounts: VoteCounts): boolean;
50
+ /**
51
+ * Serialize to a JSON object
52
+ *
53
+ * @returns the JSON representation of the vote counts
54
+ */
55
+ toJSON(): IJsonVoteCounts;
56
+ /**
57
+ * Deserialize into a VoteCounts instance
58
+ * @param json - the json representation
59
+ * @returns the deserialized object as a VoteCounts instance
60
+ */
61
+ static fromJSON(json: IJsonVoteCounts): VoteCounts;
62
+ }
63
+ //# sourceMappingURL=voteCounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voteCounts.d.ts","sourceRoot":"","sources":["../../ts/voteCounts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;GAGG;AACH,qBAAa,UAAU;IACrB,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtB,KAAK,SAAM;IAEX,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;gBACS,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM;IAWjE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,UAAU;IAIvF;;;OAGG;IACH,IAAI,QAAO,MAAM,CAIf;IAEF;;;OAGG;IACH,eAAe,QAAO,MAAM,EAAE,CAAmB;IAEjD;;;;OAIG;IACH,OAAO,QAAO,MAAM,EAAE,CAWpB;IAEF;;;OAGG;IACH,IAAI,QAAO,UAAU,CAOnB;IAEF;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAMvC;;;;OAIG;IACH,MAAM,IAAI,eAAe;IAQzB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU;CAOnD"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VoteCounts = void 0;
7
+ const crypto_1 = require("@maci-protocol/crypto");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ /**
10
+ * A VoteCounts represents a User's vote counts in a Poll, as well as their next valid
11
+ * nonce.
12
+ */
13
+ class VoteCounts {
14
+ /**
15
+ * Create a new VoteCounts instance
16
+ * @param totalVoteOptions How many vote options are available in the poll
17
+ * @param voteOptionTreeDepth The depth of the merkle tree holding the vote options
18
+ */
19
+ constructor(totalVoteOptions, voteOptionTreeDepth) {
20
+ this.counts = [];
21
+ this.nonce = 0n;
22
+ /**
23
+ * Generate an hash of this vote counts
24
+ * @returns The hash of the vote counts
25
+ */
26
+ this.hash = () => {
27
+ const [nonce, root] = this.asArray();
28
+ return (0, crypto_1.hashLeftRight)(nonce, root);
29
+ };
30
+ /**
31
+ * Convert in a format suitable for the circuit
32
+ * @returns the vote counts as a BigInt array
33
+ */
34
+ this.asCircuitInputs = () => this.asArray();
35
+ /**
36
+ * Convert in a an array of bigints
37
+ * @notice this is the nonce and the root of the vote option tree
38
+ * @returns the vote counts as a bigint array
39
+ */
40
+ this.asArray = () => {
41
+ const lastIndex = this.counts.length - 1;
42
+ const foundIndex = this.counts.findIndex((_, index) => this.counts[lastIndex - index] !== 0n);
43
+ const lastIndexToInsert = foundIndex >= 0 ? lastIndex - foundIndex : -1;
44
+ const voteCountsTree = new crypto_1.IncrementalQuinTree(this.voteOptionTreeDepth, 0n, 5, crypto_1.hash5);
45
+ for (let i = 0; i <= lastIndexToInsert; i += 1) {
46
+ voteCountsTree.insert(this.counts[i]);
47
+ }
48
+ return [this.nonce, voteCountsTree.root];
49
+ };
50
+ /**
51
+ * Create a deep clone of this VoteCounts
52
+ * @returns a copy of the vote counts
53
+ */
54
+ this.copy = () => {
55
+ const voteCounts = new VoteCounts(this.counts.length, this.voteOptionTreeDepth);
56
+ voteCounts.counts = this.counts.map((x) => BigInt(x.toString()));
57
+ voteCounts.nonce = BigInt(this.nonce.toString());
58
+ return voteCounts;
59
+ };
60
+ (0, assert_1.default)(5 ** voteOptionTreeDepth >= totalVoteOptions);
61
+ (0, assert_1.default)(totalVoteOptions >= 0);
62
+ this.voteOptionTreeDepth = voteOptionTreeDepth;
63
+ for (let i = 0; i < totalVoteOptions; i += 1) {
64
+ this.counts.push(0n);
65
+ }
66
+ }
67
+ /**
68
+ * Generate a blank VoteCounts object
69
+ * @param totalVoteOptions How many vote options are available
70
+ * @param voteOptionTreeDepth How deep is the merkle tree holding the vote options
71
+ * @returns a Blank VoteCounts object
72
+ */
73
+ static generateBlank(totalVoteOptions, voteOptionTreeDepth) {
74
+ return new VoteCounts(totalVoteOptions, voteOptionTreeDepth);
75
+ }
76
+ /**
77
+ * Check if two vote counts are equal (same counts and same nonce)
78
+ * @param voteCounts - The vote counts to compare with
79
+ * @returns whether the two vote counts are equal
80
+ */
81
+ equals(voteCounts) {
82
+ const isEqualVotes = this.counts.every((vote, index) => vote === voteCounts.counts[index]);
83
+ return isEqualVotes ? voteCounts.nonce === this.nonce && this.counts.length === voteCounts.counts.length : false;
84
+ }
85
+ /**
86
+ * Serialize to a JSON object
87
+ *
88
+ * @returns the JSON representation of the vote counts
89
+ */
90
+ toJSON() {
91
+ return {
92
+ counts: this.counts.map((x) => x.toString()),
93
+ nonce: this.nonce.toString(),
94
+ voteOptionTreeDepth: this.voteOptionTreeDepth.toString(),
95
+ };
96
+ }
97
+ /**
98
+ * Deserialize into a VoteCounts instance
99
+ * @param json - the json representation
100
+ * @returns the deserialized object as a VoteCounts instance
101
+ */
102
+ static fromJSON(json) {
103
+ const voteCounts = new VoteCounts(json.counts.length, Number.parseInt(json.voteOptionTreeDepth.toString(), 10));
104
+ voteCounts.counts = json.counts.map((x) => BigInt(x));
105
+ voteCounts.nonce = BigInt(json.nonce);
106
+ return voteCounts;
107
+ }
108
+ }
109
+ exports.VoteCounts = VoteCounts;
110
+ //# sourceMappingURL=voteCounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voteCounts.js","sourceRoot":"","sources":["../../ts/voteCounts.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkF;AAElF,oDAA4B;AAI5B;;;GAGG;AACH,MAAa,UAAU;IAOrB;;;;OAIG;IACH,YAAY,gBAAwB,EAAE,mBAA2B;QAXjE,WAAM,GAAa,EAAE,CAAC;QAEtB,UAAK,GAAG,EAAE,CAAC;QA8BX;;;WAGG;QACH,SAAI,GAAG,GAAW,EAAE;YAClB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAErC,OAAO,IAAA,sBAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF;;;WAGG;QACH,oBAAe,GAAG,GAAa,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjD;;;;WAIG;QACH,YAAO,GAAG,GAAa,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9F,MAAM,iBAAiB,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,cAAc,GAAG,IAAI,4BAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC,EAAE,cAAK,CAAC,CAAC;YAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF;;;WAGG;QACH,SAAI,GAAG,GAAe,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEhF,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjE,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEjD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAjEA,IAAA,gBAAM,EAAC,CAAC,IAAI,mBAAmB,IAAI,gBAAgB,CAAC,CAAC;QACrD,IAAA,gBAAM,EAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,gBAAwB,EAAE,mBAA2B;QACxE,OAAO,IAAI,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IAiDD;;;;OAIG;IACH,MAAM,CAAC,UAAsB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3F,OAAO,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnH,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;SACzD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAqB;QACnC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAChH,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AApHD,gCAoHC"}