@bitgo/statics 59.22.0 → 59.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/base.d.ts +2 -0
- package/dist/src/base.d.ts.map +1 -1
- package/dist/src/base.js +4 -1
- package/dist/src/coins/adaTokens.js +5 -5
- package/dist/src/coins/botOfcTokens.d.ts.map +1 -1
- package/dist/src/coins/botOfcTokens.js +6 -1
- package/dist/src/coins/botTokens.d.ts +1 -1
- package/dist/src/coins/botTokens.d.ts.map +1 -1
- package/dist/src/coins/botTokens.js +373 -281
- package/dist/src/coins/erc20Coins.d.ts.map +1 -1
- package/dist/src/coins/erc20Coins.js +2 -1
- package/dist/src/coins/ofcCoins.d.ts.map +1 -1
- package/dist/src/coins/ofcCoins.js +6 -5
- package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -1
- package/dist/src/coins/ofcErc20Coins.js +3 -1
- package/dist/src/coins/polygonTokens.d.ts.map +1 -1
- package/dist/src/coins/polygonTokens.js +2 -1
- package/dist/src/coins.d.ts.map +1 -1
- package/dist/src/coins.js +44 -36
- package/dist/src/errors.d.ts +3 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +9 -2
- package/dist/src/map.d.ts +6 -2
- package/dist/src/map.d.ts.map +1 -1
- package/dist/src/map.js +28 -10
- package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -1
- package/dist/src/networkFeatureMapForTokens.js +2 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/src/map.js
CHANGED
|
@@ -95,29 +95,47 @@ class CoinMap {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
* Replace a
|
|
99
|
-
*
|
|
98
|
+
* Replace a coin (token or base coin) in the CoinMap with a new object carrying refreshed modifiable
|
|
99
|
+
* fields. The existing record is looked up by id, and the swap only happens when its immutable fields
|
|
100
|
+
* (id, name, contract address and alias) are unchanged. Anything else throws before the map
|
|
101
|
+
* is touched. Coins that are not in the map yet are added.
|
|
100
102
|
* @param {Readonly<BaseCoin>} coin new coin object
|
|
103
|
+
* @throws {CoinReplacementNotAllowedError} when an immutable field differs from the existing record
|
|
101
104
|
*/
|
|
102
105
|
replace(coin) {
|
|
103
106
|
if (this.has(coin.id)) {
|
|
104
107
|
const oldCoin = this.get(coin.id);
|
|
108
|
+
CoinMap.assertImmutableFieldsUnchanged(oldCoin, coin);
|
|
105
109
|
this._map.delete(oldCoin.name);
|
|
106
110
|
this._coinByIds.delete(oldCoin.id);
|
|
107
111
|
if (oldCoin.alias) {
|
|
108
112
|
this._coinByAliases.delete(oldCoin.alias);
|
|
109
113
|
}
|
|
110
|
-
if (oldCoin.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this._coinByNftCollectionID.delete(CoinMap.nftCollectionIdKey(oldCoin));
|
|
116
|
-
}
|
|
114
|
+
if (oldCoin instanceof account_1.ContractAddressDefinedToken) {
|
|
115
|
+
this._coinByContractAddress.delete(CoinMap.contractAddressKey(oldCoin));
|
|
116
|
+
}
|
|
117
|
+
else if (oldCoin instanceof account_1.NFTCollectionIdDefinedToken) {
|
|
118
|
+
this._coinByNftCollectionID.delete(CoinMap.nftCollectionIdKey(oldCoin));
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
this.addCoin(coin);
|
|
120
122
|
}
|
|
123
|
+
static assertImmutableFieldsUnchanged(oldCoin, newCoin) {
|
|
124
|
+
const oldContractAddress = oldCoin instanceof account_1.ContractAddressDefinedToken ? oldCoin.contractAddress : undefined;
|
|
125
|
+
const newContractAddress = newCoin instanceof account_1.ContractAddressDefinedToken ? newCoin.contractAddress : undefined;
|
|
126
|
+
if (oldCoin.id !== newCoin.id) {
|
|
127
|
+
throw new errors_1.CoinReplacementNotAllowedError(oldCoin.name, 'immutable field id changed');
|
|
128
|
+
}
|
|
129
|
+
if (oldCoin.name !== newCoin.name) {
|
|
130
|
+
throw new errors_1.CoinReplacementNotAllowedError(oldCoin.name, 'immutable field name changed');
|
|
131
|
+
}
|
|
132
|
+
if (oldContractAddress !== newContractAddress) {
|
|
133
|
+
throw new errors_1.CoinReplacementNotAllowedError(oldCoin.name, 'immutable field contractAddress changed');
|
|
134
|
+
}
|
|
135
|
+
if (oldCoin.alias !== newCoin.alias) {
|
|
136
|
+
throw new errors_1.CoinReplacementNotAllowedError(oldCoin.name, 'immutable field alias changed');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
121
139
|
buildChainIdMap() {
|
|
122
140
|
const chainIdMap = new Map();
|
|
123
141
|
this._map.forEach((coin, coinName) => {
|
|
@@ -311,4 +329,4 @@ CoinMap.LEGACY_CHAIN_ID_MAP = {
|
|
|
311
329
|
25363: 'fluenteth',
|
|
312
330
|
20994: 'tfluenteth',
|
|
313
331
|
};
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FNa0I7QUFDbEIsdUNBQXFGO0FBR3JGLE1BQWEsT0FBTztJQWFsQjtRQVppQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ2hGLCtGQUErRjtRQUN2RixtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHeEQscUJBQXFCO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFDLElBQXdCO1FBQ3JELElBQUksSUFBSSxZQUFZLHFDQUEyQixFQUFFLENBQUM7WUFDaEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxR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LElBQUksRUFBRSxJQUFJO0lBQ1YsR0FBRyxFQUFFLE9BQU87SUFDWixHQUFHLEVBQUUsTUFBTTtJQUNYLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsV0FBVztJQUNoQixJQUFJLEVBQUUsWUFBWTtJQUNsQixPQUFPLEVBQUUsVUFBVTtJQUNuQixPQUFPLEVBQUUsV0FBVztJQUNwQixJQUFJLEVBQUUsU0FBUztJQUNmLE9BQU8sRUFBRSxVQUFVO0lBQ25CLElBQUksRUFBRSxPQUFPO0lBQ2IsS0FBSyxFQUFFLFFBQVE7SUFDZixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLFlBQVk7Q0FDcEIsQUFqRzBDLENBaUd6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IsXG4gIENvaW5Ob3REZWZpbmVkRXJyb3IsXG4gIER1cGxpY2F0ZUNvaW5JZERlZmluaXRpb25FcnJvcixcbiAgRHVwbGljYXRlQ29udHJhY3RBZGRyZXNzRGVmaW5pdGlvbkVycm9yLFxuICBEdXBsaWNhdGVOZnRDb2xsZWN0aW9uSWREZWZpbml0aW9uRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbiwgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IEV0aGVyZXVtTmV0d29yayB9IGZyb20gJy4vbmV0d29ya3MnO1xuXG5leHBvcnQgY2xhc3MgQ29pbk1hcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUlkcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIEhvbGRzIGtleSBlcXVpdmFsZW5jZXMgdXNlZCBkdXJpbmcgYW4gYXNzZXQgbmFtZSBtaWdyYXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IGFkZHJlc3MgLT4gdGhlIGtleSBpcyB0aGUgZmFtaWx5OmNvbnRyYWN0QWRkcmVzc1xuICAvLyB0aGUgZmFtaWx5IGlzIHRoZSB3aGVyZSB0aGUgY29pbiBpcyBlLmcgbDEgY2hhaW5zIGxpa2UgZXRoLCBic2MgZXRjLiBvciBsMiBsaWtlIGFyYmV0aCwgY2VsbyBldGMuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUNvbnRyYWN0QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IE5GVCBjb2xsZWN0aW9uIElEIC0+IHRoZSBrZXkgaXMgdGhlICh0KWZhbWlseTpuZnRDb2xsZWN0aW9uSURcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5TmZ0Q29sbGVjdGlvbklEID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gTGF6aWx5IGluaXRpYWxpemVkIGNhY2hlIGZvciBjaGFpbklkIHRvIGNvaW4gbmFtZSBtYXBwaW5nIChkZXJpdmVkIGZyb20gbmV0d29yayBkZWZpbml0aW9ucylcbiAgcHJpdmF0ZSBfY29pbkJ5Q2hhaW5JZDogTWFwPG51bWJlciwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRG8gbm90IGluc3RhbnRpYXRlXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb250cmFjdEFkZHJlc3NLZXkoY29pbjogQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Y29pbi5mYW1pbHl9OiR7Y29pbi5jb250cmFjdEFkZHJlc3N9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5mdENvbGxlY3Rpb25JZEtleShjb2luOiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtjb2luLnByZWZpeH0ke2NvaW4uZmFtaWx5fToke2NvaW4ubmZ0Q29sbGVjdGlvbklkfWA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhIGRpZmZlcmVudCB0b2tlbiB3aXRoIHRoZSBzYW1lIGNvbnRyYWN0IGFkZHJlc3MgKG9yIE5GVCBjb2xsZWN0aW9uIGlkKSBpcyBhbHJlYWR5XG4gICAqIHJlZ2lzdGVyZWQuIFRva2VuIGlkZW50aXR5IGluIHRoZSBtYXAgaXMga2V5ZWQgYnkgbmFtZS9pZC9hbGlhcywgYnV0IGEgdG9rZW4gYWxzbyBjbGFpbXMgYVxuICAgKiBjb250cmFjdC1hZGRyZXNzIGtleSAoYGZhbWlseTpjb250cmFjdEFkZHJlc3NgKSBhbmQsIGZvciBORlRzLCBhIGNvbGxlY3Rpb24taWQga2V5LiBUd28gdG9rZW5zXG4gICAqIHRoYXQgc2hhcmUgc3VjaCBhIGtleSBidXQgZGlmZmVyIGluIG5hbWUgY2Fubm90IGNvZXhpc3Qg4oCUIGBhZGRDb2luYCB0aHJvd3Mgb24gdGhlIHNlY29uZC5cbiAgICogQ2FsbGVycyBtZXJnaW5nIGV4dGVybmFsbHktc291cmNlZCB0b2tlbnMgdXNlIHRoaXMgdG8gc2tpcCBhIGNvbGxpZGluZyB0b2tlbiByYXRoZXIgdGhhbiBjcmFzaC5cbiAgICovXG4gIHB1YmxpYyBoYXNUb2tlbkFkZHJlc3NDb25mbGljdChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiBib29sZWFuIHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgY29uc3Qga2V5ID0gQ29pbk1hcC5jb250cmFjdEFkZHJlc3NLZXkoY29pbik7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoa2V5KTtcbiAgICAgIHJldHVybiBleGlzdGluZyAhPT0gdW5kZWZpbmVkICYmIGV4aXN0aW5nLm5ldHdvcmsudHlwZSA9PT0gY29pbi5uZXR3b3JrLnR5cGU7XG4gICAgfVxuICAgIGlmIChjb2luIGluc3RhbmNlb2YgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuKSB7XG4gICAgICBjb25zdCBrZXkgPSBDb2luTWFwLm5mdENvbGxlY3Rpb25JZEtleShjb2luKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChrZXkpO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nICE9PSB1bmRlZmluZWQgJiYgZXhpc3RpbmcubmV0d29yay50eXBlID09PSBjb2luLm5ldHdvcmsudHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Db2lucyhjb2luczogUmVhZG9ubHk8QmFzZUNvaW4+W10pOiBDb2luTWFwIHtcbiAgICBjb25zdCBjb2luTWFwID0gbmV3IENvaW5NYXAoKTtcbiAgICBjb2lucy5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBjb2luTWFwLmFkZENvaW4oY29pbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvaW5NYXA7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29pbihjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWFwLmhhcyhjb2luLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihjb2luLm5hbWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29pbkJ5SWRzLmhhcyhjb2luLmlkKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5JZERlZmluaXRpb25FcnJvcihjb2luLmlkKTtcbiAgICB9XG4gICAgY29uc3QgYWxpYXMgPSBjb2luLmFsaWFzO1xuICAgIGlmIChhbGlhcyAmJiB0aGlzLl9jb2luQnlBbGlhc2VzLmhhcyhhbGlhcykpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yKGFsaWFzKTtcbiAgICB9XG4gICAgdGhpcy5fbWFwLnNldChjb2luLm5hbWUsIGNvaW4pO1xuICAgIHRoaXMuX2NvaW5CeUlkcy5zZXQoY29pbi5pZCwgY29pbik7XG4gICAgaWYgKGFsaWFzKSB7XG4gICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLnNldChjb2luLmFsaWFzLCBjb2luKTtcbiAgICB9XG5cbiAgICBpZiAoY29pbi5pc1Rva2VuKSB7XG4gICAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgICBjb25zdCBjb250cmFjdEFkZHJlc3NLZXkgPSBDb2luTWFwLmNvbnRyYWN0QWRkcmVzc0tleShjb2luKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcyA9IHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoY29udHJhY3RBZGRyZXNzS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnlDb250cmFjdEFkZHJlc3MpIHtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcy5uZXR3b3JrLnR5cGUgPT09IGNvaW4ubmV0d29yay50eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29udHJhY3RBZGRyZXNzRGVmaW5pdGlvbkVycm9yKGNvbnRyYWN0QWRkcmVzc0tleSwgZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcy5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLnNldChjb250cmFjdEFkZHJlc3NLZXksIGNvaW4pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmZ0Q29sbGVjdGlvbktleSA9IENvaW5NYXAubmZ0Q29sbGVjdGlvbklkS2V5KGNvaW4pO1xuICAgICAgICBjb25zdCBleGlzdGluZ0J5TmZ0Q29sbGVjdGlvbklkID0gdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChuZnRDb2xsZWN0aW9uS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnlOZnRDb2xsZWN0aW9uSWQpIHtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdCeU5mdENvbGxlY3Rpb25JZC5uZXR3b3JrLnR5cGUgPT09IGNvaW4ubmV0d29yay50eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlTmZ0Q29sbGVjdGlvbklkRGVmaW5pdGlvbkVycm9yKG5mdENvbGxlY3Rpb25LZXksIGV4aXN0aW5nQnlOZnRDb2xsZWN0aW9uSWQubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5zZXQobmZ0Q29sbGVjdGlvbktleSwgY29pbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhIEJhc2UgY29pbiBvYmplY3QgY29tcGxldGVseSBmcm9tIHRoZSBDb2luTWFwIHVzaW5nIGl0cyBJRC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBrZXkgdG8gc2VhcmNoIHRoZSBvbGQgY29pbiBvYmplY3RcbiAgICogQHBhcmFtIHtSZWFkb25seTxCYXNlQ29pbj59IGNvaW4gbmV3IGNvaW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZShjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXMoY29pbi5pZCkpIHtcbiAgICAgIGNvbnN0IG9sZENvaW4gPSB0aGlzLmdldChjb2luLmlkKTtcbiAgICAgIHRoaXMuX21hcC5kZWxldGUob2xkQ29pbi5uYW1lKTtcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5kZWxldGUob2xkQ29pbi5pZCk7XG4gICAgICBpZiAob2xkQ29pbi5hbGlhcykge1xuICAgICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLmRlbGV0ZShvbGRDb2luLmFsaWFzKTtcbiAgICAgIH1cbiAgICAgIGlmIChvbGRDb2luLmlzVG9rZW4pIHtcbiAgICAgICAgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3MuZGVsZXRlKENvaW5NYXAuY29udHJhY3RBZGRyZXNzS2V5KG9sZENvaW4pKTtcbiAgICAgICAgfSBlbHNlIGlmIChvbGRDb2luIGluc3RhbmNlb2YgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuKSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmRlbGV0ZShDb2luTWFwLm5mdENvbGxlY3Rpb25JZEtleShvbGRDb2luKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hZGRDb2luKGNvaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhcmRjb2RlZCBtYXBwaW5nIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTEVHQUNZX0NIQUlOX0lEX01BUDogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcbiAgICAxOiAnZXRoJyxcbiAgICA0MjogJ3RldGgnLFxuICAgIDU6ICdndGV0aCcsXG4gICAgNTYwMDQ4OiAnaHRldGgnLFxuICAgIDEwMDAxOiAnZXRodycsXG4gICAgODAwMDI6ICd0cG9seWdvbicsXG4gICAgMTM3OiAncG9seWdvbicsXG4gICAgNTY6ICdic2MnLFxuICAgIDk3OiAndGJzYycsXG4gICAgNDIxNjE6ICdhcmJldGgnLFxuICAgIDQyMTYxNDogJ3RhcmJldGgnLFxuICAgIDEwOiAnb3BldGgnLFxuICAgIDExMTU1NDIwOiAndG9wZXRoJyxcbiAgICAxMTE2OiAnY29yZWRhbycsXG4gICAgMTExNDogJ3Rjb3JlZGFvJyxcbiAgICAyNDg6ICdvYXMnLFxuICAgIDkzNzI6ICd0b2FzJyxcbiAgICAxNDogJ2ZscicsXG4gICAgMTE0OiAndGZscicsXG4gICAgMTk6ICdzZ2InLFxuICAgIDE2OiAndHNnYicsXG4gICAgMTExMTogJ3dlbWl4JyxcbiAgICAxMTEyOiAndHdlbWl4JyxcbiAgICA1MDogJ3hkYycsXG4gICAgNTE6ICd0eGRjJyxcbiAgICA4MDA5NDogJ2JlcmEnLFxuICAgIDgwMDY5OiAndGJlcmEnLFxuICAgIDQyMjIwOiAnY2VsbycsXG4gICAgMTExNDIyMjA6ICd0Y2VsbycsXG4gICAgMjIyMjogJ2thdmEnLFxuICAgIDIyMjE6ICd0a2F2YScsXG4gICAgNDMxMTQ6ICdhdmF4YycsXG4gICAgNDMxMTM6ICd0YXZheGMnLFxuICAgIDEwMDogJ2dubycsXG4gICAgMTMwOiAndW5pZXRoJyxcbiAgICAxMzAxOiAndHVuaWV0aCcsXG4gICAgMTkwNDE1OiAnaHBwZXRoJyxcbiAgICAxODEyMjg6ICd0aHBwZXRoJyxcbiAgICA2OTg1Mzg1OiAnaCcsXG4gICAgNzA4MDk2OTogJ3RoJyxcbiAgICA0NjYzOiAnaG9vZGV0aCcsXG4gICAgNDY2MzA6ICd0aG9vZGV0aCcsXG4gICAgMzI0OiAnemtzeW5jZXJhJyxcbiAgICAzMDA6ICd0emtzeW5jZXJhJyxcbiAgICA4NDUzOiAnYmFzZWV0aCcsXG4gICAgODQ1MzI6ICd0YmFzZWV0aCcsXG4gICAgMTQzOiAnbW9uJyxcbiAgICAxMDE0MzogJ3Rtb24nLFxuICAgIDQ4MDogJ3dvcmxkJyxcbiAgICA0ODAxOiAndHdvcmxkJyxcbiAgICA1MDMxOiAnc29taScsXG4gICAgNTAzMTI6ICd0c3R0JyxcbiAgICAxODY4OiAnc29uZWl1bScsXG4gICAgMTk0NjogJ3Rzb25laXVtJyxcbiAgICAzMzExMTogJ3RhcGVjaGFpbicsXG4gICAgMzMxMzk6ICdhcGVjaGFpbicsXG4gICAgNjg4Njg5OiAndHBocnMnLFxuICAgIDEwMjAzMDogJ2N0YycsXG4gICAgMTAyMDMxOiAndGN0YycsXG4gICAgOTk4OiAndGh5cGVldm0nLFxuICAgIDk5OTogJ2h5cGVldm0nLFxuICAgIDE2NjAyOiAndG9nJyxcbiAgICAxNjY2MTogJ29nJyxcbiAgICA5NzQ2OiAndHhwbCcsXG4gICAgOTc0NTogJ3hwbCcsXG4gICAgMTQ2MDE6ICd0c29uaWMnLFxuICAgIDE0NjogJ3NvbmljJyxcbiAgICAxMzI4OiAndHNlaWV2bScsXG4gICAgMTMyOTogJ3NlaWV2bScsXG4gICAgMTAwMTogJ3RrYWlhJyxcbiAgICA4MjE3OiAna2FpYScsXG4gICAgMTI3MDogJ3RpcnlzJyxcbiAgICA1OTE0MTogJ3RsaW5lYWV0aCcsXG4gICAgNTkxNDQ6ICdsaW5lYWV0aCcsXG4gICAgMTMxNTogJ3RpcCcsXG4gICAgMTUxNDogJ2lwJyxcbiAgICA1NDU6ICd0ZmxvdycsXG4gICAgNzQ3OiAnZmxvdycsXG4gICAgOTg4Njc6ICd0cGx1bWUnLFxuICAgIDk4ODY2OiAncGx1bWUnLFxuICAgIDYzNDM6ICd0bWVnYWV0aCcsXG4gICAgNDMyNjogJ21lZ2FldGgnLFxuICAgIDI5NTogJ2hiYXJldm0nLFxuICAgIDI5NjogJ3RoYmFyZXZtJyxcbiAgICAxOTY6ICdva2J4bGF5ZXInLFxuICAgIDE5NTI6ICd0b2tieGxheWVyJyxcbiAgICA1NzM0OTUxOiAnam92YXlldGgnLFxuICAgIDIwMTk3NzU6ICd0am92YXlldGgnLFxuICAgIDUwNDI6ICdhcmN1c2RjJyxcbiAgICA1MDQyMDAyOiAndGFyY3VzZGMnLFxuICAgIDQyMTc6ICd0ZW1wbycsXG4gICAgNDI0MzE6ICd0dGVtcG8nLFxuICAgIDUwMDA6ICdtYW50bGUnLFxuICAgIDUwMDM6ICd0bWFudGxlJyxcbiAgICAyNTM2MzogJ2ZsdWVudGV0aCcsXG4gICAgMjA5OTQ6ICd0Zmx1ZW50ZXRoJyxcbiAgfTtcblxuICBwcml2YXRlIGJ1aWxkQ2hhaW5JZE1hcCgpOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHtcbiAgICBjb25zdCBjaGFpbklkTWFwID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgoY29pbiwgY29pbk5hbWUpID0+IHtcbiAgICAgIC8vIFNraXAgdG9rZW5zIC0gdGhleSBzaGFyZSB0aGUgc2FtZSBjaGFpbklkIGFzIHRoZWlyIHBhcmVudCBjaGFpblxuICAgICAgaWYgKGNvaW4uaXNUb2tlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXR3b3JrID0gY29pbi5uZXR3b3JrO1xuICAgICAgaWYgKCdjaGFpbklkJyBpbiBuZXR3b3JrICYmIHR5cGVvZiAobmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IGNoYWluSWQgPSAobmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQ7XG4gICAgICAgIGlmICghY2hhaW5JZE1hcC5oYXMoY2hhaW5JZCkpIHtcbiAgICAgICAgICBjaGFpbklkTWFwLnNldChjaGFpbklkLCBjb2luTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2hhaW5JZE1hcDtcbiAgfVxuXG4gIHB1YmxpYyBjb2luTmFtZUZyb21DaGFpbklkKGNoYWluSWQ6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29pbk5hbWUgPSBDb2luTWFwLkxFR0FDWV9DSEFJTl9JRF9NQVBbY2hhaW5JZF07XG4gICAgaWYgKGNvaW5OYW1lKSB7XG4gICAgICByZXR1cm4gY29pbk5hbWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvaW5CeUNoYWluSWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2NvaW5CeUNoYWluSWQgPSB0aGlzLmJ1aWxkQ2hhaW5JZE1hcCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29pbkJ5Q2hhaW5JZC5nZXQoY2hhaW5JZCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgYGdldGAgdG8gdGhyb3cgaWYgYSBjb2luIGlzIG1pc3NpbmcsIGluc3RlYWQgb2YgcmV0dXJuaW5nIHVuZGVmaW5lZC5cbiAgICogSXQgd2lsbCBob25vciBrZXkgZXF1aXZhbGVuY2VzIGluIGNhc2UgZ2l2ZW4ga2V5IGlzIG1pc3NpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7QmFzZUNvaW59XG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHtcbiAgICBjb25zdCBjb2luID0gdGhpcy5nZXRPclVuZGVmaW5lZChrZXkpO1xuICAgIGlmIChjb2luKSB7XG4gICAgICByZXR1cm4gY29pbjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IENvaW5Ob3REZWZpbmVkRXJyb3Ioa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWZlIGFjY2Vzc29yIHRoYXQgcmV0dXJucyB1bmRlZmluZWQgaW5zdGVhZCBvZiB0aHJvd2luZyB3aGVuIGEgY29pbiBpcyBub3QgZm91bmQuXG4gICAqIFByZWZlciB0aGlzIG92ZXIgYGdldGAgYXQgY2FsbCBzaXRlcyB3aGVyZSB0aGUgY29pbiBuYW1lIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlXG4gICAqIHJlZ2lzdGVyZWQg4oCUIGl0IG1ha2VzIHRoZSBtaXNzaW5nLWNvaW4gY2FzZSBleHBsaWNpdCBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7QmFzZUNvaW4gfCB1bmRlZmluZWR9XG4gICAqL1xuICBwdWJsaWMgZ2V0T3JVbmRlZmluZWQoa2V5OiBzdHJpbmcpOiBSZWFkb25seTxCYXNlQ29pbj4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9tYXAuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZ2V0KGtleSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9tYXAuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuaGFzKGtleSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1hcDxUPihtYXBwZXI6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IFQpOiBUW10ge1xuICAgIGNvbnN0IG1hcFJlc3VsdDogVFtdID0gW107XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG1hcFJlc3VsdC5wdXNoKG1hcHBlcih2YWx1ZSwga2V5KSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcFJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyByZWR1Y2U8VD4ocmVkdWNlcjogKGFjYzogVCwgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBULCBpbml0aWFsVmFsdWU6IFQpOiBUIHtcbiAgICBsZXQgYWNjID0gaW5pdGlhbFZhbHVlO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBhY2MgPSByZWR1Y2VyKGFjYywgdmFsdWUsIGtleSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBib29sZWFuKTogQ29pbk1hcCB7XG4gICAgY29uc3QgZmlsdGVyUmVzdWx0OiBSZWFkb25seTxCYXNlQ29pbj5bXSA9IFtdO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgIGZpbHRlclJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQ29pbk1hcC5mcm9tQ29pbnMoZmlsdGVyUmVzdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JFYWNoKGNhbGxiYWNrOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgUmVhZG9ubHk8QmFzZUNvaW4+XT4ge1xuICAgIHJldHVybiB0aGlzLl9tYXBbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICB9XG59XG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FPa0I7QUFDbEIsdUNBQXFGO0FBR3JGLE1BQWEsT0FBTztJQWFsQjtRQVppQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ2hGLCtGQUErRjtRQUN2RixtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHeEQscUJBQXFCO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFDLElBQXdCO1FBQ3JELElBQUksSUFBSSxZQUFZLHFDQUEyQixFQUFFLENBQUM7WUFDaEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxR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ZixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxVQUFVO0lBQ2YsR0FBRyxFQUFFLFdBQVc7SUFDaEIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsSUFBSSxFQUFFLFNBQVM7SUFDZixPQUFPLEVBQUUsVUFBVTtJQUNuQixJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxRQUFRO0lBQ2YsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxXQUFXO0lBQ2xCLEtBQUssRUFBRSxZQUFZO0NBQ3BCLEFBakcwQyxDQWlHekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1xuICBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yLFxuICBDb2luTm90RGVmaW5lZEVycm9yLFxuICBEdXBsaWNhdGVDb2luSWREZWZpbml0aW9uRXJyb3IsXG4gIER1cGxpY2F0ZUNvbnRyYWN0QWRkcmVzc0RlZmluaXRpb25FcnJvcixcbiAgRHVwbGljYXRlTmZ0Q29sbGVjdGlvbklkRGVmaW5pdGlvbkVycm9yLFxuICBDb2luUmVwbGFjZW1lbnROb3RBbGxvd2VkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbiwgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IEV0aGVyZXVtTmV0d29yayB9IGZyb20gJy4vbmV0d29ya3MnO1xuXG5leHBvcnQgY2xhc3MgQ29pbk1hcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUlkcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIEhvbGRzIGtleSBlcXVpdmFsZW5jZXMgdXNlZCBkdXJpbmcgYW4gYXNzZXQgbmFtZSBtaWdyYXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IGFkZHJlc3MgLT4gdGhlIGtleSBpcyB0aGUgZmFtaWx5OmNvbnRyYWN0QWRkcmVzc1xuICAvLyB0aGUgZmFtaWx5IGlzIHRoZSB3aGVyZSB0aGUgY29pbiBpcyBlLmcgbDEgY2hhaW5zIGxpa2UgZXRoLCBic2MgZXRjLiBvciBsMiBsaWtlIGFyYmV0aCwgY2VsbyBldGMuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUNvbnRyYWN0QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IE5GVCBjb2xsZWN0aW9uIElEIC0+IHRoZSBrZXkgaXMgdGhlICh0KWZhbWlseTpuZnRDb2xsZWN0aW9uSURcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5TmZ0Q29sbGVjdGlvbklEID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gTGF6aWx5IGluaXRpYWxpemVkIGNhY2hlIGZvciBjaGFpbklkIHRvIGNvaW4gbmFtZSBtYXBwaW5nIChkZXJpdmVkIGZyb20gbmV0d29yayBkZWZpbml0aW9ucylcbiAgcHJpdmF0ZSBfY29pbkJ5Q2hhaW5JZDogTWFwPG51bWJlciwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRG8gbm90IGluc3RhbnRpYXRlXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb250cmFjdEFkZHJlc3NLZXkoY29pbjogQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Y29pbi5mYW1pbHl9OiR7Y29pbi5jb250cmFjdEFkZHJlc3N9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5mdENvbGxlY3Rpb25JZEtleShjb2luOiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtjb2luLnByZWZpeH0ke2NvaW4uZmFtaWx5fToke2NvaW4ubmZ0Q29sbGVjdGlvbklkfWA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhIGRpZmZlcmVudCB0b2tlbiB3aXRoIHRoZSBzYW1lIGNvbnRyYWN0IGFkZHJlc3MgKG9yIE5GVCBjb2xsZWN0aW9uIGlkKSBpcyBhbHJlYWR5XG4gICAqIHJlZ2lzdGVyZWQuIFRva2VuIGlkZW50aXR5IGluIHRoZSBtYXAgaXMga2V5ZWQgYnkgbmFtZS9pZC9hbGlhcywgYnV0IGEgdG9rZW4gYWxzbyBjbGFpbXMgYVxuICAgKiBjb250cmFjdC1hZGRyZXNzIGtleSAoYGZhbWlseTpjb250cmFjdEFkZHJlc3NgKSBhbmQsIGZvciBORlRzLCBhIGNvbGxlY3Rpb24taWQga2V5LiBUd28gdG9rZW5zXG4gICAqIHRoYXQgc2hhcmUgc3VjaCBhIGtleSBidXQgZGlmZmVyIGluIG5hbWUgY2Fubm90IGNvZXhpc3Qg4oCUIGBhZGRDb2luYCB0aHJvd3Mgb24gdGhlIHNlY29uZC5cbiAgICogQ2FsbGVycyBtZXJnaW5nIGV4dGVybmFsbHktc291cmNlZCB0b2tlbnMgdXNlIHRoaXMgdG8gc2tpcCBhIGNvbGxpZGluZyB0b2tlbiByYXRoZXIgdGhhbiBjcmFzaC5cbiAgICovXG4gIHB1YmxpYyBoYXNUb2tlbkFkZHJlc3NDb25mbGljdChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiBib29sZWFuIHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgY29uc3Qga2V5ID0gQ29pbk1hcC5jb250cmFjdEFkZHJlc3NLZXkoY29pbik7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoa2V5KTtcbiAgICAgIHJldHVybiBleGlzdGluZyAhPT0gdW5kZWZpbmVkICYmIGV4aXN0aW5nLm5ldHdvcmsudHlwZSA9PT0gY29pbi5uZXR3b3JrLnR5cGU7XG4gICAgfVxuICAgIGlmIChjb2luIGluc3RhbmNlb2YgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuKSB7XG4gICAgICBjb25zdCBrZXkgPSBDb2luTWFwLm5mdENvbGxlY3Rpb25JZEtleShjb2luKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChrZXkpO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nICE9PSB1bmRlZmluZWQgJiYgZXhpc3RpbmcubmV0d29yay50eXBlID09PSBjb2luLm5ldHdvcmsudHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Db2lucyhjb2luczogUmVhZG9ubHk8QmFzZUNvaW4+W10pOiBDb2luTWFwIHtcbiAgICBjb25zdCBjb2luTWFwID0gbmV3IENvaW5NYXAoKTtcbiAgICBjb2lucy5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBjb2luTWFwLmFkZENvaW4oY29pbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvaW5NYXA7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29pbihjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWFwLmhhcyhjb2luLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihjb2luLm5hbWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29pbkJ5SWRzLmhhcyhjb2luLmlkKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5JZERlZmluaXRpb25FcnJvcihjb2luLmlkKTtcbiAgICB9XG4gICAgY29uc3QgYWxpYXMgPSBjb2luLmFsaWFzO1xuICAgIGlmIChhbGlhcyAmJiB0aGlzLl9jb2luQnlBbGlhc2VzLmhhcyhhbGlhcykpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yKGFsaWFzKTtcbiAgICB9XG4gICAgdGhpcy5fbWFwLnNldChjb2luLm5hbWUsIGNvaW4pO1xuICAgIHRoaXMuX2NvaW5CeUlkcy5zZXQoY29pbi5pZCwgY29pbik7XG4gICAgaWYgKGFsaWFzKSB7XG4gICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLnNldChjb2luLmFsaWFzLCBjb2luKTtcbiAgICB9XG5cbiAgICBpZiAoY29pbi5pc1Rva2VuKSB7XG4gICAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgICBjb25zdCBjb250cmFjdEFkZHJlc3NLZXkgPSBDb2luTWFwLmNvbnRyYWN0QWRkcmVzc0tleShjb2luKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcyA9IHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoY29udHJhY3RBZGRyZXNzS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnlDb250cmFjdEFkZHJlc3MpIHtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcy5uZXR3b3JrLnR5cGUgPT09IGNvaW4ubmV0d29yay50eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29udHJhY3RBZGRyZXNzRGVmaW5pdGlvbkVycm9yKGNvbnRyYWN0QWRkcmVzc0tleSwgZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcy5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLnNldChjb250cmFjdEFkZHJlc3NLZXksIGNvaW4pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmZ0Q29sbGVjdGlvbktleSA9IENvaW5NYXAubmZ0Q29sbGVjdGlvbklkS2V5KGNvaW4pO1xuICAgICAgICBjb25zdCBleGlzdGluZ0J5TmZ0Q29sbGVjdGlvbklkID0gdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChuZnRDb2xsZWN0aW9uS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnlOZnRDb2xsZWN0aW9uSWQpIHtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdCeU5mdENvbGxlY3Rpb25JZC5uZXR3b3JrLnR5cGUgPT09IGNvaW4ubmV0d29yay50eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlTmZ0Q29sbGVjdGlvbklkRGVmaW5pdGlvbkVycm9yKG5mdENvbGxlY3Rpb25LZXksIGV4aXN0aW5nQnlOZnRDb2xsZWN0aW9uSWQubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5zZXQobmZ0Q29sbGVjdGlvbktleSwgY29pbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhIGNvaW4gKHRva2VuIG9yIGJhc2UgY29pbikgaW4gdGhlIENvaW5NYXAgd2l0aCBhIG5ldyBvYmplY3QgY2FycnlpbmcgcmVmcmVzaGVkIG1vZGlmaWFibGVcbiAgICogZmllbGRzLiBUaGUgZXhpc3RpbmcgcmVjb3JkIGlzIGxvb2tlZCB1cCBieSBpZCwgYW5kIHRoZSBzd2FwIG9ubHkgaGFwcGVucyB3aGVuIGl0cyBpbW11dGFibGUgZmllbGRzXG4gICAqIChpZCwgbmFtZSwgY29udHJhY3QgYWRkcmVzcyBhbmQgYWxpYXMpIGFyZSB1bmNoYW5nZWQuIEFueXRoaW5nIGVsc2UgdGhyb3dzIGJlZm9yZSB0aGUgbWFwXG4gICAqIGlzIHRvdWNoZWQuIENvaW5zIHRoYXQgYXJlIG5vdCBpbiB0aGUgbWFwIHlldCBhcmUgYWRkZWQuXG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8QmFzZUNvaW4+fSBjb2luIG5ldyBjb2luIG9iamVjdFxuICAgKiBAdGhyb3dzIHtDb2luUmVwbGFjZW1lbnROb3RBbGxvd2VkRXJyb3J9IHdoZW4gYW4gaW1tdXRhYmxlIGZpZWxkIGRpZmZlcnMgZnJvbSB0aGUgZXhpc3RpbmcgcmVjb3JkXG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZShjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXMoY29pbi5pZCkpIHtcbiAgICAgIGNvbnN0IG9sZENvaW4gPSB0aGlzLmdldChjb2luLmlkKTtcbiAgICAgIENvaW5NYXAuYXNzZXJ0SW1tdXRhYmxlRmllbGRzVW5jaGFuZ2VkKG9sZENvaW4sIGNvaW4pO1xuICAgICAgdGhpcy5fbWFwLmRlbGV0ZShvbGRDb2luLm5hbWUpO1xuICAgICAgdGhpcy5fY29pbkJ5SWRzLmRlbGV0ZShvbGRDb2luLmlkKTtcbiAgICAgIGlmIChvbGRDb2luLmFsaWFzKSB7XG4gICAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZGVsZXRlKG9sZENvaW4uYWxpYXMpO1xuICAgICAgfVxuICAgICAgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmRlbGV0ZShDb2luTWFwLmNvbnRyYWN0QWRkcmVzc0tleShvbGRDb2luKSk7XG4gICAgICB9IGVsc2UgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmRlbGV0ZShDb2luTWFwLm5mdENvbGxlY3Rpb25JZEtleShvbGRDb2luKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWRkQ29pbihjb2luKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzc2VydEltbXV0YWJsZUZpZWxkc1VuY2hhbmdlZChvbGRDb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIG5ld0NvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IHZvaWQge1xuICAgIGNvbnN0IG9sZENvbnRyYWN0QWRkcmVzcyA9IG9sZENvaW4gaW5zdGFuY2VvZiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4gPyBvbGRDb2luLmNvbnRyYWN0QWRkcmVzcyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBuZXdDb250cmFjdEFkZHJlc3MgPSBuZXdDb2luIGluc3RhbmNlb2YgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuID8gbmV3Q29pbi5jb250cmFjdEFkZHJlc3MgOiB1bmRlZmluZWQ7XG4gICAgaWYgKG9sZENvaW4uaWQgIT09IG5ld0NvaW4uaWQpIHtcbiAgICAgIHRocm93IG5ldyBDb2luUmVwbGFjZW1lbnROb3RBbGxvd2VkRXJyb3Iob2xkQ29pbi5uYW1lLCAnaW1tdXRhYmxlIGZpZWxkIGlkIGNoYW5nZWQnKTtcbiAgICB9XG4gICAgaWYgKG9sZENvaW4ubmFtZSAhPT0gbmV3Q29pbi5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQ29pblJlcGxhY2VtZW50Tm90QWxsb3dlZEVycm9yKG9sZENvaW4ubmFtZSwgJ2ltbXV0YWJsZSBmaWVsZCBuYW1lIGNoYW5nZWQnKTtcbiAgICB9XG4gICAgaWYgKG9sZENvbnRyYWN0QWRkcmVzcyAhPT0gbmV3Q29udHJhY3RBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQ29pblJlcGxhY2VtZW50Tm90QWxsb3dlZEVycm9yKG9sZENvaW4ubmFtZSwgJ2ltbXV0YWJsZSBmaWVsZCBjb250cmFjdEFkZHJlc3MgY2hhbmdlZCcpO1xuICAgIH1cbiAgICBpZiAob2xkQ29pbi5hbGlhcyAhPT0gbmV3Q29pbi5hbGlhcykge1xuICAgICAgdGhyb3cgbmV3IENvaW5SZXBsYWNlbWVudE5vdEFsbG93ZWRFcnJvcihvbGRDb2luLm5hbWUsICdpbW11dGFibGUgZmllbGQgYWxpYXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYXJkY29kZWQgbWFwcGluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExFR0FDWV9DSEFJTl9JRF9NQVA6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgMTogJ2V0aCcsXG4gICAgNDI6ICd0ZXRoJyxcbiAgICA1OiAnZ3RldGgnLFxuICAgIDU2MDA0ODogJ2h0ZXRoJyxcbiAgICAxMDAwMTogJ2V0aHcnLFxuICAgIDgwMDAyOiAndHBvbHlnb24nLFxuICAgIDEzNzogJ3BvbHlnb24nLFxuICAgIDU2OiAnYnNjJyxcbiAgICA5NzogJ3Ric2MnLFxuICAgIDQyMTYxOiAnYXJiZXRoJyxcbiAgICA0MjE2MTQ6ICd0YXJiZXRoJyxcbiAgICAxMDogJ29wZXRoJyxcbiAgICAxMTE1NTQyMDogJ3RvcGV0aCcsXG4gICAgMTExNjogJ2NvcmVkYW8nLFxuICAgIDExMTQ6ICd0Y29yZWRhbycsXG4gICAgMjQ4OiAnb2FzJyxcbiAgICA5MzcyOiAndG9hcycsXG4gICAgMTQ6ICdmbHInLFxuICAgIDExNDogJ3RmbHInLFxuICAgIDE5OiAnc2diJyxcbiAgICAxNjogJ3RzZ2InLFxuICAgIDExMTE6ICd3ZW1peCcsXG4gICAgMTExMjogJ3R3ZW1peCcsXG4gICAgNTA6ICd4ZGMnLFxuICAgIDUxOiAndHhkYycsXG4gICAgODAwOTQ6ICdiZXJhJyxcbiAgICA4MDA2OTogJ3RiZXJhJyxcbiAgICA0MjIyMDogJ2NlbG8nLFxuICAgIDExMTQyMjIwOiAndGNlbG8nLFxuICAgIDIyMjI6ICdrYXZhJyxcbiAgICAyMjIxOiAndGthdmEnLFxuICAgIDQzMTE0OiAnYXZheGMnLFxuICAgIDQzMTEzOiAndGF2YXhjJyxcbiAgICAxMDA6ICdnbm8nLFxuICAgIDEzMDogJ3VuaWV0aCcsXG4gICAgMTMwMTogJ3R1bmlldGgnLFxuICAgIDE5MDQxNTogJ2hwcGV0aCcsXG4gICAgMTgxMjI4OiAndGhwcGV0aCcsXG4gICAgNjk4NTM4NTogJ2gnLFxuICAgIDcwODA5Njk6ICd0aCcsXG4gICAgNDY2MzogJ2hvb2RldGgnLFxuICAgIDQ2NjMwOiAndGhvb2RldGgnLFxuICAgIDMyNDogJ3prc3luY2VyYScsXG4gICAgMzAwOiAndHprc3luY2VyYScsXG4gICAgODQ1MzogJ2Jhc2VldGgnLFxuICAgIDg0NTMyOiAndGJhc2VldGgnLFxuICAgIDE0MzogJ21vbicsXG4gICAgMTAxNDM6ICd0bW9uJyxcbiAgICA0ODA6ICd3b3JsZCcsXG4gICAgNDgwMTogJ3R3b3JsZCcsXG4gICAgNTAzMTogJ3NvbWknLFxuICAgIDUwMzEyOiAndHN0dCcsXG4gICAgMTg2ODogJ3NvbmVpdW0nLFxuICAgIDE5NDY6ICd0c29uZWl1bScsXG4gICAgMzMxMTE6ICd0YXBlY2hhaW4nLFxuICAgIDMzMTM5OiAnYXBlY2hhaW4nLFxuICAgIDY4ODY4OTogJ3RwaHJzJyxcbiAgICAxMDIwMzA6ICdjdGMnLFxuICAgIDEwMjAzMTogJ3RjdGMnLFxuICAgIDk5ODogJ3RoeXBlZXZtJyxcbiAgICA5OTk6ICdoeXBlZXZtJyxcbiAgICAxNjYwMjogJ3RvZycsXG4gICAgMTY2NjE6ICdvZycsXG4gICAgOTc0NjogJ3R4cGwnLFxuICAgIDk3NDU6ICd4cGwnLFxuICAgIDE0NjAxOiAndHNvbmljJyxcbiAgICAxNDY6ICdzb25pYycsXG4gICAgMTMyODogJ3RzZWlldm0nLFxuICAgIDEzMjk6ICdzZWlldm0nLFxuICAgIDEwMDE6ICd0a2FpYScsXG4gICAgODIxNzogJ2thaWEnLFxuICAgIDEyNzA6ICd0aXJ5cycsXG4gICAgNTkxNDE6ICd0bGluZWFldGgnLFxuICAgIDU5MTQ0OiAnbGluZWFldGgnLFxuICAgIDEzMTU6ICd0aXAnLFxuICAgIDE1MTQ6ICdpcCcsXG4gICAgNTQ1OiAndGZsb3cnLFxuICAgIDc0NzogJ2Zsb3cnLFxuICAgIDk4ODY3OiAndHBsdW1lJyxcbiAgICA5ODg2NjogJ3BsdW1lJyxcbiAgICA2MzQzOiAndG1lZ2FldGgnLFxuICAgIDQzMjY6ICdtZWdhZXRoJyxcbiAgICAyOTU6ICdoYmFyZXZtJyxcbiAgICAyOTY6ICd0aGJhcmV2bScsXG4gICAgMTk2OiAnb2tieGxheWVyJyxcbiAgICAxOTUyOiAndG9rYnhsYXllcicsXG4gICAgNTczNDk1MTogJ2pvdmF5ZXRoJyxcbiAgICAyMDE5Nzc1OiAndGpvdmF5ZXRoJyxcbiAgICA1MDQyOiAnYXJjdXNkYycsXG4gICAgNTA0MjAwMjogJ3RhcmN1c2RjJyxcbiAgICA0MjE3OiAndGVtcG8nLFxuICAgIDQyNDMxOiAndHRlbXBvJyxcbiAgICA1MDAwOiAnbWFudGxlJyxcbiAgICA1MDAzOiAndG1hbnRsZScsXG4gICAgMjUzNjM6ICdmbHVlbnRldGgnLFxuICAgIDIwOTk0OiAndGZsdWVudGV0aCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBidWlsZENoYWluSWRNYXAoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3QgY2hhaW5JZE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgICAvLyBTa2lwIHRva2VucyAtIHRoZXkgc2hhcmUgdGhlIHNhbWUgY2hhaW5JZCBhcyB0aGVpciBwYXJlbnQgY2hhaW5cbiAgICAgIGlmIChjb2luLmlzVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV0d29yayA9IGNvaW4ubmV0d29yaztcbiAgICAgIGlmICgnY2hhaW5JZCcgaW4gbmV0d29yayAmJiB0eXBlb2YgKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBjaGFpbklkID0gKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkO1xuICAgICAgICBpZiAoIWNoYWluSWRNYXAuaGFzKGNoYWluSWQpKSB7XG4gICAgICAgICAgY2hhaW5JZE1hcC5zZXQoY2hhaW5JZCwgY29pbk5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoYWluSWRNYXA7XG4gIH1cblxuICBwdWJsaWMgY29pbk5hbWVGcm9tQ2hhaW5JZChjaGFpbklkOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvaW5OYW1lID0gQ29pbk1hcC5MRUdBQ1lfQ0hBSU5fSURfTUFQW2NoYWluSWRdO1xuICAgIGlmIChjb2luTmFtZSkge1xuICAgICAgcmV0dXJuIGNvaW5OYW1lO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb2luQnlDaGFpbklkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9jb2luQnlDaGFpbklkID0gdGhpcy5idWlsZENoYWluSWRNYXAoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvaW5CeUNoYWluSWQuZ2V0KGNoYWluSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGBnZXRgIHRvIHRocm93IGlmIGEgY29pbiBpcyBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJldHVybmluZyB1bmRlZmluZWQuXG4gICAqIEl0IHdpbGwgaG9ub3Iga2V5IGVxdWl2YWxlbmNlcyBpbiBjYXNlIGdpdmVuIGtleSBpcyBtaXNzaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEByZXR1cm4ge0Jhc2VDb2lufVxuICAgKi9cbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB7XG4gICAgY29uc3QgY29pbiA9IHRoaXMuZ2V0T3JVbmRlZmluZWQoa2V5KTtcbiAgICBpZiAoY29pbikge1xuICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuICAgIHRocm93IG5ldyBDb2luTm90RGVmaW5lZEVycm9yKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogU2FmZSBhY2Nlc3NvciB0aGF0IHJldHVybnMgdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhyb3dpbmcgd2hlbiBhIGNvaW4gaXMgbm90IGZvdW5kLlxuICAgKiBQcmVmZXIgdGhpcyBvdmVyIGBnZXRgIGF0IGNhbGwgc2l0ZXMgd2hlcmUgdGhlIGNvaW4gbmFtZSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZVxuICAgKiByZWdpc3RlcmVkIOKAlCBpdCBtYWtlcyB0aGUgbWlzc2luZy1jb2luIGNhc2UgZXhwbGljaXQgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEByZXR1cm4ge0Jhc2VDb2luIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHVibGljIGdldE9yVW5kZWZpbmVkKGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWFwLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChrZXkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWFwLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmhhcyhrZXkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXA8VD4obWFwcGVyOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBUKTogVFtdIHtcbiAgICBjb25zdCBtYXBSZXN1bHQ6IFRbXSA9IFtdO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBtYXBSZXN1bHQucHVzaChtYXBwZXIodmFsdWUsIGtleSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBSZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgcmVkdWNlPFQ+KHJlZHVjZXI6IChhY2M6IFQsIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCwgaW5pdGlhbFZhbHVlOiBUKTogVCB7XG4gICAgbGV0IGFjYyA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgYWNjID0gcmVkdWNlcihhY2MsIHZhbHVlLCBrZXkpO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKHByZWRpY2F0ZTogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gYm9vbGVhbik6IENvaW5NYXAge1xuICAgIGNvbnN0IGZpbHRlclJlc3VsdDogUmVhZG9ubHk8QmFzZUNvaW4+W10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5KSkge1xuICAgICAgICBmaWx0ZXJSZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvaW5NYXAuZnJvbUNvaW5zKGZpbHRlclJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgZm9yRWFjaChjYWxsYmFjazogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPl0+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFwW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAiBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAQ3C,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,8BAA8B,EAAE,WAAW,EAEvD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAQ1G;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,WAAW,EAAO,EACtC,gBAAgB,GAAE,WAAW,EAAO,GACnC,WAAW,EAAE,CAIf;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAiBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAQ3C,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,8BAA8B,EAAE,WAAW,EAEvD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAQ1G;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,WAAW,EAAO,EACtC,gBAAgB,GAAE,WAAW,EAAO,GACnC,WAAW,EAAE,CAIf;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CA4BjF,CAAC"}
|
|
@@ -70,6 +70,7 @@ exports.networkFeatureMapForTokens = {
|
|
|
70
70
|
canton: coinFeatures_1.CANTON_TOKEN_FEATURES,
|
|
71
71
|
celo: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
72
72
|
eth: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
73
|
+
baseeth: exports.EVM_TOKEN_FEATURES,
|
|
73
74
|
eos: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
74
75
|
gasevm: exports.EVM_TOKEN_FEATURES,
|
|
75
76
|
hbar: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
@@ -88,4 +89,4 @@ exports.networkFeatureMapForTokens = {
|
|
|
88
89
|
ofc: [],
|
|
89
90
|
ada: coinFeatures_1.ADA_TOKEN_FEATURES,
|
|
90
91
|
};
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLDBEQUVDO0FBMEJELHNEQVFDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQS9FRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVl3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsdUdBQXVHO0FBQzFGLFFBQUEsa0JBQWtCLEdBQWtCO0lBQy9DLEdBQUcsMkJBQVk7SUFDZixrQkFBVyxDQUFDLGtCQUFrQjtJQUM5QixrQkFBVyxDQUFDLGNBQWM7SUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7SUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0NBQzNCLENBQUM7QUFFRiwrR0FBK0c7QUFDbEcsUUFBQSw4QkFBOEIsR0FBa0IsMEJBQWtCLENBQUMsTUFBTSxDQUNwRixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLGtCQUFXLENBQUMsT0FBTyxDQUM3QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQThEO0lBQ2xHLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksa0NBQTBCLENBQUMsRUFBRSxDQUFDO1lBQzVDLGtDQUEwQixDQUFDLE1BQW9CLENBQUMsR0FBRyxlQUFlO2dCQUNoRSxDQUFDLENBQUMsMEJBQWtCO2dCQUNwQixDQUFDLENBQUMsc0NBQThCLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLE1BQU0sRUFBRSxvQ0FBcUI7SUFDN0IsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLEVBQUUsMEJBQWtCO0lBQzNCLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxNQUFNLEVBQUUsMEJBQWtCO0lBQzFCLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDN0QsU0FBUyxFQUFFLDBCQUFrQjtJQUM3QixPQUFPLEVBQUUscUNBQXNCO0lBQy9CLFNBQVMsRUFBRSwwQkFBa0I7SUFDN0IsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixLQUFLLEVBQUUsbUNBQW9CO0lBQzNCLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLGlDQUFrQjtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjb3VudENvaW4gfSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgQ29pbkZhbWlseSwgQ29pbkZlYXR1cmUgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtcbiAgQURBX1RPS0VOX0ZFQVRVUkVTLFxuICBBUFRfRkVBVFVSRVMsXG4gIEJTQ19UT0tFTl9GRUFUVVJFUyxcbiAgQ0FOVE9OX1RPS0VOX0ZFQVRVUkVTLFxuICBFVk1fRkVBVFVSRVMsXG4gIFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICBUQU9fVE9LRU5fRkVBVFVSRVMsXG59IGZyb20gJy4vY29pbkZlYXR1cmVzJztcblxuY29uc3QgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBDb2luRmVhdHVyZVtdPigpO1xuXG4vKiogUmVnaXN0ZXIgZGVmYXVsdCB0b2tlbiBmZWF0dXJlcyBmb3IgYSBkeW5hbWljYWxseSBvbmJvYXJkZWQgY2hhaW4gZmFtaWx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmV0d29ya0ZlYXR1cmVzKGZhbWlseTogc3RyaW5nLCBmZWF0dXJlczogQ29pbkZlYXR1cmVbXSk6IHZvaWQge1xuICBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLnNldChmYW1pbHksIGZlYXR1cmVzKTtcbn1cblxuLyoqIERlZmF1bHQgdG9rZW4gZmVhdHVyZSBzZXQgc2hhcmVkIGJ5IFwicGxhaW5cIiBFVk0tY29tcGF0aWJsZSBjaGFpbiBmYW1pbGllcyAobm8gYmVzcG9rZSBmZWF0dXJlcykuICovXG5leHBvcnQgY29uc3QgRVZNX1RPS0VOX0ZFQVRVUkVTOiBDb2luRmVhdHVyZVtdID0gW1xuICAuLi5FVk1fRkVBVFVSRVMsXG4gIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0lHTklORyxcbiAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREssXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX0lNUyxcbiAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfVUksXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1dQLFxuICBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCxcbl07XG5cbi8qKiBTYW1lIGFzIEVWTV9UT0tFTl9GRUFUVVJFUywgbWludXMgRUlQMTU1OSwgZm9yIEVWTS1jb21wYXRpYmxlIGZhbWlsaWVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAoZS5nLiB4ZGMpLiAqL1xuZXhwb3J0IGNvbnN0IEVWTV9UT0tFTl9GRUFUVVJFU19OT05fRUlQMTU1OTogQ29pbkZlYXR1cmVbXSA9IEVWTV9UT0tFTl9GRUFUVVJFUy5maWx0ZXIoXG4gIChmZWF0dXJlKSA9PiBmZWF0dXJlICE9PSBDb2luRmVhdHVyZS5FSVAxNTU5XG4pO1xuXG4vKipcbiAqIFBvcHVsYXRlIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zIGZvciBldmVyeSBmYW1pbHkgd2hvc2UgYmFzZSBjb2luIGNhcnJpZXNcbiAqIENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwIGFuZCBpc24ndCBhbHJlYWR5IGV4cGxpY2l0bHkgbGlzdGVkIGJlbG93LCB1c2luZyBFVk1fVE9LRU5fRkVBVFVSRVNcbiAqIChvciBpdHMgbm9uLUVJUDE1NTkgdmFyaWFudCwgbWlycm9yaW5nIHRoZSBiYXNlIGNvaW4ncyBvd24gRUlQMTU1OSBzdXBwb3J0KS4gQ2FsbGVkIG9uY2UgZnJvbVxuICogY29pbnMudHMgKHdoaWNoIGhhcyBhY2Nlc3MgdG8gdGhlIGZ1bGwgY29pbiBtYXApIHNvIHRoaXMgbW9kdWxlIGRvZXNuJ3QgbmVlZCB0byBpbXBvcnQgaXRcbiAqIGRpcmVjdGx5ICh0aGF0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIGltcG9ydDogY29pbnMudHMgLT4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMgLT5cbiAqIGFsbENvaW5zQW5kVG9rZW5zLnRzIC0+IGNvaW5zL2JvdFRva2Vucy50cyAtPiBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vucy50cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckVyYzIwRmFtaWxpZXMoZmFtaWxpZXM6IEl0ZXJhYmxlPFtmYW1pbHk6IHN0cmluZywgc3VwcG9ydHNFaXAxNTU5OiBib29sZWFuXT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbZmFtaWx5LCBzdXBwb3J0c0VpcDE1NTldIG9mIGZhbWlsaWVzKSB7XG4gICAgaWYgKCEoZmFtaWx5IGluIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zKSkge1xuICAgICAgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbZmFtaWx5IGFzIENvaW5GYW1pbHldID0gc3VwcG9ydHNFaXAxNTU5XG4gICAgICAgID8gRVZNX1RPS0VOX0ZFQVRVUkVTXG4gICAgICAgIDogRVZNX1RPS0VOX0ZFQVRVUkVTX05PTl9FSVAxNTU5O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIExvb2sgdXAgdG9rZW4gZmVhdHVyZXMgZm9yIGEgZmFtaWx5LlxuICogQ2hlY2tzIHRoZSBzdGF0aWMgbWFwIGZpcnN0IChpbmNsdWRpbmcgZW50cmllcyBiYWNrZmlsbGVkIGJ5IHJlZ2lzdGVyRXJjMjBGYW1pbGllcyksIHRoZW4gdGhlXG4gKiBkeW5hbWljIG1hcC4gUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGZhbWlseSBpc24ndCByZWNvZ25pemVkIGJ5IGVpdGhlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHk6IHN0cmluZyk6IENvaW5GZWF0dXJlW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbZmFtaWx5IGFzIENvaW5GYW1pbHldID8/IGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAuZ2V0KGZhbWlseSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZmluYWwgZmVhdHVyZSBsaXN0IGZvciBhIHRva2VuOiB0aGUgZmFtaWx5J3MgZGVmYXVsdCB0b2tlbiBmZWF0dXJlc1xuICogcGx1cyBgYWRkaXRpb25hbEZlYXR1cmVzYCwgbWludXMgYGV4Y2x1ZGVkRmVhdHVyZXNgLiBVc2VkIGJ5IGdlbmVyYXRlZCBib3QtdG9rZW5cbiAqIGxpc3RzIHRvIGFwcGx5IHRoZSBwZXItdG9rZW4gZGlmZiByZXR1cm5lZCBieSBBTVMgKGBmZWF0dXJlcz1mYWxzZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW5GZWF0dXJlcyhcbiAgZmFtaWx5OiBzdHJpbmcsXG4gIGFkZGl0aW9uYWxGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdLFxuICBleGNsdWRlZEZlYXR1cmVzOiBDb2luRmVhdHVyZVtdID0gW11cbik6IENvaW5GZWF0dXJlW10ge1xuICBjb25zdCBiYXNlID0gZ2V0TmV0d29ya0ZlYXR1cmVzKGZhbWlseSkgPz8gW107XG4gIGNvbnN0IGV4Y2x1ZGVkID0gbmV3IFNldDxDb2luRmVhdHVyZT4oZXhjbHVkZWRGZWF0dXJlcyk7XG4gIHJldHVybiBbLi4ubmV3IFNldDxDb2luRmVhdHVyZT4oWy4uLmJhc2UsIC4uLmFkZGl0aW9uYWxGZWF0dXJlc10pXS5maWx0ZXIoKGYpID0+ICFleGNsdWRlZC5oYXMoZikpO1xufVxuXG5leHBvcnQgY29uc3QgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnM6IFBhcnRpYWw8UmVjb3JkPENvaW5GYW1pbHksIENvaW5GZWF0dXJlW10+PiA9IHtcbiAgYWxnbzogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYXB0OiBBUFRfRkVBVFVSRVMsXG4gIGFyYmV0aDogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBhdmF4YzogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYmVyYTogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBic2M6IEJTQ19UT0tFTl9GRUFUVVJFUyxcbiAgY2FudG9uOiBDQU5UT05fVE9LRU5fRkVBVFVSRVMsXG4gIGNlbG86IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGV0aDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYmFzZWV0aDogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBlb3M6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGdhc2V2bTogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBoYmFyOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBvcGV0aDogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBrYXRhbmFldGg6IEVWTV9UT0tFTl9GRUFUVVJFUyxcbiAgcG9seWdvbjogUE9MWUdPTl9UT0tFTl9GRUFUVVJFUyxcbiAgc2Nyb2xsZXRoOiBFVk1fVE9LRU5fRkVBVFVSRVMsXG4gIHNvbDogU09MX1RPS0VOX0ZFQVRVUkVTLFxuICBzdHg6IFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgc3VpOiBTVUlfVE9LRU5fRkVBVFVSRVMsXG4gIHRhbzogVEFPX1RPS0VOX0ZFQVRVUkVTLFxuICBwb2x5eDogUE9MWVhfVE9LRU5fRkVBVFVSRVMsXG4gIHRyeDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgeGxtOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICB4cnA6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIG9mYzogW10sXG4gIGFkYTogQURBX1RPS0VOX0ZFQVRVUkVTLFxufTtcbiJdfQ==
|