@bitgo/account-lib 2.20.0-rc.21 → 2.20.0-rc.22

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/tsconfig.tsbuildinfo +1354 -3334
  3. package/package.json +7 -14
  4. package/dist/browser/bitgo-account-lib.js +0 -2
  5. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +0 -337
  6. package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -42
  7. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
  8. package/dist/src/coin/algo/assetTransferBuilder.js +0 -105
  9. package/dist/src/coin/algo/errors.d.ts +0 -11
  10. package/dist/src/coin/algo/errors.d.ts.map +0 -1
  11. package/dist/src/coin/algo/errors.js +0 -27
  12. package/dist/src/coin/algo/ifaces.d.ts +0 -46
  13. package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
  14. package/dist/src/coin/algo/ifaces.js +0 -3
  15. package/dist/src/coin/algo/index.d.ts +0 -13
  16. package/dist/src/coin/algo/index.d.ts.map +0 -1
  17. package/dist/src/coin/algo/index.js +0 -47
  18. package/dist/src/coin/algo/keyPair.d.ts +0 -25
  19. package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
  20. package/dist/src/coin/algo/keyPair.js +0 -77
  21. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
  22. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
  23. package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -239
  24. package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
  25. package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
  26. package/dist/src/coin/algo/seedEncoding.js +0 -97
  27. package/dist/src/coin/algo/transaction.d.ts +0 -75
  28. package/dist/src/coin/algo/transaction.d.ts.map +0 -1
  29. package/dist/src/coin/algo/transaction.js +0 -251
  30. package/dist/src/coin/algo/transactionBuilder.d.ts +0 -204
  31. package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
  32. package/dist/src/coin/algo/transactionBuilder.js +0 -373
  33. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
  34. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
  35. package/dist/src/coin/algo/transactionBuilderFactory.js +0 -52
  36. package/dist/src/coin/algo/transferBuilder.d.ts +0 -40
  37. package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
  38. package/dist/src/coin/algo/transferBuilder.js +0 -89
  39. package/dist/src/coin/algo/txnSchema.d.ts +0 -7
  40. package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
  41. package/dist/src/coin/algo/txnSchema.js +0 -68
  42. package/dist/src/coin/algo/utils.d.ts +0 -249
  43. package/dist/src/coin/algo/utils.d.ts.map +0 -1
  44. package/dist/src/coin/algo/utils.js +0 -539
  45. package/dist/src/coin/cspr/constants.d.ts +0 -19
  46. package/dist/src/coin/cspr/constants.d.ts.map +0 -1
  47. package/dist/src/coin/cspr/constants.js +0 -28
  48. package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
  49. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
  50. package/dist/src/coin/cspr/delegateBuilder.js +0 -111
  51. package/dist/src/coin/cspr/ifaces.d.ts +0 -69
  52. package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
  53. package/dist/src/coin/cspr/ifaces.js +0 -3
  54. package/dist/src/coin/cspr/index.d.ts +0 -6
  55. package/dist/src/coin/cspr/index.d.ts.map +0 -1
  56. package/dist/src/coin/cspr/index.js +0 -31
  57. package/dist/src/coin/cspr/keyPair.d.ts +0 -18
  58. package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
  59. package/dist/src/coin/cspr/keyPair.js +0 -75
  60. package/dist/src/coin/cspr/transaction.d.ts +0 -55
  61. package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
  62. package/dist/src/coin/cspr/transaction.js +0 -227
  63. package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -124
  64. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
  65. package/dist/src/coin/cspr/transactionBuilder.js +0 -312
  66. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
  67. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
  68. package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -98
  69. package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
  70. package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
  71. package/dist/src/coin/cspr/transferBuilder.js +0 -106
  72. package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
  73. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
  74. package/dist/src/coin/cspr/undelegateBuilder.js +0 -111
  75. package/dist/src/coin/cspr/utils.d.ts +0 -188
  76. package/dist/src/coin/cspr/utils.d.ts.map +0 -1
  77. package/dist/src/coin/cspr/utils.js +0 -477
  78. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
  79. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
  80. package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -95
@@ -1,27 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { TransactionBuilder } from './transactionBuilder';
3
- import { Transaction } from './transaction';
4
- export declare class WalletInitializationBuilder extends TransactionBuilder {
5
- private _owners;
6
- private _contract;
7
- constructor(_coinConfig: Readonly<CoinConfig>);
8
- /** @inheritdoc */
9
- protected buildImplementation(): Promise<Transaction>;
10
- /**
11
- * Build args needed to create a session, then we can send this session with the contract
12
- *
13
- * @returns {WalletInitContractArgs} contracts args to create a session
14
- */
15
- private buildWalletParameters;
16
- /** @inheritdoc */
17
- initBuilder(tx: Transaction): void;
18
- /**
19
- * Set one of the owners of the multisig wallet.
20
- *
21
- * @param {string} address The public key of the owner's account
22
- * @returns {WalletInitializationBuilder} This wallet initialization builder
23
- */
24
- owner(address: string): this;
25
- validateMandatoryFields(): void;
26
- }
27
- //# sourceMappingURL=walletInitializationBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAa;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgB3D;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAkB7B,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAYlC;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiB5B,uBAAuB,IAAI,IAAI;CAahC"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletInitializationBuilder = void 0;
4
- const casper_js_sdk_1 = require("casper-js-sdk");
5
- const sdk_core_1 = require("@bitgo/sdk-core");
6
- const transactionBuilder_1 = require("./transactionBuilder");
7
- const utils_1 = require("./utils");
8
- const constants_1 = require("./constants");
9
- const keyPair_1 = require("./keyPair");
10
- const DEFAULT_OWNER_WEIGHT = 1;
11
- class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
12
- constructor(_coinConfig) {
13
- super(_coinConfig);
14
- this._owners = [];
15
- this._contract = Uint8Array.from(Buffer.from(utils_1.casperContractHexCode, 'hex'));
16
- }
17
- // region Base Builder
18
- /** @inheritdoc */
19
- async buildImplementation() {
20
- const args = this.buildWalletParameters();
21
- const extraArguments = new Map();
22
- extraArguments.set(constants_1.TRANSACTION_TYPE, casper_js_sdk_1.CLValueBuilder.string(sdk_core_1.TransactionType[sdk_core_1.TransactionType.WalletInitialization]));
23
- for (let index = 0; index < this._owners.length; index++) {
24
- const ownerPublicKey = Buffer.from(this._owners[index].address.value()).toString('hex');
25
- const ownerAddress = new keyPair_1.KeyPair({ pub: ownerPublicKey }).getAddress();
26
- extraArguments.set(constants_1.OWNER_PREFIX + index, casper_js_sdk_1.CLValueBuilder.string(ownerAddress));
27
- }
28
- this._session = { moduleBytes: this._contract, args: casper_js_sdk_1.RuntimeArgs.fromMap(args), extraArguments: extraArguments };
29
- this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
30
- return await super.buildImplementation();
31
- }
32
- /**
33
- * Build args needed to create a session, then we can send this session with the contract
34
- *
35
- * @returns {WalletInitContractArgs} contracts args to create a session
36
- */
37
- buildWalletParameters() {
38
- const accounts = this._owners.map((owner) => casper_js_sdk_1.CLValueBuilder.byteArray(owner.address.toAccountHash()));
39
- const weights = this._owners.map((owner) => casper_js_sdk_1.CLValueBuilder.u8(owner.weight));
40
- // set source address weight to zero to disable the master private key from signing.
41
- accounts.push(casper_js_sdk_1.CLValueBuilder.byteArray(casper_js_sdk_1.CLPublicKey.fromHex(this._source.address).toAccountHash()));
42
- weights.push(casper_js_sdk_1.CLValueBuilder.u8(0));
43
- return {
44
- action: casper_js_sdk_1.CLValueBuilder.string(constants_1.WALLET_INITIALIZATION_CONTRACT_ACTION),
45
- // This typo is on purpose since the contract we use for multisig wallet initialization expect this argument to be written like this.
46
- deployment_thereshold: casper_js_sdk_1.CLValueBuilder.u8(transactionBuilder_1.DEFAULT_N),
47
- key_management_threshold: casper_js_sdk_1.CLValueBuilder.u8(transactionBuilder_1.DEFAULT_M),
48
- accounts: casper_js_sdk_1.CLValueBuilder.list(accounts),
49
- weights: casper_js_sdk_1.CLValueBuilder.list(weights),
50
- };
51
- }
52
- /** @inheritdoc */
53
- initBuilder(tx) {
54
- super.initBuilder(tx);
55
- this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
56
- for (let ownerIndex = 0; ownerIndex < transactionBuilder_1.DEFAULT_M; ownerIndex++) {
57
- const ownerCLValue = tx.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + ownerIndex);
58
- this.owner(ownerCLValue.value());
59
- }
60
- }
61
- // endregion
62
- // region Common builder methods
63
- /**
64
- * Set one of the owners of the multisig wallet.
65
- *
66
- * @param {string} address The public key of the owner's account
67
- * @returns {WalletInitializationBuilder} This wallet initialization builder
68
- */
69
- owner(address) {
70
- if (this._owners.length >= transactionBuilder_1.DEFAULT_M) {
71
- throw new sdk_core_1.BuildTransactionError('A maximum of ' + transactionBuilder_1.DEFAULT_M + ' owners can be set for a multisig wallet');
72
- }
73
- this.validateAddress({ address: address });
74
- for (const _owner of this._owners) {
75
- if (address.substr(0, 2) + Buffer.from(_owner.address.value()).toString('hex') === address) {
76
- throw new sdk_core_1.BuildTransactionError('Duplicated owner: ' + address);
77
- }
78
- }
79
- this._owners.push({ address: casper_js_sdk_1.CLPublicKey.fromHex(address), weight: DEFAULT_OWNER_WEIGHT });
80
- return this;
81
- }
82
- // endregion
83
- // region Validators
84
- validateMandatoryFields() {
85
- if (this._owners.length === 0) {
86
- throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing wallet owners');
87
- }
88
- if (this._owners.length !== transactionBuilder_1.DEFAULT_M) {
89
- throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${transactionBuilder_1.DEFAULT_M}, found: ${this._owners.length}`);
90
- }
91
- super.validateMandatoryFields();
92
- }
93
- }
94
- exports.WalletInitializationBuilder = WalletInitializationBuilder;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY3Nwci93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQXlHO0FBQ3pHLDhDQUF5RTtBQUN6RSw2REFBZ0Y7QUFHaEYsbUNBQWdEO0FBQ2hELDJDQUFvRztBQUNwRyx1Q0FBb0M7QUFFcEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBYSwyQkFBNEIsU0FBUSx1Q0FBa0I7SUFJakUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKYixZQUFPLEdBQVksRUFBRSxDQUFDO1FBSzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBRWxELGNBQWMsQ0FBQyxHQUFHLENBQUMsNEJBQWdCLEVBQUUsOEJBQWMsQ0FBQyxNQUFNLENBQUMsMEJBQWUsQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ILEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMs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bSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ0xWYWx1ZSwgQ0xQdWJsaWNLZXkgYXMgUHVibGljS2V5LCBSdW50aW1lQXJncywgQ0xWYWx1ZUJ1aWxkZXIsIENMU3RyaW5nIH0gZnJvbSAnY2FzcGVyLWpzLXNkayc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIsIERFRkFVTFRfTSwgREVGQVVMVF9OIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IE93bmVyLCBXYWxsZXRJbml0Q29udHJhY3RBcmdzIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgY2FzcGVyQ29udHJhY3RIZXhDb2RlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPV05FUl9QUkVGSVgsIFRSQU5TQUNUSU9OX1RZUEUsIFdBTExFVF9JTklUSUFMSVpBVElPTl9DT05UUkFDVF9BQ1RJT04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcblxuY29uc3QgREVGQVVMVF9PV05FUl9XRUlHSFQgPSAxO1xuZXhwb3J0IGNsYXNzIFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX293bmVyczogT3duZXJbXSA9IFtdO1xuICBwcml2YXRlIF9jb250cmFjdDogVWludDhBcnJheTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29udHJhY3QgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oY2FzcGVyQ29udHJhY3RIZXhDb2RlLCAnaGV4JykpO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmJ1aWxkV2FsbGV0UGFyYW1ldGVycygpO1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG5cbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFRyYW5zYWN0aW9uVHlwZVtUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb25dKSk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX293bmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG93bmVyUHVibGljS2V5ID0gQnVmZmVyLmZyb20odGhpcy5fb3duZXJzW2luZGV4XS5hZGRyZXNzLnZhbHVlKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IG93bmVyQWRkcmVzcyA9IG5ldyBLZXlQYWlyKHsgcHViOiBvd25lclB1YmxpY0tleSB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBleHRyYUFyZ3VtZW50cy5zZXQoT1dORVJfUFJFRklYICsgaW5kZXgsIENMVmFsdWVCdWlsZGVyLnN0cmluZyhvd25lckFkZHJlc3MpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXNzaW9uID0geyBtb2R1bGVCeXRlczogdGhpcy5fY29udHJhY3QsIGFyZ3M6IFJ1bnRpbWVBcmdzLmZyb21NYXAoYXJncyksIGV4dHJhQXJndW1lbnRzOiBleHRyYUFyZ3VtZW50cyB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhcmdzIG5lZWRlZCB0byBjcmVhdGUgYSBzZXNzaW9uLCB0aGVuIHdlIGNhbiBzZW5kIHRoaXMgc2Vzc2lvbiB3aXRoIHRoZSBjb250cmFjdFxuICAgKlxuICAgKiBAcmV0dXJucyB7V2FsbGV0SW5pdENvbnRyYWN0QXJnc30gY29udHJhY3RzIGFyZ3MgdG8gY3JlYXRlIGEgc2Vzc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFdhbGxldFBhcmFtZXRlcnMoKTogV2FsbGV0SW5pdENvbnRyYWN0QXJncyB7XG4gICAgY29uc3QgYWNjb3VudHMgPSB0aGlzLl9vd25lcnMubWFwKChvd25lcikgPT4gQ0xWYWx1ZUJ1aWxkZXIuYnl0ZUFycmF5KG93bmVyLmFkZHJlc3MudG9BY2NvdW50SGFzaCgpKSk7XG4gICAgY29uc3Qgd2VpZ2h0cyA9IHRoaXMuX293bmVycy5tYXAoKG93bmVyKSA9PiBDTFZhbHVlQnVpbGRlci51OChvd25lci53ZWlnaHQpKTtcblxuICAgIC8vIHNldCBzb3VyY2UgYWRkcmVzcyB3ZWlnaHQgdG8gemVybyB0byBkaXNhYmxlIHRoZSBtYXN0ZXIgcHJpdmF0ZSBrZXkgZnJvbSBzaWduaW5nLlxuICAgIGFjY291bnRzLnB1c2goQ0xWYWx1ZUJ1aWxkZXIuYnl0ZUFycmF5KFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3NvdXJjZS5hZGRyZXNzKS50b0FjY291bnRIYXNoKCkpKTtcbiAgICB3ZWlnaHRzLnB1c2goQ0xWYWx1ZUJ1aWxkZXIudTgoMCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFdBTExFVF9JTklUSUFMSVpBVElPTl9DT05UUkFDVF9BQ1RJT04pLFxuICAgICAgLy8gVGhpcyB0eXBvIGlzIG9uIHB1cnBvc2Ugc2luY2UgdGhlIGNvbnRyYWN0IHdlIHVzZSBmb3IgbXVsdGlzaWcgd2FsbGV0IGluaXRpYWxpemF0aW9uIGV4cGVjdCB0aGlzIGFyZ3VtZW50IHRvIGJlIHdyaXR0ZW4gbGlrZSB0aGlzLlxuICAgICAgZGVwbG95bWVudF90aGVyZXNob2xkOiBDTFZhbHVlQnVpbGRlci51OChERUZBVUxUX04pLFxuICAgICAga2V5X21hbmFnZW1lbnRfdGhyZXNob2xkOiBDTFZhbHVlQnVpbGRlci51OChERUZBVUxUX00pLFxuICAgICAgYWNjb3VudHM6IENMVmFsdWVCdWlsZGVyLmxpc3QoYWNjb3VudHMpLFxuICAgICAgd2VpZ2h0czogQ0xWYWx1ZUJ1aWxkZXIubGlzdCh3ZWlnaHRzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIGZvciAobGV0IG93bmVySW5kZXggPSAwOyBvd25lckluZGV4IDwgREVGQVVMVF9NOyBvd25lckluZGV4KyspIHtcbiAgICAgIGNvbnN0IG93bmVyQ0xWYWx1ZSA9IHR4LmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVySW5kZXgpIGFzIENMU3RyaW5nO1xuICAgICAgdGhpcy5vd25lcihvd25lckNMVmFsdWUudmFsdWUoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIENvbW1vbiBidWlsZGVyIG1ldGhvZHNcbiAgLyoqXG4gICAqIFNldCBvbmUgb2YgdGhlIG93bmVycyBvZiB0aGUgbXVsdGlzaWcgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBUaGUgcHVibGljIGtleSBvZiB0aGUgb3duZXIncyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IFRoaXMgd2FsbGV0IGluaXRpYWxpemF0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG93bmVyKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLl9vd25lcnMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IGFkZHJlc3MgfSk7XG4gICAgZm9yIChjb25zdCBfb3duZXIgb2YgdGhpcy5fb3duZXJzKSB7XG4gICAgICBpZiAoYWRkcmVzcy5zdWJzdHIoMCwgMikgKyBCdWZmZXIuZnJvbShfb3duZXIuYWRkcmVzcy52YWx1ZSgpKS50b1N0cmluZygnaGV4JykgPT09IGFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRHVwbGljYXRlZCBvd25lcjogJyArIGFkZHJlc3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX293bmVycy5wdXNoKHsgYWRkcmVzczogUHVibGljS2V5LmZyb21IZXgoYWRkcmVzcyksIHdlaWdodDogREVGQVVMVF9PV05FUl9XRUlHSFQgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgd2FsbGV0IG93bmVycycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9vd25lcnMubGVuZ3RoICE9PSBERUZBVUxUX00pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHRyYW5zYWN0aW9uOiB3cm9uZyBudW1iZXIgb2Ygb3duZXJzIC0tIHJlcXVpcmVkOiAke0RFRkFVTFRfTX0sIGZvdW5kOiAke3RoaXMuX293bmVycy5sZW5ndGh9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHN1cGVyLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=