@bitgo/sdk-coin-flrp 1.9.1 → 1.10.0
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/src/lib/permissionlessDelegatorTxBuilder.d.ts +41 -9
- package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessDelegatorTxBuilder.js +152 -18
- package/dist/test/resources/transactionData/multisigDelegationTx.d.ts +79 -0
- package/dist/test/resources/transactionData/multisigDelegationTx.d.ts.map +1 -0
- package/dist/test/resources/transactionData/multisigDelegationTx.js +94 -0
- package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.js +772 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* This demonstrates the half-signing workflow for 2-of-3 multisig delegation transactions
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MULTISIG_ADDRESS_SORTING = exports.MULTISIG_DELEGATION_TX_ID = exports.MULTISIG_DELEGATION_FULLY_SIGNED_TX_HEX = exports.MULTISIG_DELEGATION_HALF_SIGNED_TX_HEX = exports.MULTISIG_DELEGATION_UNSIGNED_TX_HEX = exports.MULTISIG_DELEGATION_PARAMS = exports.HALF_SIGN_TEST_ACCOUNTS = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Test accounts for half-signing workflow
|
|
10
|
+
* These are the actual keys used to create and sign the on-chain transaction
|
|
11
|
+
*/
|
|
12
|
+
exports.HALF_SIGN_TEST_ACCOUNTS = {
|
|
13
|
+
user: {
|
|
14
|
+
privateKey: 'd365653d2b76bd1c3d9272e8a30522b19d28131e474b7eb0887b36195b1ab1ff',
|
|
15
|
+
publicKey: '028694abcbcdbf7973c1da76da65c2c05ac7eec98ed9b10b1e53a2c834c24163ca',
|
|
16
|
+
pChainAddress: 'P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5',
|
|
17
|
+
},
|
|
18
|
+
bitgo: {
|
|
19
|
+
privateKey: 'a218141d495c9c61f76f9049b763a7b4a4c3c503f3f45698c17b5002939dcd84',
|
|
20
|
+
publicKey: '0309d1e50b2496170dd50ae89bce71cc9e964104e4139eda9eb46800665264fe78',
|
|
21
|
+
pChainAddress: 'P-costwo1ddgtqg8ls4t0clul3rhuzldd9386uqw85nr98f',
|
|
22
|
+
},
|
|
23
|
+
backup: {
|
|
24
|
+
privateKey: '519c515c19a4b5488f68d271328355ed97072e314c322eb1d7ae467f8a9cb6b8',
|
|
25
|
+
publicKey: '02cbee5efcfa04ba25cddcc67a69223afc8a9512ad9e69d28ab30317bf0f83dd2e',
|
|
26
|
+
pChainAddress: 'P-costwo1wekdkg99hnfdcllsd8t3fyg7l5jufthhfysjgp',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Transaction parameters for the multisig delegation
|
|
31
|
+
*/
|
|
32
|
+
exports.MULTISIG_DELEGATION_PARAMS = {
|
|
33
|
+
nodeID: 'NodeID-AKt7WaK6ozEy5K8azKNacZXLzxZ9xFgC7',
|
|
34
|
+
stakeAmount: '50000000000000', // 50,000 FLR in nanoFLR
|
|
35
|
+
duration: 14, // days
|
|
36
|
+
startTime: 1771850992,
|
|
37
|
+
endTime: 1773060592,
|
|
38
|
+
rewardAddress: 'P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5',
|
|
39
|
+
multisigAddresses: [
|
|
40
|
+
'P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5', // user (index 0)
|
|
41
|
+
'P-costwo1ddgtqg8ls4t0clul3rhuzldd9386uqw85nr98f', // bitgo (index 1)
|
|
42
|
+
'P-costwo1wekdkg99hnfdcllsd8t3fyg7l5jufthhfysjgp', // backup (index 2)
|
|
43
|
+
],
|
|
44
|
+
threshold: 2,
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Unsigned transaction hex (before any signatures)
|
|
48
|
+
* Built with sorted fromAddresses to match UTXO owner order
|
|
49
|
+
*/
|
|
50
|
+
exports.MULTISIG_DELEGATION_UNSIGNED_TX_HEX = '00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000253e89cc00000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef700000001707288abed3b4da8d181ee2922ac55e1f269845583cf9adff0caee5fd47ddc3c0000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002d7bdc49040000000002000000000000000100000000664b4924a25af8be5f07052b2c2e582f7c10a65400000000699c4cf00000000069aec1f000002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d20000000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef70000000b0000000000000000000000010000000140c982503bb38f42bd88b8ba953281bca72fd0f1';
|
|
51
|
+
/**
|
|
52
|
+
* Half-signed transaction hex (signed by user key only)
|
|
53
|
+
* First signature slot filled, second slot empty
|
|
54
|
+
*/
|
|
55
|
+
exports.MULTISIG_DELEGATION_HALF_SIGNED_TX_HEX = '00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000253e89cc00000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef700000001707288abed3b4da8d181ee2922ac55e1f269845583cf9adff0caee5fd47ddc3c0000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002d7bdc49040000000002000000000000000100000000664b4924a25af8be5f07052b2c2e582f7c10a65400000000699c4cf00000000069aec1f000002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d20000000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef70000000b0000000000000000000000010000000140c982503bb38f42bd88b8ba953281bca72fd0f1000000010000000900000002d488c1469bf92cfdeb2c164e1608f9c1bef4aec0b39fe33088a97b74268a908a579f079d56728dcfbda297b6f5c7792e26f109914b65ed974dcd1ad155cb61d3010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
56
|
+
/**
|
|
57
|
+
* Fully signed transaction hex (signed by both user and bitgo keys)
|
|
58
|
+
* This transaction was successfully broadcast to Coston2 testnet
|
|
59
|
+
*/
|
|
60
|
+
exports.MULTISIG_DELEGATION_FULLY_SIGNED_TX_HEX = '00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000253e89cc00000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef700000001707288abed3b4da8d181ee2922ac55e1f269845583cf9adff0caee5fd47ddc3c0000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002d7bdc49040000000002000000000000000100000000664b4924a25af8be5f07052b2c2e582f7c10a65400000000699c4cf00000000069aec1f000002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d20000000000000000000000000010000000340c982503bb38f42bd88b8ba953281bca72fd0f16b50b020ff8556fc7f9f88efc17dad2c4fae01c7766cdb20a5bcd2dc7ff069d714911efd25c4aef70000000b0000000000000000000000010000000140c982503bb38f42bd88b8ba953281bca72fd0f1000000010000000900000002d488c1469bf92cfdeb2c164e1608f9c1bef4aec0b39fe33088a97b74268a908a579f079d56728dcfbda297b6f5c7792e26f109914b65ed974dcd1ad155cb61d30139507d355619359a57ce9f85b42c1d5daca3808db218513b45417f5c6bc1bc531bfefef6ae78309486fe114c6d64626b0ba619f453946a385dc8ff4a31b333b701';
|
|
61
|
+
/**
|
|
62
|
+
* On-chain transaction ID after broadcast
|
|
63
|
+
*/
|
|
64
|
+
exports.MULTISIG_DELEGATION_TX_ID = '2hGeGfU7vAi7aMWAGSc5RHfRBpum2LWhxqypv2uxQvZXVrnEA5';
|
|
65
|
+
/**
|
|
66
|
+
* Address sorting information for the 2-of-3 multisig wallet
|
|
67
|
+
* After lexicographic sorting by hex value, the addresses remain in the same order:
|
|
68
|
+
* 1. user (P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5) - sorted index 0
|
|
69
|
+
* 2. bitgo (P-costwo1ddgtqg8ls4t0clul3rhuzldd9386uqw85nr98f) - sorted index 1
|
|
70
|
+
* 3. backup (P-costwo1wekdkg99hnfdcllsd8t3fyg7l5jufthhfysjgp) - sorted index 2
|
|
71
|
+
*
|
|
72
|
+
* Keys needed for signing (first 2 in sorted order for threshold=2):
|
|
73
|
+
* - user (original index 0, sorted index 0)
|
|
74
|
+
* - bitgo (original index 1, sorted index 1)
|
|
75
|
+
*/
|
|
76
|
+
exports.MULTISIG_ADDRESS_SORTING = {
|
|
77
|
+
original: [
|
|
78
|
+
'P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5', // index 0: user
|
|
79
|
+
'P-costwo1ddgtqg8ls4t0clul3rhuzldd9386uqw85nr98f', // index 1: bitgo
|
|
80
|
+
'P-costwo1wekdkg99hnfdcllsd8t3fyg7l5jufthhfysjgp', // index 2: backup
|
|
81
|
+
],
|
|
82
|
+
sorted: [
|
|
83
|
+
'P-costwo1grycy5pmkw8590vghzaf2v5phjnjl583cmc3f5', // sorted 0 = original 0 (user)
|
|
84
|
+
'P-costwo1ddgtqg8ls4t0clul3rhuzldd9386uqw85nr98f', // sorted 1 = original 1 (bitgo)
|
|
85
|
+
'P-costwo1wekdkg99hnfdcllsd8t3fyg7l5jufthhfysjgp', // sorted 2 = original 2 (backup)
|
|
86
|
+
],
|
|
87
|
+
// addressesIndex[originalIdx] = sortedPosition
|
|
88
|
+
addressesIndex: [0, 1, 2], // user->0, bitgo->1, backup->2
|
|
89
|
+
signingKeys: [
|
|
90
|
+
{ role: 'user', originalIndex: 0, sortedIndex: 0 },
|
|
91
|
+
{ role: 'bitgo', originalIndex: 1, sortedIndex: 1 },
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzaWdEZWxlZ2F0aW9uVHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvbXVsdGlzaWdEZWxlZ2F0aW9uVHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUg7OztHQUdHO0FBQ1UsUUFBQSx1QkFBdUIsR0FBRztJQUNyQyxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUUsa0VBQWtFO1FBQzlFLFNBQVMsRUFBRSxvRUFBb0U7UUFDL0UsYUFBYSxFQUFFLGlEQUFpRDtLQUNqRTtJQUNELEtBQUssRUFBRTtRQUNMLFVBQVUsRUFBRSxrRUFBa0U7UUFDOUUsU0FBUyxFQUFFLG9FQUFvRTtRQUMvRSxhQUFhLEVBQUUsaURBQWlEO0tBQ2pFO0lBQ0QsTUFBTSxFQUFFO1FBQ04sVUFBVSxFQUFFLGtFQUFrRTtRQUM5RSxTQUFTLEVBQUUsb0VBQW9FO1FBQy9FLGFBQWEsRUFBRSxpREFBaUQ7S0FDakU7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDBCQUEwQixHQUFHO0lBQ3hDLE1BQU0sRUFBRSwwQ0FBMEM7SUFDbEQsV0FBVyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QjtJQUN2RCxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU87SUFDckIsU0FBUyxFQUFFLFVBQVU7SUFDckIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsYUFBYSxFQUFFLGlEQUFpRDtJQUNoRSxpQkFBaUIsRUFBRTtRQUNqQixpREFBaUQsRUFBRSxpQkFBaUI7UUFDcEUsaURBQWlELEVBQUUsa0JBQWtCO1FBQ3JFLGlEQUFpRCxFQUFFLG1CQUFtQjtLQUN2RTtJQUNELFNBQVMsRUFBRSxDQUFDO0NBQ2IsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsbUNBQW1DLEdBQzlDLHMvQkFBcy9CLENBQUM7QUFFei9COzs7R0FHRztBQUNVLFFBQUEsc0NBQXNDLEdBQ2pELGt4Q0FBa3hDLENBQUM7QUFFcnhDOzs7R0FHRztBQUNVLFFBQUEsdUNBQXVDLEdBQ2xELGt4Q0FBa3hDLENBQUM7QUFFcnhDOztHQUVHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxvREFBb0QsQ0FBQztBQUU5Rjs7Ozs7Ozs7OztHQVVHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxRQUFRLEVBQUU7UUFDUixpREFBaUQsRUFBRSxnQkFBZ0I7UUFDbkUsaURBQWlELEVBQUUsaUJBQWlCO1FBQ3BFLGlEQUFpRCxFQUFFLGtCQUFrQjtLQUN0RTtJQUNELE1BQU0sRUFBRTtRQUNOLGlEQUFpRCxFQUFFLCtCQUErQjtRQUNsRixpREFBaUQsRUFBRSxnQ0FBZ0M7UUFDbkYsaURBQWlELEVBQUUsaUNBQWlDO0tBQ3JGO0lBQ0QsK0NBQStDO0lBQy9DLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsK0JBQStCO0lBQzFELFdBQVcsRUFBRTtRQUNYLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7UUFDbEQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRTtLQUNwRDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBUaGlzIGRlbW9uc3RyYXRlcyB0aGUgaGFsZi1zaWduaW5nIHdvcmtmbG93IGZvciAyLW9mLTMgbXVsdGlzaWcgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbnNcbiAqL1xuXG4vKipcbiAqIFRlc3QgYWNjb3VudHMgZm9yIGhhbGYtc2lnbmluZyB3b3JrZmxvd1xuICogVGhlc2UgYXJlIHRoZSBhY3R1YWwga2V5cyB1c2VkIHRvIGNyZWF0ZSBhbmQgc2lnbiB0aGUgb24tY2hhaW4gdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEhBTEZfU0lHTl9URVNUX0FDQ09VTlRTID0ge1xuICB1c2VyOiB7XG4gICAgcHJpdmF0ZUtleTogJ2QzNjU2NTNkMmI3NmJkMWMzZDkyNzJlOGEzMDUyMmIxOWQyODEzMWU0NzRiN2ViMDg4N2IzNjE5NWIxYWIxZmYnLFxuICAgIHB1YmxpY0tleTogJzAyODY5NGFiY2JjZGJmNzk3M2MxZGE3NmRhNjVjMmMwNWFjN2VlYzk4ZWQ5YjEwYjFlNTNhMmM4MzRjMjQxNjNjYScsXG4gICAgcENoYWluQWRkcmVzczogJ1AtY29zdHdvMWdyeWN5NXBta3c4NTkwdmdoemFmMnY1cGhqbmpsNTgzY21jM2Y1JyxcbiAgfSxcbiAgYml0Z286IHtcbiAgICBwcml2YXRlS2V5OiAnYTIxODE0MWQ0OTVjOWM2MWY3NmY5MDQ5Yjc2M2E3YjRhNGMzYzUwM2YzZjQ1Njk4YzE3YjUwMDI5MzlkY2Q4NCcsXG4gICAgcHVibGljS2V5OiAnMDMwOWQxZTUwYjI0OTYxNzBkZDUwYWU4OWJjZTcxY2M5ZTk2NDEwNGU0MTM5ZWRhOWViNDY4MDA2NjUyNjRmZTc4JyxcbiAgICBwQ2hhaW5BZGRyZXNzOiAnUC1jb3N0d28xZGRndHFnOGxzNHQwY2x1bDNyaHV6bGRkOTM4NnVxdzg1bnI5OGYnLFxuICB9LFxuICBiYWNrdXA6IHtcbiAgICBwcml2YXRlS2V5OiAnNTE5YzUxNWMxOWE0YjU0ODhmNjhkMjcxMzI4MzU1ZWQ5NzA3MmUzMTRjMzIyZWIxZDdhZTQ2N2Y4YTljYjZiOCcsXG4gICAgcHVibGljS2V5OiAnMDJjYmVlNWVmY2ZhMDRiYTI1Y2RkY2M2N2E2OTIyM2FmYzhhOTUxMmFkOWU2OWQyOGFiMzAzMTdiZjBmODNkZDJlJyxcbiAgICBwQ2hhaW5BZGRyZXNzOiAnUC1jb3N0d28xd2VrZGtnOTlobmZkY2xsc2Q4dDNmeWc3bDVqdWZ0aGhmeXNqZ3AnLFxuICB9LFxufTtcblxuLyoqXG4gKiBUcmFuc2FjdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgbXVsdGlzaWcgZGVsZWdhdGlvblxuICovXG5leHBvcnQgY29uc3QgTVVMVElTSUdfREVMRUdBVElPTl9QQVJBTVMgPSB7XG4gIG5vZGVJRDogJ05vZGVJRC1BS3Q3V2FLNm96RXk1SzhhektOYWNaWEx6eFo5eEZnQzcnLFxuICBzdGFrZUFtb3VudDogJzUwMDAwMDAwMDAwMDAwJywgLy8gNTAsMDAwIEZMUiBpbiBuYW5vRkxSXG4gIGR1cmF0aW9uOiAxNCwgLy8gZGF5c1xuICBzdGFydFRpbWU6IDE3NzE4NTA5OTIsXG4gIGVuZFRpbWU6IDE3NzMwNjA1OTIsXG4gIHJld2FyZEFkZHJlc3M6ICdQLWNvc3R3bzFncnljeTVwbWt3ODU5MHZnaHphZjJ2NXBoam5qbDU4M2NtYzNmNScsXG4gIG11bHRpc2lnQWRkcmVzc2VzOiBbXG4gICAgJ1AtY29zdHdvMWdyeWN5NXBta3c4NTkwdmdoemFmMnY1cGhqbmpsNTgzY21jM2Y1JywgLy8gdXNlciAoaW5kZXggMClcbiAgICAnUC1jb3N0d28xZGRndHFnOGxzNHQwY2x1bDNyaHV6bGRkOTM4NnVxdzg1bnI5OGYnLCAvLyBiaXRnbyAoaW5kZXggMSlcbiAgICAnUC1jb3N0d28xd2VrZGtnOTlobmZkY2xsc2Q4dDNmeWc3bDVqdWZ0aGhmeXNqZ3AnLCAvLyBiYWNrdXAgKGluZGV4IDIpXG4gIF0sXG4gIHRocmVzaG9sZDogMixcbn07XG5cbi8qKlxuICogVW5zaWduZWQgdHJhbnNhY3Rpb24gaGV4IChiZWZvcmUgYW55IHNpZ25hdHVyZXMpXG4gKiBCdWlsdCB3aXRoIHNvcnRlZCBmcm9tQWRkcmVzc2VzIHRvIG1hdGNoIFVUWE8gb3duZXIgb3JkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IE1VTFRJU0lHX0RFTEVHQVRJT05fVU5TSUdORURfVFhfSEVYID1cbiAgJzAwMDAwMDAwMDAxYTAwMDAwMDcyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA3MDAwMDAwMDI1M2U4OWNjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAzNDBjOTgyNTAzYmIzOGY0MmJkODhiOGJhOTUzMjgxYmNhNzJmZDBmMTZiNTBiMDIwZmY4NTU2ZmM3ZjlmODhlZmMxN2RhZDJjNGZhZTAxYzc3NjZjZGIyMGE1YmNkMmRjN2ZmMDY5ZDcxNDkxMWVmZDI1YzRhZWY3MDAwMDAwMDE3MDcyODhhYmVkM2I0ZGE4ZDE4MWVlMjkyMmFjNTVlMWYyNjk4NDU1ODNjZjlhZGZmMGNhZWU1ZmQ0N2RkYzNjMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmQ3YmRjNDkwNDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDA2NjRiNDkyNGEyNWFmOGJlNWYwNzA1MmIyYzJlNTgyZjdjMTBhNjU0MDAwMDAwMDA2OTljNGNmMDAwMDAwMDAwNjlhZWMxZjAwMDAwMmQ3OTg4M2QyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA3MDAwMDJkNzk4ODNkMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAzNDBjOTgyNTAzYmIzOGY0MmJkODhiOGJhOTUzMjgxYmNhNzJmZDBmMTZiNTBiMDIwZmY4NTU2ZmM3ZjlmODhlZmMxN2RhZDJjNGZhZTAxYzc3NjZjZGIyMGE1YmNkMmRjN2ZmMDY5ZDcxNDkxMWVmZDI1YzRhZWY3MDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTQwYzk4MjUwM2JiMzhmNDJiZDg4YjhiYTk1MzI4MWJjYTcyZmQwZjEnO1xuXG4vKipcbiAqIEhhbGYtc2lnbmVkIHRyYW5zYWN0aW9uIGhleCAoc2lnbmVkIGJ5IHVzZXIga2V5IG9ubHkpXG4gKiBGaXJzdCBzaWduYXR1cmUgc2xvdCBmaWxsZWQsIHNlY29uZCBzbG90IGVtcHR5XG4gKi9cbmV4cG9ydCBjb25zdCBNVUxUSVNJR19ERUxFR0FUSU9OX0hBTEZfU0lHTkVEX1RYX0hFWCA9XG4gICcwMDAwMDAwMDAwMWEwMDAwMDA3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNzAwMDAwMDAyNTNlODljYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMzQwYzk4MjUwM2JiMzhmNDJiZDg4YjhiYTk1MzI4MWJjYTcyZmQwZjE2YjUwYjAyMGZmODU1NmZjN2Y5Zjg4ZWZjMTdkYWQyYzRmYWUwMWM3NzY2Y2RiMjBhNWJjZDJkYzdmZjA2OWQ3MTQ5MTFlZmQyNWM0YWVmNzAwMDAwMDAxNzA3Mjg4YWJlZDNiNGRhOGQxODFlZTI5MjJhYzU1ZTFmMjY5ODQ1NTgzY2Y5YWRmZjBjYWVlNWZkNDdkZGMzYzAwMDAwMDAxNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDJkN2JkYzQ5MDQwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwNjY0YjQ5MjRhMjVhZjhiZTVmMDcwNTJiMmMyZTU4MmY3YzEwYTY1NDAwMDAwMDAwNjk5YzRjZjAwMDAwMDAwMDY5YWVjMWYwMDAwMDJkNzk4ODNkMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNzAwMDAyZDc5ODgzZDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMzQwYzk4MjUwM2JiMzhmNDJiZDg4YjhiYTk1MzI4MWJjYTcyZmQwZjE2YjUwYjAyMGZmODU1NmZjN2Y5Zjg4ZWZjMTdkYWQyYzRmYWUwMWM3NzY2Y2RiMjBhNWJjZDJkYzdmZjA2OWQ3MTQ5MTFlZmQyNWM0YWVmNzAwMDAwMDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDE0MGM5ODI1MDNiYjM4ZjQyYmQ4OGI4YmE5NTMyODFiY2E3MmZkMGYxMDAwMDAwMDEwMDAwMDAwOTAwMDAwMDAyZDQ4OGMxNDY5YmY5MmNmZGViMmMxNjRlMTYwOGY5YzFiZWY0YWVjMGIzOWZlMzMwODhhOTdiNzQyNjhhOTA4YTU3OWYwNzlkNTY3MjhkY2ZiZGEyOTdiNmY1Yzc3OTJlMjZmMTA5OTE0YjY1ZWQ5NzRkY2QxYWQxNTVjYjYxZDMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuXG4vKipcbiAqIEZ1bGx5IHNpZ25lZCB0cmFuc2FjdGlvbiBoZXggKHNpZ25lZCBieSBib3RoIHVzZXIgYW5kIGJpdGdvIGtleXMpXG4gKiBUaGlzIHRyYW5zYWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgYnJvYWRjYXN0IHRvIENvc3RvbjIgdGVzdG5ldFxuICovXG5leHBvcnQgY29uc3QgTVVMVElTSUdfREVMRUdBVElPTl9GVUxMWV9TSUdORURfVFhfSEVYID1cbiAgJzAwMDAwMDAwMDAxYTAwMDAwMDcyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA3MDAwMDAwMDI1M2U4OWNjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAzNDBjOTgyNTAzYmIzOGY0MmJkODhiOGJhOTUzMjgxYmNhNzJmZDBmMTZiNTBiMDIwZmY4NTU2ZmM3ZjlmODhlZmMxN2RhZDJjNGZhZTAxYzc3NjZjZGIyMGE1YmNkMmRjN2ZmMDY5ZDcxNDkxMWVmZDI1YzRhZWY3MDAwMDAwMDE3MDcyODhhYmVkM2I0ZGE4ZDE4MWVlMjkyMmFjNTVlMWYyNjk4NDU1ODNjZjlhZGZmMGNhZWU1ZmQ0N2RkYzNjMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmQ3YmRjNDkwNDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDA2NjRiNDkyNGEyNWFmOGJlNWYwNzA1MmIyYzJlNTgyZjdjMTBhNjU0MDAwMDAwMDA2OTljNGNmMDAwMDAwMDAwNjlhZWMxZjAwMDAwMmQ3OTg4M2QyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA3MDAwMDJkNzk4ODNkMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAzNDBjOTgyNTAzYmIzOGY0MmJkODhiOGJhOTUzMjgxYmNhNzJmZDBmMTZiNTBiMDIwZmY4NTU2ZmM3ZjlmODhlZmMxN2RhZDJjNGZhZTAxYzc3NjZjZGIyMGE1YmNkMmRjN2ZmMDY5ZDcxNDkxMWVmZDI1YzRhZWY3MDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTQwYzk4MjUwM2JiMzhmNDJiZDg4YjhiYTk1MzI4MWJjYTcyZmQwZjEwMDAwMDAwMTAwMDAwMDA5MDAwMDAwMDJkNDg4YzE0NjliZjkyY2ZkZWIyYzE2NGUxNjA4ZjljMWJlZjRhZWMwYjM5ZmUzMzA4OGE5N2I3NDI2OGE5MDhhNTc5ZjA3OWQ1NjcyOGRjZmJkYTI5N2I2ZjVjNzc5MmUyNmYxMDk5MTRiNjVlZDk3NGRjZDFhZDE1NWNiNjFkMzAxMzk1MDdkMzU1NjE5MzU5YTU3Y2U5Zjg1YjQyYzFkNWRhY2EzODA4ZGIyMTg1MTNiNDU0MTdmNWM2YmMxYmM1MzFiZmVmZWY2YWU3ODMwOTQ4NmZlMTE0YzZkNjQ2MjZiMGJhNjE5ZjQ1Mzk0NmEzODVkYzhmZjRhMzFiMzMzYjcwMSc7XG5cbi8qKlxuICogT24tY2hhaW4gdHJhbnNhY3Rpb24gSUQgYWZ0ZXIgYnJvYWRjYXN0XG4gKi9cbmV4cG9ydCBjb25zdCBNVUxUSVNJR19ERUxFR0FUSU9OX1RYX0lEID0gJzJoR2VHZlU3dkFpN2FNV0FHU2M1UkhmUkJwdW0yTFdoeHF5cHYydXhRdlpYVnJuRUE1JztcblxuLyoqXG4gKiBBZGRyZXNzIHNvcnRpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSAyLW9mLTMgbXVsdGlzaWcgd2FsbGV0XG4gKiBBZnRlciBsZXhpY29ncmFwaGljIHNvcnRpbmcgYnkgaGV4IHZhbHVlLCB0aGUgYWRkcmVzc2VzIHJlbWFpbiBpbiB0aGUgc2FtZSBvcmRlcjpcbiAqIDEuIHVzZXIgKFAtY29zdHdvMWdyeWN5NXBta3c4NTkwdmdoemFmMnY1cGhqbmpsNTgzY21jM2Y1KSAtIHNvcnRlZCBpbmRleCAwXG4gKiAyLiBiaXRnbyAoUC1jb3N0d28xZGRndHFnOGxzNHQwY2x1bDNyaHV6bGRkOTM4NnVxdzg1bnI5OGYpIC0gc29ydGVkIGluZGV4IDFcbiAqIDMuIGJhY2t1cCAoUC1jb3N0d28xd2VrZGtnOTlobmZkY2xsc2Q4dDNmeWc3bDVqdWZ0aGhmeXNqZ3ApIC0gc29ydGVkIGluZGV4IDJcbiAqXG4gKiBLZXlzIG5lZWRlZCBmb3Igc2lnbmluZyAoZmlyc3QgMiBpbiBzb3J0ZWQgb3JkZXIgZm9yIHRocmVzaG9sZD0yKTpcbiAqIC0gdXNlciAob3JpZ2luYWwgaW5kZXggMCwgc29ydGVkIGluZGV4IDApXG4gKiAtIGJpdGdvIChvcmlnaW5hbCBpbmRleCAxLCBzb3J0ZWQgaW5kZXggMSlcbiAqL1xuZXhwb3J0IGNvbnN0IE1VTFRJU0lHX0FERFJFU1NfU09SVElORyA9IHtcbiAgb3JpZ2luYWw6IFtcbiAgICAnUC1jb3N0d28xZ3J5Y3k1cG1rdzg1OTB2Z2h6YWYydjVwaGpuamw1ODNjbWMzZjUnLCAvLyBpbmRleCAwOiB1c2VyXG4gICAgJ1AtY29zdHdvMWRkZ3RxZzhsczR0MGNsdWwzcmh1emxkZDkzODZ1cXc4NW5yOThmJywgLy8gaW5kZXggMTogYml0Z29cbiAgICAnUC1jb3N0d28xd2VrZGtnOTlobmZkY2xsc2Q4dDNmeWc3bDVqdWZ0aGhmeXNqZ3AnLCAvLyBpbmRleCAyOiBiYWNrdXBcbiAgXSxcbiAgc29ydGVkOiBbXG4gICAgJ1AtY29zdHdvMWdyeWN5NXBta3c4NTkwdmdoemFmMnY1cGhqbmpsNTgzY21jM2Y1JywgLy8gc29ydGVkIDAgPSBvcmlnaW5hbCAwICh1c2VyKVxuICAgICdQLWNvc3R3bzFkZGd0cWc4bHM0dDBjbHVsM3JodXpsZGQ5Mzg2dXF3ODVucjk4ZicsIC8vIHNvcnRlZCAxID0gb3JpZ2luYWwgMSAoYml0Z28pXG4gICAgJ1AtY29zdHdvMXdla2RrZzk5aG5mZGNsbHNkOHQzZnlnN2w1anVmdGhoZnlzamdwJywgLy8gc29ydGVkIDIgPSBvcmlnaW5hbCAyIChiYWNrdXApXG4gIF0sXG4gIC8vIGFkZHJlc3Nlc0luZGV4W29yaWdpbmFsSWR4XSA9IHNvcnRlZFBvc2l0aW9uXG4gIGFkZHJlc3Nlc0luZGV4OiBbMCwgMSwgMl0sIC8vIHVzZXItPjAsIGJpdGdvLT4xLCBiYWNrdXAtPjJcbiAgc2lnbmluZ0tleXM6IFtcbiAgICB7IHJvbGU6ICd1c2VyJywgb3JpZ2luYWxJbmRleDogMCwgc29ydGVkSW5kZXg6IDAgfSxcbiAgICB7IHJvbGU6ICdiaXRnbycsIG9yaWdpbmFsSW5kZXg6IDEsIHNvcnRlZEluZGV4OiAxIH0sXG4gIF0sXG59O1xuIl19
|