@bitgo-beta/sdk-lib-mpc 8.2.0-beta.212 → 8.2.0-beta.2121

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 (147) hide show
  1. package/dist/src/curves/ed25519.d.ts +0 -1
  2. package/dist/src/curves/ed25519.d.ts.map +1 -1
  3. package/dist/src/curves/ed25519.js +12 -12
  4. package/dist/src/curves/ed25519Bip32HdTree.js +14 -14
  5. package/dist/src/curves/index.js +6 -2
  6. package/dist/src/curves/secp256k1.d.ts +0 -1
  7. package/dist/src/curves/secp256k1.d.ts.map +1 -1
  8. package/dist/src/curves/secp256k1.js +22 -38
  9. package/dist/src/curves/secp256k1Bip32HdTree.js +10 -10
  10. package/dist/src/curves/types.d.ts +2 -3
  11. package/dist/src/curves/types.d.ts.map +1 -1
  12. package/dist/src/curves/util.d.ts +2 -0
  13. package/dist/src/curves/util.d.ts.map +1 -1
  14. package/dist/src/curves/util.js +34 -3
  15. package/dist/src/hashCommitment.d.ts +0 -1
  16. package/dist/src/hashCommitment.d.ts.map +1 -1
  17. package/dist/src/hashCommitment.js +7 -8
  18. package/dist/src/index.d.ts +1 -1
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +24 -10
  21. package/dist/src/openssl/index.js +6 -2
  22. package/dist/src/openssl/openssl.d.ts +1 -2
  23. package/dist/src/openssl/openssl.d.ts.map +1 -1
  24. package/dist/src/openssl/openssl.js +4 -12
  25. package/dist/src/safePrime.d.ts +3 -0
  26. package/dist/src/safePrime.d.ts.map +1 -0
  27. package/dist/src/safePrime.js +19 -0
  28. package/dist/src/schnorrProof.d.ts +0 -1
  29. package/dist/src/schnorrProof.d.ts.map +1 -1
  30. package/dist/src/schnorrProof.js +8 -9
  31. package/dist/src/shamir/index.js +6 -2
  32. package/dist/src/shamir/shamir.js +2 -2
  33. package/dist/src/shamir/types.d.ts +1 -1
  34. package/dist/src/shamir/types.d.ts.map +1 -1
  35. package/dist/src/tss/dkls-vrf/dkg.d.ts +91 -0
  36. package/dist/src/tss/dkls-vrf/dkg.d.ts.map +1 -0
  37. package/dist/src/tss/dkls-vrf/dkg.js +278 -0
  38. package/dist/src/tss/dkls-vrf/index.d.ts +4 -0
  39. package/dist/src/tss/dkls-vrf/index.d.ts.map +1 -0
  40. package/dist/src/tss/dkls-vrf/index.js +40 -0
  41. package/dist/src/tss/dkls-vrf/types.d.ts +28 -0
  42. package/dist/src/tss/dkls-vrf/types.d.ts.map +1 -0
  43. package/dist/src/tss/dkls-vrf/types.js +23 -0
  44. package/dist/src/tss/dkls-vrf/util.d.ts +63 -0
  45. package/dist/src/tss/dkls-vrf/util.d.ts.map +1 -0
  46. package/dist/src/tss/dkls-vrf/util.js +200 -0
  47. package/dist/src/tss/ecdsa/index.js +23 -9
  48. package/dist/src/tss/ecdsa/paillierproof.js +10 -10
  49. package/dist/src/tss/ecdsa/rangeproof.d.ts +1 -2
  50. package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
  51. package/dist/src/tss/ecdsa/rangeproof.js +108 -118
  52. package/dist/src/tss/ecdsa/types.d.ts +28 -17
  53. package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
  54. package/dist/src/tss/ecdsa/types.js +29 -31
  55. package/dist/src/tss/ecdsa/zkVProof.d.ts +0 -1
  56. package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -1
  57. package/dist/src/tss/ecdsa/zkVProof.js +9 -10
  58. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts +69 -0
  59. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts.map +1 -0
  60. package/dist/src/tss/ecdsa-dkls/commsLayer.js +268 -0
  61. package/dist/src/tss/ecdsa-dkls/derive.d.ts +111 -0
  62. package/dist/src/tss/ecdsa-dkls/derive.d.ts.map +1 -0
  63. package/dist/src/tss/ecdsa-dkls/derive.js +329 -0
  64. package/dist/src/tss/ecdsa-dkls/dkg.d.ts +64 -0
  65. package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -0
  66. package/dist/src/tss/ecdsa-dkls/dkg.js +309 -0
  67. package/dist/src/tss/ecdsa-dkls/dsg.d.ts +47 -0
  68. package/dist/src/tss/ecdsa-dkls/dsg.d.ts.map +1 -0
  69. package/dist/src/tss/ecdsa-dkls/dsg.js +271 -0
  70. package/dist/src/tss/ecdsa-dkls/index.d.ts +7 -0
  71. package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -0
  72. package/dist/src/tss/ecdsa-dkls/index.js +43 -0
  73. package/dist/src/tss/ecdsa-dkls/types.d.ts +163 -0
  74. package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -0
  75. package/dist/src/tss/ecdsa-dkls/types.js +215 -0
  76. package/dist/src/tss/ecdsa-dkls/util.d.ts +26 -0
  77. package/dist/src/tss/ecdsa-dkls/util.d.ts.map +1 -0
  78. package/dist/src/tss/ecdsa-dkls/util.js +276 -0
  79. package/dist/src/tss/eddsa-mps/commsLayer.d.ts +30 -0
  80. package/dist/src/tss/eddsa-mps/commsLayer.d.ts.map +1 -0
  81. package/dist/src/tss/eddsa-mps/commsLayer.js +96 -0
  82. package/dist/src/tss/eddsa-mps/derive.d.ts +34 -0
  83. package/dist/src/tss/eddsa-mps/derive.d.ts.map +1 -0
  84. package/dist/src/tss/eddsa-mps/derive.js +198 -0
  85. package/dist/src/tss/eddsa-mps/dkg.d.ts +109 -0
  86. package/dist/src/tss/eddsa-mps/dkg.d.ts.map +1 -0
  87. package/dist/src/tss/eddsa-mps/dkg.js +304 -0
  88. package/dist/src/tss/eddsa-mps/dsg.d.ts +96 -0
  89. package/dist/src/tss/eddsa-mps/dsg.d.ts.map +1 -0
  90. package/dist/src/tss/eddsa-mps/dsg.js +346 -0
  91. package/dist/src/tss/eddsa-mps/index.d.ts +8 -0
  92. package/dist/src/tss/eddsa-mps/index.d.ts.map +1 -0
  93. package/dist/src/tss/eddsa-mps/index.js +43 -0
  94. package/dist/src/tss/eddsa-mps/types.d.ts +76 -0
  95. package/dist/src/tss/eddsa-mps/types.d.ts.map +1 -0
  96. package/dist/src/tss/eddsa-mps/types.js +105 -0
  97. package/dist/src/tss/eddsa-mps/util.d.ts +33 -0
  98. package/dist/src/tss/eddsa-mps/util.d.ts.map +1 -0
  99. package/dist/src/tss/eddsa-mps/util.js +94 -0
  100. package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts +65 -0
  101. package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts.map +1 -0
  102. package/dist/src/tss/eddsa-mps-vrf/dkg.js +246 -0
  103. package/dist/src/tss/eddsa-mps-vrf/index.d.ts +4 -0
  104. package/dist/src/tss/eddsa-mps-vrf/index.d.ts.map +1 -0
  105. package/dist/src/tss/eddsa-mps-vrf/index.js +40 -0
  106. package/dist/src/tss/eddsa-mps-vrf/types.d.ts +31 -0
  107. package/dist/src/tss/eddsa-mps-vrf/types.d.ts.map +1 -0
  108. package/dist/src/tss/eddsa-mps-vrf/types.js +97 -0
  109. package/dist/src/tss/eddsa-mps-vrf/util.d.ts +29 -0
  110. package/dist/src/tss/eddsa-mps-vrf/util.d.ts.map +1 -0
  111. package/dist/src/tss/eddsa-mps-vrf/util.js +75 -0
  112. package/dist/src/tss/index.d.ts +5 -0
  113. package/dist/src/tss/index.d.ts.map +1 -1
  114. package/dist/src/tss/index.js +11 -2
  115. package/dist/src/tss/redpallas-mps/commsLayer.d.ts +34 -0
  116. package/dist/src/tss/redpallas-mps/commsLayer.d.ts.map +1 -0
  117. package/dist/src/tss/redpallas-mps/commsLayer.js +100 -0
  118. package/dist/src/tss/redpallas-mps/dkg.d.ts +103 -0
  119. package/dist/src/tss/redpallas-mps/dkg.d.ts.map +1 -0
  120. package/dist/src/tss/redpallas-mps/dkg.js +285 -0
  121. package/dist/src/tss/redpallas-mps/dsg.d.ts +130 -0
  122. package/dist/src/tss/redpallas-mps/dsg.d.ts.map +1 -0
  123. package/dist/src/tss/redpallas-mps/dsg.js +376 -0
  124. package/dist/src/tss/redpallas-mps/index.d.ts +8 -0
  125. package/dist/src/tss/redpallas-mps/index.d.ts.map +1 -0
  126. package/dist/src/tss/redpallas-mps/index.js +43 -0
  127. package/dist/src/tss/redpallas-mps/rerand.d.ts +110 -0
  128. package/dist/src/tss/redpallas-mps/rerand.d.ts.map +1 -0
  129. package/dist/src/tss/redpallas-mps/rerand.js +330 -0
  130. package/dist/src/tss/redpallas-mps/types.d.ts +120 -0
  131. package/dist/src/tss/redpallas-mps/types.d.ts.map +1 -0
  132. package/dist/src/tss/redpallas-mps/types.js +133 -0
  133. package/dist/src/tss/redpallas-mps/util.d.ts +56 -0
  134. package/dist/src/tss/redpallas-mps/util.d.ts.map +1 -0
  135. package/dist/src/tss/redpallas-mps/util.js +173 -0
  136. package/dist/src/types.d.ts +0 -1
  137. package/dist/src/types.d.ts.map +1 -1
  138. package/dist/src/util.d.ts +0 -1
  139. package/dist/src/util.d.ts.map +1 -1
  140. package/dist/src/util.js +21 -22
  141. package/dist/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +42 -5
  143. package/.eslintignore +0 -5
  144. package/CHANGELOG.md +0 -356
  145. package/dist/src/openssl/opensslbytes.d.ts +0 -4
  146. package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
  147. package/dist/src/openssl/opensslbytes.js +0 -20
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateVrfDKGKeyShares = generateVrfDKGKeyShares;
4
+ exports.generateHardDerivedKeyShares = generateHardDerivedKeyShares;
5
+ exports.buildSafeMpcDerivePath = buildSafeMpcDerivePath;
6
+ exports.deriveSafeEcdsaMpcChild = deriveSafeEcdsaMpcChild;
7
+ const buffer_1 = require("buffer");
8
+ const cbor_x_1 = require("cbor-x");
9
+ const derive_1 = require("../ecdsa-dkls/derive");
10
+ const types_1 = require("../ecdsa-dkls/types");
11
+ const dkg_1 = require("./dkg");
12
+ /**
13
+ * Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
14
+ * returns the three completed VrfDkg sessions, mirroring `generateDKGKeyShares` from
15
+ * `ecdsa-dkls/util.ts` so VRF tests read like the existing DKLS ones.
16
+ */
17
+ async function generateVrfDKGKeyShares(seedUser, seedBackup, seedBitgo) {
18
+ const user = new dkg_1.VrfDkg(3, 2, 0, seedUser);
19
+ const backup = new dkg_1.VrfDkg(3, 2, 1, seedBackup);
20
+ const bitgo = new dkg_1.VrfDkg(3, 2, 2, seedBitgo);
21
+ // #region round 1
22
+ const userRound1Messages = await user.initDkg();
23
+ const backupRound1Messages = await backup.initDkg();
24
+ const bitgoRound1Messages = await bitgo.initDkg();
25
+ const bitgoRound2Messages = await bitgo.handleIncomingMessages({
26
+ p2pMessages: [],
27
+ broadcastMessages: [...userRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
28
+ });
29
+ // #endregion
30
+ // #region round 2
31
+ const userRound2Messages = await user.handleIncomingMessages({
32
+ p2pMessages: [],
33
+ broadcastMessages: [...bitgoRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
34
+ });
35
+ const backupRound2Messages = await backup.handleIncomingMessages({
36
+ p2pMessages: [],
37
+ broadcastMessages: [...userRound1Messages.broadcastMessages, ...bitgoRound1Messages.broadcastMessages],
38
+ });
39
+ await bitgo.handleIncomingMessages({
40
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
41
+ .flatMap((m) => m.p2pMessages)
42
+ .filter((m) => m.to === 2),
43
+ broadcastMessages: [],
44
+ });
45
+ await user.handleIncomingMessages({
46
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
47
+ .flatMap((m) => m.p2pMessages)
48
+ .filter((m) => m.to === 0),
49
+ broadcastMessages: [],
50
+ });
51
+ await backup.handleIncomingMessages({
52
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
53
+ .flatMap((m) => m.p2pMessages)
54
+ .filter((m) => m.to === 1),
55
+ broadcastMessages: [],
56
+ });
57
+ return [user, backup, bitgo];
58
+ }
59
+ /**
60
+ * Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
61
+ * hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
62
+ * session with a second fresh BitGo session. The hard-derive wasm session is a
63
+ * 2-party threshold protocol per instance, so the BitGo server side runs two
64
+ * sessions — one per SDK party. All four derived keyshares agree on the child
65
+ * public key; the two BitGo shares are distinct private shares of that same key.
66
+ *
67
+ * @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
68
+ * index with the hardened bit set)
69
+ * @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
70
+ */
71
+ async function generateHardDerivedKeyShares(userRoot, backupRoot, bitgoRoot, userVrf, backupVrf, bitgoVrf, path, seedUser, seedBackup) {
72
+ const user = new derive_1.Derive(3, 2, 0, userRoot.getKeyShare(), userVrf.getKeyShare(), path, seedUser);
73
+ const backup = new derive_1.Derive(3, 2, 1, backupRoot.getKeyShare(), backupVrf.getKeyShare(), path, seedBackup);
74
+ const bitgoUserPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
75
+ const bitgoBackupPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
76
+ // #region round 1
77
+ const userMsg1 = await user.initDerive();
78
+ const backupMsg1 = await backup.initDerive();
79
+ const bitgoUserPairMsg1 = await bitgoUserPair.initDerive();
80
+ const bitgoBackupPairMsg1 = await bitgoBackupPair.initDerive();
81
+ const userMsg2 = user.handleIncomingMessages({
82
+ p2pMessages: [],
83
+ broadcastMessages: [{ payload: bitgoUserPairMsg1.payload, from: bitgoUserPairMsg1.from }],
84
+ });
85
+ const bitgoUserPairMsg2 = bitgoUserPair.handleIncomingMessages({
86
+ p2pMessages: [],
87
+ broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
88
+ });
89
+ const backupMsg2 = backup.handleIncomingMessages({
90
+ p2pMessages: [],
91
+ broadcastMessages: [{ payload: bitgoBackupPairMsg1.payload, from: bitgoBackupPairMsg1.from }],
92
+ });
93
+ const bitgoBackupPairMsg2 = bitgoBackupPair.handleIncomingMessages({
94
+ p2pMessages: [],
95
+ broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
96
+ });
97
+ // #endregion
98
+ // #region round 2
99
+ user.handleIncomingMessages({
100
+ p2pMessages: [],
101
+ broadcastMessages: [{ payload: bitgoUserPairMsg2.broadcastMessages[0].payload, from: 2 }],
102
+ });
103
+ bitgoUserPair.handleIncomingMessages({
104
+ p2pMessages: [],
105
+ broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: 0 }],
106
+ });
107
+ backup.handleIncomingMessages({
108
+ p2pMessages: [],
109
+ broadcastMessages: [{ payload: bitgoBackupPairMsg2.broadcastMessages[0].payload, from: 2 }],
110
+ });
111
+ bitgoBackupPair.handleIncomingMessages({
112
+ p2pMessages: [],
113
+ broadcastMessages: [{ payload: backupMsg2.broadcastMessages[0].payload, from: 1 }],
114
+ });
115
+ // #endregion
116
+ return [user, backup, bitgoUserPair, bitgoBackupPair];
117
+ }
118
+ /**
119
+ * Builds the multi-level hardened derivation path for a Safe MPC child wallet:
120
+ * `m/44'/<coinType>'/<safeSlotOrdinal>'/<accountIndex>'`, encoded as the byte
121
+ * sequence the DKLS VRF hard-derive wasm expects — four 4-byte big-endian u32s,
122
+ * each with the hardened bit (0x80000000) set, concatenated in order.
123
+ *
124
+ */
125
+ function buildSafeMpcDerivePath(params) {
126
+ const { coinType, safeSlotOrdinal, accountIndex } = params;
127
+ const segments = [44, coinType, safeSlotOrdinal, accountIndex];
128
+ const path = new Uint8Array(segments.length * 4);
129
+ segments.forEach((segment, i) => {
130
+ if (!Number.isInteger(segment) || segment < 0 || segment > 0x7fffffff) {
131
+ throw new Error(`Invalid BIP44 path segment at index ${i}: ${segment}`);
132
+ }
133
+ path.set([0x80 | (segment >>> 24), (segment >>> 16) & 0xff, (segment >>> 8) & 0xff, segment & 0xff], i * 4);
134
+ });
135
+ return path;
136
+ }
137
+ /**
138
+ * Derives the Safe ecdsaMpc child wallet key for a given account, fully offline, from the
139
+ * user and backup reduced roots on the keycard: rebuild both as 3-party keyshares, run the
140
+ * user↔backup hard-derive ceremony at
141
+ * `m/44'/<coinType>'/<safeSlotOrdinal>'/<account>'`, then return the child common keychain
142
+ * and both reduced child shares.
143
+ */
144
+ async function deriveSafeEcdsaMpcChild(params) {
145
+ const reduceRootToDklsKeyShare = (reducedRoot, partyIdx) => {
146
+ const xShare = {
147
+ x: buffer_1.Buffer.from(reducedRoot.prv).toString('hex'),
148
+ y: buffer_1.Buffer.from(reducedRoot.pub).toString('hex'),
149
+ chaincode: buffer_1.Buffer.from(reducedRoot.rootChainCode).toString('hex'),
150
+ };
151
+ return buffer_1.Buffer.from((0, cbor_x_1.encode)((0, types_1.buildDklsKeyShare)({ xShare, n: 3, t: 2, partyIdx, xiList: reducedRoot.xList })));
152
+ };
153
+ const { userRoot, backupRoot, account, coinType, safeSlotOrdinal } = params;
154
+ const userReduced = (0, types_1.getDecodedReducedKeyShare)(userRoot.signing);
155
+ const backupReduced = (0, types_1.getDecodedReducedKeyShare)(backupRoot.signing);
156
+ const userKeyShare = reduceRootToDklsKeyShare(userReduced, 0);
157
+ const backupKeyShare = reduceRootToDklsKeyShare(backupReduced, 1);
158
+ const path = buildSafeMpcDerivePath({ coinType, safeSlotOrdinal, accountIndex: account });
159
+ /**
160
+ * Derive User and Backup keys - 2 Rounds
161
+ */
162
+ const user = new derive_1.Derive(3, 2, 0, userKeyShare, userRoot.vrf, path);
163
+ const backup = new derive_1.Derive(3, 2, 1, backupKeyShare, backupRoot.vrf, path);
164
+ // #region round 1
165
+ const userMsg1 = await user.initDerive();
166
+ const backupMsg1 = await backup.initDerive();
167
+ const userMsg2 = user.handleIncomingMessages({
168
+ p2pMessages: [],
169
+ broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
170
+ });
171
+ const backupMsg2 = backup.handleIncomingMessages({
172
+ p2pMessages: [],
173
+ broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
174
+ });
175
+ // #endregion
176
+ // #region round 2
177
+ user.handleIncomingMessages({
178
+ p2pMessages: [],
179
+ broadcastMessages: [
180
+ { payload: backupMsg2.broadcastMessages[0].payload, from: backupMsg2.broadcastMessages[0].from },
181
+ ],
182
+ });
183
+ backup.handleIncomingMessages({
184
+ p2pMessages: [],
185
+ broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: userMsg2.broadcastMessages[0].from }],
186
+ });
187
+ // #endregion
188
+ const commonKeychain = (0, types_1.getCommonKeychain)(user.getKeyShare());
189
+ // Guard: the derived child must never equal the root
190
+ const rootCommonKeychain = buffer_1.Buffer.from(userReduced.pub).toString('hex') + buffer_1.Buffer.from(userReduced.rootChainCode).toString('hex');
191
+ if (commonKeychain === rootCommonKeychain) {
192
+ throw new Error('deriveSafeEcdsaMpcChild: derived child keychain equals the root keychain');
193
+ }
194
+ return {
195
+ commonKeychain,
196
+ userChild: user.getReducedKeyShare().toString('base64'),
197
+ backupChild: backup.getReducedKeyShare().toString('base64'),
198
+ };
199
+ }
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZGtscy12cmYvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLDBEQThDQztBQWNELG9FQTREQztBQVNELHdEQWVDO0FBV0QsMERBeUVDO0FBL09ELG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFDaEMsaURBQThDO0FBQzlDLCtDQUF1SDtBQUN2SCwrQkFBK0I7QUFFL0I7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsUUFBaUIsRUFDakIsVUFBbUIsRUFDbkIsU0FBa0I7SUFFbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0Msa0JBQWtCO0lBQ2xCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDN0QsV0FBVyxFQUFFLEVBQUU7UUFDZixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQztLQUN4RyxDQUFDLENBQUM7SUFDSCxhQUFhO0lB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LEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2xILENBQUMsQ0FBQztJQUNILGFBQWE7SUFFYixNQUFNLGNBQWMsR0FBRyxJQUFBLHlCQUFpQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRTdELHFEQUFxRDtJQUNyRCxNQUFNLGtCQUFrQixHQUN0QixlQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hHLElBQUksY0FBYyxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxPQUFPO1FBQ0wsY0FBYztRQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZELFdBQVcsRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0tBQzVELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgeyBEZXJpdmUgfSBmcm9tICcuLi9lY2RzYS1ka2xzL2Rlcml2ZSc7XG5pbXBvcnQgeyBSZWR1Y2VkS2V5U2hhcmUsIGJ1aWxkRGtsc0tleVNoYXJlLCBnZXRDb21tb25LZXljaGFpbiwgZ2V0RGVjb2RlZFJlZHVjZWRLZXlTaGFyZSB9IGZyb20gJy4uL2VjZHNhLWRrbHMvdHlwZXMnO1xuaW1wb3J0IHsgVnJmRGtnIH0gZnJvbSAnLi9ka2cnO1xuXG4vKipcbiAqIFJ1bnMgYSBsb2NhbCAyLW9mLTMgVlJGIERLRyBhY3Jvc3MgdXNlciAoMCksIGJhY2t1cCAoMSkgYW5kIGJpdGdvICgyKSBwYXJ0aWVzIGFuZFxuICogcmV0dXJucyB0aGUgdGhyZWUgY29tcGxldGVkIFZyZkRrZyBzZXNzaW9ucywgbWlycm9yaW5nIGBnZW5lcmF0ZURLR0tleVNoYXJlc2AgZnJvbVxuICogYGVjZHNhLWRrbHMvdXRpbC50c2Agc28gVlJGIHRlc3RzIHJlYWQgbGlrZSB0aGUgZXhpc3RpbmcgREtMUyBvbmVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVWcmZES0dLZXlTaGFyZXMoXG4gIHNlZWRVc2VyPzogQnVmZmVyLFxuICBzZWVkQmFja3VwPzogQnVmZmVyLFxuICBzZWVkQml0Z28/OiBCdWZmZXJcbik6IFByb21pc2U8W1ZyZkRrZywgVnJmRGtnLCBWcmZEa2ddPiB7XG4gIGNvbnN0IHVzZXIgPSBuZXcgVnJmRGtnKDMsIDIsIDAsIHNlZWRVc2VyKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IFZyZkRrZygzLCAyLCAxLCBzZWVkQmFja3VwKTtcbiAgY29uc3QgYml0Z28gPSBuZXcgVnJmRGtnKDMsIDIsIDIsIHNlZWRCaXRnbyk7XG4gIC8vICNyZWdpb24gcm91bmQgMVxuICBjb25zdCB1c2VyUm91bmQxTWVzc2FnZXMgPSBhd2FpdCB1c2VyLmluaXREa2coKTtcbiAgY29uc3QgYmFja3VwUm91bmQxTWVzc2FnZXMgPSBhd2FpdCBiYWNrdXAuaW5pdERrZygpO1xuICBjb25zdCBiaXRnb1JvdW5kMU1lc3NhZ2VzID0gYXdhaXQgYml0Z28uaW5pdERrZygpO1xuICBjb25zdCBiaXRnb1JvdW5kMk1lc3NhZ2VzID0gYXdhaXQgYml0Z28uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4udXNlclJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLCAuLi5iYWNrdXBSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlc10sXG4gIH0pO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiByb3VuZCAyXG4gIGNvbnN0IHVzZXJSb3VuZDJNZXNzYWdlcyA9IGF3YWl0IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4uYml0Z29Sb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYmFja3VwUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXNdLFxuICB9KTtcbiAgY29uc3QgYmFja3VwUm91bmQyTWVzc2FnZXMgPSBhd2FpdCBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4udXNlclJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLCAuLi5iaXRnb1JvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzXSxcbiAgfSk7XG4gIGF3YWl0IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbYml0Z29Sb3VuZDJNZXNzYWdlcywgdXNlclJvdW5kMk1lc3NhZ2VzLCBiYWNrdXBSb3VuZDJNZXNzYWdlc11cbiAgICAgIC5mbGF0TWFwKChtKSA9PiBtLnAycE1lc3NhZ2VzKVxuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMiksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgYXdhaXQgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGF3YWl0IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDEpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb107XG59XG5cbi8qKlxuICogUnVucyB0aGUgaGFyZC1kZXJpdmF0aW9uIGNlcmVtb255IG9uIHRvcCBvZiBjb21wbGV0ZWQgcm9vdCBzZXNzaW9uczogdGhlIHVzZXIgKDApXG4gKiBoYXJkLWRlcml2ZSBzZXNzaW9uIHBhaXJzIHdpdGggYSBmcmVzaCBCaXRHbyAoMikgc2Vzc2lvbiwgYW5kIHRoZSBiYWNrdXAgKDEpXG4gKiBzZXNzaW9uIHdpdGggYSBzZWNvbmQgZnJlc2ggQml0R28gc2Vzc2lvbi4gVGhlIGhhcmQtZGVyaXZlIHdhc20gc2Vzc2lvbiBpcyBhXG4gKiAyLXBhcnR5IHRocmVzaG9sZCBwcm90b2NvbCBwZXIgaW5zdGFuY2UsIHNvIHRoZSBCaXRHbyBzZXJ2ZXIgc2lkZSBydW5zIHR3b1xuICogc2Vzc2lvbnMg4oCUIG9uZSBwZXIgU0RLIHBhcnR5LiBBbGwgZm91ciBkZXJpdmVkIGtleXNoYXJlcyBhZ3JlZSBvbiB0aGUgY2hpbGRcbiAqIHB1YmxpYyBrZXk7IHRoZSB0d28gQml0R28gc2hhcmVzIGFyZSBkaXN0aW5jdCBwcml2YXRlIHNoYXJlcyBvZiB0aGF0IHNhbWUga2V5LlxuICpcbiAqIEBwYXJhbSBwYXRoIGhhcmRlbmVkIGRlcml2YXRpb24gcGF0aCBieXRlcyAoZS5nLiBgbS8wJ2AgYXMgYSA0LWJ5dGUgYmlnLWVuZGlhblxuICogICBpbmRleCB3aXRoIHRoZSBoYXJkZW5lZCBiaXQgc2V0KVxuICogQHJldHVybnMgW3VzZXIsIGJhY2t1cCwgYml0Z29Vc2VyUGFpciwgYml0Z29CYWNrdXBQYWlyXSBjb21wbGV0ZWQgRGVyaXZlIHNlc3Npb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUhhcmREZXJpdmVkS2V5U2hhcmVzKFxuICB1c2VyUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgYmFja3VwUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgYml0Z29Sb290OiB7IGdldEtleVNoYXJlKCk6IEJ1ZmZlciB9LFxuICB1c2VyVnJmOiBWcmZEa2csXG4gIGJhY2t1cFZyZjogVnJmRGtnLFxuICBiaXRnb1ZyZjogVnJmRGtnLFxuICBwYXRoOiBVaW50OEFycmF5LFxuICBzZWVkVXNlcj86IEJ1ZmZlcixcbiAgc2VlZEJhY2t1cD86IEJ1ZmZlclxuKTogUHJvbWlzZTxbRGVyaXZlLCBEZXJpdmUsIERlcml2ZSwgRGVyaXZlXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IERlcml2ZSgzLCAyLCAwLCB1c2VyUm9vdC5nZXRLZXlTaGFyZSgpLCB1c2VyVnJmLmdldEtleVNoYXJlKCksIHBhdGgsIHNlZWRVc2VyKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IERlcml2ZSgzLCAyLCAxLCBiYWNrdXBSb290LmdldEtleVNoYXJlKCksIGJhY2t1cFZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoLCBzZWVkQmFja3VwKTtcbiAgY29uc3QgYml0Z29Vc2VyUGFpciA9IG5ldyBEZXJpdmUoMywgMiwgMiwgYml0Z29Sb290LmdldEtleVNoYXJlKCksIGJpdGdvVnJmLmdldEtleVNoYXJlKCksIHBhdGgpO1xuICBjb25zdCBiaXRnb0JhY2t1cFBhaXIgPSBuZXcgRGVyaXZlKDMsIDIsIDIsIGJpdGdvUm9vdC5nZXRLZXlTaGFyZSgpLCBiaXRnb1ZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoKTtcblxuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlck1zZzEgPSBhd2FpdCB1c2VyLmluaXREZXJpdmUoKTtcbiAgY29uc3QgYmFja3VwTXNnMSA9IGF3YWl0IGJhY2t1cC5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJpdGdvVXNlclBhaXJNc2cxID0gYXdhaXQgYml0Z29Vc2VyUGFpci5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJpdGdvQmFja3VwUGFpck1zZzEgPSBhd2FpdCBiaXRnb0JhY2t1cFBhaXIuaW5pdERlcml2ZSgpO1xuXG4gIGNvbnN0IHVzZXJNc2cyID0gdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvVXNlclBhaXJNc2cxLnBheWxvYWQsIGZyb206IGJpdGdvVXNlclBhaXJNc2cxLmZyb20gfV0sXG4gIH0pO1xuICBjb25zdCBiaXRnb1VzZXJQYWlyTXNnMiA9IGJpdGdvVXNlclBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiB1c2VyTXNnMS5wYXlsb2FkLCBmcm9tOiB1c2VyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYmFja3VwTXNnMiA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvQmFja3VwUGFpck1zZzEucGF5bG9hZCwgZnJvbTogYml0Z29CYWNrdXBQYWlyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYml0Z29CYWNrdXBQYWlyTXNnMiA9IGJpdGdvQmFja3VwUGFpci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJhY2t1cE1zZzEucGF5bG9hZCwgZnJvbTogYmFja3VwTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gcm91bmQgMlxuICB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYml0Z29Vc2VyUGFpck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMiB9XSxcbiAgfSk7XG4gIGJpdGdvVXNlclBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiB1c2VyTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAwIH1dLFxuICB9KTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYml0Z29CYWNrdXBQYWlyTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAyIH1dLFxuICB9KTtcbiAgYml0Z29CYWNrdXBQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYmFja3VwTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAxIH1dLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb1VzZXJQYWlyLCBiaXRnb0JhY2t1cFBhaXJdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbXVsdGktbGV2ZWwgaGFyZGVuZWQgZGVyaXZhdGlvbiBwYXRoIGZvciBhIFNhZmUgTVBDIGNoaWxkIHdhbGxldDpcbiAqIGBtLzQ0Jy88Y29pblR5cGU+Jy88c2FmZVNsb3RPcmRpbmFsPicvPGFjY291bnRJbmRleD4nYCwgZW5jb2RlZCBhcyB0aGUgYnl0ZVxuICogc2VxdWVuY2UgdGhlIERLTFMgVlJGIGhhcmQtZGVyaXZlIHdhc20gZXhwZWN0cyDigJQgZm91ciA0LWJ5dGUgYmlnLWVuZGlhbiB1MzJzLFxuICogZWFjaCB3aXRoIHRoZSBoYXJkZW5lZCBiaXQgKDB4ODAwMDAwMDApIHNldCwgY29uY2F0ZW5hdGVkIGluIG9yZGVyLlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2FmZU1wY0Rlcml2ZVBhdGgocGFyYW1zOiB7XG4gIGNvaW5UeXBlOiBudW1iZXI7XG4gIHNhZmVTbG90T3JkaW5hbDogbnVtYmVyO1xuICBhY2NvdW50SW5kZXg6IG51bWJlcjtcbn0pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgeyBjb2luVHlwZSwgc2FmZVNsb3RPcmRpbmFsLCBhY2NvdW50SW5kZXggfSA9IHBhcmFtcztcbiAgY29uc3Qgc2VnbWVudHMgPSBbNDQsIGNvaW5UeXBlLCBzYWZlU2xvdE9yZGluYWwsIGFjY291bnRJbmRleF07XG4gIGNvbnN0IHBhdGggPSBuZXcgVWludDhBcnJheShzZWdtZW50cy5sZW5ndGggKiA0KTtcbiAgc2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCwgaSkgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzZWdtZW50KSB8fCBzZWdtZW50IDwgMCB8fCBzZWdtZW50ID4gMHg3ZmZmZmZmZikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEJJUDQ0IHBhdGggc2VnbWVudCBhdCBpbmRleCAke2l9OiAke3NlZ21lbnR9YCk7XG4gICAgfVxuICAgIHBhdGguc2V0KFsweDgwIHwgKHNlZ21lbnQgPj4+IDI0KSwgKHNlZ21lbnQgPj4+IDE2KSAmIDB4ZmYsIChzZWdtZW50ID4+PiA4KSAmIDB4ZmYsIHNlZ21lbnQgJiAweGZmXSwgaSAqIDQpO1xuICB9KTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCB0eXBlIE1wY1Jvb3RTaGFyZSA9IHsgc2lnbmluZzogQnVmZmVyOyB2cmY6IEJ1ZmZlciB9O1xuXG4vKipcbiAqIERlcml2ZXMgdGhlIFNhZmUgZWNkc2FNcGMgY2hpbGQgd2FsbGV0IGtleSBmb3IgYSBnaXZlbiBhY2NvdW50LCBmdWxseSBvZmZsaW5lLCBmcm9tIHRoZVxuICogdXNlciBhbmQgYmFja3VwIHJlZHVjZWQgcm9vdHMgb24gdGhlIGtleWNhcmQ6IHJlYnVpbGQgYm90aCBhcyAzLXBhcnR5IGtleXNoYXJlcywgcnVuIHRoZVxuICogdXNlcuKGlGJhY2t1cCBoYXJkLWRlcml2ZSBjZXJlbW9ueSBhdFxuICogYG0vNDQnLzxjb2luVHlwZT4nLzxzYWZlU2xvdE9yZGluYWw+Jy88YWNjb3VudD4nYCwgdGhlbiByZXR1cm4gdGhlIGNoaWxkIGNvbW1vbiBrZXljaGFpblxuICogYW5kIGJvdGggcmVkdWNlZCBjaGlsZCBzaGFyZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXJpdmVTYWZlRWNkc2FNcGNDaGlsZChwYXJhbXM6IHtcbiAgdXNlclJvb3Q6IE1wY1Jvb3RTaGFyZTtcbiAgYmFja3VwUm9vdDogTXBjUm9vdFNoYXJlO1xuICBhY2NvdW50OiBudW1iZXI7XG4gIGNvaW5UeXBlOiBudW1iZXI7XG4gIHNhZmVTbG90T3JkaW5hbDogbnVtYmVyO1xufSk6IFByb21pc2U8eyBjb21tb25LZXljaGFpbjogc3RyaW5nOyB1c2VyQ2hpbGQ6IHN0cmluZzsgYmFja3VwQ2hpbGQ6IHN0cmluZyB9PiB7XG4gIGNvbnN0IHJlZHVjZVJvb3RUb0RrbHNLZXlTaGFyZSA9IChyZWR1Y2VkUm9vdDogUmVkdWNlZEtleVNoYXJlLCBwYXJ0eUlkeDogbnVtYmVyKTogQnVmZmVyID0+IHtcbiAgICBjb25zdCB4U2hhcmUgPSB7XG4gICAgICB4OiBCdWZmZXIuZnJvbShyZWR1Y2VkUm9vdC5wcnYpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHk6IEJ1ZmZlci5mcm9tKHJlZHVjZWRSb290LnB1YikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBCdWZmZXIuZnJvbShyZWR1Y2VkUm9vdC5yb290Q2hhaW5Db2RlKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZW5jb2RlKGJ1aWxkRGtsc0tleVNoYXJlKHsgeFNoYXJlLCBuOiAzLCB0OiAyLCBwYXJ0eUlkeCwgeGlMaXN0OiByZWR1Y2VkUm9vdC54TGlzdCB9KSkpO1xuICB9O1xuXG4gIGNvbnN0IHsgdXNlclJvb3QsIGJhY2t1cFJvb3QsIGFjY291bnQsIGNvaW5UeXBlLCBzYWZlU2xvdE9yZGluYWwgfSA9IHBhcmFtcztcblxuICBjb25zdCB1c2VyUmVkdWNlZCA9IGdldERlY29kZWRSZWR1Y2VkS2V5U2hhcmUodXNlclJvb3Quc2lnbmluZyk7XG4gIGNvbnN0IGJhY2t1cFJlZHVjZWQgPSBnZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKGJhY2t1cFJvb3Quc2lnbmluZyk7XG5cbiAgY29uc3QgdXNlcktleVNoYXJlID0gcmVkdWNlUm9vdFRvRGtsc0tleVNoYXJlKHVzZXJSZWR1Y2VkLCAwKTtcbiAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSByZWR1Y2VSb290VG9Ea2xzS2V5U2hhcmUoYmFja3VwUmVkdWNlZCwgMSk7XG5cbiAgY29uc3QgcGF0aCA9IGJ1aWxkU2FmZU1wY0Rlcml2ZVBhdGgoeyBjb2luVHlwZSwgc2FmZVNsb3RPcmRpbmFsLCBhY2NvdW50SW5kZXg6IGFjY291bnQgfSk7XG5cbiAgLyoqXG4gICAqIERlcml2ZSBVc2VyIGFuZCBCYWNrdXAga2V5cyAtIDIgUm91bmRzXG4gICAqL1xuICBjb25zdCB1c2VyID0gbmV3IERlcml2ZSgzLCAyLCAwLCB1c2VyS2V5U2hhcmUsIHVzZXJSb290LnZyZiwgcGF0aCk7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBEZXJpdmUoMywgMiwgMSwgYmFja3VwS2V5U2hhcmUsIGJhY2t1cFJvb3QudnJmLCBwYXRoKTtcblxuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlck1zZzEgPSBhd2FpdCB1c2VyLmluaXREZXJpdmUoKTtcbiAgY29uc3QgYmFja3VwTXNnMSA9IGF3YWl0IGJhY2t1cC5pbml0RGVyaXZlKCk7XG5cbiAgY29uc3QgdXNlck1zZzIgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYmFja3VwTXNnMS5wYXlsb2FkLCBmcm9tOiBiYWNrdXBNc2cxLmZyb20gfV0sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBNc2cyID0gYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzEucGF5bG9hZCwgZnJvbTogdXNlck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIHJvdW5kIDJcbiAgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgIHsgcGF5bG9hZDogYmFja3VwTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiBiYWNrdXBNc2cyLmJyb2FkY2FzdE1lc3NhZ2VzWzBdLmZyb20gfSxcbiAgICBdLFxuICB9KTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0uZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICBjb25zdCBjb21tb25LZXljaGFpbiA9IGdldENvbW1vbktleWNoYWluKHVzZXIuZ2V0S2V5U2hhcmUoKSk7XG5cbiAgLy8gR3VhcmQ6IHRoZSBkZXJpdmVkIGNoaWxkIG11c3QgbmV2ZXIgZXF1YWwgdGhlIHJvb3RcbiAgY29uc3Qgcm9vdENvbW1vbktleWNoYWluID1cbiAgICBCdWZmZXIuZnJvbSh1c2VyUmVkdWNlZC5wdWIpLnRvU3RyaW5nKCdoZXgnKSArIEJ1ZmZlci5mcm9tKHVzZXJSZWR1Y2VkLnJvb3RDaGFpbkNvZGUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgaWYgKGNvbW1vbktleWNoYWluID09PSByb290Q29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlcml2ZVNhZmVFY2RzYU1wY0NoaWxkOiBkZXJpdmVkIGNoaWxkIGtleWNoYWluIGVxdWFscyB0aGUgcm9vdCBrZXljaGFpbicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb21tb25LZXljaGFpbixcbiAgICB1c2VyQ2hpbGQ6IHVzZXIuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIGJhY2t1cENoaWxkOiBiYWNrdXAuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICB9O1xufVxuIl19
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
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
+ })();
21
35
  Object.defineProperty(exports, "__esModule", { value: true });
22
36
  exports.minModulusBitLength = exports.EcdsaZkVProof = exports.EcdsaPaillierProof = exports.EcdsaRangeProof = exports.EcdsaTypes = void 0;
23
37
  exports.EcdsaTypes = __importStar(require("./types"));
@@ -25,4 +39,4 @@ exports.EcdsaRangeProof = __importStar(require("./rangeproof"));
25
39
  exports.EcdsaPaillierProof = __importStar(require("./paillierproof"));
26
40
  exports.EcdsaZkVProof = __importStar(require("./zkVProof"));
27
41
  exports.minModulusBitLength = 3072;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBc0M7QUFDdEMsZ0VBQWdEO0FBQ2hELHNFQUFzRDtBQUN0RCw0REFBNEM7QUFFL0IsUUFBQSxtQkFBbUIsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBFY2RzYVR5cGVzIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogYXMgRWNkc2FSYW5nZVByb29mIGZyb20gJy4vcmFuZ2Vwcm9vZic7XG5leHBvcnQgKiBhcyBFY2RzYVBhaWxsaWVyUHJvb2YgZnJvbSAnLi9wYWlsbGllcnByb29mJztcbmV4cG9ydCAqIGFzIEVjZHNhWmtWUHJvb2YgZnJvbSAnLi96a1ZQcm9vZic7XG5cbmV4cG9ydCBjb25zdCBtaW5Nb2R1bHVzQml0TGVuZ3RoID0gMzA3MjtcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzQztBQUN0QyxnRUFBZ0Q7QUFDaEQsc0VBQXNEO0FBQ3RELDREQUE0QztBQUUvQixRQUFBLG1CQUFtQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIEVjZHNhVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBFY2RzYVJhbmdlUHJvb2YgZnJvbSAnLi9yYW5nZXByb29mJztcbmV4cG9ydCAqIGFzIEVjZHNhUGFpbGxpZXJQcm9vZiBmcm9tICcuL3BhaWxsaWVycHJvb2YnO1xuZXhwb3J0ICogYXMgRWNkc2Faa1ZQcm9vZiBmcm9tICcuL3prVlByb29mJztcblxuZXhwb3J0IGNvbnN0IG1pbk1vZHVsdXNCaXRMZW5ndGggPSAzMDcyO1xuIl19
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verify = exports.prove = exports.generateP = exports.m = exports.alpha = void 0;
3
+ exports.m = exports.alpha = void 0;
4
+ exports.generateP = generateP;
5
+ exports.prove = prove;
6
+ exports.verify = verify;
4
7
  const bigint_crypto_utils_1 = require("bigint-crypto-utils");
5
8
  const bigint_mod_arith_1 = require("bigint-mod-arith");
6
9
  const util_1 = require("../../util");
@@ -18,14 +21,13 @@ exports.m = Math.ceil(k / Math.log2(exports.alpha));
18
21
  * @returns {Promise<Array<bigint>>} - array of challenges $p_i$
19
22
  */
20
23
  async function generateP(n) {
21
- if (bigint_crypto_utils_1.bitLength(n) < index_1.minModulusBitLength) {
24
+ if ((0, bigint_crypto_utils_1.bitLength)(n) < index_1.minModulusBitLength) {
22
25
  throw new Error(`modulus n must have a bit length larger than or equal to ${index_1.minModulusBitLength}`);
23
26
  }
24
27
  return Promise.all(Array(exports.m)
25
28
  .fill(null)
26
- .map(() => util_1.randomPositiveCoPrimeLessThan(n)));
29
+ .map(() => (0, util_1.randomPositiveCoPrimeLessThan)(n)));
27
30
  }
28
- exports.generateP = generateP;
29
31
  /**
30
32
  * Generate a set of proofs $sigma$ for a given set of challenges $p$ using the paillier public key modulus $n$ and the private key $\lambda$.
31
33
  * @param n - paillier public key modulus $n$
@@ -37,10 +39,9 @@ function prove(n, lambda, p) {
37
39
  if (!p.every((p_i) => p_i > 0)) {
38
40
  throw new Error('All paillier challenge values must be positive.');
39
41
  }
40
- const n_inv = bigint_mod_arith_1.modInv(n, lambda);
41
- return p.map((p_i) => bigint_mod_arith_1.modPow(p_i, n_inv, n));
42
+ const n_inv = (0, bigint_mod_arith_1.modInv)(n, lambda);
43
+ return p.map((p_i) => (0, bigint_mod_arith_1.modPow)(p_i, n_inv, n));
42
44
  }
43
- exports.prove = prove;
44
45
  /**
45
46
  * Verify a set of proofs $\sigma$ on the modulus $n$ using the challenges $p$ that were provided to the prover to generate the proofs.
46
47
  * @param n - paillier public key modulus $n$
@@ -76,11 +77,10 @@ function verify(n, p, sigma) {
76
77
  }
77
78
  // c) Verify that $p_i = \sigma_i^N \mod N$ for $i = 1...m$.
78
79
  for (let i = 0; i < exports.m; i++) {
79
- if (p[i] !== bigint_mod_arith_1.modPow(sigma[i], n, n)) {
80
+ if (p[i] !== (0, bigint_mod_arith_1.modPow)(sigma[i], n, n)) {
80
81
  return false;
81
82
  }
82
83
  }
83
84
  return true;
84
85
  }
85
- exports.verify = verify;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbGxpZXJwcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EvcGFpbGxpZXJwcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBZ0Q7QUFDaEQsdURBQWtEO0FBRWxELHFDQUEyRDtBQUMzRCxtQ0FBOEM7QUFDOUMscUNBQW1EO0FBRW5ELHVCQUF1QjtBQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDZCwrQ0FBK0M7QUFDL0Msb0VBQW9FO0FBQ3ZELFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNmLFFBQUEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLENBQUMsQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxDQUFTO0lBQ3ZDLElBQUksK0JBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRywyQkFBbUIsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCwyQkFBbUIsRUFBRSxDQUFDLENBQUM7S0FDcEc7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxTQUFDLENBQUM7U0FDTCxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLG9DQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDO0FBVEQsOEJBU0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUyxFQUFFLE1BQWMsRUFBRSxDQUFnQjtJQUMvRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztLQUNwRTtJQUNELE1BQU0sS0FBSyxHQUFHLHlCQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMseUJBQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQU5ELHNCQU1DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixNQUFNLENBQUMsQ0FBUyxFQUFFLENBQWdCLEVBQUUsS0FBb0I7SUFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7S0FDcEU7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztLQUMxRTtJQUNELHNFQUFzRTtJQUN0RSxpQ0FBaUM7SUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksYUFBSyxLQUFLLE1BQU0sRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUM7SUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGdDQUF1QixFQUFFO1FBQzNDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0lBQ0QsOERBQThEO0lBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFDLEVBQUU7UUFDdEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDMUMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELDREQUE0RDtJQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLHlCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFsQ0Qsd0JBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYml0TGVuZ3RoIH0gZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgeyBtb2RJbnYsIG1vZFBvdyB9IGZyb20gJ2JpZ2ludC1tb2QtYXJpdGgnO1xuXG5pbXBvcnQgeyByYW5kb21Qb3NpdGl2ZUNvUHJpbWVMZXNzVGhhbiB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgbWluTW9kdWx1c0JpdExlbmd0aCB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgcHJpbWVzU21hbGxlclRoYW4zMTk1NjcgfSBmcm9tICcuL3ByaW1lcyc7XG5cbi8vIFNlY3VyaXR5IHBhcmFtZXRlcnMuXG5jb25zdCBrID0gMTI4O1xuLy8gZXByaW50LmlhY3Iub3JnLzIwMTgvMDU3LnBkZiNwYWdlNiBzZWN0aW9uIDVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9CaXRHb0pTL3B1bGwvMzUwMiNkaXNjdXNzaW9uX3IxMjAzMDcwMzkyXG5leHBvcnQgY29uc3QgYWxwaGEgPSAzMTk1Njc7XG5leHBvcnQgY29uc3QgbSA9IE1hdGguY2VpbChrIC8gTWF0aC5sb2cyKGFscGhhKSk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZXQgb2YgY2hhbGxlbmdlcyAkcCQgZm9yIGEgZ2l2ZW4gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJC5cbiAqIEBwYXJhbSBuIC0gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxiaWdpbnQ+Pn0gLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwX2kkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVAobjogYmlnaW50KTogUHJvbWlzZTxBcnJheTxiaWdpbnQ+PiB7XG4gIGlmIChiaXRMZW5ndGgobikgPCBtaW5Nb2R1bHVzQml0TGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtb2R1bHVzIG4gbXVzdCBoYXZlIGEgYml0IGxlbmd0aCBsYXJnZXIgdGhhbiBvciBlcXVhbCB0byAke21pbk1vZHVsdXNCaXRMZW5ndGh9YCk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIEFycmF5KG0pXG4gICAgICAuZmlsbChudWxsKVxuICAgICAgLm1hcCgoKSA9PiByYW5kb21Qb3NpdGl2ZUNvUHJpbWVMZXNzVGhhbihuKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNldCBvZiBwcm9vZnMgJHNpZ21hJCBmb3IgYSBnaXZlbiBzZXQgb2YgY2hhbGxlbmdlcyAkcCQgdXNpbmcgdGhlIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiQgYW5kIHRoZSBwcml2YXRlIGtleSAkXFxsYW1iZGEkLlxuICogQHBhcmFtIG4gLSBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXMgJG4kXG4gKiBAcGFyYW0gbGFtYmRhIC0gcHJpdmF0ZSBrZXkgJFxcbGFtYmRhLCAgd2hpY2ggaXMgdGhlICRcXGV1bGVyKE4pID0gKHAtMSkocS0xKSRcbiAqIEBwYXJhbSBwIC0gYXJyYXkgb2YgY2hhbGxlbmdlcyAkcCRcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGJpZ2ludD4+fSAtIGFycmF5IG9mIHByb29mcyAkXFxzaWdtYSRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZlKG46IGJpZ2ludCwgbGFtYmRhOiBiaWdpbnQsIHA6IEFycmF5PGJpZ2ludD4pOiBiaWdpbnRbXSB7XG4gIGlmICghcC5ldmVyeSgocF9pKSA9PiBwX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICBjb25zdCBuX2ludiA9IG1vZEludihuLCBsYW1iZGEpO1xuICByZXR1cm4gcC5tYXAoKHBfaSkgPT4gbW9kUG93KHBfaSwgbl9pbnYsIG4pKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBzZXQgb2YgcHJvb2ZzICRcXHNpZ21hJCBvbiB0aGUgbW9kdWx1cyAkbiQgdXNpbmcgdGhlIGNoYWxsZW5nZXMgJHAkIHRoYXQgd2VyZSBwcm92aWRlZCB0byB0aGUgcHJvdmVyIHRvIGdlbmVyYXRlIHRoZSBwcm9vZnMuXG4gKiBAcGFyYW0gbiAtIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiRcbiAqIEBwYXJhbSBwIC0gYXJyYXkgb2YgY2hhbGxlbmdlcyAkcCRcbiAqIEBwYXJhbSBzaWdtYSAtIGFycmF5IG9mIHByb29mcyAkXFxzaWdtYSRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeShuOiBiaWdpbnQsIHA6IEFycmF5PGJpZ2ludD4sIHNpZ21hOiBBcnJheTxiaWdpbnQ+KTogYm9vbGVhbiB7XG4gIGlmICghcC5ldmVyeSgocF9pKSA9PiBwX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICBpZiAoIXNpZ21hLmV2ZXJ5KChzaWdtYV9pKSA9PiBzaWdtYV9pID4gMCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FsbCBwYWlsbGllciBjaGFsbGVuZ2UgcHJvb2YgdmFsdWVzIG11c3QgYmUgcG9zaXRpdmUuJyk7XG4gIH1cbiAgLy8gYSkgQ2hlY2sgdGhhdCAkTiQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCBpcyBub3QgZGl2aXNpYmxlIGJ5IGFsbFxuICAvLyB0aGUgcHJpbWVzIGxlc3MgdGhhbiAkXFxhbHBoYSQuXG4gIGlmIChuIDw9IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGFscGhhICE9PSAzMTk1NjcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIGFscGhhIHZhbHVlJyk7XG4gIH1cbiAgZm9yIChjb25zdCBwcmltZSBvZiBwcmltZXNTbWFsbGVyVGhhbjMxOTU2Nykge1xuICAgIGlmIChuICUgQmlnSW50KHByaW1lKSA9PT0gQmlnSW50KDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIGIpIENoZWNrIHRoYXQgJFxcc2lnbWFfaSQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyICRpID0gMS4uLm0kLlxuICBpZiAoc2lnbWEubGVuZ3RoICE9PSBtKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghc2lnbWEuZXZlcnkoKHNpZ21hX2kpID0+IHNpZ21hX2kgPiAwKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBjKSBWZXJpZnkgdGhhdCAkcF9pID0gXFxzaWdtYV9pXk4gXFxtb2QgTiQgZm9yICRpID0gMS4uLm0kLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGlmIChwW2ldICE9PSBtb2RQb3coc2lnbWFbaV0sIG4sIG4pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbGxpZXJwcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EvcGFpbGxpZXJwcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQkEsOEJBU0M7QUFTRCxzQkFNQztBQVFELHdCQWtDQztBQXJGRCw2REFBZ0Q7QUFDaEQsdURBQWtEO0FBRWxELHFDQUEyRDtBQUMzRCxtQ0FBOEM7QUFDOUMscUNBQW1EO0FBRW5ELHVCQUF1QjtBQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDZCwrQ0FBK0M7QUFDL0Msb0VBQW9FO0FBQ3ZELFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNmLFFBQUEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLENBQUMsQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxDQUFTO0lBQ3ZDLElBQUksSUFBQSwrQkFBUyxFQUFDLENBQUMsQ0FBQyxHQUFHLDJCQUFtQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsMkJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxTQUFDLENBQUM7U0FDTCxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsb0NBQTZCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUyxFQUFFLE1BQWMsRUFBRSxDQUFnQjtJQUMvRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxJQUFBLHlCQUFNLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixNQUFNLENBQUMsQ0FBUyxFQUFFLENBQWdCLEVBQUUsS0FBb0I7SUFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0Qsc0VBQXNFO0lBQ3RFLGlDQUFpQztJQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksYUFBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxnQ0FBdUIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsOERBQThEO0lBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsNERBQTREO0lBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFBLHlCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXRMZW5ndGggfSBmcm9tICdiaWdpbnQtY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IG1vZEludiwgbW9kUG93IH0gZnJvbSAnYmlnaW50LW1vZC1hcml0aCc7XG5cbmltcG9ydCB7IHJhbmRvbVBvc2l0aXZlQ29QcmltZUxlc3NUaGFuIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBtaW5Nb2R1bHVzQml0TGVuZ3RoIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBwcmltZXNTbWFsbGVyVGhhbjMxOTU2NyB9IGZyb20gJy4vcHJpbWVzJztcblxuLy8gU2VjdXJpdHkgcGFyYW1ldGVycy5cbmNvbnN0IGsgPSAxMjg7XG4vLyBlcHJpbnQuaWFjci5vcmcvMjAxOC8wNTcucGRmI3BhZ2U2IHNlY3Rpb24gNVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL0JpdEdvSlMvcHVsbC8zNTAyI2Rpc2N1c3Npb25fcjEyMDMwNzAzOTJcbmV4cG9ydCBjb25zdCBhbHBoYSA9IDMxOTU2NztcbmV4cG9ydCBjb25zdCBtID0gTWF0aC5jZWlsKGsgLyBNYXRoLmxvZzIoYWxwaGEpKTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNldCBvZiBjaGFsbGVuZ2VzICRwJCBmb3IgYSBnaXZlbiBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXMgJG4kLlxuICogQHBhcmFtIG4gLSBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXNcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGJpZ2ludD4+fSAtIGFycmF5IG9mIGNoYWxsZW5nZXMgJHBfaSRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUChuOiBiaWdpbnQpOiBQcm9taXNlPEFycmF5PGJpZ2ludD4+IHtcbiAgaWYgKGJpdExlbmd0aChuKSA8IG1pbk1vZHVsdXNCaXRMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG1vZHVsdXMgbiBtdXN0IGhhdmUgYSBiaXQgbGVuZ3RoIGxhcmdlciB0aGFuIG9yIGVxdWFsIHRvICR7bWluTW9kdWx1c0JpdExlbmd0aH1gKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgQXJyYXkobSlcbiAgICAgIC5maWxsKG51bGwpXG4gICAgICAubWFwKCgpID0+IHJhbmRvbVBvc2l0aXZlQ29QcmltZUxlc3NUaGFuKG4pKVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2V0IG9mIHByb29mcyAkc2lnbWEkIGZvciBhIGdpdmVuIHNldCBvZiBjaGFsbGVuZ2VzICRwJCB1c2luZyB0aGUgcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJCBhbmQgdGhlIHByaXZhdGUga2V5ICRcXGxhbWJkYSQuXG4gKiBAcGFyYW0gbiAtIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiRcbiAqIEBwYXJhbSBsYW1iZGEgLSBwcml2YXRlIGtleSAkXFxsYW1iZGEsICB3aGljaCBpcyB0aGUgJFxcZXVsZXIoTikgPSAocC0xKShxLTEpJFxuICogQHBhcmFtIHAgLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwJFxuICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8YmlnaW50Pj59IC0gYXJyYXkgb2YgcHJvb2ZzICRcXHNpZ21hJFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmUobjogYmlnaW50LCBsYW1iZGE6IGJpZ2ludCwgcDogQXJyYXk8YmlnaW50Pik6IGJpZ2ludFtdIHtcbiAgaWYgKCFwLmV2ZXJ5KChwX2kpID0+IHBfaSA+IDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbGwgcGFpbGxpZXIgY2hhbGxlbmdlIHZhbHVlcyBtdXN0IGJlIHBvc2l0aXZlLicpO1xuICB9XG4gIGNvbnN0IG5faW52ID0gbW9kSW52KG4sIGxhbWJkYSk7XG4gIHJldHVybiBwLm1hcCgocF9pKSA9PiBtb2RQb3cocF9pLCBuX2ludiwgbikpO1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIHNldCBvZiBwcm9vZnMgJFxcc2lnbWEkIG9uIHRoZSBtb2R1bHVzICRuJCB1c2luZyB0aGUgY2hhbGxlbmdlcyAkcCQgdGhhdCB3ZXJlIHByb3ZpZGVkIHRvIHRoZSBwcm92ZXIgdG8gZ2VuZXJhdGUgdGhlIHByb29mcy5cbiAqIEBwYXJhbSBuIC0gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJFxuICogQHBhcmFtIHAgLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwJFxuICogQHBhcmFtIHNpZ21hIC0gYXJyYXkgb2YgcHJvb2ZzICRcXHNpZ21hJFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5KG46IGJpZ2ludCwgcDogQXJyYXk8YmlnaW50Piwgc2lnbWE6IEFycmF5PGJpZ2ludD4pOiBib29sZWFuIHtcbiAgaWYgKCFwLmV2ZXJ5KChwX2kpID0+IHBfaSA+IDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbGwgcGFpbGxpZXIgY2hhbGxlbmdlIHZhbHVlcyBtdXN0IGJlIHBvc2l0aXZlLicpO1xuICB9XG4gIGlmICghc2lnbWEuZXZlcnkoKHNpZ21hX2kpID0+IHNpZ21hX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSBwcm9vZiB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICAvLyBhKSBDaGVjayB0aGF0ICROJCBpcyBhIHBvc2l0aXZlIGludGVnZXIgYW5kIGlzIG5vdCBkaXZpc2libGUgYnkgYWxsXG4gIC8vIHRoZSBwcmltZXMgbGVzcyB0aGFuICRcXGFscGhhJC5cbiAgaWYgKG4gPD0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYWxwaGEgIT09IDMxOTU2Nykge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgYWxwaGEgdmFsdWUnKTtcbiAgfVxuICBmb3IgKGNvbnN0IHByaW1lIG9mIHByaW1lc1NtYWxsZXJUaGFuMzE5NTY3KSB7XG4gICAgaWYgKG4gJSBCaWdJbnQocHJpbWUpID09PSBCaWdJbnQoMCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gYikgQ2hlY2sgdGhhdCAkXFxzaWdtYV9pJCBpcyBhIHBvc2l0aXZlIGludGVnZXIgJGkgPSAxLi4ubSQuXG4gIGlmIChzaWdtYS5sZW5ndGggIT09IG0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFzaWdtYS5ldmVyeSgoc2lnbWFfaSkgPT4gc2lnbWFfaSA+IDApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGMpIFZlcmlmeSB0aGF0ICRwX2kgPSBcXHNpZ21hX2leTiBcXG1vZCBOJCBmb3IgJGkgPSAxLi4ubSQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgaWYgKHBbaV0gIT09IG1vZFBvdyhzaWdtYVtpXSwgbiwgbikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
@@ -1,14 +1,13 @@
1
1
  import { BaseCurve } from '../../curves';
2
2
  import { PublicKey } from 'paillier-bigint';
3
3
  import { DeserializedNtilde, DeserializedNtildeProof, RangeProof, RangeProofWithCheck, DeserializedNtildeWithProofs } from './types';
4
- export declare function generateSafePrimes(bitLengths: number[]): Promise<bigint[]>;
5
4
  /**
6
5
  * Generate "challenge" values for range proofs.
7
6
  * @param {number} bitlength The bit length of the modulus to generate. This should
8
7
  * be the same as the bit length of the paillier public keys used for MtA.
9
8
  * @returns {DeserializedNtilde} The generated Ntilde values.
10
9
  */
11
- export declare function generateNtilde(bitlength?: number): Promise<DeserializedNtildeWithProofs>;
10
+ export declare function generateNtilde(openSSLBytes: Uint8Array, bitlength?: number): Promise<DeserializedNtildeWithProofs>;
12
11
  /**
13
12
  * Generate iterations of Ntilde, h1, h2 discrete log proofs.
14
13
  * @param {DeserializedNtilde} ntilde Ntilde, h1, h2 to generate the proofs for.
@@ -1 +1 @@
1
- {"version":3,"file":"rangeproof.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/rangeproof.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAEvB,UAAU,EACV,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAQjB,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhF;AAwBD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,SAAsB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA2C3G;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,uBAAuB,CAAC,CAsBlC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,uBAAuB,GACnC,OAAO,CAAC,OAAO,CAAC,CA0ClB;AACD;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,UAAU,EACjB,CAAC,EAAE,MAAM,GACR,OAAO,CAmCT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,mBAAmB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,OAAO,CAiET"}
1
+ {"version":3,"file":"rangeproof.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/rangeproof.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAEvB,UAAU,EACV,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAkCjB;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,UAAU,EACxB,SAAS,SAAsB,GAC9B,OAAO,CAAC,4BAA4B,CAAC,CA2CvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,uBAAuB,CAAC,CAsBlC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,uBAAuB,GACnC,OAAO,CAAC,OAAO,CAAC,CA0ClB;AACD;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,UAAU,EACjB,CAAC,EAAE,MAAM,GACR,OAAO,CAmCT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,mBAAmB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,OAAO,CAiET"}