@bitgo-beta/sdk-coin-vet 1.0.1-beta.497 → 1.0.1-beta.499
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/constants.d.ts +3 -2
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +5 -4
- package/dist/src/lib/iface.d.ts +2 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/transaction/burnNftTransaction.d.ts +3 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/burnNftTransaction.js +14 -7
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +6 -6
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/delegateClauseTransaction.js +17 -15
- package/dist/src/lib/transaction/exitDelegation.d.ts +3 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -1
- package/dist/src/lib/transaction/exitDelegation.js +14 -7
- package/dist/src/lib/transaction/stakeClauseTransaction.js +3 -3
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +4 -4
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/burnNftBuilder.js +9 -9
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +8 -2
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +16 -3
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +7 -6
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +15 -12
- package/dist/src/lib/utils.d.ts +8 -8
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +12 -12
- package/dist/test/resources/vet.d.ts +5 -3
- package/dist/test/resources/vet.d.ts.map +1 -1
- package/dist/test/resources/vet.js +8 -6
- package/dist/test/transactionBuilder/burnNftBuilder.js +25 -29
- package/dist/test/transactionBuilder/claimRewardsBuilder.js +9 -9
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +32 -20
- package/dist/test/transactionBuilder/exitDelegationBuilder.js +25 -29
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +9 -10
- package/dist/test/transactionBuilder/stakingTransaction.js +2 -2
- package/dist/test/unit/stakingFlowE2E.js +11 -18
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
|
@@ -44,13 +44,14 @@ const testData = __importStar(require("../resources/vet"));
|
|
|
44
44
|
const constants_1 = require("../../src/lib/constants");
|
|
45
45
|
describe('Vet Exit Delegation Transaction', () => {
|
|
46
46
|
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
|
|
47
|
+
const stakingContractAddress = constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET;
|
|
47
48
|
describe('Build and Sign', () => {
|
|
48
49
|
it('should build an exit delegation transaction', async function () {
|
|
49
50
|
const tokenId = '123456';
|
|
50
51
|
const txBuilder = factory.getExitDelegationBuilder();
|
|
51
52
|
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
52
53
|
txBuilder.tokenId(tokenId);
|
|
53
|
-
txBuilder.
|
|
54
|
+
txBuilder.stakingContractAddress(stakingContractAddress);
|
|
54
55
|
txBuilder.gas(21000);
|
|
55
56
|
txBuilder.nonce('64248');
|
|
56
57
|
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
@@ -59,7 +60,7 @@ describe('Vet Exit Delegation Transaction', () => {
|
|
|
59
60
|
const tx = (await txBuilder.build());
|
|
60
61
|
should_1.default.equal(tx.sender, testData.addresses.validAddresses[0]);
|
|
61
62
|
should_1.default.equal(tx.tokenId, tokenId);
|
|
62
|
-
should_1.default.equal(tx.
|
|
63
|
+
should_1.default.equal(tx.stakingContractAddress, constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
|
|
63
64
|
should_1.default.equal(tx.gas, 21000);
|
|
64
65
|
should_1.default.equal(tx.nonce, '64248');
|
|
65
66
|
should_1.default.equal(tx.expiration, 64);
|
|
@@ -70,7 +71,7 @@ describe('Vet Exit Delegation Transaction', () => {
|
|
|
70
71
|
tx.clauses.length.should.equal(1);
|
|
71
72
|
should_1.default.exist(tx.clauses[0]);
|
|
72
73
|
should_1.default.exist(tx.clauses[0].to);
|
|
73
|
-
tx.clauses[0]?.to?.should.equal(constants_1.
|
|
74
|
+
tx.clauses[0]?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
|
|
74
75
|
should_1.default.exist(tx.clauses[0].value);
|
|
75
76
|
tx.clauses[0].value.should.equal('0x0');
|
|
76
77
|
tx.inputs.length.should.equal(1);
|
|
@@ -78,35 +79,17 @@ describe('Vet Exit Delegation Transaction', () => {
|
|
|
78
79
|
should_1.default.equal(tx.inputs[0].address, testData.addresses.validAddresses[0]);
|
|
79
80
|
should_1.default.equal(tx.inputs[0].value, '0');
|
|
80
81
|
should_1.default.equal(tx.inputs[0].coin, 'tvet');
|
|
81
|
-
should_1.default.equal(tx.outputs[0].address, constants_1.
|
|
82
|
+
should_1.default.equal(tx.outputs[0].address, constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
|
|
82
83
|
should_1.default.equal(tx.outputs[0].value, '0');
|
|
83
84
|
should_1.default.equal(tx.outputs[0].coin, 'tvet');
|
|
84
85
|
});
|
|
85
|
-
it('should build an exit delegation transaction with custom contract address', async function () {
|
|
86
|
-
const tokenId = '123456';
|
|
87
|
-
const customContractAddress = constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET; // Use the valid testnet delegation address
|
|
88
|
-
const txBuilder = factory.getExitDelegationBuilder();
|
|
89
|
-
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
90
|
-
txBuilder.tokenId(tokenId);
|
|
91
|
-
txBuilder.delegationContract(customContractAddress);
|
|
92
|
-
txBuilder.gas(21000);
|
|
93
|
-
txBuilder.nonce('64248');
|
|
94
|
-
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
95
|
-
txBuilder.expiration(64);
|
|
96
|
-
txBuilder.gasPriceCoef(128);
|
|
97
|
-
const tx = (await txBuilder.build());
|
|
98
|
-
should_1.default.equal(tx.contract, customContractAddress);
|
|
99
|
-
should_1.default.exist(tx.clauses[0]);
|
|
100
|
-
should_1.default.exist(tx.clauses[0].to);
|
|
101
|
-
tx.clauses[0]?.to?.should.equal(customContractAddress);
|
|
102
|
-
});
|
|
103
86
|
it('should deserialize and reserialize a signed exit delegation transaction', async function () {
|
|
104
87
|
// Create a mock serialized transaction for exit delegation
|
|
105
88
|
const tokenId = '123456';
|
|
106
89
|
const txBuilder = factory.getExitDelegationBuilder();
|
|
107
90
|
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
108
91
|
txBuilder.tokenId(tokenId);
|
|
109
|
-
txBuilder.
|
|
92
|
+
txBuilder.stakingContractAddress(stakingContractAddress);
|
|
110
93
|
txBuilder.gas(21000);
|
|
111
94
|
txBuilder.nonce('64248');
|
|
112
95
|
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
@@ -119,14 +102,14 @@ describe('Vet Exit Delegation Transaction', () => {
|
|
|
119
102
|
const deserializedTx = (await deserializedBuilder.build());
|
|
120
103
|
should_1.default.equal(deserializedTx.type, sdk_core_1.TransactionType.StakingUnlock);
|
|
121
104
|
should_1.default.equal(deserializedTx.tokenId, tokenId);
|
|
122
|
-
should_1.default.equal(deserializedTx.
|
|
105
|
+
should_1.default.equal(deserializedTx.stakingContractAddress, constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
|
|
123
106
|
});
|
|
124
107
|
it('should validate the transaction data structure', async function () {
|
|
125
108
|
const txBuilder = factory.getExitDelegationBuilder();
|
|
126
109
|
// Should throw error when building without required fields
|
|
127
|
-
await (0, should_1.default)(txBuilder.build()).be.rejectedWith('
|
|
110
|
+
await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Staking contract address is required');
|
|
128
111
|
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
129
|
-
txBuilder.
|
|
112
|
+
txBuilder.stakingContractAddress(stakingContractAddress);
|
|
130
113
|
await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Token ID is required');
|
|
131
114
|
// Now add the token ID and it should build successfully
|
|
132
115
|
txBuilder.tokenId('123456');
|
|
@@ -136,19 +119,32 @@ describe('Vet Exit Delegation Transaction', () => {
|
|
|
136
119
|
const tx = await txBuilder.build();
|
|
137
120
|
should_1.default.exist(tx);
|
|
138
121
|
});
|
|
122
|
+
it('should build from raw signed tx', async function () {
|
|
123
|
+
const txBuilder = factory.from(testData.EXIT_DELEGATION_TRANSACTION);
|
|
124
|
+
const tx = txBuilder.transaction;
|
|
125
|
+
const toJson = tx.toJson();
|
|
126
|
+
toJson.id.should.equal('0xeca0ba2c8fa91332a1fe037232aa0af9fe6e939313458a6838c6d4060ede0278');
|
|
127
|
+
toJson.stakingContractAddress?.should.equal('0x1e02b2953adefec225cf0ec49805b1146a4429c1');
|
|
128
|
+
toJson.nonce.should.equal('390746');
|
|
129
|
+
toJson.gas.should.equal(217695);
|
|
130
|
+
toJson.gasPriceCoef.should.equal(128);
|
|
131
|
+
toJson.expiration.should.equal(64);
|
|
132
|
+
toJson.chainTag.should.equal(39);
|
|
133
|
+
toJson.tokenId?.should.equal('15661');
|
|
134
|
+
});
|
|
139
135
|
});
|
|
140
136
|
describe('Validation', () => {
|
|
141
137
|
it('should fail with invalid contract address', function () {
|
|
142
138
|
const txBuilder = factory.getExitDelegationBuilder();
|
|
143
|
-
(0, should_1.default)(() => txBuilder.
|
|
139
|
+
(0, should_1.default)(() => txBuilder.stakingContractAddress('invalid-address')).throwError('Invalid address invalid-address');
|
|
144
140
|
});
|
|
145
141
|
it('should fail with invalid token ID', async function () {
|
|
146
142
|
const txBuilder = factory.getExitDelegationBuilder();
|
|
147
143
|
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
148
|
-
txBuilder.
|
|
144
|
+
txBuilder.stakingContractAddress(stakingContractAddress);
|
|
149
145
|
txBuilder.tokenId('');
|
|
150
146
|
await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Token ID is required');
|
|
151
147
|
});
|
|
152
148
|
});
|
|
153
149
|
});
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpdERlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsbUNBQXNEO0FBRXRELDJEQUE2QztBQUM3Qyx1REFBeUc7QUFFekcsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVqRSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO1lBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUN6QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUVyRCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjtZQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENB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QUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNyRCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLO1lBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3JELFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9leGl0RGVsZWdhdGlvbic7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdmV0JztcbmltcG9ydCB7IEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQsIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuXG5kZXNjcmliZSgnVmV0IEV4aXQgRGVsZWdhdGlvbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcblxuICBkZXNjcmliZSgnQnVpbGQgYW5kIFNpZ24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbklkID0gJzEyMzQ1Nic7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEV4aXREZWxlZ2F0aW9uQnVpbGRlcigpO1xuXG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCh0b2tlbklkKTtcbiAgICAgIHR4QnVpbGRlci5kZWxlZ2F0aW9uQ29udHJhY3QoKTsgLy8gVXNlIGRlZmF1bHQgYWRkcmVzc1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b2tlbklkLCB0b2tlbklkKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5jb250cmFjdCwgU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTX1RFU1RORVQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdhcywgMjEwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm5vbmNlLCAnNjQyNDgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5leHBpcmF0aW9uLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbnMgdGhlIGNvcnJlY3QgbWV0aG9kIElEIGFuZCB0b2tlbklkXG4gICAgICB0eC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgdGhlIGNvcnJlY3Qgc3RydWN0dXJlXG4gICAgICB0eC5jbGF1c2VzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXS50byk7XG4gICAgICB0eC5jbGF1c2VzWzBdPy50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5jbGF1c2VzWzBdLnZhbHVlKTtcbiAgICAgIHR4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcweDAnKTtcblxuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmNvaW4sICd0dmV0Jyk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0uY29pbiwgJ3R2ZXQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gZXhpdCBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHdpdGggY3VzdG9tIGNvbnRyYWN0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbklkID0gJzEyMzQ1Nic7XG4gICAgICBjb25zdCBjdXN0b21Db250cmFjdEFkZHJlc3MgPSBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVDsgLy8gVXNlIHRoZSB2YWxpZCB0ZXN0bmV0IGRlbGVnYXRpb24gYWRkcmVzc1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguY29udHJhY3QsIGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXS50byk7XG4gICAgICB0eC5jbGF1c2VzWzBdPy50bz8uc2hvdWxkLmVxdWFsKGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlc2VyaWFsaXplIGFuZCByZXNlcmlhbGl6ZSBhIHNpZ25lZCBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgYSBtb2NrIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gZm9yIGV4aXQgZGVsZWdhdGlvblxuICAgICAgY29uc3QgdG9rZW5JZCA9ICcxMjM0NTYnO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gTm93IGRlc2VyaWFsaXplIGFuZCBjaGVja1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVHggPSAoYXdhaXQgZGVzZXJpYWxpemVkQnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwoZGVzZXJpYWxpemVkVHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlc2VyaWFsaXplZFR4LnRva2VuSWQsIHRva2VuSWQpO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlc2VyaWFsaXplZFR4LmNvbnRyYWN0LCBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbiBkYXRhIHN0cnVjdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG5cbiAgICAgIC8vIFNob3VsZCB0aHJvdyBlcnJvciB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgcmVxdWlyZWQgZmllbGRzXG4gICAgICBhd2FpdCBzaG91bGQodHhCdWlsZGVyLmJ1aWxkKCkpLmJlLnJlamVjdGVkV2l0aCgnRGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHR4QnVpbGRlci5kZWxlZ2F0aW9uQ29udHJhY3QoKTtcbiAgICAgIGF3YWl0IHNob3VsZCh0eEJ1aWxkZXIuYnVpbGQoKSkuYmUucmVqZWN0ZWRXaXRoKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuXG4gICAgICAvLyBOb3cgYWRkIHRoZSB0b2tlbiBJRCBhbmQgaXQgc2hvdWxkIGJ1aWxkIHN1Y2Nlc3NmdWxseVxuICAgICAgdHhCdWlsZGVyLnRva2VuSWQoJzEyMzQ1NicpO1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCBjb250cmFjdCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCdpbnZhbGlkLWFkZHJlc3MnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIGludmFsaWQtYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCB0b2tlbiBJRCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCgnJyk7XG5cbiAgICAgIGF3YWl0IHNob3VsZCh0eEJ1aWxkZXIuYnVpbGQoKSkuYmUucmVqZWN0ZWRXaXRoKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpdERlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsbUNBQXNEO0FBRXRELDJEQUE2QztBQUM3Qyx1REFBdUc7QUFFdkcsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLDZDQUFpQyxDQUFDO0lBRWpFLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRXJELFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3pELFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FB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QUFDLENBQUM7UUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSztZQUMzQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNyRCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsU0FBUyxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0QixNQUFNLElBQUEsZ0JBQU0sRUFBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vZXhpdERlbGVnYXRpb24nO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5pbXBvcnQgeyBFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lELCBTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5cbmRlc2NyaWJlKCdWZXQgRXhpdCBEZWxlZ2F0aW9uIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0dmV0JykpO1xuICBjb25zdCBzdGFraW5nQ29udHJhY3RBZGRyZXNzID0gU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUO1xuXG4gIGRlc2NyaWJlKCdCdWlsZCBhbmQgU2lnbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRva2VuSWQgPSAnMTIzNDU2JztcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG5cbiAgICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHR4QnVpbGRlci50b2tlbklkKHRva2VuSWQpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguc2VuZGVyLCB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnRva2VuSWQsIHRva2VuSWQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnN0YWtpbmdDb250cmFjdEFkZHJlc3MsIFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzLCAyMTAwMCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgubm9uY2UsICc2NDI0OCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gZGF0YSBjb250YWlucyB0aGUgY29ycmVjdCBtZXRob2QgSUQgYW5kIHRva2VuSWRcbiAgICAgIHR4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuc3RhcnRXaXRoKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGhhcyB0aGUgY29ycmVjdCBzdHJ1Y3R1cmVcbiAgICAgIHR4LmNsYXVzZXMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5jbGF1c2VzWzBdKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5jbGF1c2VzWzBdLnRvKTtcbiAgICAgIHR4LmNsYXVzZXNbMF0/LnRvPy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5jbGF1c2VzWzBdLnZhbHVlKTtcbiAgICAgIHR4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcweDAnKTtcblxuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmNvaW4sICd0dmV0Jyk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmNvaW4sICd0dmV0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlc2VyaWFsaXplIGFuZCByZXNlcmlhbGl6ZSBhIHNpZ25lZCBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgYSBtb2NrIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gZm9yIGV4aXQgZGVsZWdhdGlvblxuICAgICAgY29uc3QgdG9rZW5JZCA9ICcxMjM0NTYnO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMjEwMDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCc2NDI0OCcpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAxNGVhZDE0MGU3N2JiYzEnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMTI4KTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBOb3cgZGVzZXJpYWxpemUgYW5kIGNoZWNrXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZWRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZWRUeCA9IChhd2FpdCBkZXNlcmlhbGl6ZWRCdWlsZGVyLmJ1aWxkKCkpIGFzIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZXNlcmlhbGl6ZWRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVzZXJpYWxpemVkVHgudG9rZW5JZCwgdG9rZW5JZCk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVzZXJpYWxpemVkVHguc3Rha2luZ0NvbnRyYWN0QWRkcmVzcywgU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uIGRhdGEgc3RydWN0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgLy8gU2hvdWxkIHRocm93IGVycm9yIHdoZW4gYnVpbGRpbmcgd2l0aG91dCByZXF1aXJlZCBmaWVsZHNcbiAgICAgIGF3YWl0IHNob3VsZCh0eEJ1aWxkZXIuYnVpbGQoKSkuYmUucmVqZWN0ZWRXaXRoKCdTdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBhd2FpdCBzaG91bGQodHhCdWlsZGVyLmJ1aWxkKCkpLmJlLnJlamVjdGVkV2l0aCgnVG9rZW4gSUQgaXMgcmVxdWlyZWQnKTtcblxuICAgICAgLy8gTm93IGFkZCB0aGUgdG9rZW4gSUQgYW5kIGl0IHNob3VsZCBidWlsZCBzdWNjZXNzZnVsbHlcbiAgICAgIHR4QnVpbGRlci50b2tlbklkKCcxMjM0NTYnKTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMjEwMDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCc2NDI0OCcpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAxNGVhZDE0MGU3N2JiYzEnKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHNpZ25lZCB0eCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5FWElUX0RFTEVHQVRJT05fVFJBTlNBQ1RJT04pO1xuICAgICAgY29uc3QgdHggPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24gYXMgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdG9Kc29uLmlkLnNob3VsZC5lcXVhbCgnMHhlY2EwYmEyYzhmYTkxMzMyYTFmZTAzNzIzMmFhMGFmOWZlNmU5MzkzMTM0NThhNjgzOGM2ZDQwNjBlZGUwMjc4Jyk7XG4gICAgICB0b0pzb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKCcweDFlMDJiMjk1M2FkZWZlYzIyNWNmMGVjNDk4MDViMTE0NmE0NDI5YzEnKTtcbiAgICAgIHRvSnNvbi5ub25jZS5zaG91bGQuZXF1YWwoJzM5MDc0NicpO1xuICAgICAgdG9Kc29uLmdhcy5zaG91bGQuZXF1YWwoMjE3Njk1KTtcbiAgICAgIHRvSnNvbi5nYXNQcmljZUNvZWYuc2hvdWxkLmVxdWFsKDEyOCk7XG4gICAgICB0b0pzb24uZXhwaXJhdGlvbi5zaG91bGQuZXF1YWwoNjQpO1xuICAgICAgdG9Kc29uLmNoYWluVGFnLnNob3VsZC5lcXVhbCgzOSk7XG4gICAgICB0b0pzb24udG9rZW5JZD8uc2hvdWxkLmVxdWFsKCcxNTY2MScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCBpbnZhbGlkIGNvbnRyYWN0IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEV4aXREZWxlZ2F0aW9uQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKCdpbnZhbGlkLWFkZHJlc3MnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIGludmFsaWQtYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCB0b2tlbiBJRCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci50b2tlbklkKCcnKTtcblxuICAgICAgYXdhaXQgc2hvdWxkKHR4QnVpbGRlci5idWlsZCgpKS5iZS5yZWplY3RlZFdpdGgoJ1Rva2VuIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -44,8 +44,8 @@ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
|
44
44
|
const testData = __importStar(require("../resources/vet"));
|
|
45
45
|
describe('VET Staking Transaction', function () {
|
|
46
46
|
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
|
|
47
|
-
const stakingContractAddress = constants_1.
|
|
48
|
-
const amountToStake = '
|
|
47
|
+
const stakingContractAddress = constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET;
|
|
48
|
+
const amountToStake = '10000000000000000000000'; // 10000 VET in wei
|
|
49
49
|
const levelId = 8; // Test level ID
|
|
50
50
|
// Helper function to create a basic transaction builder with common properties
|
|
51
51
|
const createBasicTxBuilder = () => {
|
|
@@ -232,17 +232,16 @@ describe('VET Staking Transaction', function () {
|
|
|
232
232
|
const txBuilder = factory.from(testData.STAKE_CLAUSE_TRANSACTION);
|
|
233
233
|
const tx = txBuilder.transaction;
|
|
234
234
|
const toJson = tx.toJson();
|
|
235
|
-
toJson.id.should.equal('
|
|
236
|
-
toJson.stakingContractAddress?.should.equal('
|
|
237
|
-
toJson.amountToStake?.should.equal(
|
|
238
|
-
toJson.nonce.should.equal('
|
|
239
|
-
toJson.gas.should.equal(
|
|
235
|
+
toJson.id.should.equal('0x7148f62b42ecfdcb7ee62ac0654514e4b5f65f2fe5fdee79d4d29f56ab1722eb');
|
|
236
|
+
toJson.stakingContractAddress?.should.equal('0x1e02b2953adefec225cf0ec49805b1146a4429c1');
|
|
237
|
+
toJson.amountToStake?.should.equal(amountToStake);
|
|
238
|
+
toJson.nonce.should.equal('996363');
|
|
239
|
+
toJson.gas.should.equal(406410);
|
|
240
240
|
toJson.gasPriceCoef.should.equal(128);
|
|
241
241
|
toJson.expiration.should.equal(64);
|
|
242
242
|
toJson.chainTag.should.equal(39);
|
|
243
|
-
|
|
244
|
-
toJson.nftTokenId?.should.equal(8);
|
|
243
|
+
toJson.levelId?.should.equal(8);
|
|
245
244
|
});
|
|
246
245
|
});
|
|
247
246
|
});
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uQnVpbGRlci9zdGFrZUNsYXVzZVRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1Qyx1Q0FBK0Y7QUFDL0Ysb0RBQTRCO0FBQzVCLHVEQUErRjtBQUMvRixvRUFBeUM7QUFDekMsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtJQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLHdDQUE0QixDQUFDO0lBQzVELE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDLENBQUMsZUFBZTtJQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7SUFFbkMsK0VBQStFO0lBQy9FLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RELFNBQVMsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsS0FBSyxDQUFDLE9B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QyxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsaURBQWlEO1lBQ2pELE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgVHJhbnNhY3Rpb24sIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQsIFNUQVJHQVRFX05GVF9BRERSRVNTX1RFU1RORVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5cbmRlc2NyaWJlKCdWRVQgU3Rha2luZyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcbiAgY29uc3Qgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IFNUQVJHQVRFX05GVF9BRERSRVNTX1RFU1RORVQ7XG4gIGNvbnN0IGFtb3VudFRvU3Rha2UgPSAnMTAwMDAwMDAwMDAwMDAwMDAwMCc7IC8vIDEgVkVUIGluIHdlaVxuICBjb25zdCBsZXZlbElkID0gODsgLy8gVGVzdCBsZXZlbCBJRFxuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBiYXNpYyB0cmFuc2FjdGlvbiBidWlsZGVyIHdpdGggY29tbW9uIHByb3BlcnRpZXNcbiAgY29uc3QgY3JlYXRlQmFzaWNUeEJ1aWxkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG4gICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpOyAvLyBUZXN0bmV0IGNoYWluIHRhZ1xuICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTsgLy8gVGVzdG5ldCBjaGFpbiB0YWdcbiAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoVHJhbnNhY3Rpb24pO1xuICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICBzdGFraW5nVHguc3Rha2luZ0NvbnRyYWN0QWRkcmVzcy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LmFtb3VudFRvU3Rha2Uuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICAgIHN0YWtpbmdUeC5sZXZlbElkLnNob3VsZC5lcXVhbChsZXZlbElkKTtcblxuICAgIC8vIFZlcmlmeSBjbGF1c2VzXG4gICAgc3Rha2luZ1R4LmNsYXVzZXMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LmNsYXVzZXNbMF0udG8pO1xuICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLnRvPy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuXG4gICAgLy8gVmVyaWZ5IHRyYW5zYWN0aW9uIGRhdGEgaXMgY29ycmVjdGx5IGVuY29kZWQgdXNpbmcgZXRoZXJldW1BQklcbiAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YSk7XG4gICAgY29uc3QgdHhEYXRhID0gc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YTtcbiAgICB0eERhdGEuc2hvdWxkLnN0YXJ0V2l0aChTVEFLRV9DTEFVU0VfTUVUSE9EX0lEKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgZW5jb2RlZCBkYXRhIG1hdGNoZXMgd2hhdCB3ZSBleHBlY3QgZnJvbSBldGhlcmV1bUFCSVxuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnc3Rha2UnO1xuICAgIGNvbnN0IHR5cGVzID0gWyd1aW50OCddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFtsZXZlbElkXTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuICAgIGNvbnN0IGV4cGVjdGVkRGF0YSA9ICcweCcgKyBCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICB0eERhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG5cbiAgICAvLyBWZXJpZnkgcmVjaXBpZW50c1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZhaWx1cmUgc2NlbmFyaW9zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBzdGFraW5nQ29udHJhY3RBZGRyZXNzIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gbGV2ZWxJZCBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0xldmVsIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYW1vdW50VG9TdGFrZSBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0Ftb3VudCB0byBzdGFrZSBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHN0YWtpbmdDb250cmFjdEFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG5cbiAgICAgIC8vIEludmFsaWQgYWRkcmVzcyAod3JvbmcgZm9ybWF0KVxuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3MoJ2ludmFsaWQtYWRkcmVzcycpO1xuICAgICAgfSkudGhyb3coL0ludmFsaWQgYWRkcmVzcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGFtb3VudFRvU3Rha2UgaXMgbm90IGEgdmFsaWQgbnVtYmVyIHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBJbnZhbGlkIGFtb3VudCAobm90IGEgbnVtYmVyKVxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoJ25vdC1hLW51bWJlcicpO1xuXG4gICAgICAvLyBTaG91bGQgZmFpbCB3aGVuIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbiBkdWUgdG8gaW52YWxpZCBhbW91bnRcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB6ZXJvIGFtb3VudFRvU3Rha2UgYnV0IGVuY29kZSBpdCBwcm9wZXJseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoJzAnKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSBhbW91bnQgaXMgY29ycmVjdGx5IHNldCB0byB6ZXJvXG4gICAgICBzdGFraW5nVHguYW1vdW50VG9TdGFrZS5zaG91bGQuZXF1YWwoJzAnKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBkYXRhIGlzIGNvcnJlY3RseSBlbmNvZGVkIHdpdGggbGV2ZWxJZCBmb3Igc3Rha2VcbiAgICAgIC8vIEV4cGVjdGVkIGRhdGEgZm9yIHN0YWtlKDgpIHdoZXJlIDggaXMgbGV2ZWxJZFxuICAgICAgY29uc3QgZXhwZWN0ZWREYXRhID0gJzB4NjA0ZjIxNzcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4JztcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggdW5kZWZpbmVkIHNlbmRlciBidXQgaW5jbHVkZSBpdCBpbiBpbnB1dHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgICAgLy8gTm90IHNldHRpbmcgc2VuZGVyXG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gaGFzIGlucHV0cyBidXQgd2l0aCB1bmRlZmluZWQgYWRkcmVzc1xuICAgICAgc3Rha2luZ1R4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChzdGFraW5nVHguaW5wdXRzWzBdLmFkZHJlc3MpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGhhcyB0aGUgY29ycmVjdCBvdXRwdXRcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzdGFraW5nVHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIG5ldHdvcmsgZGVmYXVsdCBjaGFpblRhZyB3aGVuIG5vdCBleHBsaWNpdGx5IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgLy8gTm90IHNldHRpbmcgY2hhaW5UYWdcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgY2hhaW5UYWcgaXMgc2V0IHRvIHRoZSB0ZXN0bmV0IGRlZmF1bHQgKDM5KVxuICAgICAgc3Rha2luZ1R4LmNoYWluVGFnLnNob3VsZC5lcXVhbCgzOSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBBQkkgZW5jb2RpbmcgbWF0Y2hlcyBleHBlY3RlZCBvdXRwdXQgZm9yIGRpZmZlcmVudCBhbW91bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIC8vIFRlc3Qgd2l0aCBhIGRpZmZlcmVudCBhbW91bnRcbiAgICAgIGNvbnN0IGRpZmZlcmVudEFtb3VudCA9ICc1MDAwMDAwMDAwMDAwMDAwMDAnOyAvLyAwLjUgVkVUXG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShkaWZmZXJlbnRBbW91bnQpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcblxuICAgICAgLy8gTWFudWFsbHkgZW5jb2RlIHRoZSBleHBlY3RlZCBkYXRhIGZvciBzdGFrZSBtZXRob2RcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnc3Rha2UnO1xuICAgICAgY29uc3QgdHlwZXMgPSBbJ3VpbnQ4J107XG4gICAgICBjb25zdCBwYXJhbXMgPSBbbGV2ZWxJZF07XG5cbiAgICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG4gICAgICBjb25zdCBleHBlY3RlZERhdGEgPSAnMHgnICsgQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgbWF0Y2hlcyBvdXIgbWFudWFsIGVuY29kaW5nXG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZXh0cmVtZWx5IGxhcmdlIHN0YWtlIGFtb3VudHMgY29ycmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIC8vIFRlc3Qgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IChuZWFyIHVpbnQyNTYgbWF4KVxuICAgICAgY29uc3QgbGFyZ2VBbW91bnQgPSAnMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1JzsgLy8gMl4yNTYgLSAxXG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShsYXJnZUFtb3VudCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIGFtb3VudCBpcyBzdG9yZWQgY29ycmVjdGx5XG4gICAgICBzdGFraW5nVHguYW1vdW50VG9TdGFrZS5zaG91bGQuZXF1YWwobGFyZ2VBbW91bnQpO1xuXG4gICAgICAvLyBUaGUgZGF0YSBzaG91bGQgc3RpbGwgYmUgcHJvcGVybHkgZW5jb2RlZFxuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQpO1xuXG4gICAgICAvLyBWZXJpZnkgcmVjaXBpZW50c1xuICAgICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbChsYXJnZUFtb3VudCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtFX0NMQVVTRV9UUkFOU0FDVElPTik7XG4gICAgICBjb25zdCB0eCA9IHR4QnVpbGRlci50cmFuc2FjdGlvbiBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdG9Kc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0b0pzb24uaWQuc2hvdWxkLmVxdWFsKCcweDJmOTZlNGMxNmQ3MGJkM2UyZGFiZWMyOWEwN2ViM2Q2MDY2NjkxYmE1YjgxMmQ2ZTg5NzY3NmY2ZWJjMGE3OTgnKTtcbiAgICAgIHRvSnNvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzPy5zaG91bGQuZXF1YWwoJzB4MWVjMWQxNjg1NzQ2MDNlYzM1YjlkMjI5ODQzYjdjMmI0NGJjYjc3MCcpO1xuICAgICAgdG9Kc29uLmFtb3VudFRvU3Rha2U/LnNob3VsZC5lcXVhbCgnMHhkZTBiNmIzYTc2NDAwMDAnKTtcbiAgICAgIHRvSnNvbi5ub25jZS5zaG91bGQuZXF1YWwoJzUwNDQ0MCcpO1xuICAgICAgdG9Kc29uLmdhcy5zaG91bGQuZXF1YWwoMzkyNTM4KTtcbiAgICAgIHRvSnNvbi5nYXNQcmljZUNvZWYuc2hvdWxkLmVxdWFsKDEyOCk7XG4gICAgICB0b0pzb24uZXhwaXJhdGlvbi5zaG91bGQuZXF1YWwoNjQpO1xuICAgICAgdG9Kc29uLmNoYWluVGFnLnNob3VsZC5lcXVhbCgzOSk7XG4gICAgICAvLyBpbiBzdGFrZSB0eG4sIG5mdFRva2VuSWQgaW5kaWNhdGVzIHRoZSBsZXZlbElkXG4gICAgICB0b0pzb24ubmZ0VG9rZW5JZD8uc2hvdWxkLmVxdWFsKDgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uQnVpbGRlci9zdGFrZUNsYXVzZVRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1Qyx1Q0FBK0Y7QUFDL0Ysb0RBQTRCO0FBQzVCLHVEQUFvRztBQUNwRyxvRUFBeUM7QUFDekMsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtJQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLDZDQUFpQyxDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLHlCQUF5QixDQUFDLENBQUMsbUJBQW1CO0lBQ3BFLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUVuQywrRUFBK0U7SUFDL0UsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQy9ELFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDOUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxLQUFLLENBQUMs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QyxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBUcmFuc2FjdGlvbiwgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgU1RBS0VfQ0xBVVNFX01FVEhPRF9JRCwgU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy92ZXQnO1xuXG5kZXNjcmliZSgnVkVUIFN0YWtpbmcgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3R2ZXQnKSk7XG4gIGNvbnN0IHN0YWtpbmdDb250cmFjdEFkZHJlc3MgPSBTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQ7XG4gIGNvbnN0IGFtb3VudFRvU3Rha2UgPSAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnOyAvLyAxMDAwMCBWRVQgaW4gd2VpXG4gIGNvbnN0IGxldmVsSWQgPSA4OyAvLyBUZXN0IGxldmVsIElEXG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGJhc2ljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgd2l0aCBjb21tb24gcHJvcGVydGllc1xuICBjb25zdCBjcmVhdGVCYXNpY1R4QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcbiAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7IC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gIH07XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG4gICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpOyAvLyBUZXN0bmV0IGNoYWluIHRhZ1xuICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihUcmFuc2FjdGlvbik7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2VDbGF1c2VUcmFuc2FjdGlvbik7XG5cbiAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgIHN0YWtpbmdUeC5zdGFraW5nQ29udHJhY3RBZGRyZXNzLnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICBzdGFraW5nVHguYW1vdW50VG9TdGFrZS5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gICAgc3Rha2luZ1R4LmxldmVsSWQuc2hvdWxkLmVxdWFsKGxldmVsSWQpO1xuXG4gICAgLy8gVmVyaWZ5IGNsYXVzZXNcbiAgICBzdGFraW5nVHguY2xhdXNlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHNob3VsZC5leGlzdChzdGFraW5nVHguY2xhdXNlc1swXS50byk7XG4gICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0udG8/LnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICBzdGFraW5nVHguY2xhdXNlc1swXS52YWx1ZS5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG5cbiAgICAvLyBWZXJpZnkgdHJhbnNhY3Rpb24gZGF0YSBpcyBjb3JyZWN0bHkgZW5jb2RlZCB1c2luZyBldGhlcmV1bUFCSVxuICAgIHNob3VsZC5leGlzdChzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhKTtcbiAgICBjb25zdCB0eERhdGEgPSBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhO1xuICAgIHR4RGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQpO1xuXG4gICAgLy8gVmVyaWZ5IHRoZSBlbmNvZGVkIGRhdGEgbWF0Y2hlcyB3aGF0IHdlIGV4cGVjdCBmcm9tIGV0aGVyZXVtQUJJXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICdzdGFrZSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ3VpbnQ4J107XG4gICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWRdO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG4gICAgY29uc3QgZXhwZWN0ZWREYXRhID0gJzB4JyArIEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHR4RGF0YS5zaG91bGQuZXF1YWwoZXhwZWN0ZWREYXRhKTtcblxuICAgIC8vIFZlcmlmeSByZWNpcGllbnRzXG4gICAgc3Rha2luZ1R4LnJlY2lwaWVudHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBzdGFraW5nVHgucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICBzdGFraW5nVHgucmVjaXBpZW50c1swXS5hbW91bnQuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmFpbHVyZSBzY2VuYXJpb3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHN0YWtpbmdDb250cmFjdEFkZHJlc3MgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdTdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBsZXZlbElkIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcblxuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTGV2ZWwgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBhbW91bnRUb1N0YWtlIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnQW1vdW50IHRvIHN0YWtlIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyBpcyBpbnZhbGlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcblxuICAgICAgLy8gSW52YWxpZCBhZGRyZXNzICh3cm9uZyBmb3JtYXQpXG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcygnaW52YWxpZC1hZGRyZXNzJyk7XG4gICAgICB9KS50aHJvdygvSW52YWxpZCBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYW1vdW50VG9TdGFrZSBpcyBub3QgYSB2YWxpZCBudW1iZXIgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIC8vIEludmFsaWQgYW1vdW50IChub3QgYSBudW1iZXIpXG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZSgnbm90LWEtbnVtYmVyJyk7XG5cbiAgICAgIC8vIFNob3VsZCBmYWlsIHdoZW4gYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uIGR1ZSB0byBpbnZhbGlkIGFtb3VudFxuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IHplcm8gYW1vdW50VG9TdGFrZSBidXQgZW5jb2RlIGl0IHByb3Blcmx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZSgnMCcpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2VDbGF1c2VUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG4gICAgICAvLyBWZXJpZnkgdGhlIGFtb3VudCBpcyBjb3JyZWN0bHkgc2V0IHRvIHplcm9cbiAgICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbCgnMCcpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgaXMgY29ycmVjdGx5IGVuY29kZWQgd2l0aCBsZXZlbElkIGZvciBzdGFrZVxuICAgICAgLy8gRXhwZWN0ZWQgZGF0YSBmb3Igc3Rha2UoOCkgd2hlcmUgOCBpcyBsZXZlbElkXG4gICAgICBjb25zdCBleHBlY3RlZERhdGEgPSAnMHg2MDRmMjE3NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgnO1xuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuZXF1YWwoZXhwZWN0ZWREYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gd2l0aCB1bmRlZmluZWQgc2VuZGVyIGJ1dCBpbmNsdWRlIGl0IGluIGlucHV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBzZW5kZXJcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgaW5wdXRzIGJ1dCB3aXRoIHVuZGVmaW5lZCBhZGRyZXNzXG4gICAgICBzdGFraW5nVHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHN0YWtpbmdUeC5pbnB1dHNbMF0uYWRkcmVzcyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gaGFzIHRoZSBjb3JyZWN0IG91dHB1dFxuICAgICAgc3Rha2luZ1R4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgc3Rha2luZ1R4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgbmV0d29yayBkZWZhdWx0IGNoYWluVGFnIHdoZW4gbm90IGV4cGxpY2l0bHkgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBjaGFpblRhZ1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSBjaGFpblRhZyBpcyBzZXQgdG8gdGhlIHRlc3RuZXQgZGVmYXVsdCAoMzkpXG4gICAgICBzdGFraW5nVHguY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IEFCSSBlbmNvZGluZyBtYXRjaGVzIGV4cGVjdGVkIG91dHB1dCBmb3IgZGlmZmVyZW50IGFtb3VudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgLy8gVGVzdCB3aXRoIGEgZGlmZmVyZW50IGFtb3VudFxuICAgICAgY29uc3QgZGlmZmVyZW50QW1vdW50ID0gJzUwMDAwMDAwMDAwMDAwMDAwMCc7IC8vIDAuNSBWRVRcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGRpZmZlcmVudEFtb3VudCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBNYW51YWxseSBlbmNvZGUgdGhlIGV4cGVjdGVkIGRhdGEgZm9yIHN0YWtlIG1ldGhvZFxuICAgICAgY29uc3QgbWV0aG9kTmFtZSA9ICdzdGFrZSc7XG4gICAgICBjb25zdCB0eXBlcyA9IFsndWludDgnXTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IFtsZXZlbElkXTtcblxuICAgICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkRGF0YSA9ICcweCcgKyBCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gZGF0YSBtYXRjaGVzIG91ciBtYW51YWwgZW5jb2RpbmdcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoU1RBS0VfQ0xBVVNFX01FVEhPRF9JRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBleHRyZW1lbHkgbGFyZ2Ugc3Rha2UgYW1vdW50cyBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgLy8gVGVzdCB3aXRoIGEgdmVyeSBsYXJnZSBhbW91bnQgKG5lYXIgdWludDI1NiBtYXgpXG4gICAgICBjb25zdCBsYXJnZUFtb3VudCA9ICcxMTU3OTIwODkyMzczMTYxOTU0MjM1NzA5ODUwMDg2ODc5MDc4NTMyNjk5ODQ2NjU2NDA1NjQwMzk0NTc1ODQwMDc5MTMxMjk2Mzk5MzUnOyAvLyAyXjI1NiAtIDFcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGxhcmdlQW1vdW50KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgYW1vdW50IGlzIHN0b3JlZCBjb3JyZWN0bHlcbiAgICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbChsYXJnZUFtb3VudCk7XG5cbiAgICAgIC8vIFRoZSBkYXRhIHNob3VsZCBzdGlsbCBiZSBwcm9wZXJseSBlbmNvZGVkXG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoU1RBS0VfQ0xBVVNFX01FVEhPRF9JRCk7XG5cbiAgICAgIC8vIFZlcmlmeSByZWNpcGllbnRzXG4gICAgICBzdGFraW5nVHgucmVjaXBpZW50c1swXS5hbW91bnQuc2hvdWxkLmVxdWFsKGxhcmdlQW1vdW50KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHggYW5kIHZhbGlkYXRlIGl0cyB0b0pzb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0VfQ0xBVVNFX1RSQU5TQUNUSU9OKTtcbiAgICAgIGNvbnN0IHR4ID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB0b0pzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHRvSnNvbi5pZC5zaG91bGQuZXF1YWwoJzB4NzE0OGY2MmI0MmVjZmRjYjdlZTYyYWMwNjU0NTE0ZTRiNWY2NWYyZmU1ZmRlZTc5ZDRkMjlmNTZhYjE3MjJlYicpO1xuICAgICAgdG9Kc29uLnN0YWtpbmdDb250cmFjdEFkZHJlc3M/LnNob3VsZC5lcXVhbCgnMHgxZTAyYjI5NTNhZGVmZWMyMjVjZjBlYzQ5ODA1YjExNDZhNDQyOWMxJyk7XG4gICAgICB0b0pzb24uYW1vdW50VG9TdGFrZT8uc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdG9Kc29uLm5vbmNlLnNob3VsZC5lcXVhbCgnOTk2MzYzJyk7XG4gICAgICB0b0pzb24uZ2FzLnNob3VsZC5lcXVhbCg0MDY0MTApO1xuICAgICAgdG9Kc29uLmdhc1ByaWNlQ29lZi5zaG91bGQuZXF1YWwoMTI4KTtcbiAgICAgIHRvSnNvbi5leHBpcmF0aW9uLnNob3VsZC5lcXVhbCg2NCk7XG4gICAgICB0b0pzb24uY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICAgIHRvSnNvbi5sZXZlbElkPy5zaG91bGQuZXF1YWwoOCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -44,7 +44,7 @@ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
|
44
44
|
const testData = __importStar(require("../resources/vet"));
|
|
45
45
|
describe('VET Staking Transaction', function () {
|
|
46
46
|
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
|
|
47
|
-
const stakingContractAddress = constants_1.
|
|
47
|
+
const stakingContractAddress = constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET;
|
|
48
48
|
const amountToStake = '1000000000000000000'; // 1 VET in wei
|
|
49
49
|
const levelId = 8; // Test level ID
|
|
50
50
|
const autorenew = true; // Test autorenew flag
|
|
@@ -247,4 +247,4 @@ describe('VET Staking Transaction', function () {
|
|
|
247
247
|
});
|
|
248
248
|
});
|
|
249
249
|
});
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTRDO0FBQzVDLHVDQUEyRjtBQUMzRixvREFBNEI7QUFDNUIsdURBQTBGO0FBQzFGLG9FQUF5QztBQUN6QywyREFBNkM7QUFFN0MsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sc0JBQXNCLEdBQUcsd0NBQTRCLENBQUM7SUFDNUQsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxlQUFlO0lBQzVELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxzQkFBc0I7SUFFOUMsK0VBQStFO0lBQy9FLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzlDLFNBQVMsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixT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SyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uLCBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFNUQUtJTkdfTUVUSE9EX0lELCBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVUIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy92ZXQnO1xuXG5kZXNjcmliZSgnVkVUIFN0YWtpbmcgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3R2ZXQnKSk7XG4gIGNvbnN0IHN0YWtpbmdDb250cmFjdEFkZHJlc3MgPSBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVUO1xuICBjb25zdCBhbW91bnRUb1N0YWtlID0gJzEwMDAwMDAwMDAwMDAwMDAwMDAnOyAvLyAxIFZFVCBpbiB3ZWlcbiAgY29uc3QgbGV2ZWxJZCA9IDg7IC8vIFRlc3QgbGV2ZWwgSURcbiAgY29uc3QgYXV0b3JlbmV3ID0gdHJ1ZTsgLy8gVGVzdCBhdXRvcmVuZXcgZmxhZ1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBiYXNpYyB0cmFuc2FjdGlvbiBidWlsZGVyIHdpdGggY29tbW9uIHByb3BlcnRpZXNcbiAgY29uc3QgY3JlYXRlQmFzaWNUeEJ1aWxkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTsgLy8gVGVzdG5ldCBjaGFpbiB0YWdcbiAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG4gICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpOyAvLyBUZXN0bmV0IGNoYWluIHRhZ1xuICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihUcmFuc2FjdGlvbik7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2luZ1RyYW5zYWN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICBzdGFraW5nVHguc3Rha2luZ0NvbnRyYWN0QWRkcmVzcy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LmFtb3VudFRvU3Rha2Uuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICAgIHN0YWtpbmdUeC5sZXZlbElkLnNob3VsZC5lcXVhbChsZXZlbElkKTtcbiAgICBzdGFraW5nVHguYXV0b3JlbmV3LnNob3VsZC5lcXVhbChhdXRvcmVuZXcpO1xuXG4gICAgLy8gVmVyaWZ5IGNsYXVzZXNcbiAgICBzdGFraW5nVHguY2xhdXNlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHNob3VsZC5leGlzdChzdGFraW5nVHguY2xhdXNlc1swXS50byk7XG4gICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0udG8/LnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICBzdGFraW5nVHguY2xhdXNlc1swXS52YWx1ZS5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG5cbiAgICAvLyBWZXJpZnkgdHJhbnNhY3Rpb24gZGF0YSBpcyBjb3JyZWN0bHkgZW5jb2RlZCB1c2luZyBldGhlcmV1bUFCSVxuICAgIHNob3VsZC5leGlzdChzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhKTtcbiAgICBjb25zdCB0eERhdGEgPSBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhO1xuICAgIHR4RGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtJTkdfTUVUSE9EX0lEKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgZW5jb2RlZCBkYXRhIG1hdGNoZXMgd2hhdCB3ZSBleHBlY3QgZnJvbSBldGhlcmV1bUFCSVxuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnc3Rha2VBbmREZWxlZ2F0ZSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ3VpbnQ4JywgJ2Jvb2wnXTtcbiAgICBjb25zdCBwYXJhbXMgPSBbbGV2ZWxJZCwgYXV0b3JlbmV3XTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuICAgIGNvbnN0IGV4cGVjdGVkRGF0YSA9ICcweCcgKyBCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICB0eERhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG5cbiAgICAvLyBWZXJpZnkgcmVjaXBpZW50c1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZhaWx1cmUgc2NlbmFyaW9zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBzdGFraW5nQ29udHJhY3RBZGRyZXNzIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gbGV2ZWxJZCBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0xldmVsIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYW1vdW50VG9TdGFrZSBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0Ftb3VudCB0byBzdGFrZSBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHN0YWtpbmdDb250cmFjdEFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG5cbiAgICAgIC8vIEludmFsaWQgYWRkcmVzcyAod3JvbmcgZm9ybWF0KVxuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3MoJ2ludmFsaWQtYWRkcmVzcycpO1xuICAgICAgfSkudGhyb3coL0ludmFsaWQgYWRkcmVzcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGFtb3VudFRvU3Rha2UgaXMgbm90IGEgdmFsaWQgbnVtYmVyIHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBJbnZhbGlkIGFtb3VudCAobm90IGEgbnVtYmVyKVxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoJ25vdC1hLW51bWJlcicpO1xuXG4gICAgICAvLyBTaG91bGQgZmFpbCB3aGVuIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbiBkdWUgdG8gaW52YWxpZCBhbW91bnRcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB6ZXJvIGFtb3VudFRvU3Rha2UgYnV0IGVuY29kZSBpdCBwcm9wZXJseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoJzAnKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtpbmdUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgYW1vdW50IGlzIGNvcnJlY3RseSBzZXQgdG8gemVyb1xuICAgICAgc3Rha2luZ1R4LmFtb3VudFRvU3Rha2Uuc2hvdWxkLmVxdWFsKCcwJyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gZGF0YSBpcyBjb3JyZWN0bHkgZW5jb2RlZCB3aXRoIGxldmVsSWQgYW5kIGF1dG9yZW5ldyBmb3Igc3Rha2VBbmREZWxlZ2F0ZVxuICAgICAgLy8gRXhwZWN0ZWQgZGF0YSBmb3Igc3Rha2VBbmREZWxlZ2F0ZSg4LCB0cnVlKSB3aGVyZSA4IGlzIGxldmVsSWQgYW5kIHRydWUgaXMgYXV0b3JlbmV3XG4gICAgICBjb25zdCBleHBlY3RlZERhdGEgPVxuICAgICAgICAnMHhkOGRhM2JiZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJztcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggdW5kZWZpbmVkIHNlbmRlciBidXQgaW5jbHVkZSBpdCBpbiBpbnB1dHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIC8vIE5vdCBzZXR0aW5nIHNlbmRlclxuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2luZ1RyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2luZ1RyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgaW5wdXRzIGJ1dCB3aXRoIHVuZGVmaW5lZCBhZGRyZXNzXG4gICAgICBzdGFraW5nVHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHN0YWtpbmdUeC5pbnB1dHNbMF0uYWRkcmVzcyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gaGFzIHRoZSBjb3JyZWN0IG91dHB1dFxuICAgICAgc3Rha2luZ1R4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgc3Rha2luZ1R4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgbmV0d29yayBkZWZhdWx0IGNoYWluVGFnIHdoZW4gbm90IGV4cGxpY2l0bHkgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgLy8gTm90IHNldHRpbmcgY2hhaW5UYWdcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFraW5nVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFraW5nVHJhbnNhY3Rpb247XG4gICAgICAvLyBWZXJpZnkgdGhlIGNoYWluVGFnIGlzIHNldCB0byB0aGUgdGVzdG5ldCBkZWZhdWx0ICgzOSlcbiAgICAgIHN0YWtpbmdUeC5jaGFpblRhZy5zaG91bGQuZXF1YWwoMzkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgQUJJIGVuY29kaW5nIG1hdGNoZXMgZXhwZWN0ZWQgb3V0cHV0IGZvciBkaWZmZXJlbnQgYW1vdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBUZXN0IHdpdGggYSBkaWZmZXJlbnQgYW1vdW50XG4gICAgICBjb25zdCBkaWZmZXJlbnRBbW91bnQgPSAnNTAwMDAwMDAwMDAwMDAwMDAwJzsgLy8gMC41IFZFVFxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoZGlmZmVyZW50QW1vdW50KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcblxuICAgICAgLy8gTWFudWFsbHkgZW5jb2RlIHRoZSBleHBlY3RlZCBkYXRhIGZvciBzdGFrZUFuZERlbGVnYXRlIG1ldGhvZFxuICAgICAgY29uc3QgbWV0aG9kTmFtZSA9ICdzdGFrZUFuZERlbGVnYXRlJztcbiAgICAgIGNvbnN0IHR5cGVzID0gWyd1aW50OCcsICdib29sJ107XG4gICAgICBjb25zdCBwYXJhbXMgPSBbbGV2ZWxJZCwgYXV0b3JlbmV3XTtcblxuICAgICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkRGF0YSA9ICcweCcgKyBCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gZGF0YSBtYXRjaGVzIG91ciBtYW51YWwgZW5jb2RpbmdcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLmVxdWFsKGV4cGVjdGVkRGF0YSk7XG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoU1RBS0lOR19NRVRIT0RfSUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZXh0cmVtZWx5IGxhcmdlIHN0YWtlIGFtb3VudHMgY29ycmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIC8vIFRlc3Qgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IChuZWFyIHVpbnQyNTYgbWF4KVxuICAgICAgY29uc3QgbGFyZ2VBbW91bnQgPSAnMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1JzsgLy8gMl4yNTYgLSAxXG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShsYXJnZUFtb3VudCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFraW5nVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgYW1vdW50IGlzIHN0b3JlZCBjb3JyZWN0bHlcbiAgICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbChsYXJnZUFtb3VudCk7XG5cbiAgICAgIC8vIFRoZSBkYXRhIHNob3VsZCBzdGlsbCBiZSBwcm9wZXJseSBlbmNvZGVkXG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoU1RBS0lOR19NRVRIT0RfSUQpO1xuXG4gICAgICAvLyBWZXJpZnkgcmVjaXBpZW50c1xuICAgICAgc3Rha2luZ1R4LnJlY2lwaWVudHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbChsYXJnZUFtb3VudCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtJTkdfVFJBTlNBQ1RJT04pO1xuICAgICAgY29uc3QgdHggPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24gYXMgU3Rha2luZ1RyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdG9Kc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0b0pzb24uaWQuc2hvdWxkLmVxdWFsKCcweDk5MzI1YjM5Y2QwNGJkMTgyMWY2ZjZhZjdiNjc5YzI0N2U2NDI1YTRlYjk1ZWI0MjlmYThkZmY0NzcyOThkMGUnKTtcbiAgICAgIHRvSnNvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzPy5zaG91bGQuZXF1YWwoJzB4MTg1NmM1MzNhYzJkOTQzNDBhYWE4NTQ0ZDM1YTVjMWQ0YTIxZGVlNycpO1xuICAgICAgdG9Kc29uLmFtb3VudFRvU3Rha2U/LnNob3VsZC5lcXVhbCgnMHhkZTBiNmIzYTc2NDAwMDAnKTtcbiAgICAgIHRvSnNvbi5ub25jZS5zaG91bGQuZXF1YWwoJzYwOTM2MycpO1xuICAgICAgdG9Kc29uLmdhcy5zaG91bGQuZXF1YWwoMjU5ODgpO1xuICAgICAgdG9Kc29uLmdhc1ByaWNlQ29lZi5zaG91bGQuZXF1YWwoMTI4KTtcbiAgICAgIHRvSnNvbi5leHBpcmF0aW9uLnNob3VsZC5lcXVhbCg2NCk7XG4gICAgICB0b0pzb24uY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICAgIHRvSnNvbi5uZnRUb2tlbklkPy5zaG91bGQuZXF1YWwoOCk7XG4gICAgICB0b0pzb24uYXV0b3JlbmV3Py5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTRDO0FBQzVDLHVDQUEyRjtBQUMzRixvREFBNEI7QUFDNUIsdURBQStGO0FBQy9GLG9FQUF5QztBQUN6QywyREFBNkM7QUFFN0MsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sc0JBQXNCLEdBQUcsNkNBQWlDLENBQUM7SUFDakUsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxlQUFlO0lBQzVELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxzQkFBc0I7SUFFOUMsK0VBQStFO0lBQy9FLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzlDLFNBQVMsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixT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SyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uLCBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFNUQUtJTkdfTUVUSE9EX0lELCBTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5cbmRlc2NyaWJlKCdWRVQgU3Rha2luZyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcbiAgY29uc3Qgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVDtcbiAgY29uc3QgYW1vdW50VG9TdGFrZSA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwJzsgLy8gMSBWRVQgaW4gd2VpXG4gIGNvbnN0IGxldmVsSWQgPSA4OyAvLyBUZXN0IGxldmVsIElEXG4gIGNvbnN0IGF1dG9yZW5ldyA9IHRydWU7IC8vIFRlc3QgYXV0b3JlbmV3IGZsYWdcblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgYmFzaWMgdHJhbnNhY3Rpb24gYnVpbGRlciB3aXRoIGNvbW1vbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGNyZWF0ZUJhc2ljVHhCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0J1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcbiAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7IC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gIH07XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTsgLy8gVGVzdG5ldCBjaGFpbiB0YWdcbiAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoVHJhbnNhY3Rpb24pO1xuICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtpbmdUcmFuc2FjdGlvbik7XG5cbiAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFraW5nVHJhbnNhY3Rpb247XG4gICAgc3Rha2luZ1R4LnN0YWtpbmdDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgICBzdGFraW5nVHgubGV2ZWxJZC5zaG91bGQuZXF1YWwobGV2ZWxJZCk7XG4gICAgc3Rha2luZ1R4LmF1dG9yZW5ldy5zaG91bGQuZXF1YWwoYXV0b3JlbmV3KTtcblxuICAgIC8vIFZlcmlmeSBjbGF1c2VzXG4gICAgc3Rha2luZ1R4LmNsYXVzZXMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LmNsYXVzZXNbMF0udG8pO1xuICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLnRvPy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGFtb3VudFRvU3Rha2UpO1xuXG4gICAgLy8gVmVyaWZ5IHRyYW5zYWN0aW9uIGRhdGEgaXMgY29ycmVjdGx5IGVuY29kZWQgdXNpbmcgZXRoZXJldW1BQklcbiAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YSk7XG4gICAgY29uc3QgdHhEYXRhID0gc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YTtcbiAgICB0eERhdGEuc2hvdWxkLnN0YXJ0V2l0aChTVEFLSU5HX01FVEhPRF9JRCk7XG5cbiAgICAvLyBWZXJpZnkgdGhlIGVuY29kZWQgZGF0YSBtYXRjaGVzIHdoYXQgd2UgZXhwZWN0IGZyb20gZXRoZXJldW1BQklcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3N0YWtlQW5kRGVsZWdhdGUnO1xuICAgIGNvbnN0IHR5cGVzID0gWyd1aW50OCcsICdib29sJ107XG4gICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWQsIGF1dG9yZW5ld107XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcbiAgICBjb25zdCBleHBlY3RlZERhdGEgPSAnMHgnICsgQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgdHhEYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuXG4gICAgLy8gVmVyaWZ5IHJlY2lwaWVudHNcbiAgICBzdGFraW5nVHgucmVjaXBpZW50cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGYWlsdXJlIHNjZW5hcmlvcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGxldmVsSWQgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdMZXZlbCBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGFtb3VudFRvU3Rha2UgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdBbW91bnQgdG8gc3Rha2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBzdGFraW5nQ29udHJhY3RBZGRyZXNzIGlzIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuXG4gICAgICAvLyBJbnZhbGlkIGFkZHJlc3MgKHdyb25nIGZvcm1hdClcbiAgICAgIHNob3VsZCgoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKCdpbnZhbGlkLWFkZHJlc3MnKTtcbiAgICAgIH0pLnRocm93KC9JbnZhbGlkIGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBhbW91bnRUb1N0YWtlIGlzIG5vdCBhIHZhbGlkIG51bWJlciBzdHJpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgLy8gSW52YWxpZCBhbW91bnQgKG5vdCBhIG51bWJlcilcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKCdub3QtYS1udW1iZXInKTtcblxuICAgICAgLy8gU2hvdWxkIGZhaWwgd2hlbiBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24gZHVlIHRvIGludmFsaWQgYW1vdW50XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgemVybyBhbW91bnRUb1N0YWtlIGJ1dCBlbmNvZGUgaXQgcHJvcGVybHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKCcwJyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFraW5nVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFraW5nVHJhbnNhY3Rpb247XG4gICAgICAvLyBWZXJpZnkgdGhlIGFtb3VudCBpcyBjb3JyZWN0bHkgc2V0IHRvIHplcm9cbiAgICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbCgnMCcpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgaXMgY29ycmVjdGx5IGVuY29kZWQgd2l0aCBsZXZlbElkIGFuZCBhdXRvcmVuZXcgZm9yIHN0YWtlQW5kRGVsZWdhdGVcbiAgICAgIC8vIEV4cGVjdGVkIGRhdGEgZm9yIHN0YWtlQW5kRGVsZWdhdGUoOCwgdHJ1ZSkgd2hlcmUgOCBpcyBsZXZlbElkIGFuZCB0cnVlIGlzIGF1dG9yZW5ld1xuICAgICAgY29uc3QgZXhwZWN0ZWREYXRhID1cbiAgICAgICAgJzB4ZDhkYTNiYmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSc7XG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB3aXRoIHVuZGVmaW5lZCBzZW5kZXIgYnV0IGluY2x1ZGUgaXQgaW4gaW5wdXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuICAgICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBzZW5kZXJcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtpbmdUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gaGFzIGlucHV0cyBidXQgd2l0aCB1bmRlZmluZWQgYWRkcmVzc1xuICAgICAgc3Rha2luZ1R4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChzdGFraW5nVHguaW5wdXRzWzBdLmFkZHJlc3MpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGhhcyB0aGUgY29ycmVjdCBvdXRwdXRcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzdGFraW5nVHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHN0YWtpbmdUeC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIG5ldHdvcmsgZGVmYXVsdCBjaGFpblRhZyB3aGVuIG5vdCBleHBsaWNpdGx5IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICAgIC8vIE5vdCBzZXR0aW5nIGNoYWluVGFnXG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2luZ1RyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2luZ1RyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSBjaGFpblRhZyBpcyBzZXQgdG8gdGhlIHRlc3RuZXQgZGVmYXVsdCAoMzkpXG4gICAgICBzdGFraW5nVHguY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IEFCSSBlbmNvZGluZyBtYXRjaGVzIGV4cGVjdGVkIG91dHB1dCBmb3IgZGlmZmVyZW50IGFtb3VudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgLy8gVGVzdCB3aXRoIGEgZGlmZmVyZW50IGFtb3VudFxuICAgICAgY29uc3QgZGlmZmVyZW50QW1vdW50ID0gJzUwMDAwMDAwMDAwMDAwMDAwMCc7IC8vIDAuNSBWRVRcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGRpZmZlcmVudEFtb3VudCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzdGFraW5nVHggPSB0eCBhcyBTdGFraW5nVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIE1hbnVhbGx5IGVuY29kZSB0aGUgZXhwZWN0ZWQgZGF0YSBmb3Igc3Rha2VBbmREZWxlZ2F0ZSBtZXRob2RcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnc3Rha2VBbmREZWxlZ2F0ZSc7XG4gICAgICBjb25zdCB0eXBlcyA9IFsndWludDgnLCAnYm9vbCddO1xuICAgICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWQsIGF1dG9yZW5ld107XG5cbiAgICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG4gICAgICBjb25zdCBleHBlY3RlZERhdGEgPSAnMHgnICsgQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgbWF0Y2hlcyBvdXIgbWFudWFsIGVuY29kaW5nXG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtJTkdfTUVUSE9EX0lEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGV4dHJlbWVseSBsYXJnZSBzdGFrZSBhbW91bnRzIGNvcnJlY3RseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBUZXN0IHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCAobmVhciB1aW50MjU2IG1heClcbiAgICAgIGNvbnN0IGxhcmdlQW1vdW50ID0gJzExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTkzNSc7IC8vIDJeMjU2IC0gMVxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UobGFyZ2VBbW91bnQpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2luZ1RyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIGFtb3VudCBpcyBzdG9yZWQgY29ycmVjdGx5XG4gICAgICBzdGFraW5nVHguYW1vdW50VG9TdGFrZS5zaG91bGQuZXF1YWwobGFyZ2VBbW91bnQpO1xuXG4gICAgICAvLyBUaGUgZGF0YSBzaG91bGQgc3RpbGwgYmUgcHJvcGVybHkgZW5jb2RlZFxuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuc3RhcnRXaXRoKFNUQUtJTkdfTUVUSE9EX0lEKTtcblxuICAgICAgLy8gVmVyaWZ5IHJlY2lwaWVudHNcbiAgICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwobGFyZ2VBbW91bnQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHNpZ25lZCB0eCBhbmQgdmFsaWRhdGUgaXRzIHRvSnNvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLSU5HX1RSQU5TQUNUSU9OKTtcbiAgICAgIGNvbnN0IHR4ID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdG9Kc29uLmlkLnNob3VsZC5lcXVhbCgnMHg5OTMyNWIzOWNkMDRiZDE4MjFmNmY2YWY3YjY3OWMyNDdlNjQyNWE0ZWI5NWViNDI5ZmE4ZGZmNDc3Mjk4ZDBlJyk7XG4gICAgICB0b0pzb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKCcweDE4NTZjNTMzYWMyZDk0MzQwYWFhODU0NGQzNWE1YzFkNGEyMWRlZTcnKTtcbiAgICAgIHRvSnNvbi5hbW91bnRUb1N0YWtlPy5zaG91bGQuZXF1YWwoJzB4ZGUwYjZiM2E3NjQwMDAwJyk7XG4gICAgICB0b0pzb24ubm9uY2Uuc2hvdWxkLmVxdWFsKCc2MDkzNjMnKTtcbiAgICAgIHRvSnNvbi5nYXMuc2hvdWxkLmVxdWFsKDI1OTg4KTtcbiAgICAgIHRvSnNvbi5nYXNQcmljZUNvZWYuc2hvdWxkLmVxdWFsKDEyOCk7XG4gICAgICB0b0pzb24uZXhwaXJhdGlvbi5zaG91bGQuZXF1YWwoNjQpO1xuICAgICAgdG9Kc29uLmNoYWluVGFnLnNob3VsZC5lcXVhbCgzOSk7XG4gICAgICB0b0pzb24ubmZ0VG9rZW5JZD8uc2hvdWxkLmVxdWFsKDgpO1xuICAgICAgdG9Kc29uLmF1dG9yZW5ldz8uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|