@bitgo/sdk-coin-wemix 1.5.2 → 1.5.3
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.
- package/dist/test/resources.d.ts +29 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +88 -0
- package/dist/test/unit/getBuilder.d.ts +3 -0
- package/dist/test/unit/getBuilder.d.ts.map +1 -0
- package/dist/test/unit/getBuilder.js +10 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +114 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +29 -0
- package/dist/test/unit/wemix.d.ts +2 -0
- package/dist/test/unit/wemix.d.ts.map +1 -0
- package/dist/test/unit/wemix.js +168 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -7
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -203
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { KeyPair } from '@bitgo/abstract-eth';
|
|
2
|
+
export declare const PRIVATE_KEY_1 = "950d23766c0d0adad45a7dcf0db7a93b2c91fe411a5154c9a4ac23758c2ae4d5";
|
|
3
|
+
export declare const KEYPAIR_PRV: KeyPair;
|
|
4
|
+
export declare const SEND_TX_BROADCAST_LEGACY = "0xf901cc02843b9aca0083b8a1a0948f977e912ef500548a0c3be6ddde9899f1199b8180b901643912521500000000000000000000000019645032c7f1533395d44a629462e751084d3e4c000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005ec67da8000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004100dd3c4df19cf8156e9ad14db46d8ffd07c943ebbbab691ebaee58535fb1b0890e70a6cd300f2c4088d2cebec99ba24ae9495468c3091ac6a884efd780d353361c000000000000000000000000000000000000000000000000000000000000008208d4a0fa51ffcbc4d852a5f2f7870f5706b8798d81939fe77aead4052335bcd497f145a045493236056765d1cd847aca650bbe97f7148c1ea41143154ed1a5973184ba15";
|
|
5
|
+
export declare const SEND_TX_AMOUNT_ZERO_BROADCAST = "0xf901cc02843b9aca0083b8a1a0948f977e912ef500548a0c3be6ddde9899f1199b8180b901643912521500000000000000000000000019645032c7f1533395d44a629462e751084d3e4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005ec67da8000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000411badc5af505b10ebf6bc80322567ac71af7970a9ac1ebdf33f656bbfa2b40f652239e4ecd9b7b391db68fb84467e11dacb5d54f38770d79f4c95c9c1d4eba0a21c000000000000000000000000000000000000000000000000000000000000008208d3a01c830bee5c43a339f4f6bec2e705045986482d72cf0c504183c121a4c246a57ba068b7460d6e0b0e5b354053c78cd412286adc79e21ec3bb9169930b47e455b071";
|
|
6
|
+
export declare const mockDataUnsignedSweep: {
|
|
7
|
+
userKey: string;
|
|
8
|
+
backupKey: string;
|
|
9
|
+
derivationPath: string;
|
|
10
|
+
derivationSeed: string;
|
|
11
|
+
walletBaseAddress: string;
|
|
12
|
+
recoveryDestination: string;
|
|
13
|
+
getTxListRequest: Record<string, string>;
|
|
14
|
+
getTxListResponse: Record<string, unknown>;
|
|
15
|
+
getBalanceRequest: Record<string, string>;
|
|
16
|
+
getBalanceResponse: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
export declare const mockDataNonBitGoRecovery: {
|
|
19
|
+
recoveryDestination: string;
|
|
20
|
+
userKeyData: string;
|
|
21
|
+
backupKeyData: string;
|
|
22
|
+
walletPassphrase: string;
|
|
23
|
+
walletRootAddress: string;
|
|
24
|
+
getTxListRequest: Record<string, string>;
|
|
25
|
+
getTxListResponse: Record<string, unknown>;
|
|
26
|
+
getBalanceRequest: Record<string, string>;
|
|
27
|
+
getBalanceResponse: Record<string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,eAAO,MAAM,aAAa,qEAAqE,CAAC;AAEhG,eAAO,MAAM,WAAW,SAAsC,CAAC;AAE/D,eAAO,MAAM,wBAAwB,q6BAC+3B,CAAC;AAEr6B,eAAO,MAAM,6BAA6B,q6BAC03B,CAAC;AAkCr6B,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAajC,CAAC;AAkCF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAYpC,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockDataNonBitGoRecovery = exports.mockDataUnsignedSweep = exports.SEND_TX_AMOUNT_ZERO_BROADCAST = exports.SEND_TX_BROADCAST_LEGACY = exports.KEYPAIR_PRV = exports.PRIVATE_KEY_1 = void 0;
|
|
4
|
+
const abstract_eth_1 = require("@bitgo/abstract-eth");
|
|
5
|
+
exports.PRIVATE_KEY_1 = '950d23766c0d0adad45a7dcf0db7a93b2c91fe411a5154c9a4ac23758c2ae4d5';
|
|
6
|
+
exports.KEYPAIR_PRV = new abstract_eth_1.KeyPair({ prv: exports.PRIVATE_KEY_1 });
|
|
7
|
+
exports.SEND_TX_BROADCAST_LEGACY = '0xf901cc02843b9aca0083b8a1a0948f977e912ef500548a0c3be6ddde9899f1199b8180b901643912521500000000000000000000000019645032c7f1533395d44a629462e751084d3e4c000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005ec67da8000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004100dd3c4df19cf8156e9ad14db46d8ffd07c943ebbbab691ebaee58535fb1b0890e70a6cd300f2c4088d2cebec99ba24ae9495468c3091ac6a884efd780d353361c000000000000000000000000000000000000000000000000000000000000008208d4a0fa51ffcbc4d852a5f2f7870f5706b8798d81939fe77aead4052335bcd497f145a045493236056765d1cd847aca650bbe97f7148c1ea41143154ed1a5973184ba15';
|
|
8
|
+
exports.SEND_TX_AMOUNT_ZERO_BROADCAST = '0xf901cc02843b9aca0083b8a1a0948f977e912ef500548a0c3be6ddde9899f1199b8180b901643912521500000000000000000000000019645032c7f1533395d44a629462e751084d3e4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005ec67da8000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000411badc5af505b10ebf6bc80322567ac71af7970a9ac1ebdf33f656bbfa2b40f652239e4ecd9b7b391db68fb84467e11dacb5d54f38770d79f4c95c9c1d4eba0a21c000000000000000000000000000000000000000000000000000000000000008208d3a01c830bee5c43a339f4f6bec2e705045986482d72cf0c504183c121a4c246a57ba068b7460d6e0b0e5b354053c78cd412286adc79e21ec3bb9169930b47e455b071';
|
|
9
|
+
const getTxListRequestUnsignedSweep = {
|
|
10
|
+
chainid: '1112',
|
|
11
|
+
module: 'account',
|
|
12
|
+
action: 'txlist',
|
|
13
|
+
address: '0x742838193c4169f6b2ba7b0e03f723c3ba0928e1',
|
|
14
|
+
};
|
|
15
|
+
const getTxListResponseUnsignedSweep = {
|
|
16
|
+
status: '1',
|
|
17
|
+
result: [
|
|
18
|
+
{
|
|
19
|
+
hash: '0xede855d43d70ea1bb75db63d4f75113dae0845f0d4bdb0b2d8bda55249c70812',
|
|
20
|
+
nonce: '23',
|
|
21
|
+
from: '0x742838193c4169f6b2ba7b0e03f723c3ba0928e1',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
message: 'OK',
|
|
25
|
+
};
|
|
26
|
+
const getBalanceRequestUnsignedSweep = {
|
|
27
|
+
chainid: '1112',
|
|
28
|
+
module: 'account',
|
|
29
|
+
action: 'balance',
|
|
30
|
+
address: '0x742838193c4169f6b2ba7b0e03f723c3ba0928e1',
|
|
31
|
+
};
|
|
32
|
+
const getBalanceResponseUnsignedSweep = {
|
|
33
|
+
status: '1',
|
|
34
|
+
result: '100000000000000000',
|
|
35
|
+
message: 'OK',
|
|
36
|
+
};
|
|
37
|
+
exports.mockDataUnsignedSweep = {
|
|
38
|
+
userKey: '029d2ded2d39ee7cd8d8bbba8b25e4c60bb09297936fa6b223de1f495b5ee20dcaf762367f9691f7719cb5e13e59d725669a18aad1e2522dd141fa4c7fd3d25c17',
|
|
39
|
+
backupKey: '029d2ded2d39ee7cd8d8bbba8b25e4c60bb09297936fa6b223de1f495b5ee20dcaf762367f9691f7719cb5e13e59d725669a18aad1e2522dd141fa4c7fd3d25c17',
|
|
40
|
+
derivationPath: 'm/0',
|
|
41
|
+
derivationSeed: '',
|
|
42
|
+
walletBaseAddress: '0x742838193c4169f6b2ba7b0e03f723c3ba0928e1',
|
|
43
|
+
recoveryDestination: '0xd76b586901850f2c656db0cbef795c0851bbec35',
|
|
44
|
+
getTxListRequest: getTxListRequestUnsignedSweep,
|
|
45
|
+
getTxListResponse: getTxListResponseUnsignedSweep,
|
|
46
|
+
getBalanceRequest: getBalanceRequestUnsignedSweep,
|
|
47
|
+
getBalanceResponse: getBalanceResponseUnsignedSweep,
|
|
48
|
+
};
|
|
49
|
+
const getTxListRequestNonBitGoRecovery = {
|
|
50
|
+
chainid: '1112',
|
|
51
|
+
module: 'account',
|
|
52
|
+
action: 'txlist',
|
|
53
|
+
address: '0xcf05f9c25579832d2237e52ffb4d16ca3153bb15',
|
|
54
|
+
};
|
|
55
|
+
const getTxListResponseNonBitGoRecovery = {
|
|
56
|
+
status: '1',
|
|
57
|
+
result: [
|
|
58
|
+
{
|
|
59
|
+
hash: '0xede855d43d70ea1bb75db63d4f75113dae0845f0d4bdb0b2d8bda55249c70812',
|
|
60
|
+
nonce: '23',
|
|
61
|
+
from: '0xcf05f9c25579832d2237e52ffb4d16ca3153bb15',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
message: 'OK',
|
|
65
|
+
};
|
|
66
|
+
const getBalanceRequestNonBitGoRecovery = {
|
|
67
|
+
chainid: '1112',
|
|
68
|
+
module: 'account',
|
|
69
|
+
action: 'balance',
|
|
70
|
+
address: '0xcf05f9c25579832d2237e52ffb4d16ca3153bb15',
|
|
71
|
+
};
|
|
72
|
+
const getBalanceResponseNonBitGoRecovery = {
|
|
73
|
+
status: '1',
|
|
74
|
+
result: '100000000000000000',
|
|
75
|
+
message: 'OK',
|
|
76
|
+
};
|
|
77
|
+
exports.mockDataNonBitGoRecovery = {
|
|
78
|
+
recoveryDestination: '0x26efa259beeb4373aff0f0e37167a7b6255fe34e',
|
|
79
|
+
userKeyData: '{"iv":"LkXud+OJjiSgFSz2GUF90g==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"qpjtz9Fp4u8=","ct":"syqUtFTqWy/itfdnwckTSSk8a2tYVQIApUP811rfWBth0ODZzjLzWs+pM0IYi9IM9boQ5E94/Kutk1HVNWC7q1vG88B/ZI5wVc5Scr2wgOJ62TifS6VNgmaGfAlMfke0tL+2icn/NqiEAPXlan4VpiSIzGV50V+BPW6x/zWOqzA8OiZ7WApsqpIMiNHal+27g1F41ALGnpVhuDBr/M67FLvzdCz38dZoqcbV67CncqXzGFvDmw4Z2h86DP4jJFhGQUkgJqwKjFVOFREnFClkg1VgPryYpWvx5liHZv4URTSlqTUj7VS/FtYoJFobilSnHz0tCKM8q81sJ4hz9mzxsQRL6xuV4SoM44TGSPutQfCTNWyXqq9PNe4er3BpRS4FGl6qrBFkyAkx4zF8NJDI3+miFlG1YmLSq7aLRuU5RAnQTTY+XnvbE7xsF9zhAzTsJk9zjZUQVDZDAC+kOiaYtZBC8wsJ26i1zbo9g6V9O+9X5tVFauCt47W9kodi+PNservj8tBYvG6YjjJ1SK/l2SQAffa+PZX4+b51Qf8FBawdcRkCfasZPjUYjYZ0KiiRQmSg3OMz3AqEw8yelxJ/lkbBOccrNcbVpYZh+OTB2Kjvvhk5aAs4WiaO+7PM3YrhjGhjln1eAvh4ABzXlOHV31f41p5/MeOgWwf0SH2aZocM1erCpk0+dk6Mu4Z46D9NTYY0JoaljKsvxpWidtRHp93YkuNjVI1qIaMyJj3O8pe6782JfT+sRQfJJxTvLThzm0ljy9hQGHK98GRejge4T1p66Jkhu94kmKpJJHOt9iVuU5mbc3kA0pi148B5HTRzH6/I0v2m25tcspsagvaiQeaU4+RAsoTrWiFtHG3UByCMaS6jiIU0b5zKKPbWqoQV85ywyZOi4xtIQoqFUte7v1ziTzaywGb3tG2iAHYRrJgAPg2wNYDYVOOIJWdhtxw8G/uKMq9EZ8+l2FLdXpUHDc1UJzNqf6ijYbixMv0RHDMXtPC+870ciyVjGAAfPwWrnXafgJewRsYpeUxiJvf1A9DEZ0IyVKT4TjohEmuHlUxT5d0QJ1e1Pxa0qaeLrNoU"}',
|
|
80
|
+
backupKeyData: '{"iv":"j01iJ6D6yrIAvQG39rUK7A==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"FZhlN/ZL7EQ=","ct":"l8rWds8F0MUrnyvIkfoU9Pcf5rR9eJwZkyjzzrrQaor4oIYcqNl3+OfuXYFssSMhor3AuylZ85hLaovqndvfYtPBC2AZ1sM1AAMmwmptGWeuRuzIjd9bVUzGJdAljDZ3/ikcmMbV/drT7HSu6l2Z2tsc5XJwJujO2YobCOlBBGWM8lIqCcCORa+oliLXW2YxsRzEEM5b2H/RqqQKpZeJvYK3l5EX8aAyTIMqrIv2ZS9MaWXcY95/IYB5xO/a1zZRfxDv5WBu4RsVtS5uIH99PPNJIcAXAAFN+n58EsfZbtJ6aDWCDngtEaghiwlSUhcdwU59P6eUmzEjEvY4RJwDMX0Mq9C1kfwRxNn9+BwdaO24HaH4uWsJlHNp++onlTEb9pDp0nmMgWLQjh1n0CrF5XThSt9i5s2jMFNEE7LruwRT+TKzpN48If2L8IvwFiFWLuUtQDJ0jdl/8pRB0C0yc443DIxROBluh8hwmYqglK5YtaBZitXl++jSaXdRlgJ4wBfTuDp4Lg62wWgprPhaRFWfMJpXedDfzZEDjc2UFZvKKe7V1+f7kSB9ol18aE4xpEN5vta6L81ZMgVWkbWu7Ascu4P4vOl1M8tPWkLmg6SpPbbxYdp5Q52DMkhLz8zuAaUD5tbt6tVKTCd0USEus2s+r4VJd6WImdvNUsg9anSpWQp48jWx0ZcLHnACOyT1bRC/VcYwEB6XE81uyhWdZYrhly/MKcJNO9Auij/RxNPpELYNL1Ru+Vh7ZNSE3EotzoRba0+QkHCOq3xGi2tSzZlmJe329LZEjpiQyGM7tLV8ZnSngXXUEXGQXVDaCeQQz82VYhZpKeC9xCTPLCUMETWfiqU4XhFfRzyLjIAZKlzq6yOMsLrXFpsA85XpJciyYhO9MHd2/8yEyZfernqN3qLY0dl4dVR53E4UwWSwLSbXFV6dD1ZheB4G8tSp2oq/IRHw7ZuQlRcW0Bn5kaDr3gs5+7enQ9SSBLkPrAYfeloAVyz/ugKJ3+ZtEBFkTbobORUHtfsrjYqxb7fn6/n5kvrm8fZzy3Oq+SG//B1guuyElM/cJ8J+yHQvNv0AKQCm"}',
|
|
81
|
+
walletPassphrase: 'prithvi-bitgo',
|
|
82
|
+
walletRootAddress: '0xcf05f9c25579832d2237e52ffb4d16ca3153bb15',
|
|
83
|
+
getTxListRequest: getTxListRequestNonBitGoRecovery,
|
|
84
|
+
getTxListResponse: getTxListResponseNonBitGoRecovery,
|
|
85
|
+
getBalanceRequest: getBalanceRequestNonBitGoRecovery,
|
|
86
|
+
getBalanceResponse: getBalanceResponseNonBitGoRecovery,
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQThDO0FBRWpDLFFBQUEsYUFBYSxHQUFHLGtFQUFrRSxDQUFDO0FBRW5GLFFBQUEsV0FBVyxHQUFHLElBQUksc0JBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxxQkFBYSxFQUFFLENBQUMsQ0FBQztBQUVsRCxRQUFBLHdCQUF3QixHQUNuQyxrNkJBQWs2QixDQUFDO0FBRXg1QixRQUFBLDZCQUE2QixHQUN4QyxrNkJBQWs2QixDQUFDO0FBRXI2QixNQUFNLDZCQUE2QixHQUEyQjtJQUM1RCxPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSw0Q0FBNEM7Q0FDdEQsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQTRCO0lBQzlELE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ047WUFDRSxJQUFJLEVBQUUsb0VBQW9FO1lBQzFFLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLDRDQUE0QztTQUNuRDtLQUNGO0lBQ0QsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSw4QkFBOEIsR0FBMkI7SUFDN0QsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsU0FBUztJQUNqQixPQUFPLEVBQUUsNENBQTRDO0NBQ3RELENBQUM7QUFFRixNQUFNLCtCQUErQixHQUE0QjtJQUMvRCxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRVcsUUFBQSxxQkFBcUIsR0FBRztJQUNuQyxPQUFPLEVBQ0wsb0lBQW9JO0lBQ3RJLFNBQVMsRUFDUCxvSUFBb0k7SUFDdEksY0FBYyxFQUFFLEtBQUs7SUFDckIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsaUJBQWlCLEVBQUUsNENBQTRDO0lBQy9ELG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxnQkFBZ0IsRUFBRSw2QkFBNkI7SUFDL0MsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCxrQkFBa0IsRUFBRSwrQkFBK0I7Q0FDcEQsQ0FBQztBQUVGLE1BQU0sZ0NBQWdDLEdBQTJCO0lBQy9ELE9BQU8sRUFBRSxNQUFNO0lBQ2YsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLDRDQUE0QztDQUN0RCxDQUFDO0FBRUYsTUFBTSxpQ0FBaUMsR0FBNEI7SUFDakUsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUU7UUFDTjtZQUNFLElBQUksRUFBRSxvRUFBb0U7WUFDMUUsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsNENBQTRDO1NBQ25EO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixNQUFNLGlDQUFpQyxHQUEyQjtJQUNoRSxPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE9BQU8sRUFBRSw0Q0FBNEM7Q0FDdEQsQ0FBQztBQUVGLE1BQU0sa0NBQWtDLEdBQTRCO0lBQ2xFLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFVyxRQUFBLHdCQUF3QixHQUFHO0lBQ3RDLG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxXQUFXLEVBQ1QsNHNDQUE0c0M7SUFDOXNDLGFBQWEsRUFDWCw0c0NBQTRzQztJQUM5c0MsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxpQkFBaUIsRUFBRSw0Q0FBNEM7SUFDL0QsZ0JBQWdCLEVBQUUsZ0NBQWdDO0lBQ2xELGlCQUFpQixFQUFFLGlDQUFpQztJQUNwRCxpQkFBaUIsRUFBRSxpQ0FBaUM7SUFDcEQsa0JBQWtCLEVBQUUsa0NBQWtDO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LWV0aCc7XG5cbmV4cG9ydCBjb25zdCBQUklWQVRFX0tFWV8xID0gJzk1MGQyMzc2NmMwZDBhZGFkNDVhN2RjZjBkYjdhOTNiMmM5MWZlNDExYTUxNTRjOWE0YWMyMzc1OGMyYWU0ZDUnO1xuXG5leHBvcnQgY29uc3QgS0VZUEFJUl9QUlYgPSBuZXcgS2V5UGFpcih7IHBydjogUFJJVkFURV9LRVlfMSB9KTtcblxuZXhwb3J0IGNvbnN0IFNFTkRfVFhfQlJPQURDQVNUX0xFR0FDWSA9XG4gICcweGY5MDFjYzAyODQzYjlhY2EwMDgzYjhhMWEwOTQ4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxODBiOTAxNjQzOTEyNTIxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE5NjQ1MDMyYzdmMTUzMzM5NWQ0NGE2Mjk0NjJlNzUxMDg0ZDNlNGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNiOWFjYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNWVjNjdkYTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQxMDBkZDNjNGRmMTljZjgxNTZlOWFkMTRkYjQ2ZDhmZmQwN2M5NDNlYmJiYWI2OTFlYmFlZTU4NTM1ZmIxYjA4OTBlNzBhNmNkMzAwZjJjNDA4OGQyY2ViZWM5OWJhMjRhZTk0OTU0NjhjMzA5MWFjNmE4ODRlZmQ3ODBkMzUzMzYxYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODIwOGQ0YTBmYTUxZmZjYmM0ZDg1MmE1ZjJmNzg3MGY1NzA2Yjg3OThkODE5MzlmZTc3YWVhZDQwNTIzMzViY2Q0OTdmMTQ1YTA0NTQ5MzIzNjA1Njc2NWQxY2Q4NDdhY2E2NTBiYmU5N2Y3MTQ4YzFlYTQxMTQzMTU0ZWQxYTU5NzMxODRiYTE1JztcblxuZXhwb3J0IGNvbnN0IFNFTkRfVFhfQU1PVU5UX1pFUk9fQlJPQURDQVNUID1cbiAgJzB4ZjkwMWNjMDI4NDNiOWFjYTAwODNiOGExYTA5NDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODE4MGI5MDE2NDM5MTI1MjE1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1ZWM2N2RhODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDExYmFkYzVhZjUwNWIxMGViZjZiYzgwMzIyNTY3YWM3MWFmNzk3MGE5YWMxZWJkZjMzZjY1NmJiZmEyYjQwZjY1MjIzOWU0ZWNkOWI3YjM5MWRiNjhmYjg0NDY3ZTExZGFjYjVkNTRmMzg3NzBkNzlmNGM5NWM5YzFkNGViYTBhMjFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MjA4ZDNhMDFjODMwYmVlNWM0M2EzMzlmNGY2YmVjMmU3MDUwNDU5ODY0ODJkNzJjZjBjNTA0MTgzYzEyMWE0YzI0NmE1N2JhMDY4Yjc0NjBkNmUwYjBlNWIzNTQwNTNjNzhjZDQxMjI4NmFkYzc5ZTIxZWMzYmI5MTY5OTMwYjQ3ZTQ1NWIwNzEnO1xuXG5jb25zdCBnZXRUeExpc3RSZXF1ZXN0VW5zaWduZWRTd2VlcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzExMTInLFxuICBtb2R1bGU6ICdhY2NvdW50JyxcbiAgYWN0aW9uOiAndHhsaXN0JyxcbiAgYWRkcmVzczogJzB4NzQyODM4MTkzYzQxNjlmNmIyYmE3YjBlMDNmNzIzYzNiYTA5MjhlMScsXG59O1xuXG5jb25zdCBnZXRUeExpc3RSZXNwb25zZVVuc2lnbmVkU3dlZXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICBzdGF0dXM6ICcxJyxcbiAgcmVzdWx0OiBbXG4gICAge1xuICAgICAgaGFzaDogJzB4ZWRlODU1ZDQzZDcwZWExYmI3NWRiNjNkNGY3NTExM2RhZTA4NDVmMGQ0YmRiMGIyZDhiZGE1NTI0OWM3MDgxMicsXG4gICAgICBub25jZTogJzIzJyxcbiAgICAgIGZyb206ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxuICAgIH0sXG4gIF0sXG4gIG1lc3NhZ2U6ICdPSycsXG59O1xuXG5jb25zdCBnZXRCYWxhbmNlUmVxdWVzdFVuc2lnbmVkU3dlZXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNoYWluaWQ6ICcxMTEyJyxcbiAgbW9kdWxlOiAnYWNjb3VudCcsXG4gIGFjdGlvbjogJ2JhbGFuY2UnLFxuICBhZGRyZXNzOiAnMHg3NDI4MzgxOTNjNDE2OWY2YjJiYTdiMGUwM2Y3MjNjM2JhMDkyOGUxJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXNwb25zZVVuc2lnbmVkU3dlZXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICBzdGF0dXM6ICcxJyxcbiAgcmVzdWx0OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbmV4cG9ydCBjb25zdCBtb2NrRGF0YVVuc2lnbmVkU3dlZXAgPSB7XG4gIHVzZXJLZXk6XG4gICAgJzAyOWQyZGVkMmQzOWVlN2NkOGQ4YmJiYThiMjVlNGM2MGJiMDkyOTc5MzZmYTZiMjIzZGUxZjQ5NWI1ZWUyMGRjYWY3NjIzNjdmOTY5MWY3NzE5Y2I1ZTEzZTU5ZDcyNTY2OWExOGFhZDFlMjUyMmRkMTQxZmE0YzdmZDNkMjVjMTcnLFxuICBiYWNrdXBLZXk6XG4gICAgJzAyOWQyZGVkMmQzOWVlN2NkOGQ4YmJiYThiMjVlNGM2MGJiMDkyOTc5MzZmYTZiMjIzZGUxZjQ5NWI1ZWUyMGRjYWY3NjIzNjdmOTY5MWY3NzE5Y2I1ZTEzZTU5ZDcyNTY2OWExOGFhZDFlMjUyMmRkMTQxZmE0YzdmZDNkMjVjMTcnLFxuICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsXG4gIGRlcml2YXRpb25TZWVkOiAnJyxcbiAgd2FsbGV0QmFzZUFkZHJlc3M6ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxuICByZWNvdmVyeURlc3RpbmF0aW9uOiAnMHhkNzZiNTg2OTAxODUwZjJjNjU2ZGIwY2JlZjc5NWMwODUxYmJlYzM1JyxcbiAgZ2V0VHhMaXN0UmVxdWVzdDogZ2V0VHhMaXN0UmVxdWVzdFVuc2lnbmVkU3dlZXAsXG4gIGdldFR4TGlzdFJlc3BvbnNlOiBnZXRUeExpc3RSZXNwb25zZVVuc2lnbmVkU3dlZXAsXG4gIGdldEJhbGFuY2VSZXF1ZXN0OiBnZXRCYWxhbmNlUmVxdWVzdFVuc2lnbmVkU3dlZXAsXG4gIGdldEJhbGFuY2VSZXNwb25zZTogZ2V0QmFsYW5jZVJlc3BvbnNlVW5zaWduZWRTd2VlcCxcbn07XG5cbmNvbnN0IGdldFR4TGlzdFJlcXVlc3ROb25CaXRHb1JlY292ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjaGFpbmlkOiAnMTExMicsXG4gIG1vZHVsZTogJ2FjY291bnQnLFxuICBhY3Rpb246ICd0eGxpc3QnLFxuICBhZGRyZXNzOiAnMHhjZjA1ZjljMjU1Nzk4MzJkMjIzN2U1MmZmYjRkMTZjYTMxNTNiYjE1Jyxcbn07XG5cbmNvbnN0IGdldFR4TGlzdFJlc3BvbnNlTm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6IFtcbiAgICB7XG4gICAgICBoYXNoOiAnMHhlZGU4NTVkNDNkNzBlYTFiYjc1ZGI2M2Q0Zjc1MTEzZGFlMDg0NWYwZDRiZGIwYjJkOGJkYTU1MjQ5YzcwODEyJyxcbiAgICAgIG5vbmNlOiAnMjMnLFxuICAgICAgZnJvbTogJzB4Y2YwNWY5YzI1NTc5ODMyZDIyMzdlNTJmZmI0ZDE2Y2EzMTUzYmIxNScsXG4gICAgfSxcbiAgXSxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzExMTInLFxuICBtb2R1bGU6ICdhY2NvdW50JyxcbiAgYWN0aW9uOiAnYmFsYW5jZScsXG4gIGFkZHJlc3M6ICcweGNmMDVmOWMyNTU3OTgzMmQyMjM3ZTUyZmZiNGQxNmNhMzE1M2JiMTUnLFxufTtcblxuY29uc3QgZ2V0QmFsYW5jZVJlc3BvbnNlTm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBtZXNzYWdlOiAnT0snLFxufTtcblxuZXhwb3J0IGNvbnN0IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeSA9IHtcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4MjZlZmEyNTliZWViNDM3M2FmZjBmMGUzNzE2N2E3YjYyNTVmZTM0ZScsXG4gIHVzZXJLZXlEYXRhOlxuICAgICd7XCJpdlwiOlwiTGtYdWQrT0pqaVNnRlN6MkdVRjkwZz09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcInFwanR6OUZwNHU4PVwiLFwiY3RcIjpcInN5cVV0RlRxV3kvaXRmZG53Y2tUU1NrOGEydFlWUUlBcFVQODExcmZXQnRoME9EWnpqTHpXcytwTTBJWWk5SU05Ym9RNUU5NC9LdXRrMUhWTldDN3Exdkc4OEIvWkk1d1ZjNVNjcjJ3Z09KNjJUaWZTNlZOZ21hR2ZBbE1ma2UwdEwrMmljbi9OcWlFQVBYbGFuNFZwaVNJekdWNTBWK0JQVzZ4L3pXT3F6QThPaVo3V0Fwc3FwSU1pTkhhbCsyN2cxRjQxQUxHbnBWaHVEQnIvTTY3Rkx2emRDejM4ZFpvcWNiVjY3Q25jcVh6R0Z2RG13NFoyaDg2RFA0akpGaEdRVWtnSnF3S2pGVk9GUkVuRkNsa2cxVmdQcnlZcFd2eDVsaUhadjRVUlRTbHFUVWo3VlMvRnRZb0pGb2JpbFNuSHowdENLTThxODFzSjRoejltenhzUVJMNnh1VjRTb000NFRHU1B1dFFmQ1ROV3lYcXE5UE5lNGVyM0JwUlM0RkdsNnFyQkZreUFreDR6RjhOSkRJMyttaUZsRzFZbUxTcTdhTFJ1VTVSQW5RVFRZK1hudmJFN3hzRjl6aEF6VHNKazl6alpVUVZEWkRBQytrT2lhWXRaQkM4d3NKMjZpMXpibzlnNlY5Tys5WDV0VkZhdUN0NDdXOWtvZGkrUE5zZXJ2ajh0Qll2RzZZampKMVNLL2wyU1FBZmZhK1BaWDQrYjUxUWY4RkJhd2RjUmtDZmFzWlBqVVlqWVowS2lpUlFtU2czT016M0FxRXc4eWVseEovbGtiQk9jY3JOY2JWcFlaaCtPVEIyS2p2dmhrNWFBczRXaWFPKzdQTTNZcmhqR2hqbG4xZUF2aDRBQnpYbE9IVjMxZjQxcDUvTWVPZ1d3ZjBTSDJhWm9jTTFlckNwazArZGs2TXU0WjQ2RDlOVFlZMEpvYWxqS3N2eHBXaWR0UkhwOTNZa3VOalZJMXFJYU15SmozTzhwZTY3ODJKZlQrc1JRZkpKeFR2TFRoem0wbGp5OWhRR0hLOThHUmVqZ2U0VDFwNjZKa2h1OTRrbUtwSkpIT3Q5aVZ1VTVtYmMza0EwcGkxNDhCNUhUUnpINi9JMHYybTI1dGNzcHNhZ3ZhaVFlYVU0K1JBc29UcldpRnRIRzNVQnlDTWFTNmppSVUwYjV6S0tQYldxb1FWODV5d3laT2k0eHRJUW9xRlV0ZTd2MXppVHpheXdHYjN0RzJpQUhZUnJKZ0FQZzJ3TllEWVZPT0lKV2RodHh3OEcvdUtNcTlFWjgrbDJGTGRYcFVIRGMxVUp6TnFmNmlqWWJpeE12MFJIRE1YdFBDKzg3MGNpeVZqR0FBZlB3V3JuWGFmZ0pld1JzWXBlVXhpSnZmMUE5REVaMEl5VktUNFRqb2hFbXVIbFV4VDVkMFFKMWUxUHhhMHFhZUxyTm9VXCJ9JyxcbiAgYmFja3VwS2V5RGF0YTpcbiAgICAne1wiaXZcIjpcImowMWlKNkQ2eXJJQXZRRzM5clVLN0E9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCJGWmhsTi9aTDdFUT1cIixcImN0XCI6XCJsOHJXZHM4RjBNVXJueXZJa2ZvVTlQY2Y1clI5ZUp3Wmt5anp6cnJRYW9yNG9JWWNxTmwzK09mdVhZRnNzU01ob3IzQXV5bFo4NWhMYW92cW5kdmZZdFBCQzJBWjFzTTFBQU1td21wdEdXZXVSdXpJamQ5YlZVekdKZEFsakRaMy9pa2NtTWJWL2RyVDdIU3U2bDJaMnRzYzVYSndKdWpPMllvYkNPbEJCR1dNOGxJcUNjQ09SYStvbGlMWFcyWXhzUnpFRU01YjJIL1JxcVFLcFplSnZZSzNsNUVYOGFBeVRJTXFySXYyWlM5TWFXWGNZOTUvSVlCNXhPL2ExelpSZnhEdjVXQnU0UnNWdFM1dUlIOTlQUE5KSWNBWEFBRk4rbjU4RXNmWmJ0SjZhRFdDRG5ndEVhZ2hpd2xTVWhjZHdVNTlQNmVVbXpFakV2WTRSSndETVgwTXE5QzFrZndSeE5uOStCd2RhTzI0SGFINHVXc0psSE5wKytvbmxURWI5cERwMG5tTWdXTFFqaDFuMENyRjVYVGhTdDlpNXMyak1GTkVFN0xydXdSVCtUS3pwTjQ4SWYyTDhJdndGaUZXTHVVdFFESjBqZGwvOHBSQjBDMHljNDQzREl4Uk9CbHVoOGh3bVlxZ2xLNVl0YUJaaXRYbCsralNhWGRSbGdKNHdCZlR1RHA0TGc2MndXZ3ByUGhhUkZXZk1KcFhlZERmelpFRGpjMlVGWnZLS2U3VjErZjdrU0I5b2wxOGFFNHhwRU41dnRhNkw4MVpNZ1ZXa2JXdTdBc2N1NFA0dk9sMU04dFBXa0xtZzZTcFBiYnhZZHA1UTUyRE1raEx6OHp1QWFVRDV0YnQ2dFZLVENkMFVTRXVzMnMrcjRWSmQ2V0ltZHZOVXNnOWFuU3BXUXA0OGpXeDBaY0xIbkFDT3lUMWJSQy9WY1l3RUI2WEU4MXV5aFdkWllyaGx5L01LY0pOTzlBdWlqL1J4TlBwRUxZTkwxUnUrVmg3Wk5TRTNFb3R6b1JiYTArUWtIQ09xM3hHaTJ0U3pabG1KZTMyOUxaRWpwaVF5R003dExWOFpuU25nWFhVRVhHUVhWRGFDZVFRejgyVlloWnBLZUM5eENUUExDVU1FVFdmaXFVNFhoRmZSenlMaklBWktsenE2eU9Nc0xyWEZwc0E4NVhwSmNpeVloTzlNSGQyLzh5RXlaZmVybnFOM3FMWTBkbDRkVlI1M0U0VXdXU3dMU2JYRlY2ZEQxWmhlQjRHOHRTcDJvcS9JUkh3N1p1UWxSY1cwQm41a2FEcjNnczUrN2VuUTlTU0JMa1ByQVlmZWxvQVZ5ei91Z0tKMytadEVCRmtUYm9iT1JVSHRmc3JqWXF4YjdmbjYvbjVrdnJtOGZaenkzT3ErU0cvL0IxZ3V1eUVsTS9jSjhKK3lIUXZOdjBBS1FDbVwifScsXG4gIHdhbGxldFBhc3NwaHJhc2U6ICdwcml0aHZpLWJpdGdvJyxcbiAgd2FsbGV0Um9vdEFkZHJlc3M6ICcweGNmMDVmOWMyNTU3OTgzMmQyMjM3ZTUyZmZiNGQxNmNhMzE1M2JiMTUnLFxuICBnZXRUeExpc3RSZXF1ZXN0OiBnZXRUeExpc3RSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0VHhMaXN0UmVzcG9uc2U6IGdldFR4TGlzdFJlc3BvbnNlTm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0QmFsYW5jZVJlcXVlc3Q6IGdldEJhbGFuY2VSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0QmFsYW5jZVJlc3BvbnNlOiBnZXRCYWxhbmNlUmVzcG9uc2VOb25CaXRHb1JlY292ZXJ5LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/getBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,kBAEzC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBuilder = void 0;
|
|
4
|
+
const src_1 = require("../../src");
|
|
5
|
+
const statics_1 = require("@bitgo/statics");
|
|
6
|
+
const getBuilder = (coin) => {
|
|
7
|
+
return new src_1.TransactionBuilder(statics_1.coins.get(coin));
|
|
8
|
+
};
|
|
9
|
+
exports.getBuilder = getBuilder;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9nZXRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUErQztBQUMvQyw0Q0FBdUM7QUFFaEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQXNCLEVBQUU7SUFDN0QsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFGVyxRQUFBLFVBQVUsY0FFckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRCdWlsZGVyID0gKGNvaW46IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciA9PiB7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldChjb2luKSk7XG59O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/send.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
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 getBuilder_1 = require("../getBuilder");
|
|
40
|
+
const should_1 = __importDefault(require("should"));
|
|
41
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
42
|
+
const abstract_eth_1 = require("@bitgo/abstract-eth");
|
|
43
|
+
const testData = __importStar(require("../../resources"));
|
|
44
|
+
describe('Wemix Transfer Builder', () => {
|
|
45
|
+
describe('Build from TxHex', function () {
|
|
46
|
+
it('Should successfully build from txHex', async function () {
|
|
47
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('twemix');
|
|
48
|
+
const txHex = '0xf86e0285174876e801825208944943dd2a2494e3ea5937954cb836692a047695b5880de0b6b3a7640000808208d3a04fd04df347f4614bae15e905e7b0af63a25f7e5b7fef00bb08854dd52c785838a01736ac3e8c5a7bf58040869277fe1904568d96bba4fb29b6f9709d95d93f880b';
|
|
49
|
+
txBuilder.from(txHex);
|
|
50
|
+
const parsedTx = await txBuilder.build();
|
|
51
|
+
should_1.default.exist(parsedTx.toJson());
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('should sign and build', () => {
|
|
55
|
+
let txBuilder;
|
|
56
|
+
let key;
|
|
57
|
+
let contractAddress;
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
60
|
+
txBuilder = (0, getBuilder_1.getBuilder)('twemix');
|
|
61
|
+
key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
62
|
+
txBuilder.fee({
|
|
63
|
+
fee: '1000000000',
|
|
64
|
+
gasLimit: '12100000',
|
|
65
|
+
});
|
|
66
|
+
txBuilder.counter(2);
|
|
67
|
+
txBuilder.type(sdk_core_1.TransactionType.Send);
|
|
68
|
+
txBuilder.contract(contractAddress);
|
|
69
|
+
});
|
|
70
|
+
it('a send funds transaction', async () => {
|
|
71
|
+
const recipient = '0x19645032c7f1533395d44a629462e751084d3e4c';
|
|
72
|
+
const amount = '1000000000';
|
|
73
|
+
const expireTime = 1590066600;
|
|
74
|
+
const sequenceId = 5;
|
|
75
|
+
txBuilder
|
|
76
|
+
.transfer()
|
|
77
|
+
.amount(amount)
|
|
78
|
+
.to(recipient)
|
|
79
|
+
.expirationTime(expireTime)
|
|
80
|
+
.contractSequenceId(sequenceId)
|
|
81
|
+
.key(key);
|
|
82
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
83
|
+
const tx = await txBuilder.build();
|
|
84
|
+
should_1.default.equal(tx.toJson().chainId, 0x458);
|
|
85
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
86
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
87
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
88
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
89
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
90
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
91
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
92
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
93
|
+
const data = tx.toJson().data;
|
|
94
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, } = (0, abstract_eth_1.decodeTransferData)(data);
|
|
95
|
+
should_1.default.equal(to, recipient);
|
|
96
|
+
should_1.default.equal(parsedAmount, amount);
|
|
97
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
98
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
99
|
+
});
|
|
100
|
+
it('a send funds with amount 0 transaction', async () => {
|
|
101
|
+
txBuilder
|
|
102
|
+
.transfer()
|
|
103
|
+
.amount('0')
|
|
104
|
+
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
|
|
105
|
+
.expirationTime(1590066600)
|
|
106
|
+
.contractSequenceId(5)
|
|
107
|
+
.key(key);
|
|
108
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
109
|
+
const tx = await txBuilder.build();
|
|
110
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUEyQztBQUMzQyxvREFBNEI7QUFFNUIsOENBQWtEO0FBQ2xELHNEQUF5RDtBQUN6RCwwREFBNEM7QUFFNUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxRQUFRLENBQUMsa0JBQWtCLEVBQUU7UUFDM0IsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEtBQUs7WUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sS0FBSyxHQUNULG9PQUFvTyxDQUFDO1lBQ3ZPLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7UUFDckMsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksZUFBZSxDQUFDO1FBRXBCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxlQUFlLEdBQUcsNENBQTRDLENBQUM7WUFDL0QsU0FBUyxHQUFHLElBQUEsdUJBQVUsRUFBQyxRQUFRLENBQXVCLENBQUM7WUFDdkQsR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBYSxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQ1os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QUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdEQsU0FBUztpQkFDTixRQUFRLEVBQUU7aUJBQ1YsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDWCxFQUFFLENBQUMsNENBQTRDLENBQUM7aUJBQ2hELGNBQWMsQ0FBQyxVQUFVLENBQUM7aUJBQzFCLGtCQUFrQixDQUFDLENBQUMsQ0FBQztpQkFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vZ2V0QnVpbGRlcic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGRlY29kZVRyYW5zZmVyRGF0YSB9IGZyb20gJ0BiaXRnby9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ1dlbWl4IFRyYW5zZmVyIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdCdWlsZCBmcm9tIFR4SGV4JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdTaG91bGQgc3VjY2Vzc2Z1bGx5IGJ1aWxkIGZyb20gdHhIZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0d2VtaXgnKTtcbiAgICAgIGNvbnN0IHR4SGV4ID1cbiAgICAgICAgJzB4Zjg2ZTAyODUxNzQ4NzZlODAxODI1MjA4OTQ0OTQzZGQyYTI0OTRlM2VhNTkzNzk1NGNiODM2NjkyYTA0NzY5NWI1ODgwZGUwYjZiM2E3NjQwMDAwODA4MjA4ZDNhMDRmZDA0ZGYzNDdmNDYxNGJhZTE1ZTkwNWU3YjBhZjYzYTI1ZjdlNWI3ZmVmMDBiYjA4ODU0ZGQ1MmM3ODU4MzhhMDE3MzZhYzNlOGM1YTdiZjU4MDQwODY5Mjc3ZmUxOTA0NTY4ZDk2YmJhNGZiMjliNmY5NzA5ZDk1ZDkzZjg4MGInO1xuICAgICAgdHhCdWlsZGVyLmZyb20odHhIZXgpO1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZFR4LnRvSnNvbigpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduIGFuZCBidWlsZCcsICgpID0+IHtcbiAgICBsZXQgdHhCdWlsZGVyO1xuICAgIGxldCBrZXk7XG4gICAgbGV0IGNvbnRyYWN0QWRkcmVzcztcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY29udHJhY3RBZGRyZXNzID0gJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MSc7XG4gICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0d2VtaXgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgICBrZXkgPSB0ZXN0RGF0YS5LRVlQQUlSX1BSVi5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZztcbiAgICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgICBmZWU6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgZ2FzTGltaXQ6ICcxMjEwMDAwMCcsXG4gICAgICB9KTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKDIpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIGZ1bmRzIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0Yyc7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwMDAwMCc7XG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gMTU5MDA2NjYwMDtcbiAgICAgIGNvbnN0IHNlcXVlbmNlSWQgPSA1O1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcigpXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAudG8ocmVjaXBpZW50KVxuICAgICAgICAuZXhwaXJhdGlvblRpbWUoZXhwaXJlVGltZSlcbiAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZChzZXF1ZW5jZUlkKVxuICAgICAgICAua2V5KGtleSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5jaGFpbklkLCAweDQ1OCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9CUk9BRENBU1RfTEVHQUNZKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zaWduYXR1cmUubGVuZ3RoLCAyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgY29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCByZWNpcGllbnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0eC50b0pzb24oKS5kYXRhO1xuICAgICAgY29uc3Qge1xuICAgICAgICB0byxcbiAgICAgICAgYW1vdW50OiBwYXJzZWRBbW91bnQsXG4gICAgICAgIGV4cGlyZVRpbWU6IHBhcnNlZEV4cGlyZVRpbWUsXG4gICAgICAgIHNlcXVlbmNlSWQ6IHBhcnNlZFNlcXVlbmNlSWQsXG4gICAgICB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvLCByZWNpcGllbnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZEFtb3VudCwgYW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRFeHBpcmVUaW1lLCBleHBpcmVUaW1lKTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRTZXF1ZW5jZUlkLCBzZXF1ZW5jZUlkKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHNlbmQgZnVuZHMgd2l0aCBhbW91bnQgMCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAuYW1vdW50KCcwJylcbiAgICAgICAgLnRvKCcweDE5NjQ1MDMyYzdmMTUzMzM5NWQ0NGE2Mjk0NjJlNzUxMDg0ZDNlNGMnKVxuICAgICAgICAuZXhwaXJhdGlvblRpbWUoMTU5MDA2NjYwMClcbiAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZCg1KVxuICAgICAgICAua2V5KGtleSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9BTU9VTlRfWkVST19CUk9BRENBU1QpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const statics_1 = require("@bitgo/statics");
|
|
9
|
+
const utils_1 = require("../../src/lib/utils");
|
|
10
|
+
describe('Network Common Configuration', () => {
|
|
11
|
+
it('getCommon for mainnet', () => {
|
|
12
|
+
const common = (0, utils_1.getCommon)(statics_1.NetworkType.MAINNET);
|
|
13
|
+
should_1.default.equal(common.chainName(), 'wemix mainnet');
|
|
14
|
+
should_1.default.equal(common.hardfork(), 'london');
|
|
15
|
+
should_1.default.equal(common.chainIdBN().toString(), '1111');
|
|
16
|
+
should_1.default.equal(common.networkIdBN().toString(), '1111');
|
|
17
|
+
});
|
|
18
|
+
it('getCommon for testnet', () => {
|
|
19
|
+
const common = (0, utils_1.getCommon)(statics_1.NetworkType.TESTNET);
|
|
20
|
+
should_1.default.equal(common.chainName(), 'wemix testnet');
|
|
21
|
+
should_1.default.equal(common.hardfork(), 'london');
|
|
22
|
+
should_1.default.equal(common.chainIdBN().toString(), '1112');
|
|
23
|
+
should_1.default.equal(common.networkIdBN().toString(), '1112');
|
|
24
|
+
});
|
|
25
|
+
it('getCommon for invalid network', () => {
|
|
26
|
+
assert_1.default.throws(() => (0, utils_1.getCommon)('invalidNetwork'), (e) => e.message === 'Missing network common configuration');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLDRDQUE2QztBQUM3QywrQ0FBZ0Q7QUFFaEQsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUM1QyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUEsaUJBQVMsRUFBQyxxQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNsRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBQSxpQkFBUyxFQUFDLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtRQUN2QyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsZ0JBQStCLENBQUMsRUFDaEQsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssc0NBQXNDLENBQ2pFLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBnZXRDb21tb24gfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ05ldHdvcmsgQ29tbW9uIENvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGl0KCdnZXRDb21tb24gZm9yIG1haW5uZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgY29tbW9uID0gZ2V0Q29tbW9uKE5ldHdvcmtUeXBlLk1BSU5ORVQpO1xuICAgIHNob3VsZC5lcXVhbChjb21tb24uY2hhaW5OYW1lKCksICd3ZW1peCBtYWlubmV0Jyk7XG4gICAgc2hvdWxkLmVxdWFsKGNvbW1vbi5oYXJkZm9yaygpLCAnbG9uZG9uJyk7XG4gICAgc2hvdWxkLmVxdWFsKGNvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygpLCAnMTExMScpO1xuICAgIHNob3VsZC5lcXVhbChjb21tb24ubmV0d29ya0lkQk4oKS50b1N0cmluZygpLCAnMTExMScpO1xuICB9KTtcblxuICBpdCgnZ2V0Q29tbW9uIGZvciB0ZXN0bmV0JywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbW1vbiA9IGdldENvbW1vbihOZXR3b3JrVHlwZS5URVNUTkVUKTtcbiAgICBzaG91bGQuZXF1YWwoY29tbW9uLmNoYWluTmFtZSgpLCAnd2VtaXggdGVzdG5ldCcpO1xuICAgIHNob3VsZC5lcXVhbChjb21tb24uaGFyZGZvcmsoKSwgJ2xvbmRvbicpO1xuICAgIHNob3VsZC5lcXVhbChjb21tb24uY2hhaW5JZEJOKCkudG9TdHJpbmcoKSwgJzExMTInKTtcbiAgICBzaG91bGQuZXF1YWwoY29tbW9uLm5ldHdvcmtJZEJOKCkudG9TdHJpbmcoKSwgJzExMTInKTtcbiAgfSk7XG5cbiAgaXQoJ2dldENvbW1vbiBmb3IgaW52YWxpZCBuZXR3b3JrJywgKCkgPT4ge1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PiBnZXRDb21tb24oJ2ludmFsaWROZXR3b3JrJyBhcyBOZXR3b3JrVHlwZSksXG4gICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdNaXNzaW5nIG5ldHdvcmsgY29tbW9uIGNvbmZpZ3VyYXRpb24nXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wemix.d.ts","sourceRoot":"","sources":["../../../test/unit/wemix.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,168 @@
|
|
|
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 = __importStar(require("should"));
|
|
40
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
41
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
42
|
+
const index_1 = require("../../src/index");
|
|
43
|
+
const resources_1 = require("../resources");
|
|
44
|
+
const nock_1 = __importDefault(require("nock"));
|
|
45
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
46
|
+
const tx_1 = require("@ethereumjs/tx");
|
|
47
|
+
const util_1 = require("@ethereumjs/util");
|
|
48
|
+
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
49
|
+
describe('wemix', function () {
|
|
50
|
+
before(function () {
|
|
51
|
+
bitgo.safeRegister('wemix', index_1.Wemix.createInstance);
|
|
52
|
+
bitgo.safeRegister('twemix', index_1.Twemix.createInstance);
|
|
53
|
+
bitgo.initializeTestVars();
|
|
54
|
+
});
|
|
55
|
+
describe('Basic Coin Info', function () {
|
|
56
|
+
it('should return the right info for wemix', function () {
|
|
57
|
+
const wemix = bitgo.coin('wemix');
|
|
58
|
+
wemix.should.be.an.instanceof(index_1.Wemix);
|
|
59
|
+
wemix.getChain().should.equal('wemix');
|
|
60
|
+
wemix.getFamily().should.equal('wemix');
|
|
61
|
+
wemix.getFullName().should.equal('Wemix');
|
|
62
|
+
wemix.getBaseFactor().should.equal(1e18);
|
|
63
|
+
wemix.supportsTss().should.equal(true);
|
|
64
|
+
wemix.allowsAccountConsolidations().should.equal(false);
|
|
65
|
+
});
|
|
66
|
+
it('should return the right info for twemix', function () {
|
|
67
|
+
const twemix = bitgo.coin('twemix');
|
|
68
|
+
twemix.should.be.an.instanceof(index_1.Twemix);
|
|
69
|
+
twemix.getChain().should.equal('twemix');
|
|
70
|
+
twemix.getFamily().should.equal('wemix');
|
|
71
|
+
twemix.getFullName().should.equal('Testnet wemix');
|
|
72
|
+
twemix.getBaseFactor().should.equal(1e18);
|
|
73
|
+
twemix.supportsTss().should.equal(true);
|
|
74
|
+
twemix.allowsAccountConsolidations().should.equal(false);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('Build Unsigned Sweep for Self-Custody Cold Wallets (MPCv2)', function () {
|
|
79
|
+
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
80
|
+
const explorerUrl = sdk_core_1.common.Environments[bitgo.getEnv()].wemixExplorerBaseUrl;
|
|
81
|
+
it('should generate an unsigned sweep without derivation path', async () => {
|
|
82
|
+
(0, nock_1.default)(explorerUrl)
|
|
83
|
+
.get('/api')
|
|
84
|
+
.twice()
|
|
85
|
+
.query(resources_1.mockDataUnsignedSweep.getTxListRequest)
|
|
86
|
+
.reply(200, resources_1.mockDataUnsignedSweep.getTxListResponse);
|
|
87
|
+
(0, nock_1.default)(explorerUrl)
|
|
88
|
+
.get('/api')
|
|
89
|
+
.query(resources_1.mockDataUnsignedSweep.getBalanceRequest)
|
|
90
|
+
.reply(200, resources_1.mockDataUnsignedSweep.getBalanceResponse);
|
|
91
|
+
const baseCoin = bitgo.coin('twemix');
|
|
92
|
+
const transaction = (await baseCoin.recover({
|
|
93
|
+
userKey: resources_1.mockDataUnsignedSweep.userKey,
|
|
94
|
+
backupKey: resources_1.mockDataUnsignedSweep.backupKey,
|
|
95
|
+
walletContractAddress: resources_1.mockDataUnsignedSweep.walletBaseAddress,
|
|
96
|
+
recoveryDestination: resources_1.mockDataUnsignedSweep.recoveryDestination,
|
|
97
|
+
isTss: true,
|
|
98
|
+
eip1559: { maxFeePerGas: 20000000000, maxPriorityFeePerGas: 10000000000 },
|
|
99
|
+
gasLimit: 500000,
|
|
100
|
+
replayProtectionOptions: {
|
|
101
|
+
chain: 1112,
|
|
102
|
+
hardfork: 'london',
|
|
103
|
+
},
|
|
104
|
+
}));
|
|
105
|
+
should.exist(transaction);
|
|
106
|
+
transaction.should.have.property('txRequests');
|
|
107
|
+
transaction.txRequests.length.should.equal(1);
|
|
108
|
+
const txRequest = transaction.txRequests[0];
|
|
109
|
+
txRequest.should.have.property('walletCoin');
|
|
110
|
+
txRequest.walletCoin.should.equal('twemix');
|
|
111
|
+
txRequest.should.have.property('transactions');
|
|
112
|
+
txRequest.transactions.length.should.equal(1);
|
|
113
|
+
const tx = txRequest.transactions[0];
|
|
114
|
+
tx.should.have.property('nonce');
|
|
115
|
+
tx.should.have.property('unsignedTx');
|
|
116
|
+
tx.unsignedTx.should.have.property('serializedTxHex');
|
|
117
|
+
tx.unsignedTx.should.have.property('signableHex');
|
|
118
|
+
tx.unsignedTx.should.have.property('derivationPath');
|
|
119
|
+
tx.unsignedTx.should.have.property('feeInfo');
|
|
120
|
+
tx.unsignedTx.feeInfo?.should.have.property('fee');
|
|
121
|
+
tx.unsignedTx.feeInfo?.should.have.property('feeString');
|
|
122
|
+
tx.unsignedTx.should.have.property('parsedTx');
|
|
123
|
+
tx.unsignedTx.parsedTx?.should.have.property('spendAmount');
|
|
124
|
+
tx.unsignedTx.parsedTx?.should.have.property('outputs');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
describe('Non Bitgo Recovery for Hot Wallets', function () {
|
|
128
|
+
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
129
|
+
const explorerUrl = sdk_core_1.common.Environments[bitgo.getEnv()].wemixExplorerBaseUrl;
|
|
130
|
+
const maxFeePerGasvalue = 20000000000;
|
|
131
|
+
const maxPriorityFeePerGasValue = 10000000000;
|
|
132
|
+
const chain_id = 1112;
|
|
133
|
+
const gasLimitvalue = 500000;
|
|
134
|
+
it('should generate a signed non-bitgo recovery tx', async () => {
|
|
135
|
+
(0, nock_1.default)(explorerUrl)
|
|
136
|
+
.get('/api')
|
|
137
|
+
.twice()
|
|
138
|
+
.query(resources_1.mockDataNonBitGoRecovery.getTxListRequest)
|
|
139
|
+
.reply(200, resources_1.mockDataNonBitGoRecovery.getTxListResponse);
|
|
140
|
+
(0, nock_1.default)(explorerUrl)
|
|
141
|
+
.get('/api')
|
|
142
|
+
.query(resources_1.mockDataNonBitGoRecovery.getBalanceRequest)
|
|
143
|
+
.reply(200, resources_1.mockDataNonBitGoRecovery.getBalanceResponse);
|
|
144
|
+
const baseCoin = bitgo.coin('twemix');
|
|
145
|
+
const transaction = await baseCoin.recover({
|
|
146
|
+
userKey: resources_1.mockDataNonBitGoRecovery.userKeyData,
|
|
147
|
+
backupKey: resources_1.mockDataNonBitGoRecovery.backupKeyData,
|
|
148
|
+
walletContractAddress: resources_1.mockDataNonBitGoRecovery.walletRootAddress,
|
|
149
|
+
walletPassphrase: resources_1.mockDataNonBitGoRecovery.walletPassphrase,
|
|
150
|
+
recoveryDestination: resources_1.mockDataNonBitGoRecovery.recoveryDestination,
|
|
151
|
+
isTss: true,
|
|
152
|
+
eip1559: { maxFeePerGas: maxFeePerGasvalue, maxPriorityFeePerGas: maxPriorityFeePerGasValue },
|
|
153
|
+
gasLimit: gasLimitvalue,
|
|
154
|
+
replayProtectionOptions: {
|
|
155
|
+
chain: chain_id,
|
|
156
|
+
hardfork: 'london',
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
should.exist(transaction);
|
|
160
|
+
transaction.should.have.property('id');
|
|
161
|
+
transaction.should.have.property('tx');
|
|
162
|
+
const tx = tx_1.FeeMarketEIP1559Transaction.fromSerializedTx(Buffer.from((0, util_1.stripHexPrefix)(transaction.tx), 'hex'));
|
|
163
|
+
tx.getSenderAddress().toString().should.equal(resources_1.mockDataNonBitGoRecovery.walletRootAddress);
|
|
164
|
+
const jsonTx = tx.toJSON();
|
|
165
|
+
jsonTx.to?.should.equal(resources_1.mockDataNonBitGoRecovery.recoveryDestination);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VtaXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvd2VtaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFFakMsOENBQTBEO0FBQzFELDRDQUEwQztBQUUxQywyQ0FBZ0Q7QUFFaEQsNENBQStFO0FBQy9FLGdEQUF3QjtBQUN4Qiw4Q0FBeUM7QUFDekMsdUNBQTZEO0FBQzdELDJDQUFrRDtBQUVsRCxNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFFLFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGNBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtRQUMxQixFQUFFLENBQUMsd0NBQXdDLEVBQUU7WUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQUssQ0FBQyxDQUFDO1lBQ3JDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLEtBQUssQ0FB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USxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxNQUFNLEVBQUUsR0FBRyxnQ0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEscUJBQWMsRUFBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUYsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBd0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcblxuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5cbmltcG9ydCB7IFdlbWl4LCBUd2VtaXggfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0IHsgVW5zaWduZWRTd2VlcFR4TVBDdjIgfSBmcm9tICdAYml0Z28vYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7IG1vY2tEYXRhVW5zaWduZWRTd2VlcCwgbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5IH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEZlZU1hcmtldEVJUDE1NTlUcmFuc2FjdGlvbiB9IGZyb20gJ0BldGhlcmV1bWpzL3R4JztcbmltcG9ydCB7IHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnQGV0aGVyZXVtanMvdXRpbCc7XG5cbmNvbnN0IGJpdGdvOiBUZXN0Qml0R29BUEkgPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG5cbmRlc2NyaWJlKCd3ZW1peCcsIGZ1bmN0aW9uICgpIHtcbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3dlbWl4JywgV2VtaXguY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndHdlbWl4JywgVHdlbWl4LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Jhc2ljIENvaW4gSW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbyBmb3Igd2VtaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3ZW1peCA9IGJpdGdvLmNvaW4oJ3dlbWl4Jyk7XG5cbiAgICAgIHdlbWl4LnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFdlbWl4KTtcbiAgICAgIHdlbWl4LmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd3ZW1peCcpO1xuICAgICAgd2VtaXguZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCd3ZW1peCcpO1xuICAgICAgd2VtaXguZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1dlbWl4Jyk7XG4gICAgICB3ZW1peC5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgICAgd2VtaXguc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB3ZW1peC5hbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJpZ2h0IGluZm8gZm9yIHR3ZW1peCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR3ZW1peCA9IGJpdGdvLmNvaW4oJ3R3ZW1peCcpO1xuXG4gICAgICB0d2VtaXguc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoVHdlbWl4KTtcbiAgICAgIHR3ZW1peC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgndHdlbWl4Jyk7XG4gICAgICB0d2VtaXguZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCd3ZW1peCcpO1xuICAgICAgdHdlbWl4LmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IHdlbWl4Jyk7XG4gICAgICB0d2VtaXguZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICAgIHR3ZW1peC5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIHR3ZW1peC5hbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQnVpbGQgVW5zaWduZWQgU3dlZXAgZm9yIFNlbGYtQ3VzdG9keSBDb2xkIFdhbGxldHMgKE1QQ3YyKScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gIGNvbnN0IGV4cGxvcmVyVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0ud2VtaXhFeHBsb3JlckJhc2VVcmwgYXMgc3RyaW5nO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYW4gdW5zaWduZWQgc3dlZXAgd2l0aG91dCBkZXJpdmF0aW9uIHBhdGgnLCBhc3luYyAoKSA9PiB7XG4gICAgbm9jayhleHBsb3JlclVybClcbiAgICAgIC5nZXQoJy9hcGknKVxuICAgICAgLnR3aWNlKClcbiAgICAgIC5xdWVyeShtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0VHhMaXN0UmVxdWVzdClcbiAgICAgIC5yZXBseSgyMDAsIG1vY2tEYXRhVW5zaWduZWRTd2VlcC5nZXRUeExpc3RSZXNwb25zZSk7XG4gICAgbm9jayhleHBsb3JlclVybClcbiAgICAgIC5nZXQoJy9hcGknKVxuICAgICAgLnF1ZXJ5KG1vY2tEYXRhVW5zaWduZWRTd2VlcC5nZXRCYWxhbmNlUmVxdWVzdClcbiAgICAgIC5yZXBseSgyMDAsIG1vY2tEYXRhVW5zaWduZWRTd2VlcC5nZXRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgY29uc3QgYmFzZUNvaW46IGFueSA9IGJpdGdvLmNvaW4oJ3R3ZW1peCcpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gKGF3YWl0IGJhc2VDb2luLnJlY292ZXIoe1xuICAgICAgdXNlcktleTogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLnVzZXJLZXksXG4gICAgICBiYWNrdXBLZXk6IG1vY2tEYXRhVW5zaWduZWRTd2VlcC5iYWNrdXBLZXksXG4gICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IG1vY2tEYXRhVW5zaWduZWRTd2VlcC53YWxsZXRCYXNlQWRkcmVzcyxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IG1vY2tEYXRhVW5zaWduZWRTd2VlcC5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgaXNUc3M6IHRydWUsXG4gICAgICBlaXAxNTU5OiB7IG1heEZlZVBlckdhczogMjAwMDAwMDAwMDAsIG1heFByaW9yaXR5RmVlUGVyR2FzOiAxMDAwMDAwMDAwMCB9LFxuICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgIGNoYWluOiAxMTEyLFxuICAgICAgICBoYXJkZm9yazogJ2xvbmRvbicsXG4gICAgICB9LFxuICAgIH0pKSBhcyBVbnNpZ25lZFN3ZWVwVHhNUEN2MjtcbiAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJyk7XG4gICAgdHJhbnNhY3Rpb24udHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IHRyYW5zYWN0aW9uLnR4UmVxdWVzdHNbMF07XG4gICAgdHhSZXF1ZXN0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd3YWxsZXRDb2luJyk7XG4gICAgdHhSZXF1ZXN0LndhbGxldENvaW4uc2hvdWxkLmVxdWFsKCd0d2VtaXgnKTtcbiAgICB0eFJlcXVlc3Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zYWN0aW9ucycpO1xuICAgIHR4UmVxdWVzdC50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBjb25zdCB0eCA9IHR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF07XG4gICAgdHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ25vbmNlJyk7XG4gICAgdHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Vuc2lnbmVkVHgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzZXJpYWxpemVkVHhIZXgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzaWduYWJsZUhleCcpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlcml2YXRpb25QYXRoJyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlSW5mbycpO1xuICAgIHR4LnVuc2lnbmVkVHguZmVlSW5mbz8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZScpO1xuICAgIHR4LnVuc2lnbmVkVHguZmVlSW5mbz8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZVN0cmluZycpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BhcnNlZFR4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5wYXJzZWRUeD8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NwZW5kQW1vdW50Jyk7XG4gICAgdHgudW5zaWduZWRUeC5wYXJzZWRUeD8uc2hvdWxkLmhhdmUucHJvcGVydHkoJ291dHB1dHMnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ05vbiBCaXRnbyBSZWNvdmVyeSBmb3IgSG90IFdhbGxldHMnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBjb25zdCBleHBsb3JlclVybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLndlbWl4RXhwbG9yZXJCYXNlVXJsIGFzIHN0cmluZztcbiAgY29uc3QgbWF4RmVlUGVyR2FzdmFsdWUgPSAyMDAwMDAwMDAwMDtcbiAgY29uc3QgbWF4UHJpb3JpdHlGZWVQZXJHYXNWYWx1ZSA9IDEwMDAwMDAwMDAwO1xuICBjb25zdCBjaGFpbl9pZCA9IDExMTI7XG4gIGNvbnN0IGdhc0xpbWl0dmFsdWUgPSA1MDAwMDA7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHNpZ25lZCBub24tYml0Z28gcmVjb3ZlcnkgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgbm9jayhleHBsb3JlclVybClcbiAgICAgIC5nZXQoJy9hcGknKVxuICAgICAgLnR3aWNlKClcbiAgICAgIC5xdWVyeShtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkuZ2V0VHhMaXN0UmVxdWVzdClcbiAgICAgIC5yZXBseSgyMDAsIG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5nZXRUeExpc3RSZXNwb25zZSk7XG4gICAgbm9jayhleHBsb3JlclVybClcbiAgICAgIC5nZXQoJy9hcGknKVxuICAgICAgLnF1ZXJ5KG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5nZXRCYWxhbmNlUmVxdWVzdClcbiAgICAgIC5yZXBseSgyMDAsIG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5nZXRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgY29uc3QgYmFzZUNvaW46IGFueSA9IGJpdGdvLmNvaW4oJ3R3ZW1peCcpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICB1c2VyS2V5OiBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkudXNlcktleURhdGEsXG4gICAgICBiYWNrdXBLZXk6IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5iYWNrdXBLZXlEYXRhLFxuICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiBtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0Um9vdEFkZHJlc3MsXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiBtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgaXNUc3M6IHRydWUsXG4gICAgICBlaXAxNTU5OiB7IG1heEZlZVBlckdhczogbWF4RmVlUGVyR2FzdmFsdWUsIG1heFByaW9yaXR5RmVlUGVyR2FzOiBtYXhQcmlvcml0eUZlZVBlckdhc1ZhbHVlIH0sXG4gICAgICBnYXNMaW1pdDogZ2FzTGltaXR2YWx1ZSxcbiAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgIGNoYWluOiBjaGFpbl9pZCxcbiAgICAgICAgaGFyZGZvcms6ICdsb25kb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZCcpO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eCcpO1xuICAgIGNvbnN0IHR4ID0gRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkVHgoQnVmZmVyLmZyb20oc3RyaXBIZXhQcmVmaXgodHJhbnNhY3Rpb24udHgpLCAnaGV4JykpO1xuICAgIHR4LmdldFNlbmRlckFkZHJlc3MoKS50b1N0cmluZygpLnNob3VsZC5lcXVhbChtb2NrRGF0YU5vbkJpdEdvUmVjb3Zlcnkud2FsbGV0Um9vdEFkZHJlc3MpO1xuICAgIGNvbnN0IGpzb25UeCA9IHR4LnRvSlNPTigpO1xuICAgIGpzb25UeC50bz8uc2hvdWxkLmVxdWFsKG1vY2tEYXRhTm9uQml0R29SZWNvdmVyeS5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
|