@bitgo/sdk-coin-tempo 1.5.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/lib/transaction.d.ts +7 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +18 -9
- package/dist/src/lib/transactionBuilder.d.ts +9 -1
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +26 -3
- package/dist/test/integration/tip20.d.ts +5 -0
- package/dist/test/integration/tip20.d.ts.map +1 -1
- package/dist/test/integration/tip20.js +151 -88
- package/dist/test/resources/tempo.d.ts +53 -0
- package/dist/test/resources/tempo.d.ts.map +1 -0
- package/dist/test/resources/tempo.js +71 -0
- package/dist/test/unit/transactionBuilder.js +190 -144
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -1,115 +1,178 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TIP-20 Integration Tests
|
|
4
|
+
*
|
|
5
|
+
* End-to-end flows for TIP-20 token transactions on Tempo using testnet token addresses.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
2
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const assert_1 = __importDefault(require("assert"));
|
|
3
12
|
const mocha_1 = require("mocha");
|
|
4
|
-
const
|
|
13
|
+
const ethers_1 = require("ethers");
|
|
5
14
|
const statics_1 = require("@bitgo/statics");
|
|
15
|
+
const transactionBuilder_1 = require("../../src/lib/transactionBuilder");
|
|
16
|
+
const transaction_1 = require("../../src/lib/transaction");
|
|
17
|
+
const constants_1 = require("../../src/lib/constants");
|
|
18
|
+
const tempo_1 = require("../resources/tempo");
|
|
6
19
|
const mockCoinConfig = statics_1.coins.get('ttempo');
|
|
20
|
+
const ALPHA_USD_TOKEN = tempo_1.TESTNET_TOKENS.alphaUSD.address;
|
|
21
|
+
const BETA_USD_TOKEN = tempo_1.TESTNET_TOKENS.betaUSD.address;
|
|
22
|
+
const THETA_USD_TOKEN = tempo_1.TESTNET_TOKENS.thetaUSD.address;
|
|
23
|
+
const RECEIVER_ADDRESS = tempo_1.TEST_RECIPIENT_ADDRESS;
|
|
7
24
|
(0, mocha_1.describe)('TIP-20 Integration Tests', () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const THETA_USD_TOKEN = '0x...';
|
|
11
|
-
const RECEIVER_ADDRESS = '0x...';
|
|
12
|
-
mocha_1.describe.skip('Single Transfer', () => {
|
|
13
|
-
(0, mocha_1.it)('should build single TIP-20 transfer without memo', async () => {
|
|
25
|
+
(0, mocha_1.describe)('Single Transfer', () => {
|
|
26
|
+
(0, mocha_1.it)('should build and serialize single TIP-20 transfer', async () => {
|
|
14
27
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
15
|
-
builder
|
|
28
|
+
builder
|
|
29
|
+
.addOperation({
|
|
16
30
|
token: ALPHA_USD_TOKEN,
|
|
17
31
|
to: RECEIVER_ADDRESS,
|
|
18
|
-
amount: '1
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
amount: '1',
|
|
33
|
+
memo: '1',
|
|
34
|
+
})
|
|
35
|
+
.feeToken(ALPHA_USD_TOKEN)
|
|
36
|
+
.nonce(0)
|
|
37
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
38
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
39
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
40
|
+
const tx = (await builder.build());
|
|
41
|
+
assert_1.default.ok(tx instanceof transaction_1.Tip20Transaction);
|
|
42
|
+
assert_1.default.strictEqual(tx.getOperationCount(), 1);
|
|
43
|
+
assert_1.default.strictEqual(tx.isBatch(), false);
|
|
44
|
+
assert_1.default.strictEqual(tx.getOperations()[0].memo, '1');
|
|
45
|
+
const serialized = await tx.serialize();
|
|
46
|
+
assert_1.default.ok(serialized.startsWith(constants_1.AA_TRANSACTION_TYPE));
|
|
22
47
|
});
|
|
23
|
-
|
|
48
|
+
});
|
|
49
|
+
(0, mocha_1.describe)('Batch Transfer', () => {
|
|
50
|
+
(0, mocha_1.it)('should build multi-token batch transfer', async () => {
|
|
24
51
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
25
|
-
builder
|
|
26
|
-
token: ALPHA_USD_TOKEN,
|
|
27
|
-
to: RECEIVER_ADDRESS,
|
|
28
|
-
amount: '
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
52
|
+
builder
|
|
53
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '15', memo: '1' })
|
|
54
|
+
.addOperation({ token: BETA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '20', memo: '2' })
|
|
55
|
+
.addOperation({ token: THETA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '7', memo: '3' })
|
|
56
|
+
.feeToken(BETA_USD_TOKEN)
|
|
57
|
+
.nonce(10)
|
|
58
|
+
.gas(400000n)
|
|
59
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
60
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
61
|
+
const tx = (await builder.build());
|
|
62
|
+
assert_1.default.strictEqual(tx.getOperationCount(), 3);
|
|
63
|
+
assert_1.default.strictEqual(tx.isBatch(), true);
|
|
64
|
+
assert_1.default.strictEqual(tx.getFeeToken(), BETA_USD_TOKEN);
|
|
65
|
+
const operations = tx.getOperations();
|
|
66
|
+
assert_1.default.strictEqual(operations[0].token, ALPHA_USD_TOKEN);
|
|
67
|
+
assert_1.default.strictEqual(operations[1].token, BETA_USD_TOKEN);
|
|
68
|
+
assert_1.default.strictEqual(operations[2].token, THETA_USD_TOKEN);
|
|
33
69
|
});
|
|
34
70
|
});
|
|
35
|
-
mocha_1.describe
|
|
36
|
-
(0, mocha_1.it)('should
|
|
71
|
+
(0, mocha_1.describe)('Transaction Signing', () => {
|
|
72
|
+
(0, mocha_1.it)('should produce unsigned transaction with correct RLP structure', async () => {
|
|
37
73
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
38
74
|
builder
|
|
39
|
-
.addOperation({
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
to: RECEIVER_ADDRESS,
|
|
54
|
-
amount: '0.2',
|
|
55
|
-
memo: '1003',
|
|
56
|
-
});
|
|
57
|
-
builder.feeToken(ALPHA_USD_TOKEN);
|
|
58
|
-
// TODO: const tx = await builder.build();
|
|
75
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '1' })
|
|
76
|
+
.feeToken(ALPHA_USD_TOKEN)
|
|
77
|
+
.nonce(0)
|
|
78
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
79
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
80
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
81
|
+
const tx = (await builder.build());
|
|
82
|
+
const unsignedHex = await tx.serialize();
|
|
83
|
+
assert_1.default.ok(unsignedHex.startsWith(constants_1.AA_TRANSACTION_TYPE));
|
|
84
|
+
assert_1.default.strictEqual(tx.getSignature(), undefined);
|
|
85
|
+
// Verify RLP structure (13 fields for unsigned)
|
|
86
|
+
const rlpPart = '0x' + unsignedHex.slice(4);
|
|
87
|
+
const decoded = ethers_1.ethers.utils.RLP.decode(rlpPart);
|
|
88
|
+
assert_1.default.strictEqual(decoded.length, 13);
|
|
59
89
|
});
|
|
60
|
-
(0, mocha_1.it)('should
|
|
90
|
+
(0, mocha_1.it)('should apply signature and produce broadcast format', async () => {
|
|
61
91
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
62
92
|
builder
|
|
63
|
-
.addOperation({
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
builder.feeToken(BETA_USD_TOKEN);
|
|
82
|
-
// TODO: const tx = await builder.build();
|
|
93
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '1' })
|
|
94
|
+
.feeToken(ALPHA_USD_TOKEN)
|
|
95
|
+
.nonce(0)
|
|
96
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
97
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
98
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
99
|
+
const tx = (await builder.build());
|
|
100
|
+
tx.setSignature(tempo_1.SIGNATURE_TEST_DATA.validSignature);
|
|
101
|
+
const signedHex = await tx.toBroadcastFormat();
|
|
102
|
+
// Verify it includes signature (14 fields)
|
|
103
|
+
assert_1.default.ok(signedHex.startsWith(constants_1.AA_TRANSACTION_TYPE));
|
|
104
|
+
const rlpPart = '0x' + signedHex.slice(4);
|
|
105
|
+
const decoded = ethers_1.ethers.utils.RLP.decode(rlpPart);
|
|
106
|
+
assert_1.default.strictEqual(decoded.length, 14);
|
|
107
|
+
const storedSig = tx.getSignature();
|
|
108
|
+
assert_1.default.ok(storedSig);
|
|
109
|
+
assert_1.default.strictEqual(storedSig?.r, tempo_1.SIGNATURE_TEST_DATA.validSignature.r);
|
|
83
110
|
});
|
|
84
111
|
});
|
|
85
|
-
mocha_1.describe
|
|
86
|
-
(0, mocha_1.it)('should
|
|
112
|
+
(0, mocha_1.describe)('Fee Token Selection', () => {
|
|
113
|
+
(0, mocha_1.it)('should pay fees with different token than transfer', async () => {
|
|
87
114
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
88
|
-
builder
|
|
89
|
-
token: ALPHA_USD_TOKEN,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
115
|
+
builder
|
|
116
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '1' })
|
|
117
|
+
.feeToken(BETA_USD_TOKEN)
|
|
118
|
+
.nonce(0)
|
|
119
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
120
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
121
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
122
|
+
const tx = (await builder.build());
|
|
123
|
+
assert_1.default.strictEqual(tx.getOperations()[0].token, ALPHA_USD_TOKEN);
|
|
124
|
+
assert_1.default.strictEqual(tx.getFeeToken(), BETA_USD_TOKEN);
|
|
125
|
+
});
|
|
126
|
+
(0, mocha_1.it)('should build transaction without explicit fee token', async () => {
|
|
127
|
+
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
128
|
+
builder
|
|
129
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '1' })
|
|
130
|
+
.nonce(0)
|
|
131
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
132
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
133
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
134
|
+
const tx = (await builder.build());
|
|
135
|
+
assert_1.default.strictEqual(tx.getFeeToken(), undefined);
|
|
136
|
+
const serialized = await tx.serialize();
|
|
137
|
+
assert_1.default.ok(serialized.startsWith(constants_1.AA_TRANSACTION_TYPE));
|
|
99
138
|
});
|
|
100
139
|
});
|
|
101
|
-
mocha_1.describe
|
|
102
|
-
(0, mocha_1.it)('should
|
|
140
|
+
(0, mocha_1.describe)('Transaction JSON', () => {
|
|
141
|
+
(0, mocha_1.it)('should produce complete JSON representation', async () => {
|
|
103
142
|
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
104
|
-
builder
|
|
105
|
-
token: ALPHA_USD_TOKEN,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
143
|
+
builder
|
|
144
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '123456', memo: '5' })
|
|
145
|
+
.feeToken(BETA_USD_TOKEN)
|
|
146
|
+
.nonce(42)
|
|
147
|
+
.gas(150000n)
|
|
148
|
+
.maxFeePerGas(3000000000n)
|
|
149
|
+
.maxPriorityFeePerGas(1500000000n);
|
|
150
|
+
const tx = (await builder.build());
|
|
151
|
+
const json = tx.toJson();
|
|
152
|
+
assert_1.default.strictEqual(json.type, constants_1.AA_TRANSACTION_TYPE);
|
|
153
|
+
assert_1.default.strictEqual(json.chainId, constants_1.TEMPO_CHAIN_IDS.TESTNET);
|
|
154
|
+
assert_1.default.strictEqual(json.nonce, 42);
|
|
155
|
+
assert_1.default.strictEqual(json.gas, '150000');
|
|
156
|
+
assert_1.default.strictEqual(json.feeToken, BETA_USD_TOKEN);
|
|
157
|
+
const ops = json.operations;
|
|
158
|
+
assert_1.default.strictEqual(ops[0].token, ALPHA_USD_TOKEN);
|
|
159
|
+
assert_1.default.strictEqual(ops[0].amount, '123456');
|
|
160
|
+
assert_1.default.strictEqual(ops[0].memo, '5');
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
(0, mocha_1.describe)('canBroadcast Check', () => {
|
|
164
|
+
(0, mocha_1.it)('should return true for valid transaction', async () => {
|
|
165
|
+
const builder = new transactionBuilder_1.Tip20TransactionBuilder(mockCoinConfig);
|
|
166
|
+
builder
|
|
167
|
+
.addOperation({ token: ALPHA_USD_TOKEN, to: RECEIVER_ADDRESS, amount: '1' })
|
|
168
|
+
.feeToken(ALPHA_USD_TOKEN)
|
|
169
|
+
.nonce(0)
|
|
170
|
+
.gas(tempo_1.TX_PARAMS.defaultGas)
|
|
171
|
+
.maxFeePerGas(tempo_1.TX_PARAMS.defaultMaxFeePerGas)
|
|
172
|
+
.maxPriorityFeePerGas(tempo_1.TX_PARAMS.defaultMaxPriorityFeePerGas);
|
|
173
|
+
const tx = (await builder.build());
|
|
174
|
+
assert_1.default.strictEqual(tx.canBroadcast(), true);
|
|
112
175
|
});
|
|
113
176
|
});
|
|
114
177
|
});
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwMjAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ludGVncmF0aW9uL3RpcDIwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQXFDO0FBQ3JDLHlFQUEyRTtBQUUzRSw0Q0FBdUM7QUFFdkMsTUFBTSxjQUFjLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUzQyxJQUFBLGdCQUFRLEVBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sZUFBZSxHQUFHLE9BQWtCLENBQUM7SUFDM0MsTUFBTSxjQUFjLEdBQUcsT0FBa0IsQ0FBQztJQUMxQyxNQUFNLGVBQWUsR0FBRyxPQUFrQixDQUFDO0lBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBa0IsQ0FBQztJQUU1QyxnQkFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7UUFDcEMsSUFBQSxVQUFFLEVBQUMsa0RBQWtELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSw0Q0FBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUNuQixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsRUFBRSxFQUFFLGdCQUFnQjtnQkFDcEIsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xDLDBDQUEwQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsVUFBRSxFQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksNENBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFDbkIsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLEVBQUUsRUFBRSxnQkFBZ0I7Z0JBQ3BC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QU8sR0FBRyxJQUFJLDRDQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxlQUFlO2dCQUN0QixFQUFFLEVBQUUsZ0JBQWdCO2dCQUNwQixNQUFNLEVBQUUsS0FBSztnQkFDYixJQUFJLEVBQUUsTUFBTTthQUNiLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakMsMENBQTBDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBpdCB9IGZyb20gJ21vY2hhJztcbmltcG9ydCB7IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHlwZXMnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmNvbnN0IG1vY2tDb2luQ29uZmlnID0gY29pbnMuZ2V0KCd0dGVtcG8nKTtcblxuZGVzY3JpYmUoJ1RJUC0yMCBJbnRlZ3JhdGlvbiBUZXN0cycsICgpID0+IHtcbiAgY29uc3QgQUxQSEFfVVNEX1RPS0VOID0gJzB4Li4uJyBhcyBBZGRyZXNzO1xuICBjb25zdCBCRVRBX1VTRF9UT0tFTiA9ICcweC4uLicgYXMgQWRkcmVzcztcbiAgY29uc3QgVEhFVEFfVVNEX1RPS0VOID0gJzB4Li4uJyBhcyBBZGRyZXNzO1xuICBjb25zdCBSRUNFSVZFUl9BRERSRVNTID0gJzB4Li4uJyBhcyBBZGRyZXNzO1xuXG4gIGRlc2NyaWJlLnNraXAoJ1NpbmdsZSBUcmFuc2ZlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHNpbmdsZSBUSVAtMjAgdHJhbnNmZXIgd2l0aG91dCBtZW1vJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBUaXAyMFRyYW5zYWN0aW9uQnVpbGRlcihtb2NrQ29pbkNvbmZpZyk7XG4gICAgICBidWlsZGVyLmFkZE9wZXJhdGlvbih7XG4gICAgICAgIHRva2VuOiBBTFBIQV9VU0RfVE9LRU4sXG4gICAgICAgIHRvOiBSRUNFSVZFUl9BRERSRVNTLFxuICAgICAgICBhbW91bnQ6ICcxLjAnLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLmZlZVRva2VuKEFMUEhBX1VTRF9UT0tFTik7XG4gICAgICAvLyBUT0RPOiBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2luZ2xlIFRJUC0yMCB0cmFuc2ZlciB3aXRoIG1lbW8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXIuYWRkT3BlcmF0aW9uKHtcbiAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgdG86IFJFQ0VJVkVSX0FERFJFU1MsXG4gICAgICAgIGFtb3VudDogJzEuMCcsXG4gICAgICAgIG1lbW86ICcxMjM0NScsXG4gICAgICB9KTtcbiAgICAgIGJ1aWxkZXIuZmVlVG9rZW4oQUxQSEFfVVNEX1RPS0VOKTtcbiAgICAgIC8vIFRPRE86IGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZS5za2lwKCdCYXRjaCBUcmFuc2ZlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGJhdGNoIHRyYW5zZmVyIHdpdGggbXVsdGlwbGUgbWVtb3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgICBhbW91bnQ6ICcwLjUnLFxuICAgICAgICAgIG1lbW86ICcxMDAxJyxcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgICBhbW91bnQ6ICcwLjMnLFxuICAgICAgICAgIG1lbW86ICcxMDAyJyxcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgICBhbW91bnQ6ICcwLjInLFxuICAgICAgICAgIG1lbW86ICcxMDAzJyxcbiAgICAgICAgfSk7XG4gICAgICBidWlsZGVyLmZlZVRva2VuKEFMUEhBX1VTRF9UT0tFTik7XG4gICAgICAvLyBUT0RPOiBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgbXVsdGktdG9rZW4gYmF0Y2ggdHJhbnNmZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgICBhbW91bnQ6ICcxLjUnLFxuICAgICAgICAgIG1lbW86ICcyMDAxJyxcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEJFVEFfVVNEX1RPS0VOLFxuICAgICAgICAgIHRvOiBSRUNFSVZFUl9BRERSRVNTLFxuICAgICAgICAgIGFtb3VudDogJzIuMCcsXG4gICAgICAgICAgbWVtbzogJzIwMDInLFxuICAgICAgICB9KVxuICAgICAgICAuYWRkT3BlcmF0aW9uKHtcbiAgICAgICAgICB0b2tlbjogVEhFVEFfVVNEX1RPS0VOLFxuICAgICAgICAgIHRvOiBSRUNFSVZFUl9BRERSRVNTLFxuICAgICAgICAgIGFtb3VudDogJzAuNzUnLFxuICAgICAgICAgIG1lbW86ICcyMDAzJyxcbiAgICAgICAgfSk7XG4gICAgICBidWlsZGVyLmZlZVRva2VuKEJFVEFfVVNEX1RPS0VOKTtcbiAgICAgIC8vIFRPRE86IGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZS5za2lwKCdUcmFuc2FjdGlvbiBTaWduaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiBhbmQgc2VyaWFsaXplIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBUaXAyMFRyYW5zYWN0aW9uQnVpbGRlcihtb2NrQ29pbkNvbmZpZyk7XG4gICAgICBidWlsZGVyLmFkZE9wZXJhdGlvbih7XG4gICAgICAgIHRva2VuOiBBTFBIQV9VU0RfVE9LRU4sXG4gICAgICAgIHRvOiBSRUNFSVZFUl9BRERSRVNTLFxuICAgICAgICBhbW91bnQ6ICcxLjAnLFxuICAgICAgICBtZW1vOiAnOTk5OScsXG4gICAgICB9KTtcbiAgICAgIGJ1aWxkZXIuZmVlVG9rZW4oQUxQSEFfVVNEX1RPS0VOKTtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBzaWduaW5nIHdpdGggZXRoZXJzLmpzIFdhbGxldFxuICAgICAgLy8gVE9ETzogY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAvLyBUT0RPOiB0eC5zZXRTaWduYXR1cmUoc2lnbmF0dXJlKTtcbiAgICAgIC8vIFRPRE86IGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZS5za2lwKCdGZWUgVG9rZW4gU2VsZWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGF5IGZlZXMgd2l0aCBkaWZmZXJlbnQgdG9rZW4gdGhhbiB0cmFuc2ZlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGlwMjBUcmFuc2FjdGlvbkJ1aWxkZXIobW9ja0NvaW5Db25maWcpO1xuICAgICAgYnVpbGRlci5hZGRPcGVyYXRpb24oe1xuICAgICAgICB0b2tlbjogQUxQSEFfVVNEX1RPS0VOLFxuICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgYW1vdW50OiAnMS4wJyxcbiAgICAgICAgbWVtbzogJzU1NTUnLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLmZlZVRva2VuKEJFVEFfVVNEX1RPS0VOKTtcbiAgICAgIC8vIFRPRE86IGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwMjAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ludGVncmF0aW9uL3RpcDIwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7OztBQUVILG9EQUE0QjtBQUM1QixpQ0FBcUM7QUFDckMsbUNBQWdDO0FBQ2hDLDRDQUF1QztBQUN2Qyx5RUFBMkU7QUFDM0UsMkRBQTZEO0FBRTdELHVEQUErRTtBQUMvRSw4Q0FBNEc7QUFFNUcsTUFBTSxjQUFjLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUzQyxNQUFNLGVBQWUsR0FBRyxzQkFBYyxDQUFDLFFBQVEsQ0FBQyxPQUFrQixDQUFDO0FBQ25FLE1BQU0sY0FBYyxHQUFHLHNCQUFjLENBQUMsT0FBTyxDQUFDLE9BQWtCLENBQUM7QUFDakUsTUFBTSxlQUFlLEdBQUcsc0JBQWMsQ0FBQyxRQUFRLENBQUMsT0FBa0IsQ0FBQztBQUNuRSxNQUFNLGdCQUFnQixHQUFHLDhCQUFpQyxDQUFDO0FBRTNELElBQUEsZ0JBQVEsRUFBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsSUFBQSxnQkFBUSxFQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUMvQixJQUFBLFVBQUUsRUFBQyxtREFBbUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLDRDQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTVELE9BQU87aUJBQ0osWUFBWSxDQUFDO2dCQUNaLEtBQUssRUFBRSxlQUFlO2dCQUN0QixFQUFFLEVBQUUsZ0JBQWdCO2dCQUNwQixNQUFNLEVBQUUsR0FBRztnQkFDWCxJQUFJLEVBQUUsR0FBRzthQUNWLENBQUM7aUJBQ0QsUUFBUSxDQUFDLGVBQWUsQ0FBQztpQkFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDUixHQUFHLENBQUMsaUJBQVMsQ0FBQyxVQUFVLENBQUM7aUJBQ3pC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SUFBSSxFQUFFO1lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksNENBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFNUQsT0FBTztpQkFDSixZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7aUJBQzNFLFFBQVEsQ0FBQyxlQUFlLENBQUM7aUJBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ1IsR0FBRyxDQUFDLGlCQUFTLENBQUMsVUFBVSxDQUFDO2lCQUN6QixZQUFZLENBQUMsaUJBQVMsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDM0Msb0JBQW9CLENBQUMsaUJBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQXFCLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVElQLTIwIEludGVncmF0aW9uIFRlc3RzXG4gKlxuICogRW5kLXRvLWVuZCBmbG93cyBmb3IgVElQLTIwIHRva2VuIHRyYW5zYWN0aW9ucyBvbiBUZW1wbyB1c2luZyB0ZXN0bmV0IHRva2VuIGFkZHJlc3Nlcy5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBkZXNjcmliZSwgaXQgfSBmcm9tICdtb2NoYSc7XG5pbXBvcnQgeyBldGhlcnMgfSBmcm9tICdldGhlcnMnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUaXAyMFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRpcDIwVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuLi8uLi9zcmMvbGliL3R5cGVzJztcbmltcG9ydCB7IEFBX1RSQU5TQUNUSU9OX1RZUEUsIFRFTVBPX0NIQUlOX0lEUyB9IGZyb20gJy4uLy4uL3NyYy9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IFRFU1RORVRfVE9LRU5TLCBUWF9QQVJBTVMsIFNJR05BVFVSRV9URVNUX0RBVEEsIFRFU1RfUkVDSVBJRU5UX0FERFJFU1MgfSBmcm9tICcuLi9yZXNvdXJjZXMvdGVtcG8nO1xuXG5jb25zdCBtb2NrQ29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHRlbXBvJyk7XG5cbmNvbnN0IEFMUEhBX1VTRF9UT0tFTiA9IFRFU1RORVRfVE9LRU5TLmFscGhhVVNELmFkZHJlc3MgYXMgQWRkcmVzcztcbmNvbnN0IEJFVEFfVVNEX1RPS0VOID0gVEVTVE5FVF9UT0tFTlMuYmV0YVVTRC5hZGRyZXNzIGFzIEFkZHJlc3M7XG5jb25zdCBUSEVUQV9VU0RfVE9LRU4gPSBURVNUTkVUX1RPS0VOUy50aGV0YVVTRC5hZGRyZXNzIGFzIEFkZHJlc3M7XG5jb25zdCBSRUNFSVZFUl9BRERSRVNTID0gVEVTVF9SRUNJUElFTlRfQUREUkVTUyBhcyBBZGRyZXNzO1xuXG5kZXNjcmliZSgnVElQLTIwIEludGVncmF0aW9uIFRlc3RzJywgKCkgPT4ge1xuICBkZXNjcmliZSgnU2luZ2xlIFRyYW5zZmVyJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYW5kIHNlcmlhbGl6ZSBzaW5nbGUgVElQLTIwIHRyYW5zZmVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBUaXAyMFRyYW5zYWN0aW9uQnVpbGRlcihtb2NrQ29pbkNvbmZpZyk7XG5cbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7XG4gICAgICAgICAgdG9rZW46IEFMUEhBX1VTRF9UT0tFTixcbiAgICAgICAgICB0bzogUkVDRUlWRVJfQUREUkVTUyxcbiAgICAgICAgICBhbW91bnQ6ICcxJyxcbiAgICAgICAgICBtZW1vOiAnMScsXG4gICAgICAgIH0pXG4gICAgICAgIC5mZWVUb2tlbihBTFBIQV9VU0RfVE9LRU4pXG4gICAgICAgIC5ub25jZSgwKVxuICAgICAgICAuZ2FzKFRYX1BBUkFNUy5kZWZhdWx0R2FzKVxuICAgICAgICAubWF4RmVlUGVyR2FzKFRYX1BBUkFNUy5kZWZhdWx0TWF4RmVlUGVyR2FzKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhQcmlvcml0eUZlZVBlckdhcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVGlwMjBUcmFuc2FjdGlvbjtcblxuICAgICAgYXNzZXJ0Lm9rKHR4IGluc3RhbmNlb2YgVGlwMjBUcmFuc2FjdGlvbik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHguZ2V0T3BlcmF0aW9uQ291bnQoKSwgMSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHguaXNCYXRjaCgpLCBmYWxzZSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHguZ2V0T3BlcmF0aW9ucygpWzBdLm1lbW8sICcxJyk7XG5cbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCB0eC5zZXJpYWxpemUoKTtcbiAgICAgIGFzc2VydC5vayhzZXJpYWxpemVkLnN0YXJ0c1dpdGgoQUFfVFJBTlNBQ1RJT05fVFlQRSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQmF0Y2ggVHJhbnNmZXInLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBtdWx0aS10b2tlbiBiYXRjaCB0cmFuc2ZlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGlwMjBUcmFuc2FjdGlvbkJ1aWxkZXIobW9ja0NvaW5Db25maWcpO1xuXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hZGRPcGVyYXRpb24oeyB0b2tlbjogQUxQSEFfVVNEX1RPS0VOLCB0bzogUkVDRUlWRVJfQUREUkVTUywgYW1vdW50OiAnMTUnLCBtZW1vOiAnMScgfSlcbiAgICAgICAgLmFkZE9wZXJhdGlvbih7IHRva2VuOiBCRVRBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzIwJywgbWVtbzogJzInIH0pXG4gICAgICAgIC5hZGRPcGVyYXRpb24oeyB0b2tlbjogVEhFVEFfVVNEX1RPS0VOLCB0bzogUkVDRUlWRVJfQUREUkVTUywgYW1vdW50OiAnNycsIG1lbW86ICczJyB9KVxuICAgICAgICAuZmVlVG9rZW4oQkVUQV9VU0RfVE9LRU4pXG4gICAgICAgIC5ub25jZSgxMClcbiAgICAgICAgLmdhcyg0MDAwMDBuKVxuICAgICAgICAubWF4RmVlUGVyR2FzKFRYX1BBUkFNUy5kZWZhdWx0TWF4RmVlUGVyR2FzKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhQcmlvcml0eUZlZVBlckdhcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVGlwMjBUcmFuc2FjdGlvbjtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmdldE9wZXJhdGlvbkNvdW50KCksIDMpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmlzQmF0Y2goKSwgdHJ1ZSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHguZ2V0RmVlVG9rZW4oKSwgQkVUQV9VU0RfVE9LRU4pO1xuXG4gICAgICBjb25zdCBvcGVyYXRpb25zID0gdHguZ2V0T3BlcmF0aW9ucygpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9wZXJhdGlvbnNbMF0udG9rZW4sIEFMUEhBX1VTRF9UT0tFTik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob3BlcmF0aW9uc1sxXS50b2tlbiwgQkVUQV9VU0RfVE9LRU4pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9wZXJhdGlvbnNbMl0udG9rZW4sIFRIRVRBX1VTRF9UT0tFTik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBTaWduaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcHJvZHVjZSB1bnNpZ25lZCB0cmFuc2FjdGlvbiB3aXRoIGNvcnJlY3QgUkxQIHN0cnVjdHVyZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGlwMjBUcmFuc2FjdGlvbkJ1aWxkZXIobW9ja0NvaW5Db25maWcpO1xuXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hZGRPcGVyYXRpb24oeyB0b2tlbjogQUxQSEFfVVNEX1RPS0VOLCB0bzogUkVDRUlWRVJfQUREUkVTUywgYW1vdW50OiAnMScgfSlcbiAgICAgICAgLmZlZVRva2VuKEFMUEhBX1VTRF9UT0tFTilcbiAgICAgICAgLm5vbmNlKDApXG4gICAgICAgIC5nYXMoVFhfUEFSQU1TLmRlZmF1bHRHYXMpXG4gICAgICAgIC5tYXhGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhGZWVQZXJHYXMpXG4gICAgICAgIC5tYXhQcmlvcml0eUZlZVBlckdhcyhUWF9QQVJBTVMuZGVmYXVsdE1heFByaW9yaXR5RmVlUGVyR2FzKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUaXAyMFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdW5zaWduZWRIZXggPSBhd2FpdCB0eC5zZXJpYWxpemUoKTtcblxuICAgICAgYXNzZXJ0Lm9rKHVuc2lnbmVkSGV4LnN0YXJ0c1dpdGgoQUFfVFJBTlNBQ1RJT05fVFlQRSkpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmdldFNpZ25hdHVyZSgpLCB1bmRlZmluZWQpO1xuXG4gICAgICAvLyBWZXJpZnkgUkxQIHN0cnVjdHVyZSAoMTMgZmllbGRzIGZvciB1bnNpZ25lZClcbiAgICAgIGNvbnN0IHJscFBhcnQgPSAnMHgnICsgdW5zaWduZWRIZXguc2xpY2UoNCk7XG4gICAgICBjb25zdCBkZWNvZGVkID0gZXRoZXJzLnV0aWxzLlJMUC5kZWNvZGUocmxwUGFydCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjb2RlZC5sZW5ndGgsIDEzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYXBwbHkgc2lnbmF0dXJlIGFuZCBwcm9kdWNlIGJyb2FkY2FzdCBmb3JtYXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuYWRkT3BlcmF0aW9uKHsgdG9rZW46IEFMUEhBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzEnIH0pXG4gICAgICAgIC5mZWVUb2tlbihBTFBIQV9VU0RfVE9LRU4pXG4gICAgICAgIC5ub25jZSgwKVxuICAgICAgICAuZ2FzKFRYX1BBUkFNUy5kZWZhdWx0R2FzKVxuICAgICAgICAubWF4RmVlUGVyR2FzKFRYX1BBUkFNUy5kZWZhdWx0TWF4RmVlUGVyR2FzKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhQcmlvcml0eUZlZVBlckdhcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVGlwMjBUcmFuc2FjdGlvbjtcbiAgICAgIHR4LnNldFNpZ25hdHVyZShTSUdOQVRVUkVfVEVTVF9EQVRBLnZhbGlkU2lnbmF0dXJlKTtcblxuICAgICAgY29uc3Qgc2lnbmVkSGV4ID0gYXdhaXQgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gVmVyaWZ5IGl0IGluY2x1ZGVzIHNpZ25hdHVyZSAoMTQgZmllbGRzKVxuICAgICAgYXNzZXJ0Lm9rKHNpZ25lZEhleC5zdGFydHNXaXRoKEFBX1RSQU5TQUNUSU9OX1RZUEUpKTtcbiAgICAgIGNvbnN0IHJscFBhcnQgPSAnMHgnICsgc2lnbmVkSGV4LnNsaWNlKDQpO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGV0aGVycy51dGlscy5STFAuZGVjb2RlKHJscFBhcnQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29kZWQubGVuZ3RoLCAxNCk7XG5cbiAgICAgIGNvbnN0IHN0b3JlZFNpZyA9IHR4LmdldFNpZ25hdHVyZSgpO1xuICAgICAgYXNzZXJ0Lm9rKHN0b3JlZFNpZyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc3RvcmVkU2lnPy5yLCBTSUdOQVRVUkVfVEVTVF9EQVRBLnZhbGlkU2lnbmF0dXJlLnIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmVlIFRva2VuIFNlbGVjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBheSBmZWVzIHdpdGggZGlmZmVyZW50IHRva2VuIHRoYW4gdHJhbnNmZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuYWRkT3BlcmF0aW9uKHsgdG9rZW46IEFMUEhBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzEnIH0pXG4gICAgICAgIC5mZWVUb2tlbihCRVRBX1VTRF9UT0tFTilcbiAgICAgICAgLm5vbmNlKDApXG4gICAgICAgIC5nYXMoVFhfUEFSQU1TLmRlZmF1bHRHYXMpXG4gICAgICAgIC5tYXhGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhGZWVQZXJHYXMpXG4gICAgICAgIC5tYXhQcmlvcml0eUZlZVBlckdhcyhUWF9QQVJBTVMuZGVmYXVsdE1heFByaW9yaXR5RmVlUGVyR2FzKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUaXAyMFRyYW5zYWN0aW9uO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHguZ2V0T3BlcmF0aW9ucygpWzBdLnRva2VuLCBBTFBIQV9VU0RfVE9LRU4pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmdldEZlZVRva2VuKCksIEJFVEFfVVNEX1RPS0VOKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gd2l0aG91dCBleHBsaWNpdCBmZWUgdG9rZW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuYWRkT3BlcmF0aW9uKHsgdG9rZW46IEFMUEhBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzEnIH0pXG4gICAgICAgIC5ub25jZSgwKVxuICAgICAgICAuZ2FzKFRYX1BBUkFNUy5kZWZhdWx0R2FzKVxuICAgICAgICAubWF4RmVlUGVyR2FzKFRYX1BBUkFNUy5kZWZhdWx0TWF4RmVlUGVyR2FzKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhQcmlvcml0eUZlZVBlckdhcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVGlwMjBUcmFuc2FjdGlvbjtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmdldEZlZVRva2VuKCksIHVuZGVmaW5lZCk7XG4gICAgICBjb25zdCBzZXJpYWxpemVkID0gYXdhaXQgdHguc2VyaWFsaXplKCk7XG4gICAgICBhc3NlcnQub2soc2VyaWFsaXplZC5zdGFydHNXaXRoKEFBX1RSQU5TQUNUSU9OX1RZUEUpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIEpTT04nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGNvbXBsZXRlIEpTT04gcmVwcmVzZW50YXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuYWRkT3BlcmF0aW9uKHsgdG9rZW46IEFMUEhBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzEyMzQ1NicsIG1lbW86ICc1JyB9KVxuICAgICAgICAuZmVlVG9rZW4oQkVUQV9VU0RfVE9LRU4pXG4gICAgICAgIC5ub25jZSg0MilcbiAgICAgICAgLmdhcygxNTAwMDBuKVxuICAgICAgICAubWF4RmVlUGVyR2FzKDMwMDAwMDAwMDBuKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoMTUwMDAwMDAwMG4pO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRpcDIwVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChqc29uLnR5cGUsIEFBX1RSQU5TQUNUSU9OX1RZUEUpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGpzb24uY2hhaW5JZCwgVEVNUE9fQ0hBSU5fSURTLlRFU1RORVQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGpzb24ubm9uY2UsIDQyKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChqc29uLmdhcywgJzE1MDAwMCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGpzb24uZmVlVG9rZW4sIEJFVEFfVVNEX1RPS0VOKTtcblxuICAgICAgY29uc3Qgb3BzID0ganNvbi5vcGVyYXRpb25zIGFzIGFueVtdO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9wc1swXS50b2tlbiwgQUxQSEFfVVNEX1RPS0VOKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvcHNbMF0uYW1vdW50LCAnMTIzNDU2Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob3BzWzBdLm1lbW8sICc1Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjYW5Ccm9hZGNhc3QgQ2hlY2snLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgdmFsaWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRpcDIwVHJhbnNhY3Rpb25CdWlsZGVyKG1vY2tDb2luQ29uZmlnKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuYWRkT3BlcmF0aW9uKHsgdG9rZW46IEFMUEhBX1VTRF9UT0tFTiwgdG86IFJFQ0VJVkVSX0FERFJFU1MsIGFtb3VudDogJzEnIH0pXG4gICAgICAgIC5mZWVUb2tlbihBTFBIQV9VU0RfVE9LRU4pXG4gICAgICAgIC5ub25jZSgwKVxuICAgICAgICAuZ2FzKFRYX1BBUkFNUy5kZWZhdWx0R2FzKVxuICAgICAgICAubWF4RmVlUGVyR2FzKFRYX1BBUkFNUy5kZWZhdWx0TWF4RmVlUGVyR2FzKVxuICAgICAgICAubWF4UHJpb3JpdHlGZWVQZXJHYXMoVFhfUEFSQU1TLmRlZmF1bHRNYXhQcmlvcml0eUZlZVBlckdhcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVGlwMjBUcmFuc2FjdGlvbjtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eC5jYW5Ccm9hZGNhc3QoKSwgdHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test resources for Tempo SDK
|
|
3
|
+
*/
|
|
4
|
+
export declare const TESTNET_TOKENS: {
|
|
5
|
+
pathUSD: {
|
|
6
|
+
address: string;
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
alphaUSD: {
|
|
10
|
+
address: string;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
betaUSD: {
|
|
14
|
+
address: string;
|
|
15
|
+
name: string;
|
|
16
|
+
};
|
|
17
|
+
thetaUSD: {
|
|
18
|
+
address: string;
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare const TEST_RECIPIENT_ADDRESS = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
|
|
23
|
+
export declare const TX_PARAMS: {
|
|
24
|
+
defaultGas: bigint;
|
|
25
|
+
defaultMaxFeePerGas: bigint;
|
|
26
|
+
defaultMaxPriorityFeePerGas: bigint;
|
|
27
|
+
};
|
|
28
|
+
export declare const SIGNATURE_TEST_DATA: {
|
|
29
|
+
validSignature: {
|
|
30
|
+
r: `0x${string}`;
|
|
31
|
+
s: `0x${string}`;
|
|
32
|
+
yParity: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare const MEMO_TEST_CASES: {
|
|
36
|
+
valid: {
|
|
37
|
+
input: string;
|
|
38
|
+
description: string;
|
|
39
|
+
}[];
|
|
40
|
+
invalid: {
|
|
41
|
+
input: string;
|
|
42
|
+
description: string;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
export declare const ERROR_MESSAGES: {
|
|
46
|
+
noOperations: RegExp;
|
|
47
|
+
missingNonce: RegExp;
|
|
48
|
+
missingGas: RegExp;
|
|
49
|
+
missingMaxFeePerGas: RegExp;
|
|
50
|
+
missingMaxPriorityFeePerGas: RegExp;
|
|
51
|
+
memoTooLong: RegExp;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=tempo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../../test/resources/tempo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAiB1B,CAAC;AAGF,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AAMnF,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAMF,eAAO,MAAM,mBAAmB;;WAE+C,KAAK,MAAM,EAAE;WACb,KAAK,MAAM,EAAE;;;CAG3F,CAAC;AAMF,eAAO,MAAM,eAAe;;;;;;;;;CAQ3B,CAAC;AAMF,eAAO,MAAM,cAAc;;;;;;;CAO1B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test resources for Tempo SDK
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ERROR_MESSAGES = exports.MEMO_TEST_CASES = exports.SIGNATURE_TEST_DATA = exports.TX_PARAMS = exports.TEST_RECIPIENT_ADDRESS = exports.TESTNET_TOKENS = void 0;
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// TIP-20 Token Addresses (Tempo Testnet)
|
|
9
|
+
// ============================================================================
|
|
10
|
+
exports.TESTNET_TOKENS = {
|
|
11
|
+
pathUSD: {
|
|
12
|
+
address: '0x20c0000000000000000000000000000000000000',
|
|
13
|
+
name: 'ttempo:pathusd',
|
|
14
|
+
},
|
|
15
|
+
alphaUSD: {
|
|
16
|
+
address: '0x20c0000000000000000000000000000000000001',
|
|
17
|
+
name: 'ttempo:alphausd',
|
|
18
|
+
},
|
|
19
|
+
betaUSD: {
|
|
20
|
+
address: '0x20c0000000000000000000000000000000000002',
|
|
21
|
+
name: 'ttempo:betausd',
|
|
22
|
+
},
|
|
23
|
+
thetaUSD: {
|
|
24
|
+
address: '0x20c0000000000000000000000000000000000003',
|
|
25
|
+
name: 'ttempo:thetausd',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
// Valid checksummed test recipient address
|
|
29
|
+
exports.TEST_RECIPIENT_ADDRESS = '0x742d35Cc6634C0532925a3b844Bc454e4438f44e';
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Transaction Parameters
|
|
32
|
+
// ============================================================================
|
|
33
|
+
exports.TX_PARAMS = {
|
|
34
|
+
defaultGas: BigInt('100000'),
|
|
35
|
+
defaultMaxFeePerGas: BigInt('2000000000'),
|
|
36
|
+
defaultMaxPriorityFeePerGas: BigInt('1000000000'),
|
|
37
|
+
};
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Signature Test Data
|
|
40
|
+
// ============================================================================
|
|
41
|
+
exports.SIGNATURE_TEST_DATA = {
|
|
42
|
+
validSignature: {
|
|
43
|
+
r: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
|
|
44
|
+
s: '0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321',
|
|
45
|
+
yParity: 0,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
// ============================================================================
|
|
49
|
+
// Memo Test Cases
|
|
50
|
+
// ============================================================================
|
|
51
|
+
exports.MEMO_TEST_CASES = {
|
|
52
|
+
valid: [
|
|
53
|
+
{ input: '12345', description: 'numeric' },
|
|
54
|
+
{ input: 'INV-001', description: 'alphanumeric with dash' },
|
|
55
|
+
{ input: 'a'.repeat(32), description: 'max length 32 bytes' },
|
|
56
|
+
{ input: '', description: 'empty string' },
|
|
57
|
+
],
|
|
58
|
+
invalid: [{ input: 'a'.repeat(33), description: '33 bytes - exceeds limit' }],
|
|
59
|
+
};
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Error Messages
|
|
62
|
+
// ============================================================================
|
|
63
|
+
exports.ERROR_MESSAGES = {
|
|
64
|
+
noOperations: /At least one operation is required/,
|
|
65
|
+
missingNonce: /Nonce is required/,
|
|
66
|
+
missingGas: /Gas limit is required/,
|
|
67
|
+
missingMaxFeePerGas: /maxFeePerGas is required/,
|
|
68
|
+
missingMaxPriorityFeePerGas: /maxPriorityFeePerGas is required/,
|
|
69
|
+
memoTooLong: /Memo too long/,
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy90ZW1wby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILCtFQUErRTtBQUMvRSx5Q0FBeUM7QUFDekMsK0VBQStFO0FBRWxFLFFBQUEsY0FBYyxHQUFHO0lBQzVCLE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsSUFBSSxFQUFFLGdCQUFnQjtLQUN2QjtJQUNELFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsSUFBSSxFQUFFLGlCQUFpQjtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsSUFBSSxFQUFFLGdCQUFnQjtLQUN2QjtJQUNELFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsSUFBSSxFQUFFLGlCQUFpQjtLQUN4QjtDQUNGLENBQUM7QUFFRiwyQ0FBMkM7QUFDOUIsUUFBQSxzQkFBc0IsR0FBRyw0Q0FBNEMsQ0FBQztBQUVuRiwrRUFBK0U7QUFDL0UseUJBQXlCO0FBQ3pCLCtFQUErRTtBQUVsRSxRQUFBLFNBQVMsR0FBRztJQUN2QixVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM1QixtQkFBbUIsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3pDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUM7Q0FDbEQsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxzQkFBc0I7QUFDdEIsK0VBQStFO0FBRWxFLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsY0FBYyxFQUFFO1FBQ2QsQ0FBQyxFQUFFLG9FQUFxRjtRQUN4RixDQUFDLEVBQUUsb0VBQXFGO1FBQ3hGLE9BQU8sRUFBRSxDQUFDO0tBQ1g7Q0FDRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLGtCQUFrQjtBQUNsQiwrRUFBK0U7QUFFbEUsUUFBQSxlQUFlLEdBQUc7SUFDN0IsS0FBSyxFQUFFO1FBQ0wsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDMUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRTtRQUMzRCxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRTtRQUM3RCxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtLQUMzQztJQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLENBQUM7Q0FDOUUsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRWxFLFFBQUEsY0FBYyxHQUFHO0lBQzVCLFlBQVksRUFBRSxvQ0FBb0M7SUFDbEQsWUFBWSxFQUFFLG1CQUFtQjtJQUNqQyxVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLG1CQUFtQixFQUFFLDBCQUEwQjtJQUMvQywyQkFBMkIsRUFBRSxrQ0FBa0M7SUFDL0QsV0FBVyxFQUFFLGVBQWU7Q0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGVzdCByZXNvdXJjZXMgZm9yIFRlbXBvIFNES1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRJUC0yMCBUb2tlbiBBZGRyZXNzZXMgKFRlbXBvIFRlc3RuZXQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBURVNUTkVUX1RPS0VOUyA9IHtcbiAgcGF0aFVTRDoge1xuICAgIGFkZHJlc3M6ICcweDIwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgIG5hbWU6ICd0dGVtcG86cGF0aHVzZCcsXG4gIH0sXG4gIGFscGhhVVNEOiB7XG4gICAgYWRkcmVzczogJzB4MjBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsXG4gICAgbmFtZTogJ3R0ZW1wbzphbHBoYXVzZCcsXG4gIH0sXG4gIGJldGFVU0Q6IHtcbiAgICBhZGRyZXNzOiAnMHgyMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyJyxcbiAgICBuYW1lOiAndHRlbXBvOmJldGF1c2QnLFxuICB9LFxuICB0aGV0YVVTRDoge1xuICAgIGFkZHJlc3M6ICcweDIwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMnLFxuICAgIG5hbWU6ICd0dGVtcG86dGhldGF1c2QnLFxuICB9LFxufTtcblxuLy8gVmFsaWQgY2hlY2tzdW1tZWQgdGVzdCByZWNpcGllbnQgYWRkcmVzc1xuZXhwb3J0IGNvbnN0IFRFU1RfUkVDSVBJRU5UX0FERFJFU1MgPSAnMHg3NDJkMzVDYzY2MzRDMDUzMjkyNWEzYjg0NEJjNDU0ZTQ0MzhmNDRlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHJhbnNhY3Rpb24gUGFyYW1ldGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgVFhfUEFSQU1TID0ge1xuICBkZWZhdWx0R2FzOiBCaWdJbnQoJzEwMDAwMCcpLFxuICBkZWZhdWx0TWF4RmVlUGVyR2FzOiBCaWdJbnQoJzIwMDAwMDAwMDAnKSxcbiAgZGVmYXVsdE1heFByaW9yaXR5RmVlUGVyR2FzOiBCaWdJbnQoJzEwMDAwMDAwMDAnKSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNpZ25hdHVyZSBUZXN0IERhdGFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFNJR05BVFVSRV9URVNUX0RBVEEgPSB7XG4gIHZhbGlkU2lnbmF0dXJlOiB7XG4gICAgcjogJzB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3ODkwYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZicgYXMgYDB4JHtzdHJpbmd9YCxcbiAgICBzOiAnMHhmZWRjYmEwOTg3NjU0MzIxZmVkY2JhMDk4NzY1NDMyMWZlZGNiYTA5ODc2NTQzMjFmZWRjYmEwOTg3NjU0MzIxJyBhcyBgMHgke3N0cmluZ31gLFxuICAgIHlQYXJpdHk6IDAsXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vIFRlc3QgQ2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IE1FTU9fVEVTVF9DQVNFUyA9IHtcbiAgdmFsaWQ6IFtcbiAgICB7IGlucHV0OiAnMTIzNDUnLCBkZXNjcmlwdGlvbjogJ251bWVyaWMnIH0sXG4gICAgeyBpbnB1dDogJ0lOVi0wMDEnLCBkZXNjcmlwdGlvbjogJ2FscGhhbnVtZXJpYyB3aXRoIGRhc2gnIH0sXG4gICAgeyBpbnB1dDogJ2EnLnJlcGVhdCgzMiksIGRlc2NyaXB0aW9uOiAnbWF4IGxlbmd0aCAzMiBieXRlcycgfSxcbiAgICB7IGlucHV0OiAnJywgZGVzY3JpcHRpb246ICdlbXB0eSBzdHJpbmcnIH0sXG4gIF0sXG4gIGludmFsaWQ6IFt7IGlucHV0OiAnYScucmVwZWF0KDMzKSwgZGVzY3JpcHRpb246ICczMyBieXRlcyAtIGV4Y2VlZHMgbGltaXQnIH1dLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXJyb3IgTWVzc2FnZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0VTID0ge1xuICBub09wZXJhdGlvbnM6IC9BdCBsZWFzdCBvbmUgb3BlcmF0aW9uIGlzIHJlcXVpcmVkLyxcbiAgbWlzc2luZ05vbmNlOiAvTm9uY2UgaXMgcmVxdWlyZWQvLFxuICBtaXNzaW5nR2FzOiAvR2FzIGxpbWl0IGlzIHJlcXVpcmVkLyxcbiAgbWlzc2luZ01heEZlZVBlckdhczogL21heEZlZVBlckdhcyBpcyByZXF1aXJlZC8sXG4gIG1pc3NpbmdNYXhQcmlvcml0eUZlZVBlckdhczogL21heFByaW9yaXR5RmVlUGVyR2FzIGlzIHJlcXVpcmVkLyxcbiAgbWVtb1Rvb0xvbmc6IC9NZW1vIHRvbyBsb25nLyxcbn07XG4iXX0=
|