@bitgo-beta/sdk-coin-bch 1.3.3-alpha.406 → 1.3.3-alpha.408
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/test/integration/bch.d.ts +2 -0
- package/dist/test/integration/bch.d.ts.map +1 -0
- package/dist/test/integration/bch.js +75 -0
- package/dist/test/unit/bch.d.ts +2 -0
- package/dist/test/unit/bch.d.ts.map +1 -0
- package/dist/test/unit/bch.js +142 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +11 -8
- package/.eslintignore +0 -4
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -751
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/integration/bch.ts"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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
|
+
/**
|
|
37
|
+
* @prettier
|
|
38
|
+
*/
|
|
39
|
+
const should = __importStar(require("should"));
|
|
40
|
+
require("should-http");
|
|
41
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
42
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
43
|
+
const tbch_1 = require("../../src/tbch");
|
|
44
|
+
const nock = __importStar(require("nock"));
|
|
45
|
+
nock.restore();
|
|
46
|
+
describe('BCH:', function () {
|
|
47
|
+
let bitgo;
|
|
48
|
+
let wallet;
|
|
49
|
+
before(async function () {
|
|
50
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
51
|
+
bitgo.initializeTestVars();
|
|
52
|
+
bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
|
|
53
|
+
await bitgo.authenticateTestUser(bitgo.testUserOTP());
|
|
54
|
+
wallet = await bitgo.coin('tbch').wallets().getWallet({ id: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_ID });
|
|
55
|
+
});
|
|
56
|
+
describe('Send Transaction', function () {
|
|
57
|
+
it('should send fund to cashaddr recipient', async function () {
|
|
58
|
+
await bitgo.unlock({ otp: '0000000' });
|
|
59
|
+
const transaction = await wallet.send({
|
|
60
|
+
address: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_CASH_ADDRESS,
|
|
61
|
+
amount: '5000',
|
|
62
|
+
walletPassphrase: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_PASSPHRASE,
|
|
63
|
+
otp: bitgo.testUserOTP(),
|
|
64
|
+
});
|
|
65
|
+
should.exist(transaction);
|
|
66
|
+
transaction.should.have.property('transfer');
|
|
67
|
+
transaction.should.have.property('txid');
|
|
68
|
+
transaction.should.have.property('tx');
|
|
69
|
+
transaction.status.should.containEql('signed');
|
|
70
|
+
transaction.transfer.type.should.containEql('send');
|
|
71
|
+
transaction.transfer.wallet.should.containEql(wallet._wallet.id);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbi9iY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILCtDQUFpQztBQUNqQyx1QkFBcUI7QUFFckIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx5Q0FBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUVmLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxNQUFNLENBQUM7SUFFWCxNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxvQkFBUyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEI7Z0JBQ2xELE1BQU0sRUFBRSxNQUFNO2dCQUNkLGdCQUFnQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLDBCQUEwQjtnQkFDekQsR0FBRyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7YUFDekIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgJ3Nob3VsZC1odHRwJztcblxuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgVGJjaCB9IGZyb20gJy4uLy4uL3NyYy90YmNoJztcbmltcG9ydCAqIGFzIG5vY2sgZnJvbSAnbm9jayc7XG5cbm5vY2sucmVzdG9yZSgpO1xuXG5kZXNjcmliZSgnQkNIOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCB3YWxsZXQ7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RiY2gnLCBUYmNoLmNyZWF0ZUluc3RhbmNlKTtcblxuICAgIGF3YWl0IGJpdGdvLmF1dGhlbnRpY2F0ZVRlc3RVc2VyKGJpdGdvLnRlc3RVc2VyT1RQKCkpO1xuICAgIHdhbGxldCA9IGF3YWl0IGJpdGdvLmNvaW4oJ3RiY2gnKS53YWxsZXRzKCkuZ2V0V2FsbGV0KHsgaWQ6IFRlc3RCaXRHby5WMi5URVNUX0JDSF9XQUxMRVRfSUQgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTZW5kIFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2VuZCBmdW5kIHRvIGNhc2hhZGRyIHJlY2lwaWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJpdGdvLnVubG9jayh7IG90cDogJzAwMDAwMDAnIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHdhbGxldC5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogVGVzdEJpdEdvLlYyLlRFU1RfQkNIX1dBTExFVF9DQVNIX0FERFJFU1MsXG4gICAgICAgIGFtb3VudDogJzUwMDAnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBUZXN0Qml0R28uVjIuVEVTVF9CQ0hfV0FMTEVUX1BBU1NQSFJBU0UsXG4gICAgICAgIG90cDogYml0Z28udGVzdFVzZXJPVFAoKSxcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zZmVyJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5zdGF0dXMuc2hvdWxkLmNvbnRhaW5FcWwoJ3NpZ25lZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIudHlwZS5zaG91bGQuY29udGFpbkVxbCgnc2VuZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIud2FsbGV0LnNob3VsZC5jb250YWluRXFsKHdhbGxldC5fd2FsbGV0LmlkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/unit/bch.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* @prettier
|
|
5
|
+
*/
|
|
6
|
+
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
7
|
+
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
8
|
+
const bch_1 = require("../../src/bch");
|
|
9
|
+
const tbch_1 = require("../../src/tbch");
|
|
10
|
+
describe('Custom BCH Tests', function () {
|
|
11
|
+
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
12
|
+
bitgo.initializeTestVars();
|
|
13
|
+
bitgo.safeRegister('bch', bch_1.Bch.createInstance);
|
|
14
|
+
bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
|
|
15
|
+
const bch = bitgo.coin('bch');
|
|
16
|
+
const tbch = bitgo.coin('tbch');
|
|
17
|
+
// we use mainnet bch so we can reuse the mainnet address examples
|
|
18
|
+
it('should correctly convert addresses', function () {
|
|
19
|
+
// P2PKH cashaddr -> cashaddr
|
|
20
|
+
bch
|
|
21
|
+
.canonicalAddress('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
|
|
22
|
+
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
|
|
23
|
+
bch
|
|
24
|
+
.canonicalAddress('qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
|
|
25
|
+
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
|
|
26
|
+
// P2PKH base58 -> cashaddr
|
|
27
|
+
bch
|
|
28
|
+
.canonicalAddress('1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu', 'cashaddr')
|
|
29
|
+
.should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
|
|
30
|
+
// P2SH cashaddr -> cashaddr
|
|
31
|
+
bch
|
|
32
|
+
.canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
|
|
33
|
+
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
|
|
34
|
+
bch
|
|
35
|
+
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
|
|
36
|
+
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
|
|
37
|
+
// P2SH base58 -> cashaddr
|
|
38
|
+
bch
|
|
39
|
+
.canonicalAddress('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC', 'cashaddr')
|
|
40
|
+
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
|
|
41
|
+
// no 'bitcoincash:' prefix
|
|
42
|
+
bch
|
|
43
|
+
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
|
|
44
|
+
.should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
|
|
45
|
+
// P2PKH cashaddr -> base58
|
|
46
|
+
bch
|
|
47
|
+
.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
|
|
48
|
+
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
|
|
49
|
+
bch
|
|
50
|
+
.canonicalAddress('qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
|
|
51
|
+
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
|
|
52
|
+
// P2PKH base58 -> base58
|
|
53
|
+
bch
|
|
54
|
+
.canonicalAddress('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb', 'base58')
|
|
55
|
+
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
|
|
56
|
+
// P2SH cashaddr -> base58
|
|
57
|
+
bch
|
|
58
|
+
.canonicalAddress('bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
|
|
59
|
+
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
|
|
60
|
+
bch
|
|
61
|
+
.canonicalAddress('pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
|
|
62
|
+
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
|
|
63
|
+
// P2SH base58 -> base58
|
|
64
|
+
bch
|
|
65
|
+
.canonicalAddress('3LDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58')
|
|
66
|
+
.should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
|
|
67
|
+
// undefined version defaults to base58
|
|
68
|
+
bch
|
|
69
|
+
.canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
|
|
70
|
+
.should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
|
|
71
|
+
bch
|
|
72
|
+
.canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
|
|
73
|
+
.should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
|
|
74
|
+
// all capitalized
|
|
75
|
+
bch
|
|
76
|
+
.canonicalAddress('BITCOINCASH:QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
|
|
77
|
+
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
|
|
78
|
+
bch
|
|
79
|
+
.canonicalAddress('QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
|
|
80
|
+
.should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
|
|
81
|
+
// testnet addresses
|
|
82
|
+
tbch
|
|
83
|
+
.canonicalAddress('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X', 'cashaddr')
|
|
84
|
+
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
|
|
85
|
+
tbch
|
|
86
|
+
.canonicalAddress('n3jYBjCzgGNydQwf83Hz6GBzGBhMkKfgL1', 'cashaddr')
|
|
87
|
+
.should.equal('bchtest:qremgr9dr9x5swv82k69qdjzrvdxgkaaesftdp5xla');
|
|
88
|
+
tbch
|
|
89
|
+
.canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
|
|
90
|
+
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
|
|
91
|
+
tbch
|
|
92
|
+
.canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
|
|
93
|
+
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
|
|
94
|
+
tbch
|
|
95
|
+
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
|
|
96
|
+
.should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
|
|
97
|
+
tbch
|
|
98
|
+
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
|
|
99
|
+
.should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
|
|
100
|
+
tbch
|
|
101
|
+
.canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
|
|
102
|
+
.should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
|
|
103
|
+
});
|
|
104
|
+
it('should reject invalid addresses', function () {
|
|
105
|
+
// improperly short data segment
|
|
106
|
+
(() => {
|
|
107
|
+
bch.canonicalAddress('bitcoincash:sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
|
|
108
|
+
}).should.throw();
|
|
109
|
+
// mismatched data segment (cashaddr)
|
|
110
|
+
(() => {
|
|
111
|
+
bch.canonicalAddress('bitcoincash:yr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
|
|
112
|
+
}).should.throw();
|
|
113
|
+
// double prefix
|
|
114
|
+
(() => {
|
|
115
|
+
bch.canonicalAddress('bitcoincash:bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
|
|
116
|
+
}).should.throw();
|
|
117
|
+
// mismatched data segment (base58)
|
|
118
|
+
(() => {
|
|
119
|
+
bch.canonicalAddress('3DDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58');
|
|
120
|
+
}).should.throw();
|
|
121
|
+
// improper prefix
|
|
122
|
+
(() => {
|
|
123
|
+
bch.canonicalAddress(':qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
|
|
124
|
+
}).should.throw();
|
|
125
|
+
(() => {
|
|
126
|
+
bch.canonicalAddress('bitcoin:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
|
|
127
|
+
}).should.throw();
|
|
128
|
+
// mismatched capitalization
|
|
129
|
+
(() => {
|
|
130
|
+
bch.canonicalAddress('bitcoincash:QPM2Qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr');
|
|
131
|
+
}).should.throw();
|
|
132
|
+
// improper version
|
|
133
|
+
(() => {
|
|
134
|
+
bch.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'blah');
|
|
135
|
+
}).should.throw();
|
|
136
|
+
// undefined address
|
|
137
|
+
(() => {
|
|
138
|
+
bch.canonicalAddress(undefined, 'blah');
|
|
139
|
+
}).should.throw();
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2JjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx1Q0FBb0M7QUFDcEMseUNBQXNDO0FBRXRDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQVEsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBUyxDQUFDO0lBRXhDLGtFQUFrRTtJQUNsRSxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsNkJBQTZCO1FBQzdCLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyx3REFBd0QsRUFBRSxVQUFVLENBQUM7YUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzFFLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxVQUFVLENBQUM7YUFDMUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRTFFLDJCQUEyQjtRQUMzQixHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxDQUFDO2FBQ2xFLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUUxRSw0QkFBNEI7UUFDNUIsR0FBRzthQUNBLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFVBQVUsQ0FBQzthQUN0RixNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDMUUsR0FBRzthQUNBLGdCQUFnQixDQUFDLDRDQUE0QyxFQUFFLFVBQVUsQ0FBQzthQUMxRSxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFFMUUsMEJBQTBCO1FBQzFCLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyxvQ0FBb0MsRUFBRSxVQUFVLENBQUM7YUFDbEUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRTFFLDJCQUEyQjtRQUMzQixHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsNENBQTRDLEVBQUUsVUFBVSxDQUFDO2FBQzFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUUxRSwyQkFBMkI7UUFDM0IsR0FBRzthQUNBLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFFBQVEsQ0FBQzthQUNwRixNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDckQsR0FBRzthQUNBLGdCQUFnQixDQUFDLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQzthQUN4RSxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFckQseUJBQXlCO1FBQ3pCLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyxtQ0FBbUMsRUFBRSxRQUFRLENBQUM7YUFDL0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRXJELDBCQUEwQjtRQUMxQixHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsd0RBQXdELEVBQUUsUUFBUSxDQUFDO2FBQ3BGLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN0RCxHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsNENBQTRDLEVBQUUsUUFBUSxDQUFDO2FBQ3hFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUV0RCx3QkFBd0I7UUFDeEIsR0FBRzthQUNBLGdCQUFnQixDQUFDLG9DQUFvQyxFQUFFLFFBQVEsQ0FBQzthQUNoRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFFdEQsdUNBQXVDO1FBQ3ZDLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyx3REFBd0QsQ0FBQzthQUMxRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDdEQsR0FBRzthQUNBLGdCQUFnQixDQUFDLDRDQUE0QyxDQUFDO2FBQzlELE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUV0RCxrQkFBa0I7UUFDbEIsR0FBRzthQUNBLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFFBQVEsQ0FBQzthQUNwRixNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDckQsR0FBRzthQUNBLGdCQUFnQixDQUFDLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQzthQUN4RSxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFckQsb0JBQW9CO1FBQ3BCLElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyxxQ0FBcUMsRUFBRSxVQUFVLENBQUM7YUFDbkUsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3RFLElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyxvQ0FBb0MsRUFBRSxVQUFVLENBQUM7YUFDbEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3RFLElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxVQUFVLENBQUM7YUFDbEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3RFLElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxVQUFVLENBQUM7YUFDbEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3RFLElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxRQUFRLENBQUM7YUFDeEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxRQUFRLENBQUM7YUFDeEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUk7YUFDRCxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxVQUFVLENBQUM7YUFDMUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLGdDQUFnQztRQUNoQyxDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIscUNBQXFDO1FBQ3JDLENBQUMsR0FBRyxFQUFFO1lBQ0osR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixnQkFBZ0I7UUFDaEIsQ0FBQyxHQUFHLEVBQUU7WUFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsb0VBQW9FLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLG1DQUFtQztRQUNuQyxDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIsa0JBQWtCO1FBQ2xCLENBQUMsR0FBRyxFQUFFO1lBQ0osR0FBRyxDQUFDLGdCQUFnQixDQUFDLDZDQUE2QyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIsNEJBQTRCO1FBQzVCLENBQUMsR0FBRyxFQUFFO1lBQ0osR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixtQkFBbUI7UUFDbkIsQ0FBQyxHQUFHLEVBQUU7WUFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsd0RBQXdELEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLG9CQUFvQjtRQUNwQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQmNoIH0gZnJvbSAnLi4vLi4vc3JjL2JjaCc7XG5pbXBvcnQgeyBUYmNoIH0gZnJvbSAnLi4vLi4vc3JjL3RiY2gnO1xuXG5kZXNjcmliZSgnQ3VzdG9tIEJDSCBUZXN0cycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z286IFRlc3RCaXRHb0FQSSA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIGJpdGdvLnNhZmVSZWdpc3RlcignYmNoJywgQmNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YmNoJywgVGJjaC5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgY29uc3QgYmNoID0gYml0Z28uY29pbignYmNoJykgYXMgQmNoO1xuICBjb25zdCB0YmNoID0gYml0Z28uY29pbigndGJjaCcpIGFzIFRiY2g7XG5cbiAgLy8gd2UgdXNlIG1haW5uZXQgYmNoIHNvIHdlIGNhbiByZXVzZSB0aGUgbWFpbm5ldCBhZGRyZXNzIGV4YW1wbGVzXG4gIGl0KCdzaG91bGQgY29ycmVjdGx5IGNvbnZlcnQgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3FwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBjYXNoYWRkclxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzFCcEVpNkRmREFVRmQ3R3RpdHRMU2RCZVlKdmNvYVZnZ3UnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJyk7XG5cbiAgICAvLyBQMlNIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnM0NXRmRkaTZtNG5kaUd5S3F6WXZzRllhZ3FETFBWTVR6QycsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIG5vICdiaXRjb2luY2FzaDonIHByZWZpeFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncXFxMzcyOHl3MHk0N3NxbjZsMm5hMzBtY3c2em03OGR6cXJlOTA5bTJyJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzE2dzFENVdSVktKdVpVc1NSemRMcDl3M1lHY2dveERYYicpO1xuXG4gICAgLy8gUDJTSCBjYXNoYWRkciAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIHVuZGVmaW5lZCB2ZXJzaW9uIGRlZmF1bHRzIHRvIGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpXG4gICAgICAuc2hvdWxkLmVxdWFsKCczQ1dGZGRpNm00bmRpR3lLcXpZdnNGWWFncURMUFZNVHpDJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNDV0ZkZGk2bTRuZGlHeUtxell2c0ZZYWdxRExQVk1UekMnKTtcblxuICAgIC8vIGFsbCBjYXBpdGFsaXplZFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ0JJVENPSU5DQVNIOlFRUTM3MjhZVzBZNDdTUU42TDJOQTMwTUNXNlpNNzhEWlFSRTkwOU0yUicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnUVFRMzcyOFlXMFk0N1NRTjZMMk5BMzBNQ1c2Wk03OERaUVJFOTA5TTJSJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIHRlc3RuZXQgYWRkcmVzc2VzXG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JjaHRlc3Q6cHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ24zallCakN6Z0dOeWRRd2Y4M0h6NkdCekdCaE1rS2ZnTDEnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpxcmVtZ3I5ZHI5eDVzd3Y4Mms2OXFkanpydmR4Z2thYWVzZnRkcDV4bGEnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcyTkNFRG1tS05ObnFLdm5XdzdwRTNSTHp1RmU1YUhIVnkxWCcpO1xuICAgIHRiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3ByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiY2h0ZXN0OnByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3NlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBpbXByb3Blcmx5IHNob3J0IGRhdGEgc2VnbWVudFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoY2FzaGFkZHIpXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDp5cjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBkb3VibGUgcHJlZml4XG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoYmFzZTU4KVxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnM0REc1M1Nzl5N3NydWFkcXUxMWJlRUpvVGpkRmlGQ2RYNCcsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHByZWZpeFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbjpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGNhcGl0YWxpemF0aW9uXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpRUE0yUXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnY2FzaGFkZHInKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHZlcnNpb25cbiAgICAoKCkgPT4ge1xuICAgICAgYmNoLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdibGFoJyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyB1bmRlZmluZWQgYWRkcmVzc1xuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcyh1bmRlZmluZWQgYXMgYW55LCAnYmxhaCcpO1xuICAgIH0pLnNob3VsZC50aHJvdygpO1xuICB9KTtcbn0pO1xuIl19
|