@bitgo-beta/sdk-coin-polyx 1.0.0-alpha.21 → 1.0.0-alpha.211

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 (225) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/baseBuilder.d.ts +24 -0
  5. package/dist/src/lib/baseBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/baseBuilder.js +31 -0
  7. package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
  8. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/batchStakingBuilder.js +302 -0
  10. package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
  11. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/batchUnstakingBuilder.js +129 -0
  13. package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
  14. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/bondExtraBuilder.js +103 -0
  16. package/dist/src/lib/constants.d.ts +21 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +24 -0
  19. package/dist/src/lib/hexTokenTransferBuilder.d.ts +24 -0
  20. package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/hexTokenTransferBuilder.js +46 -0
  22. package/dist/src/lib/hexTransferBuilder.d.ts +28 -0
  23. package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/hexTransferBuilder.js +51 -0
  25. package/dist/src/lib/iface.d.ts +249 -0
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +48 -1
  28. package/dist/src/lib/index.d.ts +36 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +82 -5
  31. package/dist/src/lib/nominateBuilder.d.ts +18 -0
  32. package/dist/src/lib/nominateBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/nominateBuilder.js +101 -0
  34. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  35. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  37. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +7 -2
  38. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/registerDidWithCDDBuilder.js +22 -3
  40. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  41. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  43. package/dist/src/lib/tokenTransferBuilder.d.ts +64 -0
  44. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/tokenTransferBuilder.js +167 -0
  46. package/dist/src/lib/transaction.d.ts +30 -0
  47. package/dist/src/lib/transaction.d.ts.map +1 -0
  48. package/dist/src/lib/transaction.js +211 -0
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +59 -1
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilderFactory.js +288 -8
  52. package/dist/src/lib/transferBuilder.d.ts +4 -2
  53. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  54. package/dist/src/lib/transferBuilder.js +12 -5
  55. package/dist/src/lib/txnSchema.d.ts +67 -0
  56. package/dist/src/lib/txnSchema.d.ts.map +1 -1
  57. package/dist/src/lib/txnSchema.js +231 -2
  58. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  59. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/unbondBuilder.js +100 -0
  61. package/dist/src/lib/utils.d.ts +40 -0
  62. package/dist/src/lib/utils.d.ts.map +1 -1
  63. package/dist/src/lib/utils.js +94 -1
  64. package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
  65. package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
  67. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
  68. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
  70. package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
  71. package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/v8BondExtraBuilder.js +21 -0
  73. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
  74. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
  76. package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
  77. package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
  78. package/dist/src/lib/v8HexTransferBuilder.js +21 -0
  79. package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
  80. package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
  81. package/dist/src/lib/v8NominateBuilder.js +21 -0
  82. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
  83. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
  84. package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
  85. package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
  86. package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
  87. package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
  88. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
  89. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
  91. package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
  92. package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
  93. package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
  94. package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
  95. package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/v8TransferBuilder.js +21 -0
  97. package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
  98. package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/v8UnbondBuilder.js +21 -0
  100. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
  101. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
  102. package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
  103. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  104. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  105. package/dist/src/lib/withdrawUnbondedBuilder.js +91 -0
  106. package/dist/src/polyx.d.ts +51 -9
  107. package/dist/src/polyx.d.ts.map +1 -1
  108. package/dist/src/polyx.js +272 -15
  109. package/dist/src/polyxToken.d.ts +20 -0
  110. package/dist/src/polyxToken.d.ts.map +1 -0
  111. package/dist/src/polyxToken.js +55 -0
  112. package/dist/src/register.d.ts.map +1 -1
  113. package/dist/src/register.js +5 -1
  114. package/dist/src/resources/index.d.ts +2 -0
  115. package/dist/src/resources/index.d.ts.map +1 -1
  116. package/dist/src/resources/index.js +3 -1
  117. package/dist/src/resources/mainnetV8.d.ts +13 -0
  118. package/dist/src/resources/mainnetV8.d.ts.map +1 -0
  119. package/dist/src/resources/mainnetV8.js +24 -0
  120. package/dist/src/resources/testnetV8.d.ts +13 -0
  121. package/dist/src/resources/testnetV8.d.ts.map +1 -0
  122. package/dist/src/resources/testnetV8.js +16 -0
  123. package/dist/src/tpolyx.d.ts +7 -0
  124. package/dist/src/tpolyx.d.ts.map +1 -1
  125. package/dist/src/tpolyx.js +11 -1
  126. package/dist/test/integration/index.d.ts +1 -0
  127. package/dist/test/integration/index.d.ts.map +1 -0
  128. package/dist/test/integration/index.js +1 -0
  129. package/dist/test/resources/index.d.ts +139 -0
  130. package/dist/test/resources/index.d.ts.map +1 -0
  131. package/dist/test/resources/index.js +150 -0
  132. package/dist/test/resources/mainnet.d.ts +2 -0
  133. package/dist/test/resources/mainnet.d.ts.map +1 -0
  134. package/dist/test/resources/mainnet.js +5 -0
  135. package/dist/test/resources/materialData.json +8 -0
  136. package/dist/test/resources/materialDataModified.json +8 -0
  137. package/dist/test/resources/testnet.d.ts +2 -0
  138. package/dist/test/resources/testnet.d.ts.map +1 -0
  139. package/dist/test/resources/testnet.js +5 -0
  140. package/dist/test/resources/wrwUsers.d.ts +19 -0
  141. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  142. package/dist/test/resources/wrwUsers.js +60 -0
  143. package/dist/test/unit/polyx.d.ts +2 -0
  144. package/dist/test/unit/polyx.d.ts.map +1 -0
  145. package/dist/test/unit/polyx.js +356 -0
  146. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  147. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  148. package/dist/test/unit/transactionBuilder/base.js +245 -0
  149. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  150. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  151. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +309 -0
  152. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  153. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  154. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  155. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  156. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  158. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts +2 -0
  159. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts.map +1 -0
  160. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.js +261 -0
  161. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts +2 -0
  162. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts.map +1 -0
  163. package/dist/test/unit/transactionBuilder/hexTransferBuilder.js +389 -0
  164. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts +2 -0
  165. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts.map +1 -0
  166. package/dist/test/unit/transactionBuilder/nominateBuilder.js +226 -0
  167. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  168. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  169. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  170. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  171. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  172. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  173. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  174. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  175. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  176. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  177. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  178. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  179. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  180. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  181. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  182. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  183. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  184. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +240 -0
  185. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  186. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  187. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  188. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  189. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  190. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  191. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
  192. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
  193. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +252 -0
  194. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
  195. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
  196. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
  197. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
  198. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
  199. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
  200. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
  201. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
  202. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
  203. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
  204. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
  205. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
  206. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
  207. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  208. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
  209. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
  210. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
  211. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
  212. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
  213. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
  214. package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
  215. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  216. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  217. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  218. package/dist/test/unit/utils.d.ts +2 -0
  219. package/dist/test/unit/utils.d.ts.map +1 -0
  220. package/dist/test/unit/utils.js +143 -0
  221. package/dist/tsconfig.tsbuildinfo +1 -0
  222. package/package.json +15 -9
  223. package/.eslintignore +0 -4
  224. package/.mocharc.yml +0 -8
  225. package/CHANGELOG.md +0 -22
@@ -0,0 +1,19 @@
1
+ export declare const wrwUser: {
2
+ userKey: string;
3
+ backupKey: string;
4
+ bitgoKey: string;
5
+ walletPassphrase: string;
6
+ walletAddress: string;
7
+ };
8
+ export declare const unsignedSweepUser: {
9
+ userKey: string;
10
+ backupKey: string;
11
+ bitgoKey: string;
12
+ walletPassphrase: string;
13
+ walletAddress: string;
14
+ };
15
+ export declare const testnetBlock: {
16
+ blockNumber: number;
17
+ hash: string;
18
+ };
19
+ //# sourceMappingURL=wrwUsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrwUsers.d.ts","sourceRoot":"","sources":["../../../test/resources/wrwUsers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;;CA4CnB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;CAY7B,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testnetBlock = exports.unsignedSweepUser = exports.wrwUser = void 0;
4
+ exports.wrwUser = {
5
+ userKey: '{"iv":"TR25BHPM0F8OrlhC5UEnUA==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n' +
6
+ ':"ccm","adata":"","cipher":"aes","salt":"uQfN/R/hYaM=","ct":"IzM4WznffhakZk\n' +
7
+ 'KwsRxTEcQ7PIcr5f6ro2YXbn1mP/dlMaYlmGOE1fJemchVeuFUWLGphJPMaUz3v4lJbklvRGtTP\n' +
8
+ 'F8+JeFSp/ps++wirzlZoAmPOGrOPRg7TkOJXR7xZyBJHeUoV9xu7X1iKGrxhYr70CrzlkrYqlQR\n' +
9
+ 'qU8NiV1YbeY+Ra56m9RfeE2HaXk2s9xNzn8mfdOdjkd1sjXwTzv3WPTBWPD35H8EiDbLuVLLOBg\n' +
10
+ 'tVPNahBimxffWE5B6keQTN3ezKNTwE0z3B4sBTGHb8wbumhRAO42/BV7MNbvCDPe+GfkqljMu13\n' +
11
+ 'u9PAaRb3Y/nK1szIxqN4PpUYP92UYr/QjveuHk37+wxQhljfn81jhkhtGOvnv1EaBhZNJ0PWbrf\n' +
12
+ 'E9Xprx8vLmyy8UiGayUvXka2bEZyPksjBpD7chhKbqCj3q5EhJQLUiydLr9/BV50seM1+AQ9w+R\n' +
13
+ '8KjybUgwIF/qTLcaCxVHeAKRzs6LMGj43+l1kTkdaGRre+6MAK2aExZK2FJer49v8htKo7Z6vy+\n' +
14
+ '149DBwTnvCGEDQVXuumKCGX0CCfzbLAMZVKB/Xqdd3e9B99QbVFmPQpeAlJXrOpaoXS90xSSBKs\n' +
15
+ 'dbr1wkRHlYB/NvQZwl2sGfIcPJASfWKLFUSXJM7ql1y89llNNSW7RUBcf9tKK5SqmVyGxWZ+1LJ\n' +
16
+ 'a5ZEh4BRYh5Kx4IleCQNyZI73XVZE8kyHo07TWwlI8jR8DUIsuF1cBmFRKn2XoikQrDYie/o1zS\n' +
17
+ '1hDMzvF4C9BeacW6iPZ1n9/0OkwgiUIDJGh4vIOei/9U/N2scc8z5+F/yaXXW7COKxqKkx74tqI\n' +
18
+ 'ohPm0CTnH2t2cqjK+C5x3FdwiPT+uIzgSU04EZP4gzngZ11yunj7cvw80x9/BK+GwbM97haJ8Je\n' +
19
+ 'lMDg5++m6fJlb6weW1Rd6IiUfRSXpio7KQbxZ04UG5uPROAY1xbCJbGQi9OjcyXQKQtL81WkHSr\n' +
20
+ 'LGjN/jXCts7OH3xZRaZk66DP6X3LaT0b6qmlem2Uvf+ZIKResF3ivijLYopJWfftamaFDyY+463\n' +
21
+ 'uI/WNFWrc7iQWI4Fy3eUezuqBZhiZdWMxuP7yDwLgWr2h3CUNYoLvocrRuye6cI8fjmDWzeTdun\n' +
22
+ '5tSM8OL30hY7aH1n/ZDweng0w5k8i7Znm5LpLaAJzkA7CFV0CXI56s3isJ5CjXJFm"}',
23
+ backupKey: '{"iv":"yoGM9gzwedwMp+D5xfZjuw==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n' +
24
+ ':"ccm","adata":"","cipher":"aes","salt":"bLoJpDYNb1o=","ct":"rK3JZ5VyxqsfgV\n' +
25
+ 'JVrR8bddfMe5cy963ntRt3B7l71tvHT8KleNBlzPN6VPrvw1T9KhTHPZ8zDq1pLN39wdrgr4lD4\n' +
26
+ '7+FwsclqQscsi97YW7pTHhWBGGMCKzItXQfeXYCZqvXu/BeV80VWKwso40vZ13pNWmZRhjy/40U\n' +
27
+ 'Z0J/Tf+2NuFSEuLKznrgD/oLJaAkYS7d1Bt+GUHWkXnDOsLwqbBL8y5TQJkZrp37nDXXRdP1IE1\n' +
28
+ 'MOm2C+GMvboHwm4bpKQRpVURgjyk/7/XWXQ7OUvIFgq324sQbQCHVB/voaRVF+3x7ShRjiGG9sE\n' +
29
+ 'W0+XsbbamrXvGiexAGPDM+2kuPe/rBFhJgf4HJnYFAM9sjzWdOIedhkuOokwqgd5OqreVMO/dYF\n' +
30
+ 'PGI29cnrov8JpIQw5gArtlgUxOdelg/oCaRUryHCABVPTODbFYygf+3IAgng2M+oEvh26gVFOfz\n' +
31
+ 'oPfBoqqXk6/kWpc3zx2byOB+c6Yzhg9sRnF5UobMBl50nklo1kM/24ObmsNCQeVyuZARjQgpbZx\n' +
32
+ 'wn5l51knvxmvQXxvwnfsuifje9GkE4Tt+vYu49o3V8vmRaOxcEMnzj5WOC/MOb6QPT4Jx8/J9CB\n' +
33
+ 'V4nU+MvgZbDJKMx9kuyJ62PihBy8uSE1JrNgWU3aEkuh9aD5HEoAtyy4tBatRTzOMLSsSr3hii7\n' +
34
+ 'pVTBkfEFVzsrHRfIc4FhsnFqSG1yPtxQ68FUeZNM23pCOSJMcbzuP2deEwOCNE5AFIhVZmHg5Yn\n' +
35
+ 'CXgcUwAHh+aD+Jv8LMyHq0U6GKkpghu5bptUJcX6oOwUoKD04NWuE6VvK0ZJhSpxxOLeLI4YrwA\n' +
36
+ 'tNVo9KAehWPHJfbx4XyBKu+3Z/mIfPJ2rxz7Izdci/BhDKiuHRUynUJ7/8Taxkjqa6RBdFD/avm\n' +
37
+ 'Z1a8GyGlxYbnF3OlJUS0Op3lAXBygMyfZqDYbYSfr7ufaIfULAApxXIV0+tyKeF78yAH/k4GIvH\n' +
38
+ '8GzkFu0MSzhWDddeUuKY4Me36GmPHfkzXw+jGt/I6R2vPZKW5RsfMooV7QKUrINtQTZ/4b8jAsr\n' +
39
+ 'NJyYZX1wmjwQu3UzqpN+4oPh+WOJUX1Weo5B6c/4e1FmchSiPcI9xCR64MddbFaA/ORdN4p4cgL\n' +
40
+ 'B4K3MOqMpoOCMgo/+N9JQr5FTMrcxVSJWRm7QrSGP3go2tywH1UuJOHxhAthdRw=="}',
41
+ bitgoKey: '74372039ccd6c9b2e1e16e3258ff3307b05527ac5a34e1b603b7b74353599c5eb6de9fc5f0f\n' +
42
+ '5f677bfa1f41915d9e1a2e794f8d5d9770d219bf5432adf0415e3',
43
+ walletPassphrase: '#Bondiola1234',
44
+ walletAddress: '5C8nEaqzwMLC2EFjUFckCfPLeFUVWNp3FErQiN8D5u2ZkWyt',
45
+ };
46
+ exports.unsignedSweepUser = {
47
+ userKey: '97d9da8bf544d07f3c7ae8ee06bb12a63f74478d0c461201ab94421a9c81d5b379553f0332d\n' +
48
+ 'aaa85cb8c65e1fe7e6907c62268c00812b08a4e1361178e304ddb',
49
+ backupKey: '97d9da8bf544d07f3c7ae8ee06bb12a63f74478d0c461201ab94421a9c81d5b379553f0332d\n' +
50
+ 'aaa85cb8c65e1fe7e6907c62268c00812b08a4e1361178e304ddb',
51
+ bitgoKey: '97d9da8bf544d07f3c7ae8ee06bb12a63f74478d0c461201ab94421a9c81d5b379553f0332d\n' +
52
+ 'aaa85cb8c65e1fe7e6907c62268c00812b08a4e1361178e304ddb',
53
+ walletPassphrase: '#Bondiola1234',
54
+ walletAddress: '5DnZQqbxtB3CWkLgfA6wpqdkCd9Bq7AX49RpLPJwW9mzoT7s',
55
+ };
56
+ exports.testnetBlock = {
57
+ blockNumber: 12640277,
58
+ hash: '0x3771101969cc5cf1b37db0bdce589fe9174a1b820341c4d3673ce301352a3d42',
59
+ };
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3J3VXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy93cndVc2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLE9BQU8sR0FBRztJQUNyQixPQUFPLEVBQ0wsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSxxRUFBcUU7SUFDdkUsU0FBUyxFQUNQLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsK0VBQStFO1FBQy9FLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UscUVBQXFFO0lBQ3ZFLFFBQVEsRUFDTiwrRUFBK0U7UUFDL0UsdURBQXVEO0lBQ3pELGdCQUFnQixFQUFFLGVBQWU7SUFDakMsYUFBYSxFQUFFLGtEQUFrRDtDQUNsRSxDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixPQUFPLEVBQ0wsK0VBQStFO1FBQy9FLHVEQUF1RDtJQUN6RCxTQUFTLEVBQ1AsK0VBQStFO1FBQy9FLHVEQUF1RDtJQUN6RCxRQUFRLEVBQ04sK0VBQStFO1FBQy9FLHVEQUF1RDtJQUN6RCxnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLGFBQWEsRUFBRSxrREFBa0Q7Q0FDbEUsQ0FBQztBQUVXLFFBQUEsWUFBWSxHQUFHO0lBQzFCLFdBQVcsRUFBRSxRQUFRO0lBQ3JCLElBQUksRUFBRSxvRUFBb0U7Q0FDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB3cndVc2VyID0ge1xuICB1c2VyS2V5OlxuICAgICd7XCJpdlwiOlwiVFIyNUJIUE0wRjhPcmxoQzVVRW5VQT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICc6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCJ1UWZOL1IvaFlhTT1cIixcImN0XCI6XCJJek00V3puZmZoYWtaa1xcbicgK1xuICAgICdLd3NSeFRFY1E3UEljcjVmNnJvMllYYm4xbVAvZGxNYVlsbUdPRTFmSmVtY2hWZXVGVVdMR3BoSlBNYVV6M3Y0bEpia2x2Ukd0VFBcXG4nICtcbiAgICAnRjgrSmVGU3AvcHMrK3dpcnpsWm9BbVBPR3JPUFJnN1RrT0pYUjd4WnlCSkhlVW9WOXh1N1gxaUtHcnhoWXI3MENyemxrcllxbFFSXFxuJyArXG4gICAgJ3FVOE5pVjFZYmVZK1JhNTZtOVJmZUUySGFYazJzOXhOem44bWZkT2Rqa2Qxc2pYd1R6djNXUFRCV1BEMzVIOEVpRGJMdVZMTE9CZ1xcbicgK1xuICAgICd0VlBOYWhCaW14ZmZXRTVCNmtlUVROM2V6S05Ud0UwejNCNHNCVEdIYjh3YnVtaFJBTzQyL0JWN01OYnZDRFBlK0dma3Fsak11MTNcXG4nICtcbiAgICAndTlQQWFSYjNZL25LMXN6SXhxTjRQcFVZUDkyVVlyL1FqdmV1SGszNyt3eFFobGpmbjgxamhraHRHT3ZudjFFYUJoWk5KMFBXYnJmXFxuJyArXG4gICAgJ0U5WHByeDh2TG15eThVaUdheVV2WGthMmJFWnlQa3NqQnBEN2NoaEticUNqM3E1RWhKUUxVaXlkTHI5L0JWNTBzZU0xK0FROXcrUlxcbicgK1xuICAgICc4S2p5YlVnd0lGL3FUTGNhQ3hWSGVBS1J6czZMTUdqNDMrbDFrVGtkYUdScmUrNk1BSzJhRXhaSzJGSmVyNDl2OGh0S283WjZ2eStcXG4nICtcbiAgICAnMTQ5REJ3VG52Q0dFRFFWWHV1bUtDR1gwQ0NmemJMQU1aVktCL1hxZGQzZTlCOTlRYlZGbVBRcGVBbEpYck9wYW9YUzkweFNTQktzXFxuJyArXG4gICAgJ2RicjF3a1JIbFlCL052UVp3bDJzR2ZJY1BKQVNmV0tMRlVTWEpNN3FsMXk4OWxsTk5TVzdSVUJjZjl0S0s1U3FtVnlHeFdaKzFMSlxcbicgK1xuICAgICdhNVpFaDRCUlloNUt4NElsZUNRTnlaSTczWFZaRThreUhvMDdUV3dsSThqUjhEVUlzdUYxY0JtRlJLbjJYb2lrUXJEWWllL28xelNcXG4nICtcbiAgICAnMWhETXp2RjRDOUJlYWNXNmlQWjFuOS8wT2t3Z2lVSURKR2g0dklPZWkvOVUvTjJzY2M4ejUrRi95YVhYVzdDT0t4cUtreDc0dHFJXFxuJyArXG4gICAgJ29oUG0wQ1RuSDJ0MmNxaksrQzV4M0Zkd2lQVCt1SXpnU1UwNEVaUDRnem5nWjExeXVuajdjdnc4MHg5L0JLK0d3Yk05N2hhSjhKZVxcbicgK1xuICAgICdsTURnNSsrbTZmSmxiNndlVzFSZDZJaVVmUlNYcGlvN0tRYnhaMDRVRzV1UFJPQVkxeGJDSmJHUWk5T2pjeVhRS1F0TDgxV2tIU3JcXG4nICtcbiAgICAnTEdqTi9qWEN0czdPSDN4WlJhWms2NkRQNlgzTGFUMGI2cW1sZW0yVXZmK1pJS1Jlc0YzaXZpakxZb3BKV2ZmdGFtYUZEeVkrNDYzXFxuJyArXG4gICAgJ3VJL1dORldyYzdpUVdJNEZ5M2VVZXp1cUJaaGlaZFdNeHVQN3lEd0xnV3IyaDNDVU5Zb0x2b2NyUnV5ZTZjSThmam1EV3plVGR1blxcbicgK1xuICAgICc1dFNNOE9MMzBoWTdhSDFuL1pEd2VuZzB3NWs4aTdabm01THBMYUFKemtBN0NGVjBDWEk1NnMzaXNKNUNqWEpGbVwifScsXG4gIGJhY2t1cEtleTpcbiAgICAne1wiaXZcIjpcInlvR005Z3p3ZWR3TXArRDV4ZlpqdXc9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCJcXG4nICtcbiAgICAnOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiYkxvSnBEWU5iMW89XCIsXCJjdFwiOlwickszSlo1Vnl4cXNmZ1ZcXG4nICtcbiAgICAnSlZyUjhiZGRmTWU1Y3k5NjNudFJ0M0I3bDcxdHZIVDhLbGVOQmx6UE42VlBydncxVDlLaFRIUFo4ekRxMXBMTjM5d2RyZ3I0bEQ0XFxuJyArXG4gICAgJzcrRndzY2xxUXNjc2k5N1lXN3BUSGhXQkdHTUNLekl0WFFmZVhZQ1pxdlh1L0JlVjgwVldLd3NvNDB2WjEzcE5XbVpSaGp5LzQwVVxcbicgK1xuICAgICdaMEovVGYrMk51RlNFdUxLem5yZ0Qvb0xKYUFrWVM3ZDFCdCtHVUhXa1huRE9zTHdxYkJMOHk1VFFKa1pycDM3bkRYWFJkUDFJRTFcXG4nICtcbiAgICAnTU9tMkMrR012Ym9Id200YnBLUVJwVlVSZ2p5ay83L1hXWFE3T1V2SUZncTMyNHNRYlFDSFZCL3ZvYVJWRiszeDdTaFJqaUdHOXNFXFxuJyArXG4gICAgJ1cwK1hzYmJhbXJYdkdpZXhBR1BETSsya3VQZS9yQkZoSmdmNEhKbllGQU05c2p6V2RPSWVkaGt1T29rd3FnZDVPcXJlVk1PL2RZRlxcbicgK1xuICAgICdQR0kyOWNucm92OEpwSVF3NWdBcnRsZ1V4T2RlbGcvb0NhUlVyeUhDQUJWUFRPRGJGWXlnZiszSUFnbmcyTStvRXZoMjZnVkZPZnpcXG4nICtcbiAgICAnb1BmQm9xcVhrNi9rV3BjM3p4MmJ5T0IrYzZZemhnOXNSbkY1VW9iTUJsNTBua2xvMWtNLzI0T2Jtc05DUWVWeXVaQVJqUWdwYlp4XFxuJyArXG4gICAgJ3duNWw1MWtudnhtdlFYeHZ3bmZzdWlmamU5R2tFNFR0K3ZZdTQ5bzNWOHZtUmFPeGNFTW56ajVXT0MvTU9iNlFQVDRKeDgvSjlDQlxcbicgK1xuICAgICdWNG5VK012Z1piREpLTXg5a3V5SjYyUGloQnk4dVNFMUpyTmdXVTNhRWt1aDlhRDVIRW9BdHl5NHRCYXRSVHpPTUxTc1NyM2hpaTdcXG4nICtcbiAgICAncFZUQmtmRUZWenNySFJmSWM0RmhzbkZxU0cxeVB0eFE2OEZVZVpOTTIzcENPU0pNY2J6dVAyZGVFd09DTkU1QUZJaFZabUhnNVluXFxuJyArXG4gICAgJ0NYZ2NVd0FIaCthRCtKdjhMTXlIcTBVNkdLa3BnaHU1YnB0VUpjWDZvT3dVb0tEMDROV3VFNlZ2SzBaSmhTcHh4T0xlTEk0WXJ3QVxcbicgK1xuICAgICd0TlZvOUtBZWhXUEhKZmJ4NFh5Qkt1KzNaL21JZlBKMnJ4ejdJemRjaS9CaERLaXVIUlV5blVKNy84VGF4a2pxYTZSQmRGRC9hdm1cXG4nICtcbiAgICAnWjFhOEd5R2x4WWJuRjNPbEpVUzBPcDNsQVhCeWdNeWZacURZYllTZnI3dWZhSWZVTEFBcHhYSVYwK3R5S2VGNzh5QUgvazRHSXZIXFxuJyArXG4gICAgJzhHemtGdTBNU3poV0RkZGVVdUtZNE1lMzZHbVBIZmt6WHcrakd0L0k2UjJ2UFpLVzVSc2ZNb29WN1FLVXJJTnRRVFovNGI4akFzclxcbicgK1xuICAgICdOSnlZWlgxd21qd1F1M1V6cXBOKzRvUGgrV09KVVgxV2VvNUI2Yy80ZTFGbWNoU2lQY0k5eENSNjRNZGRiRmFBL09SZE40cDRjZ0xcXG4nICtcbiAgICAnQjRLM01PcU1wb09DTWdvLytOOUpRcjVGVE1yY3hWU0pXUm03UXJTR1AzZ28ydHl3SDFVdUpPSHhoQXRoZFJ3PT1cIn0nLFxuICBiaXRnb0tleTpcbiAgICAnNzQzNzIwMzljY2Q2YzliMmUxZTE2ZTMyNThmZjMzMDdiMDU1MjdhYzVhMzRlMWI2MDNiN2I3NDM1MzU5OWM1ZWI2ZGU5ZmM1ZjBmXFxuJyArXG4gICAgJzVmNjc3YmZhMWY0MTkxNWQ5ZTFhMmU3OTRmOGQ1ZDk3NzBkMjE5YmY1NDMyYWRmMDQxNWUzJyxcbiAgd2FsbGV0UGFzc3BocmFzZTogJyNCb25kaW9sYTEyMzQnLFxuICB3YWxsZXRBZGRyZXNzOiAnNUM4bkVhcXp3TUxDMkVGalVGY2tDZlBMZUZVVldOcDNGRXJRaU44RDV1MlprV3l0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCB1bnNpZ25lZFN3ZWVwVXNlciA9IHtcbiAgdXNlcktleTpcbiAgICAnOTdkOWRhOGJmNTQ0ZDA3ZjNjN2FlOGVlMDZiYjEyYTYzZjc0NDc4ZDBjNDYxMjAxYWI5NDQyMWE5YzgxZDViMzc5NTUzZjAzMzJkXFxuJyArXG4gICAgJ2FhYTg1Y2I4YzY1ZTFmZTdlNjkwN2M2MjI2OGMwMDgxMmIwOGE0ZTEzNjExNzhlMzA0ZGRiJyxcbiAgYmFja3VwS2V5OlxuICAgICc5N2Q5ZGE4YmY1NDRkMDdmM2M3YWU4ZWUwNmJiMTJhNjNmNzQ0NzhkMGM0NjEyMDFhYjk0NDIxYTljODFkNWIzNzk1NTNmMDMzMmRcXG4nICtcbiAgICAnYWFhODVjYjhjNjVlMWZlN2U2OTA3YzYyMjY4YzAwODEyYjA4YTRlMTM2MTE3OGUzMDRkZGInLFxuICBiaXRnb0tleTpcbiAgICAnOTdkOWRhOGJmNTQ0ZDA3ZjNjN2FlOGVlMDZiYjEyYTYzZjc0NDc4ZDBjNDYxMjAxYWI5NDQyMWE5YzgxZDViMzc5NTUzZjAzMzJkXFxuJyArXG4gICAgJ2FhYTg1Y2I4YzY1ZTFmZTdlNjkwN2M2MjI2OGMwMDgxMmIwOGE0ZTEzNjExNzhlMzA0ZGRiJyxcbiAgd2FsbGV0UGFzc3BocmFzZTogJyNCb25kaW9sYTEyMzQnLFxuICB3YWxsZXRBZGRyZXNzOiAnNURuWlFxYnh0QjNDV2tMZ2ZBNndwcWRrQ2Q5QnE3QVg0OVJwTFBKd1c5bXpvVDdzJyxcbn07XG5cbmV4cG9ydCBjb25zdCB0ZXN0bmV0QmxvY2sgPSB7XG4gIGJsb2NrTnVtYmVyOiAxMjY0MDI3NyxcbiAgaGFzaDogJzB4Mzc3MTEwMTk2OWNjNWNmMWIzN2RiMGJkY2U1ODlmZTkxNzRhMWI4MjAzNDFjNGQzNjczY2UzMDEzNTJhM2Q0MicsXG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=polyx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyx.d.ts","sourceRoot":"","sources":["../../../test/unit/polyx.ts"],"names":[],"mappings":""}
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
41
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
42
+ const src_1 = require("../../src");
43
+ const constants_1 = require("../../src/lib/constants");
44
+ const utils_1 = __importDefault(require("../../src/lib/utils"));
45
+ const statics_1 = require("@bitgo-beta/statics");
46
+ const sinon = __importStar(require("sinon"));
47
+ const testData = __importStar(require("../resources/wrwUsers"));
48
+ const mocha_1 = require("mocha");
49
+ const resources_1 = require("../resources");
50
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
51
+ const lib_1 = require("../../src/lib");
52
+ const resources_2 = require("../../src/resources");
53
+ describe('Polyx:', function () {
54
+ let bitgo;
55
+ let baseCoin;
56
+ before(function () {
57
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
58
+ bitgo.safeRegister('polyx', src_1.Polyx.createInstance);
59
+ bitgo.safeRegister('tpolyx', src_1.Tpolyx.createInstance);
60
+ bitgo.initializeTestVars();
61
+ baseCoin = bitgo.coin('tpolyx');
62
+ });
63
+ describe('Address Format Constants', function () {
64
+ it('should have the correct address format constants', function () {
65
+ // Verify the constants are defined correctly
66
+ constants_1.POLYX_ADDRESS_FORMAT.should.equal(12);
67
+ constants_1.TPOLYX_ADDRESS_FORMAT.should.equal(42);
68
+ });
69
+ });
70
+ describe('Recover Transactions:', function () {
71
+ const sandBox = sinon.createSandbox();
72
+ const recoveryDestination = '5H56f31hSYGCRV3URjQHv2Cc4ZSkJNHTM8MKGtkkV6hzCqN7';
73
+ const nonce = 0;
74
+ let accountInfoCB;
75
+ let headerInfoCB;
76
+ let getFeeCB;
77
+ let getMaterialCB;
78
+ beforeEach(function () {
79
+ accountInfoCB = sandBox.stub(src_1.Polyx.prototype, 'getAccountInfo');
80
+ headerInfoCB = sandBox.stub(src_1.Polyx.prototype, 'getHeaderInfo');
81
+ getFeeCB = sandBox.stub(src_1.Polyx.prototype, 'getFee');
82
+ getMaterialCB = sandBox.stub(src_1.Polyx.prototype, 'getMaterial');
83
+ getMaterialCB.resolves(utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type));
84
+ });
85
+ (0, mocha_1.afterEach)(function () {
86
+ sandBox.restore();
87
+ });
88
+ it('should generate unsigned sweep correctly', async function () {
89
+ accountInfoCB
90
+ .withArgs(testData.unsignedSweepUser.walletAddress)
91
+ .resolves({ nonce: 0, freeBalance: 100007000000 });
92
+ headerInfoCB.resolves({
93
+ headerNumber: testData.testnetBlock.blockNumber,
94
+ headerHash: testData.testnetBlock.hash,
95
+ });
96
+ getFeeCB.withArgs(recoveryDestination, testData.unsignedSweepUser.walletAddress, 100007000000).resolves(74401);
97
+ const commonKeyChain = testData.unsignedSweepUser.bitgoKey;
98
+ const unsigned = await baseCoin.recover({ bitgoKey: commonKeyChain, recoveryDestination });
99
+ unsigned.txRequests.should.not.be.undefined();
100
+ unsigned.txRequests.length.should.equal(1);
101
+ unsigned.txRequests[0].transactions.length.should.equal(1);
102
+ unsigned.txRequests[0].walletCoin.should.equal('tpolyx');
103
+ unsigned.txRequests[0].transactions[0].unsignedTx.should.not.be.undefined();
104
+ unsigned.txRequests[0].transactions[0].unsignedTx.serializedTx.should.not.be.undefined();
105
+ unsigned.txRequests[0].transactions[0].unsignedTx.scanIndex.should.equal(0);
106
+ unsigned.txRequests[0].transactions[0].unsignedTx.coin.should.equal('tpolyx');
107
+ unsigned.txRequests[0].transactions[0].unsignedTx.signableHex.should.not.be.undefined();
108
+ unsigned.txRequests[0].transactions[0].unsignedTx.derivationPath.should.equal('m/0');
109
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.should.not.be.undefined();
110
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.inputs.should.not.be.undefined();
111
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.inputs.length.should.equal(1);
112
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.inputs[0].address.should.equal('5DnZQqbxtB3CWkLgfA6wpqdkCd9Bq7AX49RpLPJwW9mzoT7s');
113
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.inputs[0].valueString.should.equal('100006255990');
114
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.inputs[0].value.should.equal(100006255990);
115
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.outputs.should.not.be.undefined();
116
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.outputs.length.should.equal(1);
117
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.outputs[0].address.should.equal('5H56f31hSYGCRV3URjQHv2Cc4ZSkJNHTM8MKGtkkV6hzCqN7');
118
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.outputs[0].valueString.should.equal('100006255990');
119
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.outputs[0].coinName.should.equal('tpolyx');
120
+ unsigned.txRequests[0].transactions[0].unsignedTx.parsedTx.type.should.equal('');
121
+ unsigned.txRequests[0].transactions[0].unsignedTx.feeInfo.should.not.be.undefined();
122
+ unsigned.txRequests[0].transactions[0].unsignedTx.feeInfo.fee.should.equal(0);
123
+ unsigned.txRequests[0].transactions[0].unsignedTx.feeInfo.feeString.should.equal('0');
124
+ unsigned.txRequests[0].transactions[0].unsignedTx.coinSpecific.should.not.be.undefined();
125
+ unsigned.txRequests[0].transactions[0].unsignedTx.coinSpecific.firstValid.should.not.be.undefined();
126
+ unsigned.txRequests[0].transactions[0].unsignedTx.coinSpecific.maxDuration.should.equal(2400);
127
+ unsigned.txRequests[0].transactions[0].unsignedTx.coinSpecific.commonKeychain.should.equal('97d9da8bf544d07f3c7ae8ee06bb12a63f74478d0c461201ab94421a9c81d5b379553f0332daaa85cb8c65e1fe7e6907c62268c00812b08a4e1361178e304ddb');
128
+ });
129
+ it('should recover a tx for non-bitgo recoveries', async function () {
130
+ accountInfoCB.withArgs(testData.wrwUser.walletAddress).resolves({ nonce: 0, freeBalance: 100007000000 });
131
+ headerInfoCB.resolves({
132
+ headerNumber: testData.testnetBlock.blockNumber,
133
+ headerHash: testData.testnetBlock.hash,
134
+ });
135
+ getFeeCB.withArgs(recoveryDestination, testData.wrwUser.walletAddress, 100007000000).resolves(74401);
136
+ const res = await baseCoin.recover({
137
+ userKey: testData.wrwUser.userKey,
138
+ backupKey: testData.wrwUser.backupKey,
139
+ bitgoKey: testData.wrwUser.bitgoKey,
140
+ walletPassphrase: testData.wrwUser.walletPassphrase,
141
+ recoveryDestination: recoveryDestination,
142
+ });
143
+ res.should.not.be.empty();
144
+ res.should.hasOwnProperty('serializedTx');
145
+ res.should.hasOwnProperty('scanIndex');
146
+ const txBuilder = baseCoin.getBuilder().from(res.serializedTx);
147
+ txBuilder
148
+ .validity({
149
+ firstValid: testData.testnetBlock.blockNumber,
150
+ maxDuration: baseCoin.SWEEP_TXN_DURATION,
151
+ })
152
+ .referenceBlock(testData.testnetBlock.hash);
153
+ const tx = await txBuilder.build();
154
+ const txJson = tx.toJson();
155
+ should_1.default.deepEqual(txJson.sender, testData.wrwUser.walletAddress);
156
+ should_1.default.deepEqual(txJson.blockNumber, testData.testnetBlock.blockNumber);
157
+ should_1.default.deepEqual(txJson.referenceBlock, testData.testnetBlock.hash);
158
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
159
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
160
+ should_1.default.deepEqual(txJson.nonce, nonce);
161
+ should_1.default.deepEqual(txJson.tip, 0);
162
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
163
+ should_1.default.deepEqual(txJson.eraPeriod, baseCoin.SWEEP_TXN_DURATION);
164
+ });
165
+ it('should recover a txn for unsigned-sweep recoveries', async function () {
166
+ accountInfoCB
167
+ .withArgs(testData.unsignedSweepUser.walletAddress)
168
+ .resolves({ nonce: 0, freeBalance: 100007000000 });
169
+ headerInfoCB.resolves({
170
+ headerNumber: testData.testnetBlock.blockNumber,
171
+ headerHash: testData.testnetBlock.hash,
172
+ });
173
+ getFeeCB.withArgs(recoveryDestination, testData.unsignedSweepUser.walletAddress, 100007000000).resolves(74401);
174
+ const res = await baseCoin.recover({
175
+ bitgoKey: testData.unsignedSweepUser.bitgoKey,
176
+ recoveryDestination: recoveryDestination,
177
+ });
178
+ res.should.not.be.empty();
179
+ res.txRequests[0].transactions[0].unsignedTx.should.hasOwnProperty('serializedTx');
180
+ res.txRequests[0].transactions[0].unsignedTx.should.hasOwnProperty('scanIndex');
181
+ const txBuilder = baseCoin.getBuilder().from(res.txRequests[0].transactions[0].unsignedTx.serializedTx);
182
+ txBuilder
183
+ .validity({
184
+ firstValid: testData.testnetBlock.blockNumber,
185
+ maxDuration: baseCoin.SWEEP_TXN_DURATION,
186
+ })
187
+ .referenceBlock(testData.testnetBlock.hash)
188
+ .sender({ address: testData.unsignedSweepUser.walletAddress });
189
+ const tx = await txBuilder.build();
190
+ const txJson = tx.toJson();
191
+ should_1.default.deepEqual(txJson.sender, testData.unsignedSweepUser.walletAddress);
192
+ should_1.default.deepEqual(txJson.blockNumber, testData.testnetBlock.blockNumber);
193
+ should_1.default.deepEqual(txJson.referenceBlock, testData.testnetBlock.hash);
194
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
195
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
196
+ should_1.default.deepEqual(txJson.nonce, 0);
197
+ should_1.default.deepEqual(txJson.tip, 0);
198
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
199
+ should_1.default.deepEqual(txJson.eraPeriod, baseCoin.SWEEP_TXN_DURATION);
200
+ });
201
+ });
202
+ describe('Token Enablement:', function () {
203
+ it('should have correct token enablement config', function () {
204
+ const config = baseCoin.getTokenEnablementConfig();
205
+ should_1.default.exist(config);
206
+ config.requiresTokenEnablement.should.equal(true);
207
+ config.supportsMultipleTokenEnablements.should.equal(false);
208
+ });
209
+ it('should validate wallet type for token enablement', function () {
210
+ const config = baseCoin.getTokenEnablementConfig();
211
+ (() => config.validateWallet('custodial')).should.not.throw();
212
+ (() => config.validateWallet('hot')).should.throw(/Token enablement for Polymesh \(polyx\) is only supported for custodial wallets/);
213
+ (() => config.validateWallet('cold')).should.throw(/Token enablement for Polymesh \(polyx\) is only supported for custodial wallets/);
214
+ });
215
+ });
216
+ describe('verifyTransaction', function () {
217
+ const transferTo = '5F8jxKE81GhFrphyfMFr5UjeAz5wS4AaZFmeFPnf8wTetD72';
218
+ const transferAmount = '2000000000';
219
+ const wrongAddress = '5GhbC6n2pUFrX98DwyPit67fB5AwQvVCwZ4j2HKA7a4dUK4y';
220
+ describe('transfer transaction', function () {
221
+ it('should return true when address and amount match', async function () {
222
+ const result = await baseCoin.verifyTransaction({
223
+ txPrebuild: { txHex: resources_1.rawTx.transfer.signed },
224
+ txParams: { recipients: [{ address: transferTo, amount: transferAmount }] },
225
+ });
226
+ result.should.be.true();
227
+ });
228
+ it('should throw TxIntentMismatchRecipientError for address mismatch', async function () {
229
+ await baseCoin
230
+ .verifyTransaction({
231
+ txPrebuild: { txHex: resources_1.rawTx.transfer.signed },
232
+ txParams: { recipients: [{ address: wrongAddress, amount: transferAmount }] },
233
+ })
234
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
235
+ });
236
+ it('should throw TxIntentMismatchRecipientError for amount mismatch', async function () {
237
+ await baseCoin
238
+ .verifyTransaction({
239
+ txPrebuild: { txHex: resources_1.rawTx.transfer.signed },
240
+ txParams: { recipients: [{ address: transferTo, amount: '1' }] },
241
+ })
242
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
243
+ });
244
+ });
245
+ describe('guard cases', function () {
246
+ it('should throw when txHex is missing', async function () {
247
+ await baseCoin
248
+ .verifyTransaction({
249
+ txPrebuild: {},
250
+ txParams: { recipients: [{ address: transferTo, amount: transferAmount }] },
251
+ })
252
+ .should.be.rejectedWith('missing txHex in txPrebuild');
253
+ });
254
+ it('should throw when recipients has more than 1 entry', async function () {
255
+ await baseCoin
256
+ .verifyTransaction({
257
+ txPrebuild: { txHex: resources_1.rawTx.transfer.signed },
258
+ txParams: {
259
+ recipients: [
260
+ { address: transferTo, amount: transferAmount },
261
+ { address: wrongAddress, amount: transferAmount },
262
+ ],
263
+ },
264
+ })
265
+ .should.be.rejectedWith(/support sending to more than 1 destination address/);
266
+ });
267
+ it('should throw when recipients is an empty array', async function () {
268
+ await baseCoin
269
+ .verifyTransaction({
270
+ txPrebuild: { txHex: resources_1.rawTx.transfer.signed },
271
+ txParams: { recipients: [] },
272
+ })
273
+ .should.be.rejectedWith('missing recipients in txParams');
274
+ });
275
+ });
276
+ describe('token enablement (preApproveAsset) transaction', function () {
277
+ it('should return true for enabletoken type with recipients (wallet root address)', async function () {
278
+ // buildTokenEnablements sets recipients[0].address = wallet rootAddress and type = 'enabletoken'.
279
+ // verifyTransaction must short-circuit before the _to check since preApproveAsset has no destination.
280
+ const walletAddress = '5F8jxKE81GhFrphyfMFr5UjeAz5wS4AaZFmeFPnf8wTetD72';
281
+ const result = await baseCoin.verifyTransaction({
282
+ txPrebuild: { txHex: resources_1.rawTx.preApproveAsset.signed },
283
+ txParams: {
284
+ type: 'enabletoken',
285
+ recipients: [{ address: walletAddress, amount: '0', tokenName: 'tpolyx:sometoken' }],
286
+ },
287
+ });
288
+ result.should.be.true();
289
+ });
290
+ it('should return true for enabletoken type with no recipients', async function () {
291
+ const result = await baseCoin.verifyTransaction({
292
+ txPrebuild: { txHex: resources_1.rawTx.preApproveAsset.signed },
293
+ txParams: { type: 'enabletoken' },
294
+ });
295
+ result.should.be.true();
296
+ });
297
+ });
298
+ describe('v8 transfer with coinSpecific.material', function () {
299
+ const v8Amount = '1000000';
300
+ const v8Receiver = resources_1.accounts.account2;
301
+ const v8Sender = resources_1.accounts.account1;
302
+ let v8SignedTxHex;
303
+ before(async function () {
304
+ // Build a signed v8 transfer tx using testnetV8Material.
305
+ // The server embeds this material in coinSpecific during prebuild so that
306
+ // verifyTransaction can decode txHex built against a chain spec newer than
307
+ // the SDK's hardcoded v7 material (CECHO-1471).
308
+ const builder = new lib_1.V8TransferBuilder(statics_1.coins.get('tpolyx'))
309
+ .amount(v8Amount)
310
+ .to({ address: v8Receiver.address })
311
+ .sender({ address: v8Sender.address })
312
+ .memo('0')
313
+ .validity({ firstValid: 3933, maxDuration: 64 })
314
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
315
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
316
+ .fee({ amount: 0, type: 'tip' });
317
+ builder.addSignature({ pub: v8Sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
318
+ const tx = await builder.build();
319
+ v8SignedTxHex = tx.toBroadcastFormat();
320
+ });
321
+ it('verifies a v8 transfer when coinSpecific.material is provided', async function () {
322
+ const result = await baseCoin.verifyTransaction({
323
+ txPrebuild: {
324
+ txHex: v8SignedTxHex,
325
+ coinSpecific: { material: resources_2.testnetV8Material },
326
+ },
327
+ txParams: { recipients: [{ address: v8Receiver.address, amount: v8Amount }] },
328
+ });
329
+ result.should.be.true();
330
+ });
331
+ it('throws TxIntentMismatchRecipientError for address mismatch on v8 transfer', async function () {
332
+ await baseCoin
333
+ .verifyTransaction({
334
+ txPrebuild: {
335
+ txHex: v8SignedTxHex,
336
+ coinSpecific: { material: resources_2.testnetV8Material },
337
+ },
338
+ txParams: { recipients: [{ address: wrongAddress, amount: v8Amount }] },
339
+ })
340
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
341
+ });
342
+ it('throws TxIntentMismatchRecipientError for amount mismatch on v8 transfer', async function () {
343
+ await baseCoin
344
+ .verifyTransaction({
345
+ txPrebuild: {
346
+ txHex: v8SignedTxHex,
347
+ coinSpecific: { material: resources_2.testnetV8Material },
348
+ },
349
+ txParams: { recipients: [{ address: v8Receiver.address, amount: '1' }] },
350
+ })
351
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
352
+ });
353
+ });
354
+ });
355
+ });
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcG9seXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQStEO0FBQy9ELGlEQUErQztBQUMvQyxtQ0FBMEM7QUFDMUMsdURBQXNGO0FBQ3RGLGdFQUF3QztBQUN4QyxpREFBNEM7QUFDNUMsNkNBQStCO0FBQy9CLGdFQUFrRDtBQUNsRCxpQ0FBa0M7QUFDbEMsNENBQXNHO0FBQ3RHLG1EQUFzRTtBQUN0RSx1Q0FBa0Q7QUFDbEQsbURBQXdEO0FBRXhELFFBQVEsQ0FBQyxRQUFRLEVBQUU7SUFDakIsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBRWIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsWUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFO1FBQ25DLEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtZQUNyRCw2Q0FBNkM7WUFDN0MsZ0NBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxpQ0FBcUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FB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QUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RixRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3ZGLGtEQUFrRCxDQUNuRCxDQUFDO1lBQ0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMs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QUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgeyBQb2x5eCwgVHBvbHl4IH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IFBPTFlYX0FERFJFU1NfRk9STUFULCBUUE9MWVhfQUREUkVTU19GT1JNQVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3dyd1VzZXJzJztcbmltcG9ydCB7IGFmdGVyRWFjaCB9IGZyb20gJ21vY2hhJztcbmltcG9ydCB7IGdlbmVzaXNIYXNoLCBzcGVjVmVyc2lvbiwgdHhWZXJzaW9uLCByYXdUeCwgYWNjb3VudHMsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVjhUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eDonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgYmFzZUNvaW47XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3BvbHl4JywgUG9seXguY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndHBvbHl4JywgVHBvbHl4LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiYXNlQ29pbiA9IGJpdGdvLmNvaW4oJ3Rwb2x5eCcpIGFzIFRwb2x5eDtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgRm9ybWF0IENvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgYWRkcmVzcyBmb3JtYXQgY29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVmVyaWZ5IHRoZSBjb25zdGFudHMgYXJlIGRlZmluZWQgY29ycmVjdGx5XG4gICAgICBQT0xZWF9BRERSRVNTX0ZPUk1BVC5zaG91bGQuZXF1YWwoMTIpO1xuICAgICAgVFBPTFlYX0FERFJFU1NfRk9STUFULnNob3VsZC5lcXVhbCg0Mik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyIFRyYW5zYWN0aW9uczonLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gJzVINTZmMzFoU1lHQ1JWM1VSalFIdjJDYzRaU2tKTkhUTThNS0d0a2tWNmh6Q3FONyc7XG4gICAgY29uc3Qgbm9uY2UgPSAwO1xuICAgIGxldCBhY2NvdW50SW5mb0NCO1xuICAgIGxldCBoZWFkZXJJbmZvQ0I7XG4gICAgbGV0IGdldEZlZUNCO1xuICAgIGxldCBnZXRNYXRlcmlhbENCO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBhY2NvdW50SW5mb0NCID0gc2FuZEJveC5zdHViKFBvbHl4LnByb3RvdHlwZSwgJ2dldEFjY291bnRJbmZvJyBhcyBrZXlvZiBQb2x5eCk7XG4gICAgICBoZWFkZXJJbmZvQ0IgPSBzYW5kQm94LnN0dWIoUG9seXgucHJvdG90eXBlLCAnZ2V0SGVhZGVySW5mbycgYXMga2V5b2YgUG9seXgpO1xuICAgICAgZ2V0RmVlQ0IgPSBzYW5kQm94LnN0dWIoUG9seXgucHJvdG90eXBlLCAnZ2V0RmVlJyBhcyBrZXlvZiBQb2x5eCk7XG4gICAgICBnZXRNYXRlcmlhbENCID0gc2FuZEJveC5zdHViKFBvbHl4LnByb3RvdHlwZSwgJ2dldE1hdGVyaWFsJyBhcyBrZXlvZiBQb2x5eCk7XG4gICAgICBnZXRNYXRlcmlhbENCLnJlc29sdmVzKHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIHVuc2lnbmVkIHN3ZWVwIGNvcnJlY3RseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjY291bnRJbmZvQ0JcbiAgICAgICAgLndpdGhBcmdzKHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MpXG4gICAgICAgIC5yZXNvbHZlcyh7IG5vbmNlOiAwLCBmcmVlQmFsYW5jZTogMTAwMDA3MDAwMDAwIH0pO1xuICAgICAgaGVhZGVySW5mb0NCLnJlc29sdmVzKHtcbiAgICAgICAgaGVhZGVyTnVtYmVyOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIsXG4gICAgICAgIGhlYWRlckhhc2g6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoLFxuICAgICAgfSk7XG4gICAgICBnZXRGZWVDQi53aXRoQXJncyhyZWNvdmVyeURlc3RpbmF0aW9uLCB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzLCAxMDAwMDcwMDAwMDApLnJlc29sdmVzKDc0NDAxKTtcblxuICAgICAgY29uc3QgY29tbW9uS2V5Q2hhaW4gPSB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci5iaXRnb0tleTtcblxuICAgICAgY29uc3QgdW5zaWduZWQgPSBhd2FpdCBiYXNlQ29pbi5yZWNvdmVyKHsgYml0Z29LZXk6IGNvbW1vbktleUNoYWluLCByZWNvdmVyeURlc3RpbmF0aW9uIH0pO1xuXG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS53YWxsZXRDb2luLnNob3VsZC5lcXVhbCgndHBvbHl4Jyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeC5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luLnNob3VsZC5lcXVhbCgndHBvbHl4Jyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNpZ25hYmxlSGV4LnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbCgnbS8wJyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LmlucHV0cy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKFxuICAgICAgICAnNURuWlFxYnh0QjNDV2tMZ2ZBNndwcWRrQ2Q5QnE3QVg0OVJwTFBKd1c5bXpvVDdzJ1xuICAgICAgKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguaW5wdXRzWzBdLnZhbHVlU3RyaW5nLnNob3VsZC5lcXVhbCgnMTAwMDA2MjU1OTkwJyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoMTAwMDA2MjU1OTkwKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgub3V0cHV0cy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICc1SDU2ZjMxaFNZR0NSVjNVUmpRSHYyQ2M0WlNrSk5IVE04TUtHdGtrVjZoekNxTjcnXG4gICAgICApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5vdXRwdXRzWzBdLnZhbHVlU3RyaW5nLnNob3VsZC5lcXVhbCgnMTAwMDA2MjU1OTkwJyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4Lm91dHB1dHNbMF0uY29pbk5hbWUuc2hvdWxkLmVxdWFsKCd0cG9seXgnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgudHlwZS5zaG91bGQuZXF1YWwoJycpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5mZWVJbmZvLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmZlZUluZm8uZmVlLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguZmVlSW5mby5mZWVTdHJpbmcuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMuZmlyc3RWYWxpZC5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMubWF4RHVyYXRpb24uc2hvdWxkLmVxdWFsKDI0MDApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMuY29tbW9uS2V5Y2hhaW4uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnOTdkOWRhOGJmNTQ0ZDA3ZjNjN2FlOGVlMDZiYjEyYTYzZjc0NDc4ZDBjNDYxMjAxYWI5NDQyMWE5YzgxZDViMzc5NTUzZjAzMzJkYWFhODVjYjhjNjVlMWZlN2U2OTA3YzYyMjY4YzAwODEyYjA4YTRlMTM2MTE3OGUzMDRkZGInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHggZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYWNjb3VudEluZm9DQi53aXRoQXJncyh0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MpLnJlc29sdmVzKHsgbm9uY2U6IDAsIGZyZWVCYWxhbmNlOiAxMDAwMDcwMDAwMDAgfSk7XG4gICAgICBoZWFkZXJJbmZvQ0IucmVzb2x2ZXMoe1xuICAgICAgICBoZWFkZXJOdW1iZXI6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcixcbiAgICAgICAgaGVhZGVySGFzaDogdGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gsXG4gICAgICB9KTtcbiAgICAgIGdldEZlZUNCLndpdGhBcmdzKHJlY292ZXJ5RGVzdGluYXRpb24sIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzcywgMTAwMDA3MDAwMDAwKS5yZXNvbHZlcyg3NDQwMSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2VDb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGJhc2VDb2luLmdldEJ1aWxkZXIoKS5mcm9tKHJlcy5zZXJpYWxpemVkVHgpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC52YWxpZGl0eSh7XG4gICAgICAgICAgZmlyc3RWYWxpZDogdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyLFxuICAgICAgICAgIG1heER1cmF0aW9uOiBiYXNlQ29pbi5TV0VFUF9UWE5fRFVSQVRJT04sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayh0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIG5vbmNlKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHR4VmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIGJhc2VDb2luLlNXRUVQX1RYTl9EVVJBVElPTik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIHVuc2lnbmVkLXN3ZWVwIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhY2NvdW50SW5mb0NCXG4gICAgICAgIC53aXRoQXJncyh0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzKVxuICAgICAgICAucmVzb2x2ZXMoeyBub25jZTogMCwgZnJlZUJhbGFuY2U6IDEwMDAwNzAwMDAwMCB9KTtcbiAgICAgIGhlYWRlckluZm9DQi5yZXNvbHZlcyh7XG4gICAgICAgIGhlYWRlck51bWJlcjogdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyLFxuICAgICAgICBoZWFkZXJIYXNoOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCxcbiAgICAgIH0pO1xuICAgICAgZ2V0RmVlQ0Iud2l0aEFyZ3MocmVjb3ZlcnlEZXN0aW5hdGlvbiwgdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcywgMTAwMDA3MDAwMDAwKS5yZXNvbHZlcyg3NDQwMSk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJhc2VDb2luLnJlY292ZXIoe1xuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBiYXNlQ29pbi5nZXRCdWlsZGVyKCkuZnJvbShyZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHgpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC52YWxpZGl0eSh7XG4gICAgICAgICAgZmlyc3RWYWxpZDogdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyLFxuICAgICAgICAgIG1heER1cmF0aW9uOiBiYXNlQ29pbi5TV0VFUF9UWE5fRFVSQVRJT04sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayh0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MgfSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHR4VmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIGJhc2VDb2luLlNXRUVQX1RYTl9EVVJBVElPTik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUb2tlbiBFbmFibGVtZW50OicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhdmUgY29ycmVjdCB0b2tlbiBlbmFibGVtZW50IGNvbmZpZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGJhc2VDb2luLmdldFRva2VuRW5hYmxlbWVudENvbmZpZygpO1xuICAgICAgc2hvdWxkLmV4aXN0KGNvbmZpZyk7XG4gICAgICBjb25maWcucmVxdWlyZXNUb2tlbkVuYWJsZW1lbnQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgY29uZmlnLnN1cHBvcnRzTXVsdGlwbGVUb2tlbkVuYWJsZW1lbnRzLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdhbGxldCB0eXBlIGZvciB0b2tlbiBlbmFibGVtZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29uZmlnID0gYmFzZUNvaW4uZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk7XG4gICAgICAoKCkgPT4gY29uZmlnLnZhbGlkYXRlV2FsbGV0KCdjdXN0b2RpYWwnKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgKCgpID0+IGNvbmZpZy52YWxpZGF0ZVdhbGxldCgnaG90JykpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL1Rva2VuIGVuYWJsZW1lbnQgZm9yIFBvbHltZXNoIFxcKHBvbHl4XFwpIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjdXN0b2RpYWwgd2FsbGV0cy9cbiAgICAgICk7XG4gICAgICAoKCkgPT4gY29uZmlnLnZhbGlkYXRlV2FsbGV0KCdjb2xkJykpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL1Rva2VuIGVuYWJsZW1lbnQgZm9yIFBvbHltZXNoIFxcKHBvbHl4XFwpIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjdXN0b2RpYWwgd2FsbGV0cy9cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2ZXJpZnlUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0cmFuc2ZlclRvID0gJzVGOGp4S0U4MUdoRnJwaHlmTUZyNVVqZUF6NXdTNEFhWkZtZUZQbmY4d1RldEQ3Mic7XG4gICAgY29uc3QgdHJhbnNmZXJBbW91bnQgPSAnMjAwMDAwMDAwMCc7XG4gICAgY29uc3Qgd3JvbmdBZGRyZXNzID0gJzVHaGJDNm4ycFVGclg5OER3eVBpdDY3ZkI1QXdRdlZDd1o0ajJIS0E3YTRkVUs0eSc7XG5cbiAgICBkZXNjcmliZSgndHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYWRkcmVzcyBhbmQgYW1vdW50IG1hdGNoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkIH0sXG4gICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogdHJhbnNmZXJUbywgYW1vdW50OiB0cmFuc2ZlckFtb3VudCB9XSB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IgZm9yIGFkZHJlc3MgbWlzbWF0Y2gnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogd3JvbmdBZGRyZXNzLCBhbW91bnQ6IHRyYW5zZmVyQW1vdW50IH1dIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGZvciBhbW91bnQgbWlzbWF0Y2gnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogdHJhbnNmZXJUbywgYW1vdW50OiAnMScgfV0gfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdndWFyZCBjYXNlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiB0eEhleCBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHRyYW5zZmVyVG8sIGFtb3VudDogdHJhbnNmZXJBbW91bnQgfV0gfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHR4SGV4IGluIHR4UHJlYnVpbGQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gcmVjaXBpZW50cyBoYXMgbW9yZSB0aGFuIDEgZW50cnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICAgIHsgYWRkcmVzczogdHJhbnNmZXJUbywgYW1vdW50OiB0cmFuc2ZlckFtb3VudCB9LFxuICAgICAgICAgICAgICAgIHsgYWRkcmVzczogd3JvbmdBZGRyZXNzLCBhbW91bnQ6IHRyYW5zZmVyQW1vdW50IH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3N1cHBvcnQgc2VuZGluZyB0byBtb3JlIHRoYW4gMSBkZXN0aW5hdGlvbiBhZGRyZXNzLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHJlY2lwaWVudHMgaXMgYW4gZW1wdHkgYXJyYXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW10gfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHJlY2lwaWVudHMgaW4gdHhQYXJhbXMnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Rva2VuIGVuYWJsZW1lbnQgKHByZUFwcHJvdmVBc3NldCkgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBlbmFibGV0b2tlbiB0eXBlIHdpdGggcmVjaXBpZW50cyAod2FsbGV0IHJvb3QgYWRkcmVzcyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGJ1aWxkVG9rZW5FbmFibGVtZW50cyBzZXRzIHJlY2lwaWVudHNbMF0uYWRkcmVzcyA9IHdhbGxldCByb290QWRkcmVzcyBhbmQgdHlwZSA9ICdlbmFibGV0b2tlbicuXG4gICAgICAgIC8vIHZlcmlmeVRyYW5zYWN0aW9uIG11c3Qgc2hvcnQtY2lyY3VpdCBiZWZvcmUgdGhlIF90byBjaGVjayBzaW5jZSBwcmVBcHByb3ZlQXNzZXQgaGFzIG5vIGRlc3RpbmF0aW9uLlxuICAgICAgICBjb25zdCB3YWxsZXRBZGRyZXNzID0gJzVGOGp4S0U4MUdoRnJwaHlmTUZyNVVqZUF6NXdTNEFhWkZtZUZQbmY4d1RldEQ3Mic7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2VDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC5wcmVBcHByb3ZlQXNzZXQuc2lnbmVkIH0sXG4gICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdlbmFibGV0b2tlbicsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB3YWxsZXRBZGRyZXNzLCBhbW91bnQ6ICcwJywgdG9rZW5OYW1lOiAndHBvbHl4OnNvbWV0b2tlbicgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGVuYWJsZXRva2VuIHR5cGUgd2l0aCBubyByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgucHJlQXBwcm92ZUFzc2V0LnNpZ25lZCB9LFxuICAgICAgICAgIHR4UGFyYW1zOiB7IHR5cGU6ICdlbmFibGV0b2tlbicgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndjggdHJhbnNmZXIgd2l0aCBjb2luU3BlY2lmaWMubWF0ZXJpYWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2OEFtb3VudCA9ICcxMDAwMDAwJztcbiAgICAgIGNvbnN0IHY4UmVjZWl2ZXIgPSBhY2NvdW50cy5hY2NvdW50MjtcbiAgICAgIGNvbnN0IHY4U2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG4gICAgICBsZXQgdjhTaWduZWRUeEhleDogc3RyaW5nO1xuXG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBCdWlsZCBhIHNpZ25lZCB2OCB0cmFuc2ZlciB0eCB1c2luZyB0ZXN0bmV0VjhNYXRlcmlhbC5cbiAgICAgICAgLy8gVGhlIHNlcnZlciBlbWJlZHMgdGhpcyBtYXRlcmlhbCBpbiBjb2luU3BlY2lmaWMgZHVyaW5nIHByZWJ1aWxkIHNvIHRoYXRcbiAgICAgICAgLy8gdmVyaWZ5VHJhbnNhY3Rpb24gY2FuIGRlY29kZSB0eEhleCBidWlsdCBhZ2FpbnN0IGEgY2hhaW4gc3BlYyBuZXdlciB0aGFuXG4gICAgICAgIC8vIHRoZSBTREsncyBoYXJkY29kZWQgdjcgbWF0ZXJpYWwgKENFQ0hPLTE0NzEpLlxuICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvaW5zLmdldCgndHBvbHl4JykpXG4gICAgICAgICAgLmFtb3VudCh2OEFtb3VudClcbiAgICAgICAgICAudG8oeyBhZGRyZXNzOiB2OFJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogdjhTZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdjhTZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICB2OFNpZ25lZFR4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndmVyaWZpZXMgYSB2OCB0cmFuc2ZlciB3aGVuIGNvaW5TcGVjaWZpYy5tYXRlcmlhbCBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZUNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4SGV4OiB2OFNpZ25lZFR4SGV4LFxuICAgICAgICAgICAgY29pblNwZWNpZmljOiB7IG1hdGVyaWFsOiB0ZXN0bmV0VjhNYXRlcmlhbCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogdjhSZWNlaXZlci5hZGRyZXNzLCBhbW91bnQ6IHY4QW1vdW50IH1dIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndGhyb3dzIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvciBmb3IgYWRkcmVzcyBtaXNtYXRjaCBvbiB2OCB0cmFuc2ZlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgICAgICB0eEhleDogdjhTaWduZWRUeEhleCxcbiAgICAgICAgICAgICAgY29pblNwZWNpZmljOiB7IG1hdGVyaWFsOiB0ZXN0bmV0VjhNYXRlcmlhbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHdyb25nQWRkcmVzcywgYW1vdW50OiB2OEFtb3VudCB9XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndGhyb3dzIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvciBmb3IgYW1vdW50IG1pc21hdGNoIG9uIHY4IHRyYW5zZmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgICAgIHR4SGV4OiB2OFNpZ25lZFR4SGV4LFxuICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHsgbWF0ZXJpYWw6IHRlc3RuZXRWOE1hdGVyaWFsIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogdjhSZWNlaXZlci5hZGRyZXNzLCBhbW91bnQ6ICcxJyB9XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,4 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ export declare const buildTestConfig: () => Readonly<CoinConfig>;
3
+ export declare const buildMainnetConfig: () => Readonly<CoinConfig>;
4
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAS,MAAM,qBAAqB,CAAC;AASpE,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC,UAAU,CAErD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,QAAQ,CAAC,UAAU,CAExD,CAAC"}