@bitgo-beta/sdk-coin-eos 1.3.19-beta.162 → 1.3.19-beta.1621

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.
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ require("should");
37
+ const _ = __importStar(require("lodash"));
38
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
39
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
40
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
41
+ const src_1 = require("../../src");
42
+ describe('EOS Token:', function () {
43
+ let bitgo;
44
+ let eosTokenCoin;
45
+ let baseCoin;
46
+ const tokenName = 'teos:CHEX';
47
+ before(function () {
48
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
49
+ bitgo.safeRegister('eos', src_1.Eos.createInstance);
50
+ bitgo.safeRegister('teos', src_1.Teos.createInstance);
51
+ src_1.EosToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
52
+ bitgo.safeRegister(name, coinConstructor);
53
+ });
54
+ bitgo.initializeTestVars();
55
+ eosTokenCoin = bitgo.coin(tokenName);
56
+ baseCoin = bitgo.coin('teos');
57
+ });
58
+ it('should return constants', function () {
59
+ eosTokenCoin.getChain().should.equal(tokenName);
60
+ eosTokenCoin.getBaseChain().should.equal('teos');
61
+ eosTokenCoin.getBaseFactor().should.equal(1e8);
62
+ eosTokenCoin.getFullName().should.equal('EOS Token');
63
+ eosTokenCoin.coin.should.equal('teos');
64
+ eosTokenCoin.decimalPlaces.should.equal(8);
65
+ eosTokenCoin.tokenContractAddress.should.equal('testtoken113');
66
+ eosTokenCoin.contractName.should.equal('testtoken113');
67
+ eosTokenCoin.contractAddress.should.equal('testtoken113');
68
+ eosTokenCoin.tokenContractAddress.should.equal(eosTokenCoin.contractName);
69
+ eosTokenCoin.tokenContractAddress.should.equal(eosTokenCoin.contractAddress);
70
+ });
71
+ describe('verify transaction', function () {
72
+ let wallet;
73
+ let verification;
74
+ let newTxPrebuild;
75
+ let newTxParams;
76
+ before(function () {
77
+ const walletData = {
78
+ id: '5a78dd561c6258a907f1eeaee132f796',
79
+ users: [
80
+ {
81
+ user: '543c11ed356d00cb7600000b98794503',
82
+ permissions: ['admin', 'view', 'spend'],
83
+ },
84
+ ],
85
+ coin: 'teos',
86
+ label: 'Verification Wallet',
87
+ m: 2,
88
+ n: 3,
89
+ keys: [
90
+ '5a78dd56bfe424aa07aa068651b194fd',
91
+ '5a78dd5674a70eb4079f58797dfe2f5e',
92
+ '5a78dd561c6258a907f1eea9f1d079e2',
93
+ ],
94
+ tags: ['5a78dd561c6258a907f1eeaee132f796'],
95
+ disableTransactionNotifications: false,
96
+ freeze: {},
97
+ deleted: false,
98
+ approvalsRequired: 1,
99
+ isCold: true,
100
+ coinSpecific: {},
101
+ clientFlags: [],
102
+ balance: 650000000,
103
+ confirmedBalance: 650000000,
104
+ spendableBalance: 650000000,
105
+ balanceString: '650000000',
106
+ confirmedBalanceString: '650000000',
107
+ spendableBalanceString: '650000000',
108
+ receiveAddress: {
109
+ id: '5a78de2bbfe424aa07aa131ec03c8dc1',
110
+ address: '78xczhaijyhek2',
111
+ chain: 0,
112
+ index: 0,
113
+ coin: 'teos',
114
+ wallet: '5a78dd561c6258a907f1eeaee132f796',
115
+ coinSpecific: {},
116
+ },
117
+ pendingApprovals: [],
118
+ };
119
+ wallet = new sdk_core_1.Wallet(bitgo, eosTokenCoin, walletData);
120
+ const userKeychain = {
121
+ prv: '5KJq565HTrgEJG9EbvJH5BLYTgioAyY27dT9am1kCtn2YVAJEYK',
122
+ pub: 'EOS6g7AAMQkhXp8j73E8BD4KRwtQevEsFgYx8htaQkRVhhXJMgkMZ',
123
+ };
124
+ const backupKeychain = {
125
+ prv: '5KZ1nXXCi5yXH8AjCJqjnCYHCVnhQa9YWGV2D14i8g221dxNwLW',
126
+ pub: 'EOS7gyDLNk12faVb1aqNxj1L2DpBerFkhAsxBs95yW3yxJpqvg9Mt',
127
+ };
128
+ const txPrebuild = {
129
+ recipients: [
130
+ {
131
+ address: 'lionteste212',
132
+ amount: '1000',
133
+ },
134
+ ],
135
+ headers: {
136
+ expiration: '2021-10-28T03:56:09.180',
137
+ ref_block_num: 52755,
138
+ ref_block_prefix: 54626512,
139
+ },
140
+ txHex: '2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840591f7a6113ced08841030000000100408c7a02ea3055000000000085269d0003023432011042980ad29cb1ca000000572d3ccdcd0120ceb8437333427c00000000a8ed32322120ceb8437333427c20825019ab3ca98be803000000000000084348455800000000000000000000000000000000000000000000000000000000000000000000000000',
141
+ transaction: {
142
+ compression: 'none',
143
+ packed_trx: '591f7a6113ced08841030000000100408c7a02ea3055000000000085269d0003023432011042980ad29cb1ca000000572d3ccdcd0120ceb8437333427c00000000a8ed32322120ceb8437333427c20825019ab3ca98be80300000000000008434845580000000000',
144
+ signatures: [],
145
+ },
146
+ txid: '0bc7d8026af6710680e0f3e819ff7ddbbb3dff8a740846c76fd47f9386832edc',
147
+ isVotingTransaction: false,
148
+ coin: 'teos',
149
+ token: tokenName,
150
+ };
151
+ verification = {
152
+ disableNetworking: true,
153
+ keychains: {
154
+ user: { pub: userKeychain.pub },
155
+ backup: { pub: backupKeychain.pub },
156
+ },
157
+ };
158
+ const seed = Buffer.from('c3b09c24731be2851b624d9d5b3f60fa129695c24071768d15654bea207b7bb6', 'hex');
159
+ const keyPair = baseCoin.generateKeyPair(seed);
160
+ const txParams = {
161
+ txPrebuild,
162
+ prv: keyPair.prv,
163
+ recipients: [
164
+ {
165
+ address: 'lionteste212',
166
+ amount: '1000',
167
+ },
168
+ ],
169
+ };
170
+ newTxPrebuild = () => {
171
+ return _.cloneDeep(txPrebuild);
172
+ };
173
+ newTxParams = () => {
174
+ return _.cloneDeep(txParams);
175
+ };
176
+ });
177
+ it('should verify token transaction', async function () {
178
+ const txParams = newTxParams();
179
+ const txPrebuild = newTxPrebuild();
180
+ const validTransaction = await eosTokenCoin.verifyTransaction({ txParams, txPrebuild, wallet, verification });
181
+ validTransaction.should.equal(true);
182
+ });
183
+ it('should throw if expected receive symbol is different than actual receive symbol', async function () {
184
+ const txPrebuild = newTxPrebuild();
185
+ const txParams = newTxParams();
186
+ txParams.txPrebuild = txPrebuild;
187
+ txParams.txPrebuild.token = 'teos:IQ';
188
+ await eosTokenCoin
189
+ .verifyTransaction({ txParams, txPrebuild, wallet, verification })
190
+ .should.be.rejectedWith('txHex receive symbol does not match expected recipient symbol');
191
+ });
192
+ it('should be able to verify vaulta transaction', async function () {
193
+ const vaultaCoin = bitgo.coin('teos:VAULTA');
194
+ const txParams = {
195
+ recipients: [
196
+ {
197
+ address: 'lionteste212',
198
+ amount: '1000',
199
+ },
200
+ ],
201
+ };
202
+ const txPrebuild = {
203
+ txHex: '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191ee694868c24f71ef56f10000000100408c7a02ea3055000000000085269d000302323801004c8eda6ca02e45000000572d3ccdcd0170e5e73f5643715600000000a8ed32322170e5e73f5643715620825019ab3ca98be803000000000000044100000000000000000000000000000000000000000000000000000000000000000000000000000000',
204
+ transaction: {
205
+ packed_trx: 'ee694868c24f71ef56f10000000100408c7a02ea3055000000000085269d000302323801004c8eda6ca02e45000000572d3ccdcd0170e5e73f5643715600000000a8ed32322170e5e73f5643715620825019ab3ca98be80300000000000004410000000000000000',
206
+ signatures: [],
207
+ compression: 'none',
208
+ },
209
+ token: 'teos:VAULTA',
210
+ coin: 'teos',
211
+ };
212
+ const validTransaction = await vaultaCoin.verifyTransaction({
213
+ txParams,
214
+ txPrebuild,
215
+ wallet,
216
+ verification,
217
+ });
218
+ validTransaction.should.equal(true);
219
+ });
220
+ });
221
+ });
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW9zVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvZW9zVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrQkFBZ0I7QUFFaEIsMENBQTRCO0FBRTVCLGlEQUErQztBQUMvQyxtREFBOEM7QUFDOUMsbURBQStEO0FBQy9ELG1DQUFnRDtBQUVoRCxRQUFRLENBQUMsWUFBWSxFQUFFO0lBQ3JCLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFlBQVksQ0FBQztJQUNqQixJQUFJLFFBQVEsQ0FBQztJQUNiLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztJQUU5QixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsY0FBUSxDQUFDLHVCQUF1QixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtZQUN2RSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlCQUF5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QUM3RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO1lBQ3JELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsVUFBVSxFQUFFO29CQUNWO3dCQUNFLE9BQU8sRUFBRSxjQUFjO3dCQUN2QixNQUFNLEVBQUUsTUFBTTtxQkFDZjtpQkFDRjthQUNGLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRztnQkFDakIsS0FBSyxFQUNILGtWQUFrVjtnQkFDcFYsV0FBVyxFQUFFO29CQUNYLFVBQVUsRUFDUixrTkFBa047b0JBQ3BOLFVBQVUsRUFBRSxFQUFFO29CQUNkLFdBQVcsRUFBRSxNQUFNO2lCQUNwQjtnQkFDRCxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDMUQsUUFBUTtnQkFDUixVQUFVO2dCQUNWLE1BQU07Z0JBQ04sWUFBWTthQUNiLENBQUMsQ0FBQztZQUNILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgeyBXYWxsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEVvcywgVGVvcywgRW9zVG9rZW4gfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnRU9TIFRva2VuOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBlb3NUb2tlbkNvaW47XG4gIGxldCBiYXNlQ29pbjtcbiAgY29uc3QgdG9rZW5OYW1lID0gJ3Rlb3M6Q0hFWCc7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ2VvcycsIEVvcy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0ZW9zJywgVGVvcy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgRW9zVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICBiaXRnby5zYWZlUmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBlb3NUb2tlbkNvaW4gPSBiaXRnby5jb2luKHRva2VuTmFtZSk7XG4gICAgYmFzZUNvaW4gPSBiaXRnby5jb2luKCd0ZW9zJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBlb3NUb2tlbkNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwodG9rZW5OYW1lKTtcbiAgICBlb3NUb2tlbkNvaW4uZ2V0QmFzZUNoYWluKCkuc2hvdWxkLmVxdWFsKCd0ZW9zJyk7XG4gICAgZW9zVG9rZW5Db2luLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU4KTtcbiAgICBlb3NUb2tlbkNvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ0VPUyBUb2tlbicpO1xuICAgIGVvc1Rva2VuQ29pbi5jb2luLnNob3VsZC5lcXVhbCgndGVvcycpO1xuICAgIGVvc1Rva2VuQ29pbi5kZWNpbWFsUGxhY2VzLnNob3VsZC5lcXVhbCg4KTtcbiAgICBlb3NUb2tlbkNvaW4udG9rZW5Db250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ZXN0dG9rZW4xMTMnKTtcbiAgICBlb3NUb2tlbkNvaW4uY29udHJhY3ROYW1lLnNob3VsZC5lcXVhbCgndGVzdHRva2VuMTEzJyk7XG4gICAgZW9zVG9rZW5Db2luLmNvbnRyYWN0QWRkcmVzcy5zaG91bGQuZXF1YWwoJ3Rlc3R0b2tlbjExMycpO1xuICAgIGVvc1Rva2VuQ29pbi50b2tlbkNvbnRyYWN0QWRkcmVzcy5zaG91bGQuZXF1YWwoZW9zVG9rZW5Db2luLmNvbnRyYWN0TmFtZSk7XG4gICAgZW9zVG9rZW5Db2luLnRva2VuQ29udHJhY3RBZGRyZXNzLnNob3VsZC5lcXVhbChlb3NUb2tlbkNvaW4uY29udHJhY3RBZGRyZXNzKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZlcmlmeSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgd2FsbGV0O1xuICAgIGxldCB2ZXJpZmljYXRpb247XG4gICAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gICAgbGV0IG5ld1R4UGFyYW1zO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWE3OGRkNTYxYzYyNThhOTA3ZjFlZWFlZTEzMmY3OTYnLFxuICAgICAgICB1c2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZXI6ICc1NDNjMTFlZDM1NmQwMGNiNzYwMDAwMGI5ODc5NDUwMycsXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogWydhZG1pbicsICd2aWV3JywgJ3NwZW5kJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgY29pbjogJ3Rlb3MnLFxuICAgICAgICBsYWJlbDogJ1ZlcmlmaWNhdGlvbiBXYWxsZXQnLFxuICAgICAgICBtOiAyLFxuICAgICAgICBuOiAzLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzVhNzhkZDU2YmZlNDI0YWEwN2FhMDY4NjUxYjE5NGZkJyxcbiAgICAgICAgICAnNWE3OGRkNTY3NGE3MGViNDA3OWY1ODc5N2RmZTJmNWUnLFxuICAgICAgICAgICc1YTc4ZGQ1NjFjNjI1OGE5MDdmMWVlYTlmMWQwNzllMicsXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IFsnNWE3OGRkNTYxYzYyNThhOTA3ZjFlZWFlZTEzMmY3OTYnXSxcbiAgICAgICAgZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9uczogZmFsc2UsXG4gICAgICAgIGZyZWV6ZToge30sXG4gICAgICAgIGRlbGV0ZWQ6IGZhbHNlLFxuICAgICAgICBhcHByb3ZhbHNSZXF1aXJlZDogMSxcbiAgICAgICAgaXNDb2xkOiB0cnVlLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHt9LFxuICAgICAgICBjbGllbnRGbGFnczogW10sXG4gICAgICAgIGJhbGFuY2U6IDY1MDAwMDAwMCxcbiAgICAgICAgY29uZmlybWVkQmFsYW5jZTogNjUwMDAwMDAwLFxuICAgICAgICBzcGVuZGFibGVCYWxhbmNlOiA2NTAwMDAwMDAsXG4gICAgICAgIGJhbGFuY2VTdHJpbmc6ICc2NTAwMDAwMDAnLFxuICAgICAgICBjb25maXJtZWRCYWxhbmNlU3RyaW5nOiAnNjUwMDAwMDAwJyxcbiAgICAgICAgc3BlbmRhYmxlQmFsYW5jZVN0cmluZzogJzY1MDAwMDAwMCcsXG4gICAgICAgIHJlY2VpdmVBZGRyZXNzOiB7XG4gICAgICAgICAgaWQ6ICc1YTc4ZGUyYmJmZTQyNGFhMDdhYTEzMWVjMDNjOGRjMScsXG4gICAgICAgICAgYWRkcmVzczogJzc4eGN6aGFpanloZWsyJyxcbiAgICAgICAgICBjaGFpbjogMCxcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICBjb2luOiAndGVvcycsXG4gICAgICAgICAgd2FsbGV0OiAnNWE3OGRkNTYxYzYyNThhOTA3ZjFlZWFlZTEzMmY3OTYnLFxuICAgICAgICAgIGNvaW5TcGVjaWZpYzoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHBlbmRpbmdBcHByb3ZhbHM6IFtdLFxuICAgICAgfTtcbiAgICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGVvc1Rva2VuQ29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCB1c2VyS2V5Y2hhaW4gPSB7XG4gICAgICAgIHBydjogJzVLSnE1NjVIVHJnRUpHOUVidkpINUJMWVRnaW9BeVkyN2RUOWFtMWtDdG4yWVZBSkVZSycsXG4gICAgICAgIHB1YjogJ0VPUzZnN0FBTVFraFhwOGo3M0U4QkQ0S1J3dFFldkVzRmdZeDhodGFRa1JWaGhYSk1na01aJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBiYWNrdXBLZXljaGFpbiA9IHtcbiAgICAgICAgcHJ2OiAnNUtaMW5YWENpNXlYSDhBakNKcWpuQ1lIQ1ZuaFFhOVlXR1YyRDE0aThnMjIxZHhOd0xXJyxcbiAgICAgICAgcHViOiAnRU9TN2d5RExOazEyZmFWYjFhcU54ajFMMkRwQmVyRmtoQXN4QnM5NXlXM3l4SnBxdmc5TXQnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnbGlvbnRlc3RlMjEyJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBleHBpcmF0aW9uOiAnMjAyMS0xMC0yOFQwMzo1NjowOS4xODAnLFxuICAgICAgICAgIHJlZl9ibG9ja19udW06IDUyNzU1LFxuICAgICAgICAgIHJlZl9ibG9ja19wcmVmaXg6IDU0NjI2NTEyLFxuICAgICAgICB9LFxuICAgICAgICB0eEhleDpcbiAgICAgICAgICAnMmEwMmEwMDUzZTVhOGNmNzNhNTZiYTBmZGExMWU0ZDkyZTAyMzhhNGEyYWE3NGZjY2Y0NmQ1YTkxMDc0Njg0MDU5MWY3YTYxMTNjZWQwODg0MTAzMDAwMDAwMDEwMDQwOGM3YTAyZWEzMDU1MDAwMDAwMDAwMDg1MjY5ZDAwMDMwMjM0MzIwMTEwNDI5ODBhZDI5Y2IxY2EwMDAwMDA1NzJkM2NjZGNkMDEyMGNlYjg0MzczMzM0MjdjMDAwMDAwMDBhOGVkMzIzMjIxMjBjZWI4NDM3MzMzNDI3YzIwODI1MDE5YWIzY2E5OGJlODAzMDAwMDAwMDAwMDAwMDg0MzQ4NDU1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICBjb21wcmVzc2lvbjogJ25vbmUnLFxuICAgICAgICAgIHBhY2tlZF90cng6XG4gICAgICAgICAgICAnNTkxZjdhNjExM2NlZDA4ODQxMDMwMDAwMDAwMTAwNDA4YzdhMDJlYTMwNTUwMDAwMDAwMDAwODUyNjlkMDAwMzAyMzQzMjAxMTA0Mjk4MGFkMjljYjFjYTAwMDAwMDU3MmQzY2NkY2QwMTIwY2ViODQzNzMzMzQyN2MwMDAwMDAwMGE4ZWQzMjMyMjEyMGNlYjg0MzczMzM0MjdjMjA4MjUwMTlhYjNjYTk4YmU4MDMwMDAwMDAwMDAwMDAwODQzNDg0NTU4MDAwMDAwMDAwMCcsXG4gICAgICAgICAgc2lnbmF0dXJlczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIHR4aWQ6ICcwYmM3ZDgwMjZhZjY3MTA2ODBlMGYzZTgxOWZmN2RkYmJiM2RmZjhhNzQwODQ2Yzc2ZmQ0N2Y5Mzg2ODMyZWRjJyxcbiAgICAgICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0ZW9zJyxcbiAgICAgICAgdG9rZW46IHRva2VuTmFtZSxcbiAgICAgIH07XG4gICAgICB2ZXJpZmljYXRpb24gPSB7XG4gICAgICAgIGRpc2FibGVOZXR3b3JraW5nOiB0cnVlLFxuICAgICAgICBrZXljaGFpbnM6IHtcbiAgICAgICAgICB1c2VyOiB7IHB1YjogdXNlcktleWNoYWluLnB1YiB9LFxuICAgICAgICAgIGJhY2t1cDogeyBwdWI6IGJhY2t1cEtleWNoYWluLnB1YiB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHNlZWQgPSBCdWZmZXIuZnJvbSgnYzNiMDljMjQ3MzFiZTI4NTFiNjI0ZDlkNWIzZjYwZmExMjk2OTVjMjQwNzE3NjhkMTU2NTRiZWEyMDdiN2JiNicsICdoZXgnKTtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBiYXNlQ29pbi5nZW5lcmF0ZUtleVBhaXIoc2VlZCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgcHJ2OiBrZXlQYWlyLnBydixcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdsaW9udGVzdGUyMTInLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIG5ld1R4UHJlYnVpbGQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkKTtcbiAgICAgIH07XG4gICAgICBuZXdUeFBhcmFtcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgZW9zVG9rZW5Db2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldCwgdmVyaWZpY2F0aW9uIH0pO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGV4cGVjdGVkIHJlY2VpdmUgc3ltYm9sIGlzIGRpZmZlcmVudCB0aGFuIGFjdHVhbCByZWNlaXZlIHN5bWJvbCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy50eFByZWJ1aWxkID0gdHhQcmVidWlsZDtcbiAgICAgIHR4UGFyYW1zLnR4UHJlYnVpbGQudG9rZW4gPSAndGVvczpJUSc7XG4gICAgICBhd2FpdCBlb3NUb2tlbkNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldCwgdmVyaWZpY2F0aW9uIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCd0eEhleCByZWNlaXZlIHN5bWJvbCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCByZWNpcGllbnQgc3ltYm9sJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gdmVyaWZ5IHZhdWx0YSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhdWx0YUNvaW4gPSBiaXRnby5jb2luKCd0ZW9zOlZBVUxUQScpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnbGlvbnRlc3RlMjEyJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzVmZmYxZGFlOGRjOGUyZmM0ZDViMjNiMmM3NjY1Yzk3ZjllOWQ4ZWRmMmI2NDg1YTg2YmEzMTFjMjU2MzkxOTFlZTY5NDg2OGMyNGY3MWVmNTZmMTAwMDAwMDAxMDA0MDhjN2EwMmVhMzA1NTAwMDAwMDAwMDA4NTI2OWQwMDAzMDIzMjM4MDEwMDRjOGVkYTZjYTAyZTQ1MDAwMDAwNTcyZDNjY2RjZDAxNzBlNWU3M2Y1NjQzNzE1NjAwMDAwMDAwYThlZDMyMzIyMTcwZTVlNzNmNTY0MzcxNTYyMDgyNTAxOWFiM2NhOThiZTgwMzAwMDAwMDAwMDAwMDA0NDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgcGFja2VkX3RyeDpcbiAgICAgICAgICAgICdlZTY5NDg2OGMyNGY3MWVmNTZmMTAwMDAwMDAxMDA0MDhjN2EwMmVhMzA1NTAwMDAwMDAwMDA4NTI2OWQwMDAzMDIzMjM4MDEwMDRjOGVkYTZjYTAyZTQ1MDAwMDAwNTcyZDNjY2RjZDAxNzBlNWU3M2Y1NjQzNzE1NjAwMDAwMDAwYThlZDMyMzIyMTcwZTVlNzNmNTY0MzcxNTYyMDgyNTAxOWFiM2NhOThiZTgwMzAwMDAwMDAwMDAwMDA0NDEwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICBzaWduYXR1cmVzOiBbXSxcbiAgICAgICAgICBjb21wcmVzc2lvbjogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbjogJ3Rlb3M6VkFVTFRBJyxcbiAgICAgICAgY29pbjogJ3Rlb3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCB2YXVsdGFDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgfSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import 'should';
5
+ //# sourceMappingURL=stringTextDecoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringTextDecoder.d.ts","sourceRoot":"","sources":["../../../test/unit/stringTextDecoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * @prettier
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("should");
7
+ const utils_1 = require("../../src/lib/utils");
8
+ const fixtures_1 = require("../fixtures");
9
+ describe('String Text Decoder', function () {
10
+ const stringTextDecoder = new utils_1.StringTextDecoder();
11
+ const textDecoder = new TextDecoder();
12
+ it('should decode in utf8', function () {
13
+ const data = Buffer.from('abc');
14
+ const eosDecoded = stringTextDecoder.decode(data);
15
+ const decoded = textDecoder.decode(data);
16
+ eosDecoded.should.equal('abc');
17
+ eosDecoded.should.equal(decoded);
18
+ });
19
+ it('should have inconsistent results for non-utf8', function () {
20
+ const data = Buffer.from([0x0001d11e]);
21
+ const eosDecoded = stringTextDecoder.decode(data);
22
+ const decoded = new TextDecoder('utf-16').decode(data);
23
+ eosDecoded.should.not.equal(decoded);
24
+ });
25
+ it('should decode large inputs', function () {
26
+ const largeInput = 'a'.repeat(16384);
27
+ const data = Buffer.from(largeInput);
28
+ const eosDecoded = stringTextDecoder.decode(data);
29
+ const decoded = textDecoder.decode(data);
30
+ eosDecoded.should.equal(largeInput);
31
+ eosDecoded.should.equal(decoded);
32
+ });
33
+ it('should return empty string no data', function () {
34
+ const eosDecoded = stringTextDecoder.decode();
35
+ const decoded = textDecoder.decode();
36
+ eosDecoded.should.equal('');
37
+ eosDecoded.should.equal(decoded);
38
+ });
39
+ it('should encode and decode eos transaction', function () {
40
+ const packedTrxHex = fixtures_1.EosInputs.unsignedTransaction.transaction.packed_trx;
41
+ const encoded = new TextEncoder().encode(packedTrxHex);
42
+ const decoded = stringTextDecoder.decode(Buffer.from(encoded));
43
+ const decoded2 = textDecoder.decode(Buffer.from(encoded));
44
+ decoded.should.equal(packedTrxHex);
45
+ decoded.should.equal(decoded2);
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nVGV4dERlY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvc3RyaW5nVGV4dERlY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOztBQUVILGtCQUFnQjtBQUNoQiwrQ0FBd0Q7QUFDeEQsMENBQXdDO0FBRXhDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRTtJQUM5QixNQUFNLGlCQUFpQixHQUFHLElBQUkseUJBQWlCLEVBQUUsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRXRDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRTtRQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1FBQ2xELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFO1FBQy9CLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyQyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtRQUN2QyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFckMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUU7UUFDN0MsTUFBTSxZQUFZLEdBQUcsb0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBRTFFLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFMUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cblxuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgU3RyaW5nVGV4dERlY29kZXIgfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IEVvc0lucHV0cyB9IGZyb20gJy4uL2ZpeHR1cmVzJztcblxuZGVzY3JpYmUoJ1N0cmluZyBUZXh0IERlY29kZXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHN0cmluZ1RleHREZWNvZGVyID0gbmV3IFN0cmluZ1RleHREZWNvZGVyKCk7XG4gIGNvbnN0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgaW4gdXRmOCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmZyb20oJ2FiYycpO1xuXG4gICAgY29uc3QgZW9zRGVjb2RlZCA9IHN0cmluZ1RleHREZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICBjb25zdCBkZWNvZGVkID0gdGV4dERlY29kZXIuZGVjb2RlKGRhdGEpO1xuXG4gICAgZW9zRGVjb2RlZC5zaG91bGQuZXF1YWwoJ2FiYycpO1xuICAgIGVvc0RlY29kZWQuc2hvdWxkLmVxdWFsKGRlY29kZWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhdmUgaW5jb25zaXN0ZW50IHJlc3VsdHMgZm9yIG5vbi11dGY4JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuZnJvbShbMHgwMDAxZDExZV0pO1xuXG4gICAgY29uc3QgZW9zRGVjb2RlZCA9IHN0cmluZ1RleHREZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICBjb25zdCBkZWNvZGVkID0gbmV3IFRleHREZWNvZGVyKCd1dGYtMTYnKS5kZWNvZGUoZGF0YSk7XG5cbiAgICBlb3NEZWNvZGVkLnNob3VsZC5ub3QuZXF1YWwoZGVjb2RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGxhcmdlIGlucHV0cycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBsYXJnZUlucHV0ID0gJ2EnLnJlcGVhdCgxNjM4NCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5mcm9tKGxhcmdlSW5wdXQpO1xuXG4gICAgY29uc3QgZW9zRGVjb2RlZCA9IHN0cmluZ1RleHREZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICBjb25zdCBkZWNvZGVkID0gdGV4dERlY29kZXIuZGVjb2RlKGRhdGEpO1xuXG4gICAgZW9zRGVjb2RlZC5zaG91bGQuZXF1YWwobGFyZ2VJbnB1dCk7XG4gICAgZW9zRGVjb2RlZC5zaG91bGQuZXF1YWwoZGVjb2RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IHN0cmluZyBubyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGVvc0RlY29kZWQgPSBzdHJpbmdUZXh0RGVjb2Rlci5kZWNvZGUoKTtcbiAgICBjb25zdCBkZWNvZGVkID0gdGV4dERlY29kZXIuZGVjb2RlKCk7XG5cbiAgICBlb3NEZWNvZGVkLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgZW9zRGVjb2RlZC5zaG91bGQuZXF1YWwoZGVjb2RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIGFuZCBkZWNvZGUgZW9zIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhY2tlZFRyeEhleCA9IEVvc0lucHV0cy51bnNpZ25lZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLnBhY2tlZF90cng7XG5cbiAgICBjb25zdCBlbmNvZGVkID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHBhY2tlZFRyeEhleCk7XG4gICAgY29uc3QgZGVjb2RlZCA9IHN0cmluZ1RleHREZWNvZGVyLmRlY29kZShCdWZmZXIuZnJvbShlbmNvZGVkKSk7XG4gICAgY29uc3QgZGVjb2RlZDIgPSB0ZXh0RGVjb2Rlci5kZWNvZGUoQnVmZmVyLmZyb20oZW5jb2RlZCkpO1xuXG4gICAgZGVjb2RlZC5zaG91bGQuZXF1YWwocGFja2VkVHJ4SGV4KTtcbiAgICBkZWNvZGVkLnNob3VsZC5lcXVhbChkZWNvZGVkMik7XG4gIH0pO1xufSk7XG4iXX0=