@bitgo/account-lib 2.19.0-rc.0 → 2.19.0-rc.1
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/.mocharc.js +10 -0
- package/dist/browser/bitgo-account-lib.js +1 -1
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +10 -17
- package/dist/package.json +5 -8
- package/dist/src/coin/near/index.d.ts +3 -0
- package/dist/src/coin/near/index.d.ts.map +1 -1
- package/dist/src/coin/near/index.js +8 -2
- package/dist/src/coin/near/keyPair.d.ts +7 -0
- package/dist/src/coin/near/keyPair.d.ts.map +1 -1
- package/dist/src/coin/near/keyPair.js +15 -1
- package/dist/src/coin/near/transaction.d.ts +32 -1
- package/dist/src/coin/near/transaction.d.ts.map +1 -1
- package/dist/src/coin/near/transaction.js +144 -6
- package/dist/src/coin/near/transactionBuilder.d.ts +29 -1
- package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilder.js +163 -8
- package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.js +17 -2
- package/dist/src/coin/near/transferBuilder.d.ts +0 -2
- package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transferBuilder.js +13 -8
- package/dist/src/coin/near/utils.d.ts +7 -0
- package/dist/src/coin/near/utils.d.ts.map +1 -1
- package/dist/src/coin/near/utils.js +8 -1
- package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -2
- package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.js +2 -6
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts +10 -1
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.js +34 -9
- package/dist/src/coin/sol/iface.d.ts +1 -0
- package/dist/src/coin/sol/iface.d.ts.map +1 -1
- package/dist/src/coin/sol/iface.js +1 -1
- package/dist/src/coin/sol/index.d.ts +1 -0
- package/dist/src/coin/sol/index.d.ts.map +1 -1
- package/dist/src/coin/sol/index.js +4 -2
- package/dist/src/coin/sol/transaction.d.ts.map +1 -1
- package/dist/src/coin/sol/transaction.js +23 -1
- package/dist/src/coin/sol/utils.d.ts +9 -0
- package/dist/src/coin/sol/utils.d.ts.map +1 -1
- package/dist/src/coin/sol/utils.js +28 -2
- package/package.json +5 -8
|
@@ -57,12 +57,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
57
57
|
exports.AtaInitializationBuilder = void 0;
|
|
58
58
|
var transactionBuilder_1 = require("./transactionBuilder");
|
|
59
59
|
var baseCoin_1 = require("../baseCoin");
|
|
60
|
+
var statics_1 = require("@bitgo/statics");
|
|
60
61
|
var constants_1 = require("./constants");
|
|
61
62
|
var web3_js_1 = require("@solana/web3.js");
|
|
62
63
|
var utils_1 = require("./utils");
|
|
63
64
|
var errors_1 = require("../baseCoin/errors");
|
|
64
65
|
var spl_token_1 = require("@solana/spl-token");
|
|
65
66
|
var assert_1 = __importDefault(require("assert"));
|
|
67
|
+
var account_1 = require("@bitgo/statics/dist/src/account");
|
|
66
68
|
var AtaInitializationBuilder = /** @class */ (function (_super) {
|
|
67
69
|
__extends(AtaInitializationBuilder, _super);
|
|
68
70
|
function AtaInitializationBuilder(_coinConfig) {
|
|
@@ -82,7 +84,8 @@ var AtaInitializationBuilder = /** @class */ (function (_super) {
|
|
|
82
84
|
var instruction = _a[_i];
|
|
83
85
|
if (instruction.type === constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount) {
|
|
84
86
|
var ataInitInstruction = instruction;
|
|
85
|
-
this.
|
|
87
|
+
this._mint = ataInitInstruction.params.mintAddress;
|
|
88
|
+
this.validateMintOrThrow();
|
|
86
89
|
this.sender(ataInitInstruction.params.ownerAddress);
|
|
87
90
|
}
|
|
88
91
|
}
|
|
@@ -90,21 +93,42 @@ var AtaInitializationBuilder = /** @class */ (function (_super) {
|
|
|
90
93
|
/**
|
|
91
94
|
* Sets the mint address of the associated token account
|
|
92
95
|
*
|
|
93
|
-
* @param mint mint
|
|
96
|
+
* @param mint mint name of associated token account
|
|
94
97
|
*/
|
|
95
98
|
AtaInitializationBuilder.prototype.mint = function (mint) {
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
var token = statics_1.coins.get(mint);
|
|
100
|
+
if (!(token.isToken && token instanceof account_1.SolCoin)) {
|
|
101
|
+
throw new errors_1.BuildTransactionError('Invalid transaction: invalid mint, got: ' + this._mint);
|
|
98
102
|
}
|
|
99
|
-
this._mint =
|
|
103
|
+
this._mint = token.tokenAddress;
|
|
100
104
|
return this;
|
|
101
105
|
};
|
|
106
|
+
AtaInitializationBuilder.prototype.validateMintOrThrow = function () {
|
|
107
|
+
if (!this._mint || !utils_1.isValidPublicKey(this._mint)) {
|
|
108
|
+
throw new errors_1.BuildTransactionError('Invalid transaction: invalid or missing mint, got: ' + this._mint);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Used to set the minimum rent exempt amount
|
|
113
|
+
*
|
|
114
|
+
* @param rentExemptAmount minimum rent exempt amount in lamports
|
|
115
|
+
*/
|
|
116
|
+
AtaInitializationBuilder.prototype.rentExemptAmount = function (rentExemptAmount) {
|
|
117
|
+
this._rentExemptAmount = rentExemptAmount;
|
|
118
|
+
this.validateRentExemptAmountOrThrow();
|
|
119
|
+
return this;
|
|
120
|
+
};
|
|
121
|
+
AtaInitializationBuilder.prototype.validateRentExemptAmountOrThrow = function () {
|
|
122
|
+
// _rentExemptAmount is allowed to be undefined or a valid amount if it's defined
|
|
123
|
+
if (this._rentExemptAmount && !utils_1.isValidAmount(this._rentExemptAmount)) {
|
|
124
|
+
throw new errors_1.BuildTransactionError('Invalid transaction: invalid rentExemptAmount, got: ' + this._rentExemptAmount);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
102
127
|
/** @inheritdoc */
|
|
103
128
|
AtaInitializationBuilder.prototype.validateTransaction = function (transaction) {
|
|
104
129
|
_super.prototype.validateTransaction.call(this, transaction);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
130
|
+
this.validateMintOrThrow();
|
|
131
|
+
this.validateRentExemptAmountOrThrow();
|
|
108
132
|
};
|
|
109
133
|
/** @inheritdoc */
|
|
110
134
|
AtaInitializationBuilder.prototype.buildImplementation = function () {
|
|
@@ -125,6 +149,7 @@ var AtaInitializationBuilder = /** @class */ (function (_super) {
|
|
|
125
149
|
ataAddress: ataPk.toString(),
|
|
126
150
|
ownerAddress: this._sender,
|
|
127
151
|
payerAddress: this._sender,
|
|
152
|
+
amount: this._rentExemptAmount,
|
|
128
153
|
},
|
|
129
154
|
};
|
|
130
155
|
this._instructionsData = [ataInitData];
|
|
@@ -137,4 +162,4 @@ var AtaInitializationBuilder = /** @class */ (function (_super) {
|
|
|
137
162
|
return AtaInitializationBuilder;
|
|
138
163
|
}(transactionBuilder_1.TransactionBuilder));
|
|
139
164
|
exports.AtaInitializationBuilder = AtaInitializationBuilder;
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL2F0YUluaXRpYWxpemF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyREFBMEQ7QUFDMUQsd0NBQThDO0FBQzlDLDBDQUErRDtBQUcvRCx5Q0FBc0Q7QUFDdEQsMkNBQTRDO0FBQzVDLGlDQUEwRDtBQUMxRCw2Q0FBMkQ7QUFDM0QsK0NBQXlGO0FBQ3pGLGtEQUE0QjtBQUM1QiwyREFBMEQ7QUFFMUQ7SUFBOEMsNENBQWtCO0lBSTlELGtDQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQsc0JBQWMscURBQWU7YUFBN0I7WUFDRSxPQUFPLDBCQUFlLENBQUMsb0NBQW9DLENBQUM7UUFDOUQsQ0FBQzs7O09BQUE7SUFFRCxrQkFBa0I7SUFDbEIsOENBQVcsR0FBWCxVQUFZLEVBQWU7UUFDekIsaUJBQU0sV0FBVyxZQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRCLEtBQTBCLFVBQXNCLEVBQXRCLEtBQUEsSUFBSSxDQUFDLGlCQUFpQixFQUF0QixjQUFzQixFQUF0QixJQUFzQixFQUFFO1lBQTdDLElBQU0sV0FBVyxTQUFBO1lBQ3BCLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEIsRUFBRTtnQkFDN0UsSUFBTSxrQkFBa0IsR0FBWSxXQUFXLENBQUM7Z0JBRWhELElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxD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IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQXRhSW5pdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgaXNWYWxpZEFtb3VudCwgaXNWYWxpZFB1YmxpY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEFTU09DSUFURURfVE9LRU5fUFJPR1JBTV9JRCwgVG9rZW4sIFRPS0VOX1BST0dSQU1fSUQgfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBTb2xDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MvZGlzdC9zcmMvYWNjb3VudCc7XG5cbmV4cG9ydCBjbGFzcyBBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9taW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3JlbnRFeGVtcHRBbW91bnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpIHtcbiAgICAgICAgY29uc3QgYXRhSW5pdEluc3RydWN0aW9uOiBBdGFJbml0ID0gaW5zdHJ1Y3Rpb247XG5cbiAgICAgICAgdGhpcy5fbWludCA9IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMubWludEFkZHJlc3M7XG4gICAgICAgIHRoaXMudmFsaWRhdGVNaW50T3JUaHJvdygpO1xuICAgICAgICB0aGlzLnNlbmRlcihhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm93bmVyQWRkcmVzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbnQgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSBtaW50IG1pbnQgbmFtZSBvZiBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRcbiAgICovXG4gIG1pbnQobWludDogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdG9rZW4gPSBjb2lucy5nZXQobWludCk7XG4gICAgaWYgKCEodG9rZW4uaXNUb2tlbiAmJiB0b2tlbiBpbnN0YW5jZW9mIFNvbENvaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIG1pbnQsIGdvdDogJyArIHRoaXMuX21pbnQpO1xuICAgIH1cbiAgICB0aGlzLl9taW50ID0gdG9rZW4udG9rZW5BZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1pbnRPclRocm93KCkge1xuICAgIGlmICghdGhpcy5fbWludCB8fCAhaXNWYWxpZFB1YmxpY0tleSh0aGlzLl9taW50KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCBvciBtaXNzaW5nIG1pbnQsIGdvdDogJyArIHRoaXMuX21pbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCB0aGUgbWluaW11bSByZW50IGV4ZW1wdCBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIHJlbnRFeGVtcHRBbW91bnQgbWluaW11bSByZW50IGV4ZW1wdCBhbW91bnQgaW4gbGFtcG9ydHNcbiAgICovXG4gIHJlbnRFeGVtcHRBbW91bnQocmVudEV4ZW1wdEFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fcmVudEV4ZW1wdEFtb3VudCA9IHJlbnRFeGVtcHRBbW91bnQ7XG4gICAgdGhpcy52YWxpZGF0ZVJlbnRFeGVtcHRBbW91bnRPclRocm93KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmVudEV4ZW1wdEFtb3VudE9yVGhyb3coKSB7XG4gICAgLy8gX3JlbnRFeGVtcHRBbW91bnQgaXMgYWxsb3dlZCB0byBiZSB1bmRlZmluZWQgb3IgYSB2YWxpZCBhbW91bnQgaWYgaXQncyBkZWZpbmVkXG4gICAgaWYgKHRoaXMuX3JlbnRFeGVtcHRBbW91bnQgJiYgIWlzVmFsaWRBbW91bnQodGhpcy5fcmVudEV4ZW1wdEFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgcmVudEV4ZW1wdEFtb3VudCwgZ290OiAnICsgdGhpcy5fcmVudEV4ZW1wdEFtb3VudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudmFsaWRhdGVNaW50T3JUaHJvdygpO1xuICAgIHRoaXMudmFsaWRhdGVSZW50RXhlbXB0QW1vdW50T3JUaHJvdygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICBhc3NlcnQodGhpcy5fbWludCwgJ01pbnQgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuXG4gICAgY29uc3QgYXRhUGsgPSBhd2FpdCBUb2tlbi5nZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzKFxuICAgICAgQVNTT0NJQVRFRF9UT0tFTl9QUk9HUkFNX0lELFxuICAgICAgVE9LRU5fUFJPR1JBTV9JRCxcbiAgICAgIG5ldyBQdWJsaWNLZXkodGhpcy5fbWludCksXG4gICAgICBuZXcgUHVibGljS2V5KHRoaXMuX3NlbmRlciksXG4gICAgKTtcbiAgICBjb25zdCBhdGFJbml0RGF0YTogQXRhSW5pdCA9IHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgbWludEFkZHJlc3M6IHRoaXMuX21pbnQsXG4gICAgICAgIGF0YUFkZHJlc3M6IGF0YVBrLnRvU3RyaW5nKCksXG4gICAgICAgIG93bmVyQWRkcmVzczogdGhpcy5fc2VuZGVyLFxuICAgICAgICBwYXllckFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgYW1vdW50OiB0aGlzLl9yZW50RXhlbXB0QW1vdW50LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbYXRhSW5pdERhdGFdO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -77,6 +77,7 @@ export interface AtaInit {
|
|
|
77
77
|
ataAddress: string;
|
|
78
78
|
ownerAddress: string;
|
|
79
79
|
payerAddress: string;
|
|
80
|
+
amount?: string;
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
83
|
export declare type ValidInstructionTypes = SystemInstructionType | StakeInstructionType | 'Memo' | 'InitializeAssociatedTokenAccount';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAGzF,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,CAAC,EAAE,oBAAoB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IAEjB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;CACvC;AAED,oBAAY,iBAAiB,GACzB,KAAK,GACL,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,uBAAuB,CAAC,YAAY,CAAC;IAC3C,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,uBAAuB,CAAC,kBAAkB,CAAC;IACjD,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC;IACvC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC;IAC9C,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,uBAAuB,CAAC,iBAAiB,CAAC;IAChD,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC;IAC9C,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,uBAAuB,CAAC,4BAA4B,CAAC;IAC3D,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/iface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvaWZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2NraGFzaCwgU3Rha2VJbnN0cnVjdGlvblR5cGUsIFN5c3RlbUluc3RydWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25TaWduYXR1cmUgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuXG4vLyBUT0RPKFNUTFgtOTg5MCk6IEFkZCB0aGUgaW50ZXJmYWNlcyBmb3IgdmFsaWRpdHlXaW5kb3cgYW5kIFNlcXVlbmNlSWRcbmV4cG9ydCBpbnRlcmZhY2UgU29sYW5hS2V5cyB7XG4gIHBydj86IFVpbnQ4QXJyYXkgfCBzdHJpbmc7XG4gIHB1Yjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER1cmFibGVOb25jZVBhcmFtcyB7XG4gIHdhbGxldE5vbmNlQWRkcmVzczogc3RyaW5nO1xuICBhdXRoV2FsbGV0QWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkPzogVHJhbnNhY3Rpb25TaWduYXR1cmU7XG4gIGZlZVBheWVyPzogc3RyaW5nO1xuICBsYW1wb3J0c1BlclNpZ25hdHVyZT86IG51bWJlcjtcbiAgbnVtU2lnbmF0dXJlczogbnVtYmVyO1xuICBub25jZTogQmxvY2toYXNoO1xuICAvLyBvbmx5IHBvcHVsYXRlZCB3aGVuIG5vbmNlIGlzIGZyb20gYSBkdXJhYmxlIG5vbmNlIGFjY291bnRcbiAgZHVyYWJsZU5vbmNlPzogRHVyYWJsZU5vbmNlUGFyYW1zO1xuICBpbnN0cnVjdGlvbnNEYXRhOiBJbnN0cnVjdGlvblBhcmFtc1tdO1xufVxuXG5leHBvcnQgdHlwZSBJbnN0cnVjdGlvblBhcmFtcyA9XG4gIHwgTm9uY2VcbiAgfCBNZW1vXG4gIHwgV2FsbGV0SW5pdFxuICB8IFRyYW5zZmVyXG4gIHwgU3Rha2luZ0FjdGl2YXRlXG4gIHwgU3Rha2luZ0RlYWN0aXZhdGVcbiAgfCBTdGFraW5nV2l0aGRyYXdcbiAgfCBBdGFJbml0O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lbW8ge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vO1xuICBwYXJhbXM6IHsgbWVtbzogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9uY2Uge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U7XG4gIHBhcmFtczogRHVyYWJsZU5vbmNlUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldEluaXQge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVOb25jZUFjY291bnQ7XG4gIHBhcmFtczogeyBmcm9tQWRkcmVzczogc3RyaW5nOyBub25jZUFkZHJlc3M6IHN0cmluZzsgYXV0aEFkZHJlc3M6IHN0cmluZzsgYW1vdW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlciB7XG4gIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyO1xuICBwYXJhbXM6IHsgZnJvbUFkZHJlc3M6IHN0cmluZzsgdG9BZGRyZXNzOiBzdHJpbmc7IGFtb3VudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ0FjdGl2YXRlIHtcbiAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0FjdGl2YXRlO1xuICBwYXJhbXM6IHsgZnJvbUFkZHJlc3M6IHN0cmluZzsgc3Rha2luZ0FkZHJlc3M6IHN0cmluZzsgYW1vdW50OiBzdHJpbmc7IHZhbGlkYXRvcjogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ0RlYWN0aXZhdGUge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nRGVhY3RpdmF0ZTtcbiAgcGFyYW1zOiB7IGZyb21BZGRyZXNzOiBzdHJpbmc7IHN0YWtpbmdBZGRyZXNzOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFraW5nV2l0aGRyYXcge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nV2l0aGRyYXc7XG4gIHBhcmFtczogeyBmcm9tQWRkcmVzczogc3RyaW5nOyBzdGFraW5nQWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0YUluaXQge1xuICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50O1xuICBwYXJhbXM6IHsgbWludEFkZHJlc3M6IHN0cmluZzsgYXRhQWRkcmVzczogc3RyaW5nOyBvd25lckFkZHJlc3M6IHN0cmluZzsgcGF5ZXJBZGRyZXNzOiBzdHJpbmc7IGFtb3VudD86IHN0cmluZyB9O1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZEluc3RydWN0aW9uVHlwZXMgPVxuICB8IFN5c3RlbUluc3RydWN0aW9uVHlwZVxuICB8IFN0YWtlSW5zdHJ1Y3Rpb25UeXBlXG4gIHwgJ01lbW8nXG4gIHwgJ0luaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50JztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGJsb2NraGFzaDogQmxvY2toYXNoO1xuICAvLyBvbmx5IHBvcHVsYXRlZCBpZiBibG9ja2hhc2ggaXMgZnJvbSBhIG5vbmNlIGFjY291bnRcbiAgZHVyYWJsZU5vbmNlPzogRHVyYWJsZU5vbmNlUGFyYW1zO1xuICBtZW1vPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -4,5 +4,6 @@ export { Transaction } from './transaction';
|
|
|
4
4
|
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
5
5
|
export { TransferBuilder } from './transferBuilder';
|
|
6
6
|
export { WalletInitializationBuilder } from './walletInitializationBuilder';
|
|
7
|
+
export { AtaInitializationBuilder } from './ataInitializationBuilder';
|
|
7
8
|
export { Utils };
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.Utils = exports.WalletInitializationBuilder = exports.TransferBuilder = exports.TransactionBuilderFactory = exports.Transaction = exports.KeyPair = void 0;
|
|
22
|
+
exports.Utils = exports.AtaInitializationBuilder = exports.WalletInitializationBuilder = exports.TransferBuilder = exports.TransactionBuilderFactory = exports.Transaction = exports.KeyPair = void 0;
|
|
23
23
|
var Utils = __importStar(require("./utils"));
|
|
24
24
|
exports.Utils = Utils;
|
|
25
25
|
var keyPair_1 = require("./keyPair");
|
|
@@ -32,4 +32,6 @@ var transferBuilder_1 = require("./transferBuilder");
|
|
|
32
32
|
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
33
33
|
var walletInitializationBuilder_1 = require("./walletInitializationBuilder");
|
|
34
34
|
Object.defineProperty(exports, "WalletInitializationBuilder", { enumerable: true, get: function () { return walletInitializationBuilder_1.WalletInitializationBuilder; } });
|
|
35
|
-
|
|
35
|
+
var ataInitializationBuilder_1 = require("./ataInitializationBuilder");
|
|
36
|
+
Object.defineProperty(exports, "AtaInitializationBuilder", { enumerable: true, get: function () { return ataInitializationBuilder_1.AtaInitializationBuilder; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpQztBQVF4QixzQkFBSztBQU5kLHFDQUFvQztBQUEzQixrR0FBQSxPQUFPLE9BQUE7QUFDaEIsNkNBQTRDO0FBQW5DLDBHQUFBLFdBQVcsT0FBQTtBQUNwQix5RUFBd0U7QUFBL0Qsc0lBQUEseUJBQXlCLE9BQUE7QUFDbEMscURBQW9EO0FBQTNDLGtIQUFBLGVBQWUsT0FBQTtBQUN4Qiw2RUFBNEU7QUFBbkUsMElBQUEsMkJBQTJCLE9BQUE7QUFDcEMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi9hdGFJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVXRpbHMgfTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transaction.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAmD,WAAW,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transaction.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAmD,WAAW,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAOL,sBAAsB,EAEtB,MAAM,EAEP,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAS5B,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,qBAAqB,CAAqB;IAClD,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,EAAE,EAAE,cAAc,EAEpC;IAED,OAAO,KAAK,0BAA0B,GAErC;IAED,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAOf;IAED,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAEhE;IAED,kBAAkB;IAClB,IAAI,SAAS,IAAI,MAAM,EAAE,CAUxB;IAED;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAiB3B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAmChD,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA0BhB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAwE5B,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;CA+F7C"}
|
|
@@ -64,6 +64,8 @@ var utils_1 = require("./utils");
|
|
|
64
64
|
var instructionParamsFactory_1 = require("./instructionParamsFactory");
|
|
65
65
|
var constants_1 = require("./constants");
|
|
66
66
|
var UNAVAILABLE_TEXT = 'UNAVAILABLE';
|
|
67
|
+
var UNSUPPORTED_TOKEN_NAME = 'UNSUPPORTED_TOKEN';
|
|
68
|
+
var TRANSFER_AMOUNT_UNKNOWN_TEXT = 'TRANSFER_AMOUNT_UNKNOWN';
|
|
67
69
|
var Transaction = /** @class */ (function (_super) {
|
|
68
70
|
__extends(Transaction, _super);
|
|
69
71
|
function Transaction(_coinConfig) {
|
|
@@ -335,6 +337,19 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
335
337
|
coin: this._coinConfig.name,
|
|
336
338
|
});
|
|
337
339
|
break;
|
|
340
|
+
case constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount:
|
|
341
|
+
var token = utils_1.getSolTokenFromAddress(instruction.params.mintAddress, this._coinConfig.network);
|
|
342
|
+
var tokenName = token ? token.name : UNSUPPORTED_TOKEN_NAME;
|
|
343
|
+
inputs.push({
|
|
344
|
+
address: instruction.params.ownerAddress,
|
|
345
|
+
value: instruction.params.amount || TRANSFER_AMOUNT_UNKNOWN_TEXT,
|
|
346
|
+
coin: tokenName,
|
|
347
|
+
});
|
|
348
|
+
outputs.push({
|
|
349
|
+
address: instruction.params.ataAddress,
|
|
350
|
+
value: instruction.params.amount || TRANSFER_AMOUNT_UNKNOWN_TEXT,
|
|
351
|
+
coin: tokenName,
|
|
352
|
+
});
|
|
338
353
|
}
|
|
339
354
|
}
|
|
340
355
|
this._outputs = outputs;
|
|
@@ -388,6 +403,13 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
388
403
|
});
|
|
389
404
|
outputAmount = outputAmount.plus(stakingWithdrawInstruction.params.amount);
|
|
390
405
|
break;
|
|
406
|
+
case constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount:
|
|
407
|
+
var createAtaInstruction = instruction;
|
|
408
|
+
outputs.push({
|
|
409
|
+
address: createAtaInstruction.params.ataAddress,
|
|
410
|
+
amount: createAtaInstruction.params.amount || TRANSFER_AMOUNT_UNKNOWN_TEXT,
|
|
411
|
+
});
|
|
412
|
+
break;
|
|
391
413
|
default:
|
|
392
414
|
continue;
|
|
393
415
|
}
|
|
@@ -427,4 +449,4 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
427
449
|
return Transaction;
|
|
428
450
|
}(baseCoin_1.BaseTransaction));
|
|
429
451
|
exports.Transaction = Transaction;
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQXFDO0FBQ3JDLHdDQUErRDtBQUUvRCw2Q0FBa0c7QUFDbEcsMkNBQWlIO0FBWWpILDhDQUEwQjtBQUMxQixpQ0FBMkY7QUFFM0YsdUVBQXNFO0FBQ3RFLHlDQUFzRDtBQUd0RCxJQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUV2QztJQUFpQywrQkFBZTtJQUs5QyxxQkFBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVELHNCQUFJLHVDQUFjO2FBQWxCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7YUFFRCxVQUFtQixFQUFrQjtZQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDOzs7T0FKQTtJQU1ELHNCQUFZLG1EQUEwQjthQUF0QztZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDNUUsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSx3Q0FBZTtRQURuQixrQkFBa0I7YUFDbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxDQUFDOzs7T0FBQTtJQUdELHNCQUFJLDJCQUFFO1FBRE4sbUJBQW1CO2FBQ25CO1lBQ0UsZ0dBQWdHO1lBQ2hHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xDLE9BQU8sY0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNMLE9BQU8sZ0JBQWdCLENBQUM7YUFDekI7UUFDSCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDZDQUFvQjthQUF4QjtZQUNFLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BDLENBQUM7YUFFRCxVQUF5QixvQkFBd0M7WUFDL0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLG9CQUFvQixDQUFDO1FBQ3BELENBQUM7OztPQUpBO0lBT0Qsc0JBQUksa0NBQVM7UUFEYixrQkFBa0I7YUFDbEI7WUFDRSxJQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7WUFFaEMsS0FBMkIsVUFBK0IsRUFBL0IsS0FBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBL0IsY0FBK0IsRUFBL0IsSUFBK0IsRUFBRTtnQkFBdkQsSUFBTSxZQUFZLFNBQUE7Z0JBQ3JCLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRTtvQkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUN4RDthQUNGO1lBRUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQzs7O09BQUE7SUFFRDs7OztPQUlHO0lBQ0gsd0NBQWtCLEdBQWxCLFVBQW1CLGVBQWdDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUDtRQUNFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDRywwQkFBSSxHQUFWLFVBQVcsT0FBNEI7Ozs7O2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFO29CQUNsRSxNQUFNLElBQUkscUJBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO2lCQUM1RDtnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO29CQUMzRCxNQUFNLElBQUkscUJBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2lCQUMvRDtnQkFDSyxRQUFRLEdBQUcsT0FBTyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxPQUFPLEdBQWEsRUFBRSxDQUFDO2dCQUM3QixXQUF5QixFQUFSLHFCQUFRLEVBQVIsc0JBQVEsRUFBUixJQUFRLEVBQUU7b0JBQWhCLEVBQUU7b0JBQ0wsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNiLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7cUJBQy9DO29CQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxtQkFBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQWlCLEVBQUUsQ0FBQyxDQUFDO2lCQUN6RjtnQkFDRCxJQUFJO29CQUNGLENBQUEsS0FBQSxJQUFJLENBQUMsZUFBZSxDQUFBLENBQUMsV0FBVyxXQUFJLE9BQU8sRUFBRTtpQkFDOUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsTUFBTSxDQUFDLENBQUM7aUJBQ1Q7Ozs7S0FDRjtJQUVELGtCQUFrQjtJQUNsQix1Q0FBaUIsR0FBakI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixNQUFNLElBQUksOEJBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN0RDtRQUNELDJGQUEyRjtRQUMzRiw4RkFBOEY7UUFDOUYsc0NBQXNDO1FBQ3RDLElBQU0sb0JBQW9CLEdBQUcsNkJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJO1lBQ0Ysd0hBQXdIO1lBQ3hILHlCQUF5QjtZQUN6QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLHNCQUFBLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsd0NBQWtCLEdBQWxCLFVBQW1CLGNBQXNCO1FBQ3ZDLElBQUk7WUFDRiw2QkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFbEYsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7Z0JBQzdFLElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFEO1lBQ0QsSUFBTSxlQUFlLEdBQUcsMEJBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pFLFFBQVEsZUFBZSxFQUFFO2dCQUN2QixLQUFLLDBCQUFlLENBQUMsb0JBQW9CO29CQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUM5RCxNQUFNO2dCQUNSLEtBQUssMEJBQWUsQ0FBQyxJQUFJO29CQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsZUFBZTtvQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDM0QsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsZUFBZTtvQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLG9DQUFvQztvQkFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUFlLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDOUUsTUFBTTthQUNUO1lBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDRCQUFNLEdBQU47O1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLFlBQTRDLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRTtZQUNsQyxJQUFNLGdCQUFnQixHQUFHLDJCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0csWUFBWSxHQUFHO2dCQUNiLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNELGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRTthQUNoRSxDQUFDO1NBQ0g7UUFFRCxJQUFNLE1BQU0sR0FBVztZQUNyQixFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDeEQsUUFBUSxFQUFFLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLDBDQUFFLFFBQVEsRUFBRTtZQUNuRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQy9DLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3RCLFlBQVksRUFBRSxZQUFZO1lBQzFCLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07WUFDcEMsZ0JBQWdCLEVBQUUsbURBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztTQUMxRixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLDhCQUFRLEdBQWhCO1FBQ0UsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO1NBQzdDO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztTQUM3QzthQUFNO1lBQ0wsTUFBTSxJQUFJLGdDQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQ0FBb0IsR0FBcEI7O1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSwwQ0FBRSxNQUFNLE1BQUssQ0FBQyxFQUFFO1lBQzVFLE9BQU87U0FDUjtRQUNELElBQU0sT0FBTyxHQUFZLEVBQUUsQ0FBQztRQUM1QixJQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7UUFDM0IsSUFBTSxpQkFBaUIsR0FBRyxtREFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakcsS0FBMEIsVUFBaUIsRUFBakIsdUNBQWlCLEVBQWpCLCtCQUFpQixFQUFqQixJQUFpQixFQUFFO1lBQXhDLElBQU0sV0FBVywwQkFBQTtZQUNwQixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLEtBQUssbUNBQXVCLENBQUMsa0JBQWtCO29CQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNWLE9BQU8sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVc7d0JBQ3ZDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU07d0JBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCLENBQUMsQ0FBQztvQkFDSCxNQUFNO2dCQUNSLEtBQUssbUNBQXVCLENBQUMsUUFBUTtvQkFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDVixPQUFPLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXO3dCQUN2QyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO3FCQUM1QixDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxPQUFPLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUNyQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO3FCQUM1QixDQUFDLENBQUM7b0JBQ0gsTUFBTTtnQkFDUixLQUFLLG1DQUF1QixDQUFDLGVBQWU7b0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVzt3QkFDdkMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtxQkFDNUIsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ1gsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYzt3QkFDMUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtxQkFDNUIsQ0FBQyxDQUFDO29CQUNILE1BQU07Z0JBQ1IsS0FBSyxtQ0FBdUIsQ0FBQyxlQUFlO29CQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNWLE9BQU8sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWM7d0JBQzFDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU07d0JBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCLENBQUMsQ0FBQztvQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNYLE9BQU8sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVc7d0JBQ3ZDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU07d0JBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCLENBQUMsQ0FBQztvQkFDSCxNQUFNO2FBQ1Q7U0FDRjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQWtCLEdBQWxCO1FBQ0UsSUFBTSxtQkFBbUIsR0FBRyxtREFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEcsSUFBSSxJQUFJLEdBQXVCLFNBQVMsQ0FBQztRQUN6QyxJQUFJLFlBQVksR0FBbUMsU0FBUyxDQUFDO1FBRTdELElBQUksWUFBWSxHQUFHLElBQUksc0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRTNDLEtBQTBCLFVBQW1CLEVBQW5CLDJDQUFtQixFQUFuQixpQ0FBbUIsRUFBbkIsSUFBbUIsRUFBRTtZQUExQyxJQUFNLFdBQVcsNEJBQUE7WUFDcEIsUUFBUSxXQUFXLENBQUMsSUFBSSxFQUFFO2dCQUN4QixLQUFLLG1DQUF1QixDQUFDLFlBQVk7b0JBQ3ZDLFlBQVksR0FBSSxXQUFxQixDQUFDLE1BQU0sQ0FBQztvQkFDN0MsTUFBTTtnQkFDUixLQUFLLG1DQUF1QixDQUFDLElBQUk7b0JBQy9CLElBQUksR0FBSSxXQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxtQ0FBdUIsQ0FBQyxRQUFRO29CQUNuQyxJQUFNLG1CQUFtQixHQUFHLFdBQXVCLENBQUM7b0JBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ1gsT0FBTyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUM3QyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU07cUJBQzFDLENBQUMsQ0FBQztvQkFDSCxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3BFLE1BQU07Z0JBQ1IsS0FBSyxtQ0FBdUIsQ0FBQyxrQkFBa0I7b0JBQzdDLElBQU0saUJBQWlCLEdBQUcsV0FBeUIsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxPQUFPLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFlBQVk7d0JBQzlDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBTTtxQkFDeEMsQ0FBQyxDQUFDO29CQUNILFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEUsTUFBTTtnQkFDUixLQUFLLG1DQUF1QixDQUFDLGVBQWU7b0JBQzFDLElBQU0sMEJBQTBCLEdBQUcsV0FBOEIsQ0FBQztvQkFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxPQUFPLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDLGNBQWM7d0JBQ3pELE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsTUFBTTtxQkFDakQsQ0FBQyxDQUFDO29CQUNILFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0UsTUFBTTtnQkFDUixLQUFLLG1DQUF1QixDQUFDLGVBQWU7b0JBQzFDLElBQU0sMEJBQTBCLEdBQUcsV0FBOEIsQ0FBQztvQkFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxPQUFPLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFdBQVc7d0JBQ3RELE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsTUFBTTtxQkFDakQsQ0FBQyxDQUFDO29CQUNILFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0UsTUFBTTtnQkFDUjtvQkFDRSxTQUFTO2FBQ1o7U0FDRjtRQUVELElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0I7WUFDekMsQ0FBQyxDQUFDLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNuRyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFFckIsSUFBTSxvQkFBb0IsR0FBRztZQUMzQixZQUFZLEVBQUU7Z0JBQ1osSUFBSTtnQkFDSixNQUFNO2dCQUNOLFdBQVc7Z0JBQ1gsY0FBYztnQkFDZCxjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsU0FBUztnQkFDVCxlQUFlO2dCQUNmLEtBQUs7Z0JBQ0wsTUFBTTthQUNQO1lBQ0QsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLDBCQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUMzQyxhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixZQUFZLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDckMsT0FBTyxFQUFFLE9BQU87WUFDaEIsR0FBRyxFQUFFO2dCQUNILEdBQUcsRUFBRSxTQUFTO2dCQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CO2FBQ25DO1lBQ0QsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDO1FBRUYsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBN1ZELENBQWlDLDBCQUFlLEdBNlYvQztBQTdWWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBCbG9ja2hhc2gsIFB1YmxpY0tleSwgU2lnbmVyLCBTeXN0ZW1JbnN0cnVjdGlvbiwgVHJhbnNhY3Rpb24gYXMgU29sVHJhbnNhY3Rpb24gfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHtcbiAgRHVyYWJsZU5vbmNlUGFyYW1zLFxuICBNZW1vLFxuICBOb25jZSxcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICBTdGFraW5nV2l0aGRyYXcsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zZmVyLFxuICBUeERhdGEsXG4gIFdhbGxldEluaXQsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IGJhc2U1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IGdldFRyYW5zYWN0aW9uVHlwZSwgaXNWYWxpZFJhd1RyYW5zYWN0aW9uLCByZXF1aXJlc0FsbFNpZ25hdHVyZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRW50cnksIFRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuXG5jb25zdCBVTkFWQUlMQUJMRV9URVhUID0gJ1VOQVZBSUxBQkxFJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfc29sVHJhbnNhY3Rpb246IFNvbFRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9sYW1wb3J0c1BlclNpZ25hdHVyZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc29sVHJhbnNhY3Rpb24oKTogU29sVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCBzb2xUcmFuc2FjdGlvbih0eDogU29sVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbnVtYmVyT2ZSZXF1aXJlZFNpZ25hdHVyZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uY29tcGlsZU1lc3NhZ2UoKS5oZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uc2VyaWFsaXplTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAvLyBTb2xhbmEgdHJhbnNhY3Rpb24gSUQgPT09IGZpcnN0IHNpZ25hdHVyZTogaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vdGVybWlub2xvZ3kjdHJhbnNhY3Rpb24taWRcbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm4gYmFzZTU4LmVuY29kZSh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVU5BVkFJTEFCTEVfVEVYVDtcbiAgICB9XG4gIH1cblxuICBnZXQgbGFtcG9ydHNQZXJTaWduYXR1cmUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmU7XG4gIH1cblxuICBzZXQgbGFtcG9ydHNQZXJTaWduYXR1cmUobGFtcG9ydHNQZXJTaWduYXR1cmU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2xhbXBvcnRzUGVyU2lnbmF0dXJlID0gbGFtcG9ydHNQZXJTaWduYXR1cmU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qgc29sU2lnbmF0dXJlIG9mIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZXMpIHtcbiAgICAgIGlmIChzb2xTaWduYXR1cmUuc2lnbmF0dXJlKSB7XG4gICAgICAgIHNpZ25hdHVyZXMucHVzaChiYXNlNTguZW5jb2RlKHNvbFNpZ25hdHVyZS5zaWduYXR1cmUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXJbXSB8IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8ICF0aGlzLl9zb2xUcmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2gpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ05vbmNlIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24gfHwgIXRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdmZWVQYXllciBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgIH1cbiAgICBjb25zdCBrZXlQYWlycyA9IGtleVBhaXIgaW5zdGFuY2VvZiBBcnJheSA/IGtleVBhaXIgOiBba2V5UGFpcl07XG4gICAgY29uc3Qgc2lnbmVyczogU2lnbmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtwIG9mIGtleVBhaXJzKSB7XG4gICAgICBjb25zdCBrZXlzID0ga3AuZ2V0S2V5cyh0cnVlKTtcbiAgICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgICAgfVxuICAgICAgc2lnbmVycy5wdXNoKHsgcHVibGljS2V5OiBuZXcgUHVibGljS2V5KGtleXMucHViKSwgc2VjcmV0S2V5OiBrZXlzLnBydiBhcyBVaW50OEFycmF5IH0pO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5fc29sVHJhbnNhY3Rpb24ucGFydGlhbFNpZ24oLi4uc2lnbmVycyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICAvLyBUaGUgc2lnbmF0dXJlcyBjYW4gaGF2ZSBudWxsIHNpZ25hdHVyZXMgKHdoaWNoIG1lYW5zIHRoZXkgYXJlIHJlcXVpcmVkIGJ1dCB5ZXQgdW5zaWduZWQpXG4gICAgLy8gSW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzZXJpYWxpemVyIHRoZSB0eHMsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSByZXF1aXJlQWxsU2lnbmF0dXJlcyBiYXNlZFxuICAgIC8vIG9uIGlmIHRoZSBUWCBpcyBmdWxseSBzaWduZWQgb3Igbm90XG4gICAgY29uc3QgcmVxdWlyZUFsbFNpZ25hdHVyZXMgPSByZXF1aXJlc0FsbFNpZ25hdHVyZXModGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlcyk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEJhc2VkIG9uIHRoZSByZWNvbWVuZGF0aW9uIGVuY29kaW5nIGZvdW5kIGhlcmUgaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vZGV2ZWxvcGluZy9jbGllbnRzL2pzb25ycGMtYXBpI3NlbmR0cmFuc2FjdGlvblxuICAgICAgLy8gV2UgdXNlIGJhc2U2NCBlbmNvZGluZ1xuICAgICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSh7IHJlcXVpcmVBbGxTaWduYXR1cmVzIH0pLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbiA9IFNvbFRyYW5zYWN0aW9uLmZyb20oQnVmZmVyLmZyb20ocmF3VHJhbnNhY3Rpb24sICdiYXNlNjQnKSk7XG5cbiAgICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUgJiYgdGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2lkID0gYmFzZTU4LmVuY29kZSh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25UeXBlID0gZ2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3NvbFRyYW5zYWN0aW9uKTtcbiAgICAgIHN3aXRjaCAodHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgbGV0IGR1cmFibGVOb25jZTogRHVyYWJsZU5vbmNlUGFyYW1zIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8pIHtcbiAgICAgIGNvbnN0IG5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlSW5zdHJ1Y3Rpb24pO1xuICAgICAgZHVyYWJsZU5vbmNlID0ge1xuICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUgPyB0aGlzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgZmVlUGF5ZXI6IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyPy50b1N0cmluZygpLFxuICAgICAgbGFtcG9ydHNQZXJTaWduYXR1cmU6IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUsXG4gICAgICBub25jZTogdGhpcy5nZXROb25jZSgpLFxuICAgICAgZHVyYWJsZU5vbmNlOiBkdXJhYmxlTm9uY2UsXG4gICAgICBudW1TaWduYXR1cmVzOiB0aGlzLnNpZ25hdHVyZS5sZW5ndGgsXG4gICAgICBpbnN0cnVjdGlvbnNEYXRhOiBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkodGhpcy5fdHlwZSwgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBub25jZSBmcm9tIHRoZSBTb2xhbmEgVHJhbnNhY3Rpb25cbiAgICogVGhyb3dzIGlmIG5vdCBzZXRcbiAgICovXG4gIHByaXZhdGUgZ2V0Tm9uY2UoKTogQmxvY2toYXNoIHtcbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vbmNlIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnN0cnVjdGlvblBhcmFtcyA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0aGlzLnR5cGUsIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucyk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9uUGFyYW1zKSB7XG4gICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVOb25jZUFjY291bnQ6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ0FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGVjb2RlZEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0aGlzLl90eXBlLCB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpO1xuXG4gICAgbGV0IG1lbW86IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgZHVyYWJsZU5vbmNlOiBEdXJhYmxlTm9uY2VQYXJhbXMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBsZXQgb3V0cHV0QW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGRlY29kZWRJbnN0cnVjdGlvbnMpIHtcbiAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZTpcbiAgICAgICAgICBkdXJhYmxlTm9uY2UgPSAoaW5zdHJ1Y3Rpb24gYXMgTm9uY2UpLnBhcmFtcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vOlxuICAgICAgICAgIG1lbW8gPSAoaW5zdHJ1Y3Rpb24gYXMgTWVtbykucGFyYW1zLm1lbW87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFRyYW5zZmVyO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQucGx1cyh0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgICAgICBjb25zdCBjcmVhdGVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFdhbGxldEluaXQ7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGNyZWF0ZUluc3RydWN0aW9uLnBhcmFtcy5ub25jZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IGNyZWF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoY3JlYXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIGNvbnN0IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgU3Rha2luZ0FjdGl2YXRlO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ0FkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIGNvbnN0IHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmVlU3RyaW5nID0gdGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZVxuICAgICAgPyBuZXcgQmlnTnVtYmVyKHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUpLm11bHRpcGxpZWRCeSh0aGlzLm51bWJlck9mUmVxdWlyZWRTaWduYXR1cmVzKS50b0ZpeGVkKDApXG4gICAgICA6IFVOQVZBSUxBQkxFX1RFWFQ7XG5cbiAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAnaWQnLFxuICAgICAgICAndHlwZScsXG4gICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgIF0sXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZVt0aGlzLnR5cGVdLnRvU3RyaW5nKCksXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgb3V0cHV0QW1vdW50OiBvdXRwdXRBbW91bnQudG9GaXhlZCgwKSxcbiAgICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiBmZWVTdHJpbmcsXG4gICAgICAgIGZlZVJhdGU6IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUsXG4gICAgICB9LFxuICAgICAgbWVtbzogbWVtbyxcbiAgICAgIGJsb2NraGFzaDogdGhpcy5nZXROb25jZSgpLFxuICAgICAgZHVyYWJsZU5vbmNlOiBkdXJhYmxlTm9uY2UsXG4gICAgfTtcblxuICAgIHJldHVybiBleHBsYWluZWRUcmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQXFDO0FBQ3JDLHdDQUErRDtBQUUvRCw2Q0FBa0c7QUFDbEcsMkNBQWlIO0FBYWpILDhDQUEwQjtBQUMxQixpQ0FBbUg7QUFFbkgsdUVBQXNFO0FBQ3RFLHlDQUFzRDtBQUd0RCxJQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxJQUFNLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDO0FBQ25ELElBQU0sNEJBQTRCLEdBQUcseUJBQXlCLENBQUM7QUFFL0Q7SUFBaUMsK0JBQWU7SUFLOUMscUJBQVksV0FBaUM7ZUFDM0Msa0JBQU0sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSx1Q0FBYzthQUFsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDO2FBRUQsVUFBbUIsRUFBa0I7WUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBWSxtREFBMEI7YUFBdEM7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQzVFLENBQUM7OztPQUFBO0lBR0Qsc0JBQUksd0NBQWU7UUFEbkIsa0JBQWtCO2FBQ2xCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSwyQkFBRTtRQUROLG1CQUFtQjthQUNuQjtZQUNFLGdHQUFnRztZQUNoRyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO2dCQUNs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QUc7WUFDakIsWUFBWSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEdBQUcsRUFBRTtnQkFDSCxHQUFHLEVBQUUsU0FBUztnQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUNuQztZQUNELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDMUIsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQztRQUVGLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQWpYRCxDQUFpQywwQkFBZSxHQWlYL0M7QUFqWFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgUGFyc2VUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmxvY2toYXNoLCBQdWJsaWNLZXksIFNpZ25lciwgU3lzdGVtSW5zdHJ1Y3Rpb24sIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7XG4gIEF0YUluaXQsXG4gIER1cmFibGVOb25jZVBhcmFtcyxcbiAgTWVtbyxcbiAgTm9uY2UsXG4gIFN0YWtpbmdBY3RpdmF0ZSxcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2ZlcixcbiAgVHhEYXRhLFxuICBXYWxsZXRJbml0LFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeyBnZXRTb2xUb2tlbkZyb21BZGRyZXNzLCBnZXRUcmFuc2FjdGlvblR5cGUsIGlzVmFsaWRSYXdUcmFuc2FjdGlvbiwgcmVxdWlyZXNBbGxTaWduYXR1cmVzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkgfSBmcm9tICcuL2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEVudHJ5LCBUcmFuc2FjdGlvblJlY2lwaWVudCB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcblxuY29uc3QgVU5BVkFJTEFCTEVfVEVYVCA9ICdVTkFWQUlMQUJMRSc7XG5jb25zdCBVTlNVUFBPUlRFRF9UT0tFTl9OQU1FID0gJ1VOU1VQUE9SVEVEX1RPS0VOJztcbmNvbnN0IFRSQU5TRkVSX0FNT1VOVF9VTktOT1dOX1RFWFQgPSAnVFJBTlNGRVJfQU1PVU5UX1VOS05PV04nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9zb2xUcmFuc2FjdGlvbjogU29sVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzb2xUcmFuc2FjdGlvbigpOiBTb2xUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHNvbFRyYW5zYWN0aW9uKHR4OiBTb2xUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICBwcml2YXRlIGdldCBudW1iZXJPZlJlcXVpcmVkU2lnbmF0dXJlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5jb21waWxlTWVzc2FnZSgpLmhlYWRlci5udW1SZXF1aXJlZFNpZ25hdHVyZXM7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zZXJpYWxpemVNZXNzYWdlKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIC8vIFNvbGFuYSB0cmFuc2FjdGlvbiBJRCA9PT0gZmlyc3Qgc2lnbmF0dXJlOiBodHRwczovL2RvY3Muc29sYW5hLmNvbS90ZXJtaW5vbG9neSN0cmFuc2FjdGlvbi1pZFxuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpIHtcbiAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBVTkFWQUlMQUJMRV9URVhUO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsYW1wb3J0c1BlclNpZ25hdHVyZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZTtcbiAgfVxuXG4gIHNldCBsYW1wb3J0c1BlclNpZ25hdHVyZShsYW1wb3J0c1BlclNpZ25hdHVyZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUgPSBsYW1wb3J0c1BlclNpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXQgc2lnbmF0dXJlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzaWduYXR1cmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzb2xTaWduYXR1cmUgb2YgdGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlcykge1xuICAgICAgaWYgKHNvbFNpZ25hdHVyZS5zaWduYXR1cmUpIHtcbiAgICAgICAgc2lnbmF0dXJlcy5wdXNoKGJhc2U1OC5lbmNvZGUoc29sU2lnbmF0dXJlLnNpZ25hdHVyZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdIHwgS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24gfHwgIXRoaXMuX3NvbFRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTm9uY2UgaXMgcmVxdWlyZWQgYmVmb3JlIHNpZ25pbmcnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbiB8fCAhdGhpcy5fc29sVHJhbnNhY3Rpb24uZmVlUGF5ZXIpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ2ZlZVBheWVyIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhaXJzID0ga2V5UGFpciBpbnN0YW5jZW9mIEFycmF5ID8ga2V5UGFpciA6IFtrZXlQYWlyXTtcbiAgICBjb25zdCBzaWduZXJzOiBTaWduZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga3Agb2Yga2V5UGFpcnMpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBrcC5nZXRLZXlzKHRydWUpO1xuICAgICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgICB9XG4gICAgICBzaWduZXJzLnB1c2goeyBwdWJsaWNLZXk6IG5ldyBQdWJsaWNLZXkoa2V5cy5wdWIpLCBzZWNyZXRLZXk6IGtleXMucHJ2IGFzIFVpbnQ4QXJyYXkgfSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5wYXJ0aWFsU2lnbiguLi5zaWduZXJzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIC8vIFRoZSBzaWduYXR1cmVzIGNhbiBoYXZlIG51bGwgc2lnbmF0dXJlcyAod2hpY2ggbWVhbnMgdGhleSBhcmUgcmVxdWlyZWQgYnV0IHlldCB1bnNpZ25lZClcbiAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHNlcmlhbGl6ZXIgdGhlIHR4cywgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIHJlcXVpcmVBbGxTaWduYXR1cmVzIGJhc2VkXG4gICAgLy8gb24gaWYgdGhlIFRYIGlzIGZ1bGx5IHNpZ25lZCBvciBub3RcbiAgICBjb25zdCByZXF1aXJlQWxsU2lnbmF0dXJlcyA9IHJlcXVpcmVzQWxsU2lnbmF0dXJlcyh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmVzKTtcbiAgICB0cnkge1xuICAgICAgLy8gQmFzZWQgb24gdGhlIHJlY29tZW5kYXRpb24gZW5jb2RpbmcgZm91bmQgaGVyZSBodHRwczovL2RvY3Muc29sYW5hLmNvbS9kZXZlbG9waW5nL2NsaWVudHMvanNvbnJwYy1hcGkjc2VuZHRyYW5zYWN0aW9uXG4gICAgICAvLyBXZSB1c2UgYmFzZTY0IGVuY29kaW5nXG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uc2VyaWFsaXplKHsgcmVxdWlyZUFsbFNpZ25hdHVyZXMgfSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uID0gU29sVHJhbnNhY3Rpb24uZnJvbShCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2Jhc2U2NCcpKTtcblxuICAgICAgaWYgKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5faWQgPSBiYXNlNTguZW5jb2RlKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSk7XG4gICAgICB9XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSBnZXRUcmFuc2FjdGlvblR5cGUodGhpcy5fc29sVHJhbnNhY3Rpb24pO1xuICAgICAgc3dpdGNoICh0cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb246XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBsZXQgZHVyYWJsZU5vbmNlOiBEdXJhYmxlTm9uY2VQYXJhbXMgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX3NvbFRyYW5zYWN0aW9uLm5vbmNlSW5mbykge1xuICAgICAgY29uc3Qgbm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZSh0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8ubm9uY2VJbnN0cnVjdGlvbik7XG4gICAgICBkdXJhYmxlTm9uY2UgPSB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogbm9uY2VJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSA/IHRoaXMuaWQgOiB1bmRlZmluZWQsXG4gICAgICBmZWVQYXllcjogdGhpcy5fc29sVHJhbnNhY3Rpb24uZmVlUGF5ZXI/LnRvU3RyaW5nKCksXG4gICAgICBsYW1wb3J0c1BlclNpZ25hdHVyZTogdGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZSxcbiAgICAgIG5vbmNlOiB0aGlzLmdldE5vbmNlKCksXG4gICAgICBkdXJhYmxlTm9uY2U6IGR1cmFibGVOb25jZSxcbiAgICAgIG51bVNpZ25hdHVyZXM6IHRoaXMuc2lnbmF0dXJlLmxlbmd0aCxcbiAgICAgIGluc3RydWN0aW9uc0RhdGE6IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0aGlzLl90eXBlLCB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5vbmNlIGZyb20gdGhlIFNvbGFuYSBUcmFuc2FjdGlvblxuICAgKiBUaHJvd3MgaWYgbm90IHNldFxuICAgKi9cbiAgcHJpdmF0ZSBnZXROb25jZSgpOiBCbG9ja2hhc2gge1xuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2gpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2g7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8pIHtcbiAgICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8ubm9uY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm9uY2UgaXMgbm90IHNldCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24gfHwgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGluc3RydWN0aW9uUGFyYW1zID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KHRoaXMudHlwZSwgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zKTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25QYXJhbXMpIHtcbiAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgICAgIGNvbnN0IHRva2VuID0gZ2V0U29sVG9rZW5Gcm9tQWRkcmVzcyhpbnN0cnVjdGlvbi5wYXJhbXMubWludEFkZHJlc3MsIHRoaXMuX2NvaW5Db25maWcubmV0d29yayk7XG4gICAgICAgICAgY29uc3QgdG9rZW5OYW1lID0gdG9rZW4gPyB0b2tlbi5uYW1lIDogVU5TVVBQT1JURURfVE9LRU5fTkFNRTtcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMub3duZXJBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQgfHwgVFJBTlNGRVJfQU1PVU5UX1VOS05PV05fVEVYVCxcbiAgICAgICAgICAgIGNvaW46IHRva2VuTmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmF0YUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCB8fCBUUkFOU0ZFUl9BTU9VTlRfVU5LTk9XTl9URVhULFxuICAgICAgICAgICAgY29pbjogdG9rZW5OYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGRlY29kZWRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkodGhpcy5fdHlwZSwgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zKTtcblxuICAgIGxldCBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGR1cmFibGVOb25jZTogRHVyYWJsZU5vbmNlUGFyYW1zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgbGV0IG91dHB1dEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBkZWNvZGVkSW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U6XG4gICAgICAgICAgZHVyYWJsZU5vbmNlID0gKGluc3RydWN0aW9uIGFzIE5vbmNlKS5wYXJhbXM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbzpcbiAgICAgICAgICBtZW1vID0gKGluc3RydWN0aW9uIGFzIE1lbW8pLnBhcmFtcy5tZW1vO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBUcmFuc2ZlcjtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXModHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVOb25jZUFjY291bnQ6XG4gICAgICAgICAgY29uc3QgY3JlYXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBXYWxsZXRJbml0O1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBjcmVhdGVJbnN0cnVjdGlvbi5wYXJhbXMubm9uY2VBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBjcmVhdGVJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudC5wbHVzKGNyZWF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgICAgICBjb25zdCBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFN0YWtpbmdBY3RpdmF0ZTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudC5wbHVzKHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICBjb25zdCBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFN0YWtpbmdXaXRoZHJhdztcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudC5wbHVzKHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5hbW91bnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgICAgY29uc3QgY3JlYXRlQXRhSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBBdGFJbml0O1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBjcmVhdGVBdGFJbnN0cnVjdGlvbi5wYXJhbXMuYXRhQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogY3JlYXRlQXRhSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCB8fCBUUkFOU0ZFUl9BTU9VTlRfVU5LTk9XTl9URVhULFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZlZVN0cmluZyA9IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmVcbiAgICAgID8gbmV3IEJpZ051bWJlcih0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlKS5tdWx0aXBsaWVkQnkodGhpcy5udW1iZXJPZlJlcXVpcmVkU2lnbmF0dXJlcykudG9GaXhlZCgwKVxuICAgICAgOiBVTkFWQUlMQUJMRV9URVhUO1xuXG4gICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICdmZWUnLFxuICAgICAgICAnbWVtbycsXG4gICAgICBdLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy50eXBlXS50b1N0cmluZygpLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0QW1vdW50LnRvRml4ZWQoMCksXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogZmVlU3RyaW5nLFxuICAgICAgICBmZWVSYXRlOiB0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlLFxuICAgICAgfSxcbiAgICAgIG1lbW86IG1lbW8sXG4gICAgICBibG9ja2hhc2g6IHRoaXMuZ2V0Tm9uY2UoKSxcbiAgICAgIGR1cmFibGVOb25jZTogZHVyYWJsZU5vbmNlLFxuICAgIH07XG5cbiAgICByZXR1cm4gZXhwbGFpbmVkVHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SignaturePubkeyPair, Transaction as SolTransaction, TransactionInstruction } from '@solana/web3.js';
|
|
2
2
|
import { TransactionType } from '../baseCoin';
|
|
3
3
|
import { ValidInstructionTypes } from './iface';
|
|
4
|
+
import { BaseCoin, BaseNetwork } from '@bitgo/statics';
|
|
4
5
|
/** @inheritdoc */
|
|
5
6
|
export declare function isValidAddress(address: string): boolean;
|
|
6
7
|
/** @inheritdoc */
|
|
@@ -123,4 +124,12 @@ export declare function validateRawTransaction(rawTransaction: string): void;
|
|
|
123
124
|
* @param {string} fieldName Name of the field to validate, its needed to return which field is failing on case of error.
|
|
124
125
|
*/
|
|
125
126
|
export declare function validateAddress(address: string, fieldName: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Get the statics coin object matching a given Solana token address if it exists
|
|
129
|
+
*
|
|
130
|
+
* @param tokenAddress The token address to match against
|
|
131
|
+
* @param network Solana Mainnet or Testnet
|
|
132
|
+
* @returns statics BaseCoin object for the matching token
|
|
133
|
+
*/
|
|
134
|
+
export declare function getSolTokenFromAddress(tokenAddress: string, network: BaseNetwork): Readonly<BaseCoin> | undefined;
|
|
126
135
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAKnB,WAAW,IAAI,cAAc,EAC7B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAKnB,WAAW,IAAI,cAAc,EAC7B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIhD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAS,MAAM,gBAAgB,CAAC;AAQ9D,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,kBAAkB;AAClB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAOtE;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED,kBAAkB;AAElB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAcnG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,sBAAsB,EAAE,EACtC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,OAAO,CAeT;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,cAAc,GAAG,eAAe,CAe/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,sBAAsB,GAAG,qBAAqB,CAsB7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAcjH"}
|
|
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.validateAddress = exports.validateRawTransaction = exports.validateIntructionTypes = exports.getInstructionType = exports.getTransactionType = exports.matchTransactionTypeByInstructionsOrder = exports.requiresAllSignatures = exports.countNotNullSignatures = exports.Uint8ArrayTobase58 = exports.base58ToUint8Array = exports.verifySignature = exports.isValidRawTransaction = exports.isValidMemo = exports.isValidStakingAmount = exports.isValidAmount = exports.isValidTransactionId = exports.isValidSignature = exports.isValidPublicKey = exports.isValidPrivateKey = exports.isValidBlockId = exports.isValidAddress = void 0;
|
|
25
|
+
exports.getSolTokenFromAddress = exports.validateAddress = exports.validateRawTransaction = exports.validateIntructionTypes = exports.getInstructionType = exports.getTransactionType = exports.matchTransactionTypeByInstructionsOrder = exports.requiresAllSignatures = exports.countNotNullSignatures = exports.Uint8ArrayTobase58 = exports.base58ToUint8Array = exports.verifySignature = exports.isValidRawTransaction = exports.isValidMemo = exports.isValidStakingAmount = exports.isValidAmount = exports.isValidTransactionId = exports.isValidSignature = exports.isValidPublicKey = exports.isValidPrivateKey = exports.isValidBlockId = exports.isValidAddress = void 0;
|
|
26
26
|
var web3_js_1 = require("@solana/web3.js");
|
|
27
27
|
var bs58_1 = __importDefault(require("bs58"));
|
|
28
28
|
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
@@ -32,6 +32,9 @@ var errors_1 = require("../baseCoin/errors");
|
|
|
32
32
|
var tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
33
33
|
var Crypto = __importStar(require("./../../utils/crypto"));
|
|
34
34
|
var spl_token_1 = require("@solana/spl-token");
|
|
35
|
+
var statics_1 = require("@bitgo/statics");
|
|
36
|
+
var account_1 = require("@bitgo/statics/dist/src/account");
|
|
37
|
+
var assert_1 = __importDefault(require("assert"));
|
|
35
38
|
var DECODED_BLOCK_HASH_LENGTH = 32; // https://docs.solana.com/developing/programming-model/transactions#blockhash-format
|
|
36
39
|
var DECODED_SIGNATURE_LENGTH = 64; // https://docs.solana.com/terminology#signature
|
|
37
40
|
var BASE_58_ENCONDING_REGEX = '[1-9A-HJ-NP-Za-km-z]';
|
|
@@ -324,4 +327,27 @@ function validateAddress(address, fieldName) {
|
|
|
324
327
|
}
|
|
325
328
|
}
|
|
326
329
|
exports.validateAddress = validateAddress;
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQVV5QjtBQUN6Qiw4Q0FBd0I7QUFDeEIsOERBQXFDO0FBQ3JDLHlDQVNxQjtBQUNyQix3Q0FBOEM7QUFDOUMsNkNBQTRHO0FBRTVHLHdEQUE2QjtBQUM3QiwyREFBK0M7QUFDL0MsK0NBQWdFO0FBRWhFLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMscUZBQXFGO0FBQzNILElBQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ3JGLElBQU0sdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7QUFFdkQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUZELHdDQUVDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLElBQUk7UUFDRixPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyx5QkFBeUIsQ0FDbkgsQ0FBQztLQUNIO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGlCQUFpQixDQUFDLE1BQTJCO0lBQzNELElBQUk7UUFDRixJQUFNLEdBQUcsR0FBZSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMs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QUUsQ0FDakcsQ0FBQztLQUNMO0FBQ0gsQ0FBQztBQXRCRCxnREFzQkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxZQUFzQztJQUM1RSxLQUEwQixVQUFZLEVBQVosNkJBQVksRUFBWiwwQkFBWSxFQUFaLElBQVksRUFBRTtRQUFuQyxJQUFNLFdBQVcscUJBQUE7UUFDcEIsSUFBSSxDQUFDLDBDQUE4QixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1lBQzdFLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHVEQUF1RCxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDbkg7S0FDRjtBQUNILENBQUM7QUFORCwwREFNQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxjQUFzQjtJQUMzRCxJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ25CLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQzVEO0FBQ0gsQ0FBQztBQVBELHdEQU9DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsT0FBZSxFQUFFLFNBQWlCO0lBQ2hFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQyxNQUFNLElBQUksOEJBQXFCLENBQUMsd0JBQXNCLFNBQVMsZUFBVSxPQUFTLENBQUMsQ0FBQztLQUNyRjtBQUNILENBQUM7QUFKRCwwQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleXBhaXIsXG4gIFB1YmxpY0tleSxcbiAgU2lnbmF0dXJlUHVia2V5UGFpcixcbiAgU3Rha2VJbnN0cnVjdGlvbixcbiAgU3Rha2VQcm9ncmFtLFxuICBTeXN0ZW1JbnN0cnVjdGlvbixcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgVHJhbnNhY3Rpb24gYXMgU29sVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIGF0YUluaXRJbnN0cnVjdGlvbkluZGV4ZXMsXG4gIE1BWF9NRU1PX0xFTkdUSCxcbiAgTUVNT19QUk9HUkFNX1BLLFxuICBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzLFxuICBzdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMsXG4gIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uc0luZGV4ZXMsXG4gIFZBTElEX1NZU1RFTV9JTlNUUlVDVElPTl9UWVBFUyxcbiAgd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBOb3RTdXBwb3J0ZWQsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciwgVXRpbHNFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBWYWxpZEluc3RydWN0aW9uVHlwZXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgKiBhcyBDcnlwdG8gZnJvbSAnLi8uLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQVNTT0NJQVRFRF9UT0tFTl9QUk9HUkFNX0lEIH0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG5jb25zdCBERUNPREVEX0JMT0NLX0hBU0hfTEVOR1RIID0gMzI7IC8vIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2RldmVsb3BpbmcvcHJvZ3JhbW1pbmctbW9kZWwvdHJhbnNhY3Rpb25zI2Jsb2NraGFzaC1mb3JtYXRcbmNvbnN0IERFQ09ERURfU0lHTkFUVVJFX0xFTkdUSCA9IDY0OyAvLyBodHRwczovL2RvY3Muc29sYW5hLmNvbS90ZXJtaW5vbG9neSNzaWduYXR1cmVcbmNvbnN0IEJBU0VfNThfRU5DT05ESU5HX1JFR0VYID0gJ1sxLTlBLUhKLU5QLVphLWttLXpdJztcblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkUHVibGljS2V5KGFkZHJlc3MpO1xufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgISFoYXNoICYmIG5ldyBSZWdFeHAoQkFTRV81OF9FTkNPTkRJTkdfUkVHRVgpLnRlc3QoaGFzaCkgJiYgYnM1OC5kZWNvZGUoaGFzaCkubGVuZ3RoID09PSBERUNPREVEX0JMT0NLX0hBU0hfTEVOR1RIXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShwcnZLZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBrZXk6IFVpbnQ4QXJyYXkgPSB0eXBlb2YgcHJ2S2V5ID09PSAnc3RyaW5nJyA/IHRoaXMuYmFzZTU4VG9VaW50OEFycmF5KHBydktleSkgOiBwcnZLZXk7XG4gICAgcmV0dXJuICEhS2V5cGFpci5mcm9tU2VjcmV0S2V5KGtleSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGlmIChDcnlwdG8uaXNWYWxpZFhwdWIocHViS2V5KSkgcmV0dXJuIHRydWU7XG4gICAgbmV3IFB1YmxpY0tleShwdWJLZXkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIXNpZ25hdHVyZSAmJiBiczU4LmRlY29kZShzaWduYXR1cmUpLmxlbmd0aCA9PT0gREVDT0RFRF9TSUdOQVRVUkVfTEVOR1RIO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuLy8gVHJhbnNhY3Rpb25JZCBhcmUgdGhlIGZpcnN0IHNpZ25hdHVyZSBvbiBhIFRyYW5zYWN0aW9uXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aGlzLmlzVmFsaWRTaWduYXR1cmUodHhJZCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50IG9mIGxhbXBvcnRzIG51bWJlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihhbW91bnQpO1xuICByZXR1cm4gYmlnTnVtYmVyQW1vdW50LmlzSW50ZWdlcigpICYmIGJpZ051bWJlckFtb3VudC5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKDApO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgb2YgbGFtcG9ydHMgbnVtYmVyIG9uIHN0YWtpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gdGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3Rha2luZ0Ftb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW4oMCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIG1lbW8gb3Igbm90LlxuICpcbiAqIEBwYXJhbSBtZW1vIC0gdGhlIG1lbW8gc3RyaW5nXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNZW1vKG1lbW86IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gQnVmZmVyLmZyb20obWVtbykubGVuZ3RoIDw9IE1BWF9NRU1PX0xFTkdUSDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgcmF3IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nIGZvcm1hdFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IHR4ID0gU29sVHJhbnNhY3Rpb24uZnJvbShCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2Jhc2U2NCcpKTtcbiAgICB0eC5zZXJpYWxpemUoeyByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZmllcyBpZiBzaWduYXR1cmUgZm9yIG1lc3NhZ2UgaXMgdmFsaWQuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHNlcmlhbGl6ZWRUeCAtIHR4IGFzIGEgYmFzZTY0IHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIHNpZ25hdHVyZSBhcyBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY0tleSAtIHB1YmxpYyBrZXkgYXMgYmFzZSA1OFxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKHNlcmlhbGl6ZWRUeDogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZywgcHVibGljS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkUmF3VHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4KSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdJbnZhbGlkIHNlcmlhbGl6ZWRUeCcpO1xuICB9XG4gIGlmICghaXNWYWxpZFB1YmxpY0tleShwdWJsaWNLZXkpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgcHVibGljS2V5Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgfVxuICBjb25zdCBtc2cgPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUeCwgJ2Jhc2U2NCcpKS5zZXJpYWxpemVNZXNzYWdlKCk7XG4gIGNvbnN0IHNpZyA9IGJhc2U1OFRvVWludDhBcnJheShzaWduYXR1cmUpO1xuICBjb25zdCBwdWIgPSBuZXcgUHVibGljS2V5KHB1YmxpY0tleSk7XG4gIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG1zZywgc2lnLCBwdWIudG9CdWZmZXIoKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNlNTggc3RyaW5nIGludG8gYSBVaW50OEFycmF5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCAtIGEgc3RyaW5nIGluIGJhc2U1OFxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IC0gYW4gVWludDhBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTU4VG9VaW50OEFycmF5KGlucHV0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJzNTguZGVjb2RlKGlucHV0KSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBVaW50OEFycmF5IHRvIGEgYmFzZTU4IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGlucHV0IC0gYW4gVWludDhBcnJheVxuICogQHJldHVybnMge3N0cmluZ30gLSBhIHN0cmluZyBpbiBiYXNlNThcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVpbnQ4QXJyYXlUb2Jhc2U1OChpbnB1dDogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBiczU4LmVuY29kZShpbnB1dCk7XG59XG5cbi8qKlxuICogQ291bnQgdGhlIGFtb3VudCBvZiBzaWduYXR1cmVzIGFyZSBub3QgbnVsbC5cbiAqXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVB1YmtleVBhaXJbXX0gc2lnbmF0dXJlcyAtIGFuIGFycmF5IG9mIFNpZ25hdHVyZVB1YmtleVBhaXJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gdGhlIGFtb3VudCBvZiB2YWxpZCBzaWduYXR1cmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3VudE5vdE51bGxTaWduYXR1cmVzKHNpZ25hdHVyZXM6IFNpZ25hdHVyZVB1YmtleVBhaXJbXSk6IG51bWJlciB7XG4gIHJldHVybiBzaWduYXR1cmVzLmZpbHRlcigoc2lnKSA9PiAhIXNpZy5zaWduYXR1cmUpLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhbGwgc2lnbmF0dXJlcyBhcmUgY29tcGxldGVkLlxuICpcbiAqIEBwYXJhbSB7U2lnbmF0dXJlUHVia2V5UGFpcltdfSBzaWduYXR1cmVzIC0gc2lnbmF0dXJlc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlc0FsbFNpZ25hdHVyZXMoc2lnbmF0dXJlczogU2lnbmF0dXJlUHVia2V5UGFpcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaWduYXR1cmVzLmxlbmd0aCA+IDAgJiYgY291bnROb3ROdWxsU2lnbmF0dXJlcyhzaWduYXR1cmVzKSA9PT0gc2lnbmF0dXJlcy5sZW5ndGg7XG59XG5cbi8qKlxuICogQ2hlY2sgdGhlIHRyYW5zYWN0aW9uIHR5cGUgbWF0Y2hpbmcgaW5zdHJ1Y3Rpb25zIGJ5IG9yZGVyLlxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSB0aGUgYXJyYXkgb2Ygc3VwcG9ydGVkIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gYmUgcGFyc2VkXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIG51bWJlcj59IGluc3RydWN0aW9uSW5kZXhlcyAtIHRoZSBpbnN0cnVjdGlvbnMgaW5kZXhlcyBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiBpdCBtYXRjaHMgYnkgb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoXG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdLFxuICBpbnN0cnVjdGlvbkluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25zS2V5cyA9IE9iamVjdC5rZXlzKGluc3RydWN0aW9uSW5kZXhlcyk7XG5cbiAgLy8gTWVtbyBpcyBvcHRpb25hbCBhbmQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gYWRkZWQsIGl0IGRvZXMgbm90IG1hdHRlciB0byBtYXRjaCB0aGUgdHlwZVxuICBpZiAoaW5zdHJ1Y3Rpb25zS2V5c1tpbnN0cnVjdGlvbnNLZXlzLmxlbmd0aCAtIDFdID09PSAnTWVtbycpIHtcbiAgICBpbnN0cnVjdGlvbnNLZXlzLnBvcCgpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaW5zdHJ1Y3Rpb25zIGJ5IG9yZGVyIHVzaW5nIHRoZSBpbmRleC5cbiAgZm9yIChjb25zdCBrZXlOYW1lIG9mIGluc3RydWN0aW9uc0tleXMpIHtcbiAgICBpZiAoZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uc1tpbnN0cnVjdGlvbkluZGV4ZXNba2V5TmFtZV1dKSAhPT0ga2V5TmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0cmFuc2FjdGlvbiBUeXBlIGJhc2VkIG9uIHRoZSAgdHJhbnNhY3Rpb24gaW5zdHJ1Y3Rpb25zLlxuICogV2FsbGV0IGluaXRpYWxpemF0aW9uLCBUcmFuc2ZlciBhbmQgU3Rha2luZyB0cmFuc2FjdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiBAcGFyYW0ge1NvbFRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbiAtIHRoZSBzb2xhbmEgdHJhbnNhY3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvblR5cGV9IC0gdGhlIHR5cGUgb2YgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbjogU29sVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvblR5cGUge1xuICBjb25zdCB7IGluc3RydWN0aW9ucyB9ID0gdHJhbnNhY3Rpb247XG4gIHZhbGlkYXRlSW50cnVjdGlvblR5cGVzKGluc3RydWN0aW9ucyk7XG4gIGlmIChtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoaW5zdHJ1Y3Rpb25zLCB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzKSkge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gIH0gZWxzZSBpZiAobWF0Y2hUcmFuc2FjdGlvblR5cGVCeUluc3RydWN0aW9uc09yZGVyKGluc3RydWN0aW9ucywgc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcykpIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgfSBlbHNlIGlmIChtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoaW5zdHJ1Y3Rpb25zLCBzdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTtcbiAgfSBlbHNlIGlmIChtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoaW5zdHJ1Y3Rpb25zLCBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnNJbmRleGVzKSkge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICB9IGVsc2UgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIGF0YUluaXRJbnN0cnVjdGlvbkluZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb247XG4gIH1cbiAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGluc3RydWN0aW9uIFR5cGUgYmFzZWQgb24gdGhlIHNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKiBUaHJvd3MgaWYgdGhlIHNvbGFuYSBpbnN0cnVjdGlvbiBwcm9ncmFtIGlzIG5vdCBzdXBwb3J0ZWRcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259IGluc3RydWN0aW9uIC0gYSBzb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtWYWxpZEluc3RydWN0aW9uVHlwZXN9IC0gYSBzb2xhbmEgaW5zdHJ1Y3Rpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uKTogVmFsaWRJbnN0cnVjdGlvblR5cGVzIHtcbiAgc3dpdGNoIChpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9TdHJpbmcoKSkge1xuICAgIGNhc2UgbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLnRvU3RyaW5nKCk6XG4gICAgICByZXR1cm4gJ01lbW8nO1xuICAgIGNhc2UgU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9TdHJpbmcoKTpcbiAgICAgIHJldHVybiBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIGNhc2UgU3Rha2VQcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgcmV0dXJuIFN0YWtlSW5zdHJ1Y3Rpb24uZGVjb2RlSW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBjYXNlIEFTU09DSUFURURfVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpOlxuICAgICAgLy8gVE9ETzogY2hhbmdlIHRoaXMgd2hlbiBAc3BsLXRva2VuIHN1cHBvcnRzIGRlY29kaW5nIGFzc29jaWF0ZWQgdG9rZW4gaW5zdHJ1Y3Rpb25zXG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24uZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuICdJbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAgICdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiBwcm9ncmFtIGlkIG5vdCBzdXBwb3J0ZWQ6ICcgKyBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9TdHJpbmcoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIGluc3RydWN0aW9uIHByb2dyYW0gaWQgbm90IHN1cHBvcnRlZDogJyArIGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpLFxuICAgICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNvbGFuYSBpbnN0cnVjdGlvbnMgdHlwZXMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnVpbGRlci5cbiAqIFRocm93cyBpZiB0aGUgaW5zdHJ1Y3Rpb24gdHlwZSBpcyBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb25zIC0gYSBzb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVJbnRydWN0aW9uVHlwZXMoaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBpZiAoIVZBTElEX1NZU1RFTV9JTlNUUlVDVElPTl9UWVBFUy5pbmNsdWRlcyhnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pKSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIFRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhZGRyZXNzIHRvIGNoZWNrIGlmIGl0IGV4aXN0cyBhbmQgaXMgYSB2YWxpZCBTb2xhbmEgcHVibGljIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSBOYW1lIG9mIHRoZSBmaWVsZCB0byB2YWxpZGF0ZSwgaXRzIG5lZWRlZCB0byByZXR1cm4gd2hpY2ggZmllbGQgaXMgZmFpbGluZyBvbiBjYXNlIG9mIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFhZGRyZXNzIHx8ICFpc1ZhbGlkUHVibGljS2V5KGFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBvciBtaXNzaW5nICR7ZmllbGROYW1lfSwgZ290OiAke2FkZHJlc3N9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
330
|
+
/**
|
|
331
|
+
* Get the statics coin object matching a given Solana token address if it exists
|
|
332
|
+
*
|
|
333
|
+
* @param tokenAddress The token address to match against
|
|
334
|
+
* @param network Solana Mainnet or Testnet
|
|
335
|
+
* @returns statics BaseCoin object for the matching token
|
|
336
|
+
*/
|
|
337
|
+
function getSolTokenFromAddress(tokenAddress, network) {
|
|
338
|
+
var tokens = statics_1.coins.filter(function (coin) {
|
|
339
|
+
if (coin instanceof account_1.SolCoin) {
|
|
340
|
+
return coin.network.type === network.type && coin.tokenAddress.toLowerCase() === tokenAddress.toLowerCase();
|
|
341
|
+
}
|
|
342
|
+
return false;
|
|
343
|
+
});
|
|
344
|
+
var tokensArray = tokens.map(function (token) { return token; });
|
|
345
|
+
if (tokensArray.length >= 1) {
|
|
346
|
+
// there should never be two tokens with the same contract address, so we assert that here
|
|
347
|
+
assert_1.default(tokensArray.length === 1);
|
|
348
|
+
return tokensArray[0];
|
|
349
|
+
}
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
352
|
+
exports.getSolTokenFromAddress = getSolTokenFromAddress;
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQVV5QjtBQUN6Qiw4Q0FBd0I7QUFDeEIsOERBQXFDO0FBQ3JDLHlDQVNxQjtBQUNyQix3Q0FBOEM7QUFDOUMsNkNBQTRHO0FBRTVHLHdEQUE2QjtBQUM3QiwyREFBK0M7QUFDL0MsK0NBQWdFO0FBQ2hFLDBDQUE4RDtBQUM5RCwyREFBMEQ7QUFDMUQsa0RBQTRCO0FBRTVCLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMscUZBQXFGO0FBQzNILElBQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ3JGLElBQU0sdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7QUFFdkQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUZELHdDQUVDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLElBQUk7UUFDRixPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyx5QkFBeUIsQ0FDbkgsQ0FBQztLQUNIO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQsa0JBQWtCO0FBQ2xCLFNBQWdCLGlCQUFpQixDQUFDLE1BQTJCO0lBQzNELElBQUk7UUFDRixJQUFNLEdBQUcsR0FBZSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FB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QUFDLElBQUk7UUFDL0IsSUFBSSxJQUFJLFlBQVksaUJBQU8sRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0c7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQztJQUNqRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQzNCLDBGQUEwRjtRQUMxRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdkI7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBZEQsd0RBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBLZXlwYWlyLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZVB1YmtleVBhaXIsXG4gIFN0YWtlSW5zdHJ1Y3Rpb24sXG4gIFN0YWtlUHJvZ3JhbSxcbiAgU3lzdGVtSW5zdHJ1Y3Rpb24sXG4gIFN5c3RlbVByb2dyYW0sXG4gIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQge1xuICBhdGFJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLFxuICBNQVhfTUVNT19MRU5HVEgsXG4gIE1FTU9fUFJPR1JBTV9QSyxcbiAgc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcyxcbiAgc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzLFxuICBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbnNJbmRleGVzLFxuICBWQUxJRF9TWVNURU1fSU5TVFJVQ1RJT05fVFlQRVMsXG4gIHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsIFV0aWxzRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVmFsaWRJbnN0cnVjdGlvblR5cGVzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0ICogYXMgQ3J5cHRvIGZyb20gJy4vLi4vLi4vdXRpbHMvY3J5cHRvJztcbmltcG9ydCB7IEFTU09DSUFURURfVE9LRU5fUFJPR1JBTV9JRCB9IGZyb20gJ0Bzb2xhbmEvc3BsLXRva2VuJztcbmltcG9ydCB7IEJhc2VDb2luLCBCYXNlTmV0d29yaywgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBTb2xDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MvZGlzdC9zcmMvYWNjb3VudCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmNvbnN0IERFQ09ERURfQkxPQ0tfSEFTSF9MRU5HVEggPSAzMjsgLy8gaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vZGV2ZWxvcGluZy9wcm9ncmFtbWluZy1tb2RlbC90cmFuc2FjdGlvbnMjYmxvY2toYXNoLWZvcm1hdFxuY29uc3QgREVDT0RFRF9TSUdOQVRVUkVfTEVOR1RIID0gNjQ7IC8vIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL3Rlcm1pbm9sb2d5I3NpZ25hdHVyZVxuY29uc3QgQkFTRV81OF9FTkNPTkRJTkdfUkVHRVggPSAnWzEtOUEtSEotTlAtWmEta20tel0nO1xuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcyk7XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAoXG4gICAgICAhIWhhc2ggJiYgbmV3IFJlZ0V4cChCQVNFXzU4X0VOQ09ORElOR19SRUdFWCkudGVzdChoYXNoKSAmJiBiczU4LmRlY29kZShoYXNoKS5sZW5ndGggPT09IERFQ09ERURfQkxPQ0tfSEFTSF9MRU5HVEhcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KHBydktleTogc3RyaW5nIHwgVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGtleTogVWludDhBcnJheSA9IHR5cGVvZiBwcnZLZXkgPT09ICdzdHJpbmcnID8gdGhpcy5iYXNlNThUb1VpbnQ4QXJyYXkocHJ2S2V5KSA6IHBydktleTtcbiAgICByZXR1cm4gISFLZXlwYWlyLmZyb21TZWNyZXRLZXkoa2V5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1YktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHB1YihwdWJLZXkpKSByZXR1cm4gdHJ1ZTtcbiAgICBuZXcgUHVibGljS2V5KHB1YktleSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhc2lnbmF0dXJlICYmIGJzNTguZGVjb2RlKHNpZ25hdHVyZSkubGVuZ3RoID09PSBERUNPREVEX1NJR05BVFVSRV9MRU5HVEg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG4vLyBUcmFuc2FjdGlvbklkIGFyZSB0aGUgZmlyc3Qgc2lnbmF0dXJlIG9uIGEgVHJhbnNhY3Rpb25cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRoaXMuaXNWYWxpZFNpZ25hdHVyZSh0eElkKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgb2YgbGFtcG9ydHMgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBvZiBsYW1wb3J0cyBudW1iZXIgb24gc3Rha2luZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGFraW5nQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIGJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSAmJiBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbigwKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgbWVtbyBvciBub3QuXG4gKlxuICogQHBhcmFtIG1lbW8gLSB0aGUgbWVtbyBzdHJpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShtZW1vKS5sZW5ndGggPD0gTUFYX01FTU9fTEVOR1RIO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgZm9ybWF0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdHggPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnYmFzZTY0JykpO1xuICAgIHR4LnNlcmlhbGl6ZSh7IHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2VyaWFsaXplZFR4IC0gdHggYXMgYSBiYXNlNjQgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIC0gc2lnbmF0dXJlIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IC0gcHVibGljIGtleSBhcyBiYXNlIDU4XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUoc2VyaWFsaXplZFR4OiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHgpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgc2VyaWFsaXplZFR4Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBwdWJsaWNLZXknKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IG1zZyA9IFNvbFRyYW5zYWN0aW9uLmZyb20oQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnYmFzZTY0JykpLnNlcmlhbGl6ZU1lc3NhZ2UoKTtcbiAgY29uc3Qgc2lnID0gYmFzZTU4VG9VaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gIGNvbnN0IHB1YiA9IG5ldyBQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobXNnLCBzaWcsIHB1Yi50b0J1ZmZlcigpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2U1OCBzdHJpbmcgaW50byBhIFVpbnQ4QXJyYXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IC0gYSBzdHJpbmcgaW4gYmFzZTU4XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gLSBhbiBVaW50OEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNThUb1VpbnQ4QXJyYXkoaW5wdXQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnM1OC5kZWNvZGUoaW5wdXQpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBiYXNlNTggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gaW5wdXQgLSBhbiBVaW50OEFycmF5XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIGEgc3RyaW5nIGluIGJhc2U1OFxuICovXG5leHBvcnQgZnVuY3Rpb24gVWludDhBcnJheVRvYmFzZTU4KGlucHV0OiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGJzNTguZW5jb2RlKGlucHV0KTtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgYW1vdW50IG9mIHNpZ25hdHVyZXMgYXJlIG5vdCBudWxsLlxuICpcbiAqIEBwYXJhbSB7U2lnbmF0dXJlUHVia2V5UGFpcltdfSBzaWduYXR1cmVzIC0gYW4gYXJyYXkgb2YgU2lnbmF0dXJlUHVia2V5UGFpclxuICogQHJldHVybnMge251bWJlcn0gLSB0aGUgYW1vdW50IG9mIHZhbGlkIHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvdW50Tm90TnVsbFNpZ25hdHVyZXMoc2lnbmF0dXJlczogU2lnbmF0dXJlUHVia2V5UGFpcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMuZmlsdGVyKChzaWcpID0+ICEhc2lnLnNpZ25hdHVyZSkubGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFsbCBzaWduYXR1cmVzIGFyZSBjb21wbGV0ZWQuXG4gKlxuICogQHBhcmFtIHtTaWduYXR1cmVQdWJrZXlQYWlyW119IHNpZ25hdHVyZXMgLSBzaWduYXR1cmVzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzQWxsU2lnbmF0dXJlcyhzaWduYXR1cmVzOiBTaWduYXR1cmVQdWJrZXlQYWlyW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMubGVuZ3RoID4gMCAmJiBjb3VudE5vdE51bGxTaWduYXR1cmVzKHNpZ25hdHVyZXMpID09PSBzaWduYXR1cmVzLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgdHJhbnNhY3Rpb24gdHlwZSBtYXRjaGluZyBpbnN0cnVjdGlvbnMgYnkgb3JkZXIuXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIHRoZSBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9ucyB0byBiZSBwYXJzZWRcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gaW5zdHJ1Y3Rpb25JbmRleGVzIC0gdGhlIGluc3RydWN0aW9ucyBpbmRleGVzIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gKiBAcmV0dXJucyB0cnVlIGlmIGl0IG1hdGNocyBieSBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihcbiAgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10sXG4gIGluc3RydWN0aW9uSW5kZXhlczogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbik6IGJvb2xlYW4ge1xuICBjb25zdCBpbnN0cnVjdGlvbnNLZXlzID0gT2JqZWN0LmtleXMoaW5zdHJ1Y3Rpb25JbmRleGVzKTtcblxuICAvLyBNZW1vIGlzIG9wdGlvbmFsIGFuZCB0aGUgbGFzdCBpbnN0cnVjdGlvbiBhZGRlZCwgaXQgZG9lcyBub3QgbWF0dGVyIHRvIG1hdGNoIHRoZSB0eXBlXG4gIGlmIChpbnN0cnVjdGlvbnNLZXlzW2luc3RydWN0aW9uc0tleXMubGVuZ3RoIC0gMV0gPT09ICdNZW1vJykge1xuICAgIGluc3RydWN0aW9uc0tleXMucG9wKCk7XG4gIH1cblxuICAvLyBDaGVjayBpbnN0cnVjdGlvbnMgYnkgb3JkZXIgdXNpbmcgdGhlIGluZGV4LlxuICBmb3IgKGNvbnN0IGtleU5hbWUgb2YgaW5zdHJ1Y3Rpb25zS2V5cykge1xuICAgIGlmIChnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb25zW2luc3RydWN0aW9uSW5kZXhlc1trZXlOYW1lXV0pICE9PSBrZXlOYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zYWN0aW9uIFR5cGUgYmFzZWQgb24gdGhlICB0cmFuc2FjdGlvbiBpbnN0cnVjdGlvbnMuXG4gKiBXYWxsZXQgaW5pdGlhbGl6YXRpb24sIFRyYW5zZmVyIGFuZCBTdGFraW5nIHRyYW5zYWN0aW9ucyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7U29sVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gdGhlIHNvbGFuYSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uVHlwZX0gLSB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uOiBTb2xUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uVHlwZSB7XG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zIH0gPSB0cmFuc2FjdGlvbjtcbiAgdmFsaWRhdGVJbnRydWN0aW9uVHlwZXMoaW5zdHJ1Y3Rpb25zKTtcbiAgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgfSBlbHNlIGlmIChtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoaW5zdHJ1Y3Rpb25zLCBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzKSkge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICB9IGVsc2UgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcykpIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlO1xuICB9IGVsc2UgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uc0luZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gIH0gZWxzZSBpZiAobWF0Y2hUcmFuc2FjdGlvblR5cGVCeUluc3RydWN0aW9uc09yZGVyKGluc3RydWN0aW9ucywgYXRhSW5pdEluc3RydWN0aW9uSW5kZXhlcykpIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjtcbiAgfVxuICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5zdHJ1Y3Rpb24gVHlwZSBiYXNlZCBvbiB0aGUgc29sYW5hIGluc3RydWN0aW9ucy5cbiAqIFRocm93cyBpZiB0aGUgc29sYW5hIGluc3RydWN0aW9uIHByb2dyYW0gaXMgbm90IHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb24gLSBhIHNvbGFuYSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1ZhbGlkSW5zdHJ1Y3Rpb25UeXBlc30gLSBhIHNvbGFuYSBpbnN0cnVjdGlvbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb246IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24pOiBWYWxpZEluc3RydWN0aW9uVHlwZXMge1xuICBzd2l0Y2ggKGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpKSB7XG4gICAgY2FzZSBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSykudG9TdHJpbmcoKTpcbiAgICAgIHJldHVybiAnTWVtbyc7XG4gICAgY2FzZSBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgcmV0dXJuIFN5c3RlbUluc3RydWN0aW9uLmRlY29kZUluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbik7XG4gICAgY2FzZSBTdGFrZVByb2dyYW0ucHJvZ3JhbUlkLnRvU3RyaW5nKCk6XG4gICAgICByZXR1cm4gU3Rha2VJbnN0cnVjdGlvbi5kZWNvZGVJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIGNhc2UgQVNTT0NJQVRFRF9UT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCk6XG4gICAgICAvLyBUT0RPOiBjaGFuZ2UgdGhpcyB3aGVuIEBzcGwtdG9rZW4gc3VwcG9ydHMgZGVjb2RpbmcgYXNzb2NpYXRlZCB0b2tlbiBpbnN0cnVjdGlvbnNcbiAgICAgIGlmIChpbnN0cnVjdGlvbi5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJ0luaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoXG4gICAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIGluc3RydWN0aW9uIHByb2dyYW0gaWQgbm90IHN1cHBvcnRlZDogJyArIGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gcHJvZ3JhbSBpZCBub3Qgc3VwcG9ydGVkOiAnICsgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvU3RyaW5nKCksXG4gICAgICApO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc29sYW5hIGluc3RydWN0aW9ucyB0eXBlcyB0byBzZWUgaWYgdGhleSBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBidWlsZGVyLlxuICogVGhyb3dzIGlmIHRoZSBpbnN0cnVjdGlvbiB0eXBlIGlzIGludmFsaWQuXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9ufSBpbnN0cnVjdGlvbnMgLSBhIHNvbGFuYSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUludHJ1Y3Rpb25UeXBlcyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGlmICghVkFMSURfU1lTVEVNX0lOU1RSVUNUSU9OX1RZUEVTLmluY2x1ZGVzKGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbikpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgcmF3IHRyYW5zYWN0aW9uIGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LCB0aHJvdyBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFkZHJlc3MgdG8gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCBpcyBhIHZhbGlkIFNvbGFuYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHZhbGlkYXRlLCBpdHMgbmVlZGVkIHRvIHJldHVybiB3aGljaCBmaWVsZCBpcyBmYWlsaW5nIG9uIGNhc2Ugb2YgZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG9yIG1pc3NpbmcgJHtmaWVsZE5hbWV9LCBnb3Q6ICR7YWRkcmVzc31gKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhdGljcyBjb2luIG9iamVjdCBtYXRjaGluZyBhIGdpdmVuIFNvbGFuYSB0b2tlbiBhZGRyZXNzIGlmIGl0IGV4aXN0c1xuICpcbiAqIEBwYXJhbSB0b2tlbkFkZHJlc3MgVGhlIHRva2VuIGFkZHJlc3MgdG8gbWF0Y2ggYWdhaW5zdFxuICogQHBhcmFtIG5ldHdvcmsgU29sYW5hIE1haW5uZXQgb3IgVGVzdG5ldFxuICogQHJldHVybnMgc3RhdGljcyBCYXNlQ29pbiBvYmplY3QgZm9yIHRoZSBtYXRjaGluZyB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29sVG9rZW5Gcm9tQWRkcmVzcyh0b2tlbkFkZHJlc3M6IHN0cmluZywgbmV0d29yazogQmFzZU5ldHdvcmspOiBSZWFkb25seTxCYXNlQ29pbj4gfCB1bmRlZmluZWQge1xuICBjb25zdCB0b2tlbnMgPSBjb2lucy5maWx0ZXIoKGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFNvbENvaW4pIHtcbiAgICAgIHJldHVybiBjb2luLm5ldHdvcmsudHlwZSA9PT0gbmV0d29yay50eXBlICYmIGNvaW4udG9rZW5BZGRyZXNzLnRvTG93ZXJDYXNlKCkgPT09IHRva2VuQWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuICBjb25zdCB0b2tlbnNBcnJheSA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB0b2tlbik7XG4gIGlmICh0b2tlbnNBcnJheS5sZW5ndGggPj0gMSkge1xuICAgIC8vIHRoZXJlIHNob3VsZCBuZXZlciBiZSB0d28gdG9rZW5zIHdpdGggdGhlIHNhbWUgY29udHJhY3QgYWRkcmVzcywgc28gd2UgYXNzZXJ0IHRoYXQgaGVyZVxuICAgIGFzc2VydCh0b2tlbnNBcnJheS5sZW5ndGggPT09IDEpO1xuICAgIHJldHVybiB0b2tlbnNBcnJheVswXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
|